A starter repo for writing E2E tests based on Cucumber(7) with Playwright using Typescript.
The playwright-cucumber project started when playwright was a browser automation library. It did not have a test runner, hence cucumber-js was used as the test runner and PW used for the automation. Since then PW added their amazing PW test library which is a test runner. But, sadly, it overlaps the functionality provided by cucumber-js. Therefore you need to make the decision now of which runner you want to run: cucumber for BDD style tests or PW test for “normal” tests. Some of the features provided by PW test are also available in cucumber-js, such as parallel run and different configurations (profiles in cucumber-js terms), but may require a different configuration.
This repository is based on the Cucumber-typescript-starter repo.
- Typescript setup for writing steps with eslint/typescript and prettier
- Launching of Playwright browser before running all tests
- Launching new context and page for each scenario
- Running feature with video recording option
- Report generated with last good image attached
- Allure reports
- Utilies function to help you with writing steps
- VScode configuration to debug a single feature or an only scenario (run when located on the feature file)
npm install to install node modules
npx playwright install to install Playwright
For the MS365 MFA login flow to work locally you will need to create a .env file in the root of the project with the following variables:
HOIST_USERNAME=
HOIST_PASSWORD=
HOIST_OTP_SECRET=
Create a repo based on this template and start writing your tests.
npm run test or npx cucumber-js runs all tests
npm run test <feature name> or npx cucumber-js <feature name> run the single feature
By default we will use chromium. You can define an envrionment variable called BROWSER and set the name of the browser. Available options: chromium, firefox, webkit
On Linux and Mac you can write:
BROWSER=firefox npm run test or BROWSER=firefox npx cucumber-js runs all tests using Firefox
One Windows you need to write
set BROWSER=firefox
npm run test
I am not fond of the Page Object Model (POM) for testing. It feels like a leftover from Java world, and I do not think it fits the Javascript world. However, you can check this PR to see POM implementation.
- npm run debug- headful mode with APIs enables both APIs and debug options
- npm run api- headless mode with debug apis
- npm run video- headless mode vith video
- Open the feature
- Select the debug options in the VSCode debugger
- Set breakpoints in the code
To stop the feature, you can add the Then debug step inside your feature. It will stop your debugger.
The last reporter/formatter found on the cucumber-js command-line wins:
--format summary --format @cucumber/pretty-formatter --format cucumber-console-formatter
In cucumber.mjs file, modify the options.
To use Allure reporting, you can run with env param: USE_ALLURE=1, and then use the npm run allure to show the report.
- tag the scenario with @ignore
- run the command npm run build.
- run the command npm run steps-usage.
- run the command npm run report.
- Modify the package.jsonin"report": "xdg-open reports/report.html"
- run the command npm run allure.