Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BDD gherkin test hooks dont get triggered #4521

Closed
attilagyoriid opened this issue Oct 21, 2024 · 5 comments
Closed

BDD gherkin test hooks dont get triggered #4521

attilagyoriid opened this issue Oct 21, 2024 · 5 comments

Comments

@attilagyoriid
Copy link

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

@kobenguyent
Copy link
Collaborator

kobenguyent commented Oct 21, 2024

@attilagyoriid
Copy link
Author

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

@kobenguyent
Copy link
Collaborator

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
});
}

@attilagyoriid
Copy link
Author

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

@kobenguyent
Copy link
Collaborator

@attilagyoriid would you mind sharing the use case where you need that for? I'm not sure I could help but that would be helpful for community

@codeceptjs codeceptjs locked and limited conversation to collaborators Nov 11, 2024
@kobenguyent kobenguyent converted this issue into discussion #4558 Nov 11, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Projects
None yet
Development

No branches or pull requests

2 participants