Запуск testcafe внутри Vagrant VM, которая в основном работает.
Однако Chrome не запускается должным образом в этой среде с включенным аппаратным ускорением, поэтому я должен запустить его сфлаг командной строки --disable-gpu
.
Для этого я использую пакет 'testcafe-browser-tools', переопределяя команду браузера по умолчанию через класс Runner в API-интерфейсе TestCafe.
Все это прекрасно работает в случае запуска TestCafe с открытием окна браузера, но я не смог выяснить, как использовать эту же настройку для запуска тестов в автономном режиме.Я попытался просто добавить --headless
arg при изменении команды браузера, но он просто зависает и тесты не запускаются.
Команда CLI testcafe имеет переключатель для режима без головы, например 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();
})();
Есть ли какая-то модификация этого сценария, которая решит мою проблему, или нужен другой подход?