有什么方法可以使用 jest-puppeteer 对片状测试进行重试?

Nik*_*lai 2 automated-tests typescript jestjs e2e-testing puppeteer

我遇到了一个问题,在 Jest 中没有内置的方法来重试脆弱的测试。我正在使用 Jest + TS + Puppeteer。任何人都有同样的问题或可能的解决方案\建议?我试图实现这个 : link ,但没有成功。

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

代码示例:

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);
});
});
Run Code Online (Sandbox Code Playgroud)

小智 10

Jest v27开始,jest-circus 现在是默认的测试运行程序。因此上述解决方案无需额外配置即可工作。


小智 6

你试过安装 jest-circus 吗?

使用此测试运行器,您可以执行以下操作:

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

describe('Test', () => {
    test('Test_Test', async () => {
        //test code
        ...
        })
})
Run Code Online (Sandbox Code Playgroud)

以尽量减少测试的片状。