import { config as baseConfig } from './config.js'
export const config = Object.assign({}, baseConfig, {
framework: 'cucumber',
async beforeFeature () {
await browser.pause(30)
browser.Cucumber_Test = 0
},
beforeScenario: async () => {
await browser.pause(30)
browser.Cucumber_Test = 1
},
beforeStep: async function (step, scenario) {
await browser.pause(20)
browser.Cucumber_Test += 2
browser.Cucumber_CurrentStepText = step.text
browser.Cucumber_CurrentScenario = scenario.name
},
afterStep: async function (step, scenario, result) {
await browser.pause(25)
if (
browser.Cucumber_CurrentStepText !== step.text ||
browser.Cucumber_CurrentScenario !== scenario.name ||
typeof result.passed !== 'boolean'
) {
throw new Error("step data doesn't match")
}
browser.Cucumber_Test = 1
},
afterScenario: async () => {
await browser.pause(30)
browser.Cucumber_Test = -1
},
afterFeature: async () => {
delete browser.Cucumber_Test
await browser.pause(30)
},
beforeHook: async () => {
browser.Cucumber_BeforeHook = (browser.Cucumber_BeforeHook || 0) + 1
},
afterHook: async () => {
browser.Cucumber_AfterHook = (browser.Cucumber_AfterHook || 0) + 1
},
after: () => {
* expect hooks to be exected 46 times
*/
if (browser.Cucumber_AfterHook !== browser.Cucumber_BeforeHook || browser.Cucumber_AfterHook === 0) {
* if assertion fails:
* - print error stack so we know where it failed
* - exit process with failure to let smoke test fail
*/
console.log(new Error('AssertionError: Cucumber did not execute beforeHook/afterHook hooks correctly'))
process.exit(1)
}
}
})