Skip to content

Async / sequentially

Steps can be asynchronous because they are executed sequentially. But Scenario and ScenarioOutline are not asynchronous.

Depending on your needs, you can use scenario hooks.

Steps are run sequentially

Since v2.0.0 vitest-cucumber uses test.each instead of test. To follow the Gherkin convention, 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)
})
})
})