Я хотел бы найти способ отладки JavaScript ошибок, сообщаемых testcafe
. Это не большая проблема локально, когда мы можем просто заглянуть в консоль браузера и прочитать ошибки. Это немного сложнее в средах непрерывной интеграции в безголовых браузерах.
В настоящий момент выполняются тесты:
- локально // всегда успешно, проблема не существует
- локально в docker // всегда успешно, проблемы не существует
- circleci in docker // иногда не удается
Как Как написано выше, тесты всегда успешны локально, и не имеет значения, запускаются они внутри или снаружи docker. Проблема заключается в тестах, которые запускаются на circleci, и иногда они терпят неудачу. Они терпят неудачу из-за неперехваченной ошибки JavaScript, а testcafe
сообщает об ошибке, как показано ниже:
<failure>
<![CDATA[
1) Uncaught exception:
Error:
Browser: HeadlessChrome 77.0.3865 / Linux 0.0.0
]]>
</failure>
Нет трассировки стека, нет сообщений, нет информации, нет снимка экрана . Очень сложно отлаживать, потому что это происходит только в среде circleci.
Я пытался использовать встроенную инъекцию кода на стороне клиента из testcafe
для привязки к onerror
/ addEventListener('error')
, как в примерах здесь : # 1 , # 2 . К сожалению, ничего не сообщается.
На данный момент механизм регистрации на моей стороне выглядит следующим образом
fixture('Profile - remove account')
.page(url('/sign-up'))
.beforeEach(resize)
.afterEach(async t => {
console.log(await t.getBrowserConsoleMessages());
});
test(`should:
▹ Sign up
▹ Visit /profile/account
▹ Remove current account
▹ Visit /login
`, async t => {
log. js
window.addEventListener('error', function (error) {
console.error('Got uncaught error');
console.error(error.message);
try {
console.error(JSON.stringify(error, undefined, 2));
catch (_) {
}
});
CLI
docker-compose run --rm e2e \
"chromium:headless --no-sandbox --disable-dev-shm-usage" \
tests/e2e/src \
--cs=tests/e2e/log.js \
--skip-js-errors \
-S -s /tests/screenshots \
-r xunit:/tests/test-results/testcafe/results.xml
Об этой проблеме уже сообщалось несколько раз:
Я использую официальное тестовое кафе docker изображение .