Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

GTP Execution Engine

  • Runtime: NodeJS

  • Description: Takes test script as input and executes on playwright.
    Executes npx test

  • Test results recieved via Playwright Custom Reporter

PROS

  • similar to lambdatest results

  • includes

    • has whole test object

    • test step and results

    • provides data on_step_begin(), on_step_end()

CONS

  • doesn’t have DOM

  • doesn’t have browser console

  • doesn’t have access to dynamic variables for data driven tests

GTP Front End Application

  • Script Detail Component

  • Script Service Component

GTP Springboot Application

Sample pseudo code

Code Block
breakoutModewide
languagejs

gtp-crome-extension     //gtp-script-execution.js

    mainbrowser = playwright.webdriver.attach (tab1,....)

    for step in steps
        variables = datasetcsv[i+1]

        if step == click
            // pre_processing before each step
            initialize_data()
            
            //run step
            playwright.gtp_click()  // <--  playwright generated script
            
            //post processing
            record_step_results(step, dom, console, network)
        
        if step == assert_text

            // pre_processing before each step
            initialize_data()
            //run step
            eval('mainbrowser.playwrightpage.field(id).gtp_fill("username")') 
            // THIS DOESNT WORK IT IS SECURITY VIOLATION TO DYNAMICALLY RUN ANY COMMAND WITH THE PAGE
            
            await page.goto('https://demo.playwright.dev/todomvc/#/');
            await page.getByPlaceholder().click();
            // DYNAMICALLY CALL THE STEP
            await page.'step.locator.method()'(step.parms['locatorid']).fill(step.parms['filltext']);
            // PROBLEM: METHODS ARE DYNAMIC NOT ONLY THE PARAMETERS

            //post processing
            record_step_results(step, dom, console, network)

        // in first version we don't support all steps
        if step == drag_and_drop
            not_supported()

        if step == mfa
            initialize_data()
            custom_feature()
            record_step_results(step, dom, console, network)