Vitest Plugin
Since 4.1.1 vitest-cucumber provides a Vitest plugin to automatically create and update .spec.ts files when .feature files change.
This plugin is optional — it does not change how vitest-cucumber runs tests.
Note: currently this plugin doesn’t work with vitest browser mode.
Since 7.0.0 the plugin is exported from @amiceli/vitest-cucumber/plugin, not from the main entry point anymore.
Use plugin
Section titled “Use plugin”Add plugin in your vitest.config.js:
import { defineConfig } from "vitest/config"
import { VitestCucumberPlugin } from "@amiceli/vitest-cucumber/plugin"
export default defineConfig({
// ...
plugins: [
VitestCucumberPlugin({
specFilesDir: 'src/__tests__/',
featureFilesDir : 'src/features/',
})
],
// ...
})
Note: specFilesDir and featureFilesDir are folder paths, not glob patterns.
Now when you run vitest, vitest-cucumber will watch your .feature file in src/features.
By example, if your create src/features/user-auth.feature, vitest-cucumber will create
src/__tests__/user-auth.spec.ts file like npx @amiceli/vitest-cucumber does.
Update spec file
Section titled “Update spec file”When your .feature file change, vitest-cucumber updates spec file.
By example your .feature file
Feature: User
Scenario: User login page
Given User on login page
You spec file:
describeFeature(feature, ({ Scenario }) => {
Scenario(`User login page`, ({ Given }) => {
Given(`User on login page`, () => {})
})
})
If you add a new step like When I click on "login" button, vitest-cucumber
add new step in your spec file :
describeFeature(feature, ({ Scenario }) => {
Scenario(`User login page`, ({ Given, When }) => {
Given(`User on login page`, () => {})
When(`I click on "login" button`, () => {})
})
})
Features
Section titled “Features”vitest-cucumber-plugin what your changes in .feature file:
- add / remove
Scenario,ScenarioOutline,BackgroundfromRuleandFeature - add / remove step(s) from
Scenario,ScenarioOutlineandBackground - update arrow functions arguments, by example :
- removes
Andfrom{ Given, When, And}if you remove last ScenarioAndstep - add
Backgorundin{ Scenario }if you add aBackgroundin yourRule/Feature
- removes
vitest-cucumber-plugin will match steo even if you use step expression.
By example When('I click on {string} button', () => {}) match with When I click on "login" button.
To check and update code vitest-cucumber-plugin uses ts-moprh ❤️.
Configuration
Section titled “Configuration”vitest-cucumber-plugin provides some options:
formatCommand(optional): will run a command to format spec file after update- by example :
npx biome check --write - plugin will pass spec file pass to your command
- by example :
onDeleteAction(optional) : define how to handle remove code from.feature filedelete(default value): plugin will remove code in your spec filecommentplugin will comment code in your spec file
Example:
// When(`I click on "login" button`, () => {
// console.debug('login')
// })