Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

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

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
            await page.getByPlaceholder().click(); //works
            eval('await page.getByPlaceholder().click();') 
            // 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)

Front End Discussion

move towards design where the web app only displays the steps and the chrome extension is the test case editor that provides support for:

  • test edit - step add,edit,delete

    • edit locator

    • record steps

    • playback steps

Technical Solution:

What are steps that aren’t possible with local execution

  • Vinay Christopher pls create list of steps that are on remote execution and not supported on local execution

    • see if customer are using them; if not, we won’t support in 1st / 2nd release

    • ask harish.kanta to manage these in backlog priority.

  • No labels