Skip to content

This repository explains how to use Puppeteer with Cucumber

Notifications You must be signed in to change notification settings

ghoshasish99/Puppeteer-Cucumber

Repository files navigation

Puppeteer Test Execution

Puppeteer (execution on Moon) with CucumberJS

Puppeteer end-to-end test automation with CucumberJS

Getting Started

  • To install Puppeteer : npm install puppeteer --save-dev
  • To install Cucumber : npm install cucumber --save-dev
  • To install Junit Reporter : npm install cucumberjs-junitxml --save-dev
  • To install Chai : npm install chai --save-dev

To execute the tests

Define the scripts in package.json as follows :

"scripts": {
    "test": "cucumber-js --parallel 1 -f json:report/report.json && node report.js && cat report/report.json | npx cucumber-junit > report/junitreport.xml"
  }

Finally execute the tests with npm test

Create a global browser for the test session

BeforeAll(async() =>{
        if (moonHost){
                global.browser = await puppeteer.connect({
                timeout: 10000,
                browserWSEndpoint : 'ws://'+moonHost+':4444/cdtp/chrome',
                headless:false
            });
        }
        else{
            global.browser = await puppeteer.launch();
        }
});

Create a fresh browser context for each test

Before(async() =>{
    global.context = await global.browser.createIncognitoBrowserContext();
    global.page = await global.context.newPage();
});

A sample Feature file

Scenario Outline: Login to the E-Shop Application with Wrong Password
    Given User launched eshop login page
    When User logged in eshop using the invalid emailid "<EmailID>" and the invalid password "<Password>"
    Then User should not get logged in

    Examples:
      | EmailID                    | Password  |
      | testuser_negative@shop.com | Testing$1 |

A sample stepdefinition

When('User logged in eshop using the invalid emailid {string} and the invalid password {string}',async(username,password) =>{
    await loginpage.login(username,password);
});

Example of how a Puppeteer code snippet looks

const puppeteer= require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const context = await browser.createIncognitoBrowserContext();
  const page = await context.newPage();
  await page.goto('https://www.example.com/');
  await page.screenshot({ path: 'page.png', fullPage: true });

  await browser.close();
})();

For more on Puppeteer click here

To know about Moon, how to deploy and use Moon, read the article below : https://ghoshasish99.medium.com/deploy-moon-on-azure-and-google-cloud-607a9604bccc

About

This repository explains how to use Puppeteer with Cucumber

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published