I was trying to debug Cucumber scenarios in Visual Studio code and made below changes in the launch.json
.
{"name": "e2e","type": "node","request": "launch","program": "${workspaceRoot}\\node_modules\\.bin\\cucumber-js","stopOnEntry": false,"args": ["--no-timeouts", "--colors"],"cwd": "${workspaceRoot}","runtimeExecutable": null,"outFiles": ["${workspaceRoot}\\features\\step_definitions\\*.js"]},
However, I am not able run a debug session using the above configuration. The step def. files I created in JavaScript. So, just need a help on the script above if that looks fine?
Best Answer
You could try below configuration to make your debug working in VS Code. In the outFiles
give your feature file path.
{"name": "e2e","type": "node","request": "launch","program": "${workspaceRoot}/node_modules/cucumber/bin/cucumber.js","outFiles": ["${workspaceRoot}/features/*.feature"]}
============================================
UPDATE AS OF cucumber ^5.0.2:
{"name": "NPM Cukes","type": "node","request": "launch","console": "integratedTerminal","program": "${workspaceRoot}/node_modules/cucumber/bin/cucumber-js","args": ["path/to/features/**/*.feature","-r","path/to/steps/**/*","--tags","@your-tags"]}
If you want to debug only CURRENT feature, add this to launch.json
{"type": "node","request": "launch","program": "${workspaceFolder}/node_modules/.bin/cucumber-js","args": ["${relativeFile}"],"name": "Cukes current","console": "integratedTerminal","internalConsoleOptions": "neverOpen","windows": {"program": "${workspaceFolder}/node_modules/cucumber/bin/cucumber"}}
Tweaking the answer from Mukesh Rawat plus ensuring additional file paths were correct, got it working for me, :
Launch.json
{"name": "DebugMode","type": "node","request": "launch","program": "${workspaceRoot}/node_modules/cucumber/bin/cucumber-js","args": ["${workspaceRoot}/features/*.feature","--tags", "@debug"]}
Workspace.json
{"cucumberautocomplete.steps": ["features/steps/*.js"],"cucumberautocomplete.syncfeatures": "features/*.feature","cucumberautocomplete.strictGherkinCompletion": true,"settings": {},"folders": [{"path": "/Users/{me}/Documents/{project folder}/{project name}"}]}
Package.json
"scripts": {"debug": "node --inspect=1337 --debug-brk --nolazy node_modules/cucumber/bin/cucumber-js --tags @debug --format json:./reports/report.json",
CucumberTest.feature
@debugScenario: Validate I can get debug working
When working with Ruby, it could be used on this way to run specific feature files:
{"name": "Cucumber","type": "Ruby","request": "launch","cwd": "${workspaceRoot}","program": "${workspaceRoot}/bin/cucumber","args": ["--tags", "@Mytags",]}
This works
{"name": "DebugMode","type": "node","request": "launch","program": "${workspaceRoot}/node_modules/cucumber/bin/cucumber-js","args": ["${workspaceRoot}/features/*.feature","--tags", "@debug"]}
Here's the simplest way I've found to run Cucumber.js in the VS Code debugger:
- Set JavaScript debugger auto attach to "onlyWithFlag" (Ctrl+Shift+P, type "Toggle Auto Attach")
- Run Cucumber.js as follows:
node --inspect ./node_modules/.bin/cucumber-js <args...>
- For convenience, set an NPM run script in your test project for "debug" so you can run this as
npm run debug -- <args...>
with the latest Cucumber, Playwright, typescript as of January 2023 - F5 (run in VSCode) - set debugger
in ts step files and use .vscode/launch.json
(you might tweak your reports location)
{"version": "0.1.0","configurations": [{"name": "debugMode","type": "node","request": "launch", "console": "integratedTerminal","internalConsoleOptions": "neverOpen", "program": "node_modules/@cucumber/cucumber/bin/cucumber-js","args": ["./features/*.feature","--require-module","ts-node/register","--require", "./steps/*.steps.ts", "--tags","@demoX", "--format", "progress","--format", "json:./Reports/cucumber_report.json" ]}]}