无法 运行 使用 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
- 第三用户-test.js
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');
});
- 场景-gist.js
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。
在 testcafe 的 github.
上有一个多用户场景的例子https://github.com/DevExpress/testcafe-example-multiuser-scenario
我正在尝试扩展它并确保它能在 3 个用户中正常工作。
https://github.com/touka-tt/testcafe-example-multiuser-scenario
- 第三用户-test.js
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');
});
- 场景-gist.js
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。