无法 运行 使用 testcafe 对超过 3 个用户进行测试

Failed to run tests with more than 3 users with testcafe

在 testcafe 的 github.

上有一个多用户场景的例子

https://github.com/DevExpress/testcafe-example-multiuser-scenario

我正在尝试扩展它并确保它能在 3 个用户中正常工作。

https://github.com/touka-tt/testcafe-example-multiuser-scenario

const { Selector } = require('testcafe');

const { getScenario } = require('..');

const scenario = getScenario('An example of synchronizing multiple tests');
const stage    = scenario.initUser('Third user');

fixture`Third fixture`
    .page('http://localhost:3000');

const input = Selector('input');
const h1    = Selector('h1');

test('test', async t => {
    await stage('Check page load');

    await t.expect(input.exists).ok();

    await stage('Type a color and send it');

    await t
        .typeText(input, 'red')
        .pressKey('enter');

    await stage('Check result');

    await t.expect(h1.innerText).eql('Not ok!');

    await stage('End');
});
const { Scenario } = require('..');

module.exports = async () => {
    const scenario = new Scenario('An example of synchronizing multiple tests');

    const [user1, user2, user3] = await Promise.all([
        scenario.createUser('First user', 'test/first-user-test.js', 'chrome'),
        scenario.createUser('Second user', 'test/second-user-test.js', 'chrome --incognito'),
        scenario.createUser('Third user', 'test/third-user-test.js', 'chrome --incognito')
    ]);

    await Promise.all([
        user1.runStage('Check page load'),
        user2.runStage('Check page load'),
        user3.runStage('Check page load')
    ]);

    await user1.runStage('Type a color and send it');
    await user1.runStage('Check result');

    await user2.runStage('Type a color and send it');
    await user2.runStage('Check result');

    await user3.runStage('Type a color and send it');
    await user3.runStage('Check result');

    user1.runStage('End');
    user2.runStage('End');
    user3.runStage('End');
};

乍一看,这个测试似乎很有效。然而,第一次测试是 运行,它成功了,但是在第二次和之后的 运行 秒,它在第一个 createUser 时停滞了。

请告诉我如何使用 testcafe 开发可由多个用户重复的 e2e 测试。

找到故障原因了。事实上,从 v1.15.3 开始,TestCafe 会重置测试文件中请求的模块的缓存。因此,getScenario 有时会尝试在已被覆盖的对象中查找脚本。

我已经修复了存储库中的这个错误:https://github.com/DevExpress/testcafe-example-multiuser-scenario

在 PR 中进行了更改:https://github.com/DevExpress/testcafe-example-multiuser-scenario/pull/3