Skip to content

[Feature]: test.step/it.step (like in playwright) for the integrated tests (with @testing-library/react, for example) #16027

Open

Description

@boardgames

🚀 Feature Proposal

In complex functional tests (to test react+redux+saga) in complex, it is very convenient to make a sequence of steps in the test, like a playwright

Motivation

I would like to see a more precise test structure in the reports.

Example

At the moment the test looks like this:

describe('Test select nodes on scheme canvas', () => {
   it('Select RED node', async () => {
      const { screen, store } = await initWebview();
      
      // Add RED node
      await screen.scheme.toolbar.buttonAddRedNode.click();

      await expect(store.getNode('node-1)).toBeExisted();
      await expect(screen.scheme.canvas.getNode('node-1')).toBeVisible();

      // Select RED node
      await screen.scheme.scheme.getNode('node-1').click();

      await expect(store.getSelectedNode()).toEqual('node-1');
      await expect(screen.scheme.canvas.getNode('node-1')).toBeSelected();
   });
});

Wanna:

describe('Test select nodes on scheme canvas', () => {
   it('Select RED node', async () => {
      const { screen, store } = await intitWebview();
      
      await it.step('Add RED node', async () => {
           await screen.scheme.toolbar.buttonAddRedNode.click();

           await expect(store.getNode('node-1')).toBeExisted();
           await expect(screen.scheme.canvas.getNode('node-1')).toBeVisible();
           
      });

      await it.step('Select RED node', async () => {
           await screen.scheme.scheme.getNode('node-1').click();

           await expect(store.getSelectedNode()).toEqual('node-1');
           await expect(screen.scheme.canvas.getNode('node-1')).toBeSelected();
      });
   });
});

Pitch

This pattern would seemingly work in both async and sync test blocks and would allow us to have more flexibility with writing out tests while still getting clear indication on what step a test failed on.

Activity

  1. github-actions commented on May 2, 2026

    @github-actions

    This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 30 days.

  2. ahnpnl commented on May 7, 2026

    @ahnpnl
    Contributor

    not stale

  3. SimenB commented on May 7, 2026

    @SimenB
    Member

    Happy to take a PR for this 🙂 If anybody picks this up there's no need to add support in jest-jasmine - jest-circus is enough.

  4. LeonxLJX commented on Sep 1, 2026

    @LeonxLJX

    I'd like to take this one ([Feature]: test.step/it.step (like in playwright) for the in). I'll look into the root cause and follow up with a PR. (claiming via @LeonxLJX)

  5. LeonxLJX commented on Sep 1, 2026

    @LeonxLJX

    I'd like to take this one ([Feature]: test.step/it.step (like in playwright) for the in). I'll look into the root cause and follow up with a PR. (claiming via @LeonxLJX)

  6. drewnetic commented on Sep 16, 2026

    @drewnetic

    Hi @LeonxLJX, just checking in on this one — are you still actively working on it? I noticed PR #16157 has been stale for a while (unresolved merge conflicts, missing CLA, and a few failing checks), so I wanted to see if you have a WIP branch somewhere before I look into picking it up myself. No rush, just want to avoid duplicate work 🙂

  7. drewnetic commented on Sep 26, 2026

    @drewnetic

    Since there's been no update, I'll go ahead and start working on this. Will link a PR here once I have something ready — happy to coordinate if you're still planning to work on it too, @LeonxLJX.

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