저는 현재 TestCafe 테스트를 작성하기 시작했으며, 실행하는 동안 웹 사이트에서 문제를 발견했습니다. 콘솔의 JS 오류가 테스트에 실패했습니다. 당연히 내 테스트가 이것을 포착 한 것을 매우 기쁘게 생각했지만 우선 순위가 낮고 사용자에게 직접 영향을 미치지 않는 JS 오류가 발생하더라도 테스트가 실패하고 빌드를 방해 할 수 있음을 의미합니다.
이제 이것은 누군가가 원하는 워크 플로 일 수 있지만, 우리는 JS 오류로 인해 모든 사람을 차단하는 것보다 티켓을 제기하고 병렬 워크 플로에서 해결하는 것이 좋습니다. 나는 --skip-js-errors
옵션을 알고 있지만 이것은 모든 오류를 완전히 제거합니다. 오류를 경고로 변환하거나 단순히 테스트 실행 중에 발생한 JS 오류를 로그 아웃하는 일종의 사후 테스트 기능을 추가하는 것과 같은 중간 지점이 있습니까? 나는 afterEach
다음과 같이 내 조명기에을 추가하려고 시도했습니다 .
.afterEach(async t => {
const { error } = await t.getBrowserConsoleMessages();
console.log(JSON.stringify(error));
});
그러나 --skip-js-errors
이것으로는 아무것도하지 않습니다. 이것에 대한 몇 가지 조언을 부탁드립니다!
내 목표는 명확하지 않은 경우를 대비하여 TestCafe 실행에서 가능한 JS 오류 를 확인 하여 로그하고 티켓을 만들 수 있지만 테스트 실행에 실패하는 것을 원하지 않습니다.
TestCafe는 이러한 기능을 즉시 제공하지 않습니다. 올바르게 언급했듯이 --skip-js-errors
플래그는 모든 오류를 무시하고 기록하지 않습니다.
그러나 스크립트 삽입 메커니즘을 사용하여 원하는 기능을 얻을 수 있습니다. 자세한 내용은 다음 문서를 참조하십시오 : https://devexpress.github.io/testcafe/documentation/using-testcafe/common-concepts/inject-scripts-into-tested-pages.html#inject-script-code
계속해서 --skip-js-errors
플래그를 사용하고 커스텀 window.onerror
핸들러를 추가하는 것이 좋습니다 . 예를 참조하십시오.
fixture `fixture`
.page `../pages/index.html`;
test.clientScripts({
content: `
window.addEventListener('error', function (e) {
console.error(e.message);
});`
})(`Skip error but log it`, async t => {
console.log(await t.getBrowserConsoleMessages());
});
이 코드에서는 error
이벤트 핸들러를 추가 합니다. 핸들러 내부에서 console.error
메서드를 호출합니다 . 이 경우 t.getBrowserConsoleMessages
올바른 오류 로그를 반환합니다.
이 접근 방식을 --skip-js-error
플래그 와 함께 사용하십시오 . 따라서 명령은 다음과 같습니다 testcafe chrome test.js --skip-js-errors
..
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다