hun*_*onk 4 automated-tests vagrant e2e-testing testcafe google-chrome-headless
在 Vagrant VM 中运行 testcafe,该 VM大部分工作正常。
但是,在启用硬件加速的环境中,Chrome 无法正常启动,因此我必须使用命令行标志来启动它--disable-gpu。
我利用“testcafe-browser-tools”包来完成此操作,通过 TestCafe API 中的 Runner 类覆盖默认浏览器命令。
对于打开浏览器窗口运行 TestCafe 的情况来说,这一切都很好,但我无法弄清楚如何使用相同的设置在无头模式下运行测试。我尝试--headless在修改浏览器命令时简单地添加 arg,但它只是挂起并且测试从未开始。
testcafe CLI 命令有一个无头模式开关,例如testcafe "chrome:headless" test.js,并深入研究似乎设置了一些内部配置变量来执行神奇操作的代码,但我一直无法弄清楚如何在自定义时获得相同的行为通过 API 的浏览器命令。
作为参考,这是我编写的用于处理启动测试的脚本:
const format = require('util').format;
const programName = process.argv[1];
const usage = () => {
console.log("Configures Chrome and runs all passed tests.\n\n");
console.log(format('Usage: %s [--headless] <file_pattern_1> [file_pattern_N]', programName));
}
const args = process.argv.slice(2);
const testFilePatterns = [];
let headless = '';
for (let filePattern of args) {
if (filePattern == '--headless') {
console.log('Headless mode enabled');
headless = '--headless';
}
else {
console.log(format('Adding file pattern %s for testing', filePattern));
testFilePatterns.push(filePattern);
}
}
if (testFilePatterns.length < 1) {
usage();
process.exit(1);
}
const testcafeBrowserTools = require('testcafe-browser-tools');
const createTestCafe = require('testcafe');
(async () => {
const info = await testcafeBrowserTools.getBrowserInfo('/usr/bin/chromium');
info.cmd = `${info.cmd} ${headless} --no-sandbox --disable-gpl`;
console.log(format('Running chrome with command: %s', info.cmd));
const testcafe = await createTestCafe();
const failedCount = await testcafe
.createRunner()
.src(testFilePatterns)
.browsers(info)
.run();
testcafe.close();
})();
Run Code Online (Sandbox Code Playgroud)
是否对该脚本进行了一些修改来解决我的问题,或者需要其他方法?
您可以使用以下代码在无头模式下运行测试:
\nawait testcafe.createRunner()\n .src(\'test.js\')\n .browsers(\'chrome:headless --no-sandbox --disable-gpu\')\n .run();\nRun Code Online (Sandbox Code Playgroud)\n\xc2\xa0 \xc2\xa0\xc2\xa0\n这是我们内部使用无头模式的方式,因此它将被正确解析。您能检查一下这个方法吗?
\n| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |