Skip to content

in BDD or Gherkin mode, the After is not synchronous where next scenario starts (while the After is still executing) #4288

Open

Description

@nnanoob

What are you trying to achieve?

In BDD / Gherkin mode, After to be synchronous so it run to completion before the next scenario starts

Scenario 1
After --- run completely before Scenario 2 start
Scenario 2

What do you get instead?

After is asynchronous so it might still running while the next scenario already starting
It seems that the After implementation is based on event which is independent from the promise chain.

Details

  • CodeceptJS version: 3.5.13
  • NodeJS Version: v18.19.0
  • Operating System: macOS
  • webdriverio 8.32.0

Activity

  1. nnanoob commented on Apr 4, 2024

    @nnanoob
    Author

    this is closely related to this #3870 but in this case, we are on After where we requires teardown of certain UI steps (which means we need to use the I and the approach of recorder doesn't work for us) before proceeding to next scenario

  2. myrepojuly commented on Apr 4, 2024

    @myrepojuly

    Agreed… this is really troubling a lot especially handling the after test events in the UI. Would be great if @kobenguyent you can fix this. I believe there was a similar issue with WebdriverIO and they fixed it.

  3. myrepojuly commented on Apr 5, 2024

    @myrepojuly

    @DavertMik would you be able to help us with this issue? Pls let us of you need more info…

  4. DavertMik commented on Apr 12, 2024

    @DavertMik
    Contributor

    It seems that the After implementation is based on event which is independent from the promise chain.

    @nnanoob @myrepojuly1987

    sorry, I don't think I can provide a quick fix on this

    maybe you could use recorder to synchonize actions inside it?

    After(() => {
    recorder.add(() => {
       // my actions
      })
    })

    If you have better suggestion, please send a PR

  5. myrepojuly commented on Apr 13, 2024

    @myrepojuly

    @DavertMik Adding the actions to the recorder does not work and it just hangs. Sure, will check for better suggestions.

  6. github-actions commented on Jul 13, 2024

    @github-actions

    This issue is stale because it has been open for 90 days with no activity.

  7. myrepojuly commented on Oct 25, 2024

    @myrepojuly

    @DavertMik @kobenguyent - could you please address this? At least if we could use the “I” object in the hooks, it would help us. Currently, adding the “I” object to the recorder inside a hook does nothing and just hangs.

  8. github-actions commented on Jan 25, 2025

    @github-actions

    This issue is stale because it has been open for 90 days with no activity.

  9. myrepojuly commented on Aug 31, 2025

    @myrepojuly

    @nnanoob I totally forgot to add this comment earlier. While revisiting the issues I raised, I realized that as a workaround, you can always use the hooks available by extending the Helper (https://codecept.io/helpers/#development). It runs flawlessly without issues.

    @kobenguyent - just FYI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions