Skip to content

BDD gherkin test hooks dont get triggered #4521

Closed

Description

@attilagyoriid

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

Activity

  1. kobenguyent commented on Oct 21, 2024

    @kobenguyent
    Collaborator
  2. attilagyoriid commented on Oct 22, 2024

    @attilagyoriid
    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

  3. kobenguyent commented on Oct 22, 2024

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

  4. attilagyoriid commented on Oct 22, 2024

    @attilagyoriid
    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

  5. kobenguyent commented on Oct 22, 2024

    @kobenguyent
    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

  6. locked and limited conversation to collaborators on Nov 11, 2024
  7. converted this issue into a discussion #4558 on Nov 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions