gpt4 book ai didi

automated-tests - 通过 testcafe-browser-tools 将自定义参数传递给 Chrome 二进制文件时 headless 运行 testcafe

转载 作者:行者123 更新时间:2023-12-04 06:57:55 26 4
gpt4 key购买 nike

在 Vagrant VM 中运行 testcafe,它大部分时间都在工作。

但是,Chrome 在这种启用了硬件加速的环境中无法正常启动,所以我必须使用命令行标志 --disable-gpu 来启动它。

我正在利用“testcafe-browser-tools”包来实现这一点,方法是通过 TestCafe API 中的 Runner 类覆盖默认浏览器命令。

对于在打开浏览器窗口的情况下运行 TestCafe 的情况,这一切都很好,但我一直无法弄清楚如何使用相同的设置在 headless 模式下运行测试。我尝试在修改浏览器命令时简单地添加 --headless arg,但它只是挂起并且测试永远不会开始。

testcafe CLI 命令有一个用于 headless 模式的开关,比如 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();
})();

是否对该脚本进行了一些修改以解决我的问题,或者是否需要其他方法?

最佳答案

您可以使用以下代码在 headless mode 中运行测试:

await testcafe.createRunner()
.src('test.js')
.browsers('chrome:headless --no-sandbox --disable-gpu')
.run();

这是我们在内部使用 headless 模式的方式,所以它会被正确解析。你能检查一下这个方法吗?

关于automated-tests - 通过 testcafe-browser-tools 将自定义参数传递给 Chrome 二进制文件时 headless 运行 testcafe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com