有什么方法可以使用 jest-puppeteer 重试易碎测试?

Any way to make a retries for flaky tests using jest-puppeteer?

我遇到了一个问题,即 Jest 中没有重试易碎测试的内置方法。我正在使用 Jest + TS + Puppeteer。任何人都有同样的问题或可能 solutions\suggestions? 我试图实现这个:link,但没有成功。

jest-retries 对我不起作用,因为我创建了用户并做了很多操作,如果测试失败 - 使用相同的 cookie 等在同一个 chromium 选项卡中重试重新启动测试。提前致谢!

代码示例:

const it = require('jest-retries');

describe('any tests', () => {

beforeEach(async () => {
    await page.emulate(devices['Galaxy S5']);
    await page.goto(newSearchUrl, { waitUntil: 'networkidle2' });

});

it('dummy test', 2, async () => {
    await userSignup(); // custom wrapper for signup
    await checkGraphqlSuccess('success dumb event');
    const iconHeader = await waitForElementVisible(favoriteBtnHeader);
    await iconHeader.click();
    const number = await waitForElementVisible(number1);
    const getNumber1 = await page.evaluate(obj => {
        return obj.getAttribute('data-id');
    }, number);
    expect(azaza1).toEqual(getNumber1);
});

afterAll(async () => {
    dumpEvents(fileName);
});
});

你试过安装 jest-circus 吗?

有了这个测试运行程序,您接下来可以做:

//my_perfect_test.js
jest.retryTimes(3) //set maximum retries number

describe('Test', () => {
    test('Test_Test', async () => {
        //test code
        ...
        })
})

尽量减少测试的不稳定性。

Jest v27, jest-circus is now the default test runner. So the 起无需额外配置即可使用。