-
-
Notifications
You must be signed in to change notification settings - Fork 747
BDD gherkin test hooks dont get triggered #4558
-
What are you trying to achieve?
wire up bdd test hooks like const { Before, After, BeforeAll, AfterAll } = require('@cucumber/cucumber');
What do you get instead?
hooks dont get triggered
Provide test source code if related
testHooks.js content: const { Before, After, BeforeAll, AfterAll } = require('@cucumber/cucumber'); BeforeAll(() => { console.log('Global setup before all tests'); }); AfterAll(() => { console.log('Global teardown after all tests'); }); Before(() => { console.log('Running setup before each test'); }); After(() => { console.log('Running cleanup after each test'); });
Details
- CodeceptJS version: 3.6.7
- NodeJS Version: v20.11.0
- Operating System: macOS 15.0.01
- puppeteer || webdriverio || testcafe version (if related)
- Configuration file:
codecept.conf.js gherkin: { hooks: './codeceptjs/testHooks.js', features: '../features/**/*.feature', steps: '../src/steps/**/*_steps.js', }, → testHooks.js not even called, and lifecycle methods not triggered
question: how to hook up bdd hooks? - in this case I needed a BeforeAll hook as a global hook
Thanks for the guidance in advance
Best Regards
Attila
Beta Was this translation helpful? Give feedback.
All reactions
Replies: 4 comments
-
please check this https://codecept.io/bdd/#before, hope this helps @attilagyoriid
and https://codecept.io/bdd/#advanced-gherkin
Beta Was this translation helpful? Give feedback.
All reactions
-
Dear @kobenguyent
thank you very much for your answer.
The description under the link you sent suggests that these lifecycle test hook go for the specific step implementation
// inside step_definitions Before((test) => { // perform your code test.retries(3); // retry test 3 times });"
Question:
How can achieve a "BeforeAll" lifecycle hook running before each and every scenarios located in any step implementation file? So basically a hook running before all features
Best Regards
Attila
Beta Was this translation helpful? Give feedback.
All reactions
-
I'm not really understanding much the bdd implementation but I think you could achieve this by using event listeners
For example
const event = require('codeceptjs').event;
module.exports = function() {
event.dispatcher.on(event.all.before, function () {
console.log('--- I am before all --');
// your pre-requisite steps goes here
});
}
Beta Was this translation helpful? Give feedback.
All reactions
-
Dear @kobenguyent thanks for the quick reply again
I would need a global life cycle hook where I can use I actor. Is there any hook like that?
Best Regards
Attila
Beta Was this translation helpful? Give feedback.