I am trying to do BDD with cucumber-js and drive the browser testing with Headless Chrome and puppeteer.
Using the documentation from cucumber node example and headless chrome, I get the following errors, the entire code base is avaliable here: github repo.
Errors:
- TypeError: this.browser.newPage is not a function
- TypeError: this.browser.close is not a function
// features/support/world.js
JavaScript
x
11
11
1
const puppeteer = require('puppeteer');
2
var {defineSupportCode} = require('cucumber');
3
4
function CustomWorld() {
5
this.browser = puppeteer.launch();
6
}
7
8
defineSupportCode(function({setWorldConstructor}) {
9
setWorldConstructor(CustomWorld)
10
})
11
// features/step_definitions/hooks.js
JavaScript
1
9
1
const puppeteer = require('puppeteer');
2
var {defineSupportCode} = require('cucumber');
3
4
defineSupportCode(function({After}) {
5
After(function() {
6
return this.browser.close();
7
});
8
});
9
// features/step_definitions/browser_steps.js
JavaScript
1
20
20
1
const puppeteer = require('puppeteer');
2
var { defineSupportCode } = require('cucumber');
3
4
defineSupportCode(function ({ Given, When, Then }) {
5
Given('I am on the Cucumber.js GitHub repository', function (callback) {
6
const page = this.browser.newPage();
7
return page.goto('https://github.com/cucumber/cucumber-js/tree/master');
8
});
9
10
When('I click on {string}', function (string, callback) {
11
// Write code here that turns the phrase above into concrete actions
12
callback(null, 'pending');
13
});
14
15
Then('I should see {string}', function (string, callback) {
16
// Write code here that turns the phrase above into concrete actions
17
callback(null, 'pending');
18
});
19
});
20
Advertisement
Answer
We created puppeteer-cucumber-js to simplify working with Puppeteer and Cucumber:
- Run
npm install puppeteer-cucumber-js
- Create a
features
folder in the root of your project - Add a
feature-name.feature
file with yourGiven, When, Then
statements - Create a
features/step-definitions
folder - Add JavaScript steps to execute for each of your features steps
- Run tests
node ./node_modules/puppeteer-cucumber-js/index.js --headless
Source code with a working example on GitHub