Protractor Cucumber Framework with Serenity/JS
June 21, 2023 · View on GitHub
This project was created using a Serenity/JS template to demonstrate how to integrate Angular Protractor and protractor-cucumber-framework
together with Serenity/JS and its reporting services to produce HTML reports and living documentation of your project.
Learn more:
Prerequisites
To use this project, you'll need:
- Node.js, a Long-Term Support (LTS) release version 14 or later - download
- Java Runtime Environment (JRE) or a Java Development Kit (JDK) version 8 or later - download
- Chrome web browser - download
Follow the installation instructions to help you verify your setup.
Installation
Once you have the code on your computer, use your computer terminal to run the following command in the directory where you've cloned the project:
npm ci
Running npm ci downloads the Node modules this project depends on, as well as the latest version of chromedriver and the Serenity BDD CLI reporter jar.
Corporate networks
If your network administrators require you to use proxy servers or an internal artifact registry (Artifactory, Nexus, etc.), your development environment might require some additional configuration.
The easiest way to do it is to create an .npmrc file in your home directory:
proxy=http://user:password@host.mycompany.com:8080/
https-proxy=http://user:password@host.mycompany.com:8080/
strict-ssl=false
registry=https://artifactory.mycompany.com/artifactory/
If you encounter issues downloading the Serenity BDD CLI jar, please follow the detailed instructions in the Serenity/JS Handbook.
Similar instructions are available for the chromedriver module.
Execution
The project provides several NPM scripts defined in package.json:
npm run clean # removes reports from any previous test run
npm test # executes the example test suite
# and generates the report under ./target/site/serenity
npm start # starts a mini HTTP server and serves the test reports
# at http://localhost:8080
Running individual scenarios by name
To execute only those scenarios which names match a given pattern, run:
npm run test:execute -- --cucumberOpts.name="Adding numbers"
Note that this technique works with partial matches, i.e. specifying --cucumberOpts.name="numbers" would match both scenarios in the example .feature file.
Running scenarios by tag
You can limit the number of scenarios to execute using Cucumber tags and tag expressions, for example:
npm run test:execute -- --cucumberOpts.tags="@smoke-test and @fast"
Running scenarios by file name and line number
You can also run a single scenario by specifying its exact file:line location, for example
npm run test:execute -- --specs=features/super_calculator.feature:24
Your feedback matters!
Do you find Serenity/JS useful? Give it a star! ★
Found a bug? Need a feature? Raise an issue or submit a pull request.
Have feedback? Let me know on Twitter: @JanMolak
If you'd like to chat with fellow users of Serenity/JS, join us on Serenity/JS Community Chat.
New tutorials and videos are coming soon, follow us on LinkedIn and subscribe to Serenity/JS YouTube channel to get notified when they're available!
And if Serenity/JS has made your life a little bit easier, please support its ongoing development.