vitest-cucumber
Présentation Installation Configuration Gherkin Scenario Scenario Outline Background Rule Hooks Gherkin tags Async steps and sequentially Steps with expressions DocStrings DataTables Spoken languages Upcoming

vitest-cucumber

For async and await

Steps can be asynchronous because they are executed sequentially.

But Scenario and ScenarioOutline are not asynchronous.

Depending on what you need to do you can use scenario hooks.

Steps are run sequentially

Since v2.0.0 vitest-cucumber use test.each instead of test. To follow Gherkin way, steps are tested one after one.

An example Scenario :

describeFeature(feature, ({ Scenario }) => {
    Scenario(`Run steps sequentially`, ({ Given, And, When, Then }) => {
        let count = 0
        Given(`Count equals 0`, () => {
            expect(count).toBe(0)
        })
        And(`I increase the count by 1 in a promise`, async () => {
            await new Promise((resolve) => {
                count++
                resolve(null)
            })
        })
        When(`I use a timeout to increase`, async () => {
            await new Promise((resolve) => {
                setTimeout(() => {
                    count++
                    resolve(null)
                }, 1000)
            })
        })
        Then(`At end count should be 2`, () => {
            expect(count).toBe(2)
        })
    })
})