[英]2 testcafe runner with promise.race but how to run these together?
我在 testcafe 中有 2 個 runner.js,我想一起運行這 2 個 runner,我應該怎么做?
runner1.js
const createTestCafe = require('testcafe');
let testcafe = null;
createTestCafe()
.then(tc => {
testcafe = tc;
const runner = testcafe.createRunner();
let id;
const deadlinePromise = new Promise((resolve,reject) => {
id=setTimeout(() => {
clearTimeout(id);
reject('testcase couldnt meet the actual preferred time');
},215000)
});
const runPromise=runner
.src(test1.ts)
.browsers('chrome:headless')
.reporter('html-testrail')
.run({skipJsErrors:true})
race =Promise.race([runPromise,deadlinePromise])
race.then((res) => console.log(res))
})
.catch(failedCount => {
console.log('Tests1 failed: ' + failedCount);
testcafe.close();
})
runner2.js -- 類似但不同的src和deadlinePromise中的不同時間
const createTestCafe = require('testcafe');
let testcafe = null;
createTestCafe()
.then(tc => {
testcafe = tc;
const runner = testcafe.createRunner();
let id;
const deadlinePromise = new Promise((resolve,reject) => {
id=setTimeout(() => {
clearTimeout(id);
reject('testcase couldnt meet the actual preferred time');
},150000)
});
const runPromise=runner
.src(test2.ts)
.browsers('chrome:headless')
.reporter('html-testrail')
.run({skipJsErrors:true})
race =Promise.race([runPromise,deadlinePromise])
race.then((res) => console.log(res))
})
.catch(failedCount => {
console.log('Tests1 failed: ' + failedCount);
testcafe.close();
})
所以基本上兩個跑步者都包含 promise.race。 現在我想從命令行或另一個跑步者一起運行這兩個跑步者。 我怎么做?
我看到您已經在 testcafe 的主跑步者中為其他幾個跑步者提出了類似的問題? 線程,所以請不要重復問題。
我准備了一個演示所需行為的示例。 請參閱以下代碼:
const createTestCafe = require('testcafe');
(async () => {
const testCafe = await createTestCafe();
let timeout1, timeout2;
const runner1RunPromise = testCafe
.createRunner()
.src('test1.js')
.reporter([{ name: 'spec', output: 'report1.txt' }])
.browsers('chrome')
.run();
const deadline1Promise = new Promise((resolve, reject) => {
timeout1 = setTimeout(() => {
runner1RunPromise.cancel();
console.log('runner 1 canceled');
resolve();
}, 5000);
});
const runner2RunPromise = testCafe
.createRunner()
.src('test2.js')
.reporter([{ name: 'spec', output: 'report2.txt' }])
.browsers('firefox')
.run();
const deadline2Promise = new Promise((resolve, reject) => {
timeout2 = setTimeout(() => {
runner2RunPromise.cancel();
console.log('runner 2 canceled');
resolve();
}, 40000);
});
const race1 = Promise.race([runner1RunPromise.then(() => clearTimeout(timeout1)), deadline1Promise]).then(() => { console.log('race 1 finished') });
const race2 = Promise.race([runner2RunPromise.then(() => clearTimeout(timeout2)), deadline2Promise]).then(() => { console.log('race 2 finished') });
await Promise.all([race1, race2]);
console.log('finished');
await testCafe.close();
})();
請注意,您不需要創建多個 testcafe 實例。 創建幾個跑步者就足夠了。 請參閱以下描述如何取消正在運行的任務的文章: https://devexpress.github.io/testcafe/documentation/using-testcafe/programming-interface/runner.html#cancelling-test-tasks
因此,您可以在超時時取消測試執行或等待所有測試完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.