Testing TestCafe:跨不同浏览器的并发测试问题
我有一个带有4个测试的装置,我想用2个不同的浏览器来测试这个装置。所以我运行下面的命令:Testing TestCafe:跨不同浏览器的并发测试问题,testing,automation,e2e-testing,testcafe,browser-automation,Testing,Automation,E2e Testing,Testcafe,Browser Automation,我有一个带有4个测试的装置,我想用2个不同的浏览器来测试这个装置。所以我运行下面的命令: testcafe -c 1 chrome,firefox testsfolder/ 我使用t.fixtureCtx设置这4个测试的值,因为我需要将一个测试的值引用到另一个测试。我曾期望它能分别启动Chrome和FF的一个实例,并独立运行整个测试(浏览器) 然而,我面临的问题是,测试并没有停留在他们的车道上。换句话说,Firefox在其测试2中使用Chrome在测试1中设置的值 我总是可以用两个单独的命令分
testcafe -c 1 chrome,firefox testsfolder/
我使用t.fixtureCtx
设置这4个测试的值,因为我需要将一个测试的值引用到另一个测试。我曾期望它能分别启动Chrome和FF的一个实例,并独立运行整个测试(浏览器)
然而,我面临的问题是,测试并没有停留在他们的车道上。换句话说,Firefox在其测试2中使用Chrome在测试1中设置的值
我总是可以用两个单独的命令分别运行这些测试,但是我想用一个命令在多个浏览器上测试它。我在这里遗漏了什么吗?在服务器端运行fixture测试之前创建一次,并在多个浏览器之间共享。这种行为是故意的
我建议您根据浏览器名称将共享值保存为对象
例如:
const logTimestamp = t => {
if (!t.fixtureCtx.sharedData)
t.fixtureCtx.sharedData = {};
const browser = t.browser.name;
if (!t.fixtureCtx.sharedData[browser]) {
t.fixtureCtx.sharedData[browser] = { timestamp: new Date().getTime() };
}
};
fixture`Fixture 1`
.page`about:blank`;
test('Test 1', async t => {
await t.wait(1000);
logTimestamp(t);
console.log(`Test 1, browser: ${t.browser.name}, timestamp: ${t.fixtureCtx.sharedData[t.browser.name].timestamp}`);
});
test('Test 2', async t => {
await t.wait(1000);
console.log(`Test 2, browser: ${t.browser.name}, timestamp: ${t.fixtureCtx.sharedData[t.browser.name].timestamp}`);
});