🏡 index : quine-global/webdriverio.git

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)
        }
    }
})