디버깅
여러 프로세스가 다수의 브라우저에서 수십 개의 테스트를 실행할 때 디버깅은 훨씬 더 어려워집니다.
우선, maxInstances를 1로 설정하고 디버깅이 필요한 스펙과 브라우저만 대상으로 하여 병렬 처리를 제한하는 것이 매우 도움이 됩니다.
wdio.conf에서:
export const config = {
// ...
maxInstances: 1,
specs: [
'**/myspec.spec.js'
],
capabilities: [{
browserName: 'firefox'
}],
// ...
}
Debug 명령어
많은 경우에, browser.debug()를 사용하여 테스트를 일시 중지하고 브라우저를 검사할 수 있습니다.
명령줄 인터페이스도 REPL 모드로 전환됩니다. 이 모드에서는 페이지의 명령어와 요소를 조작할 수 있습니다. REPL 모드에서는 테스트에서와 같이 browser 객체 또는 $와 $$ 함수에 접근할 수 있습니다.
browser.debug()를 사용할 때는 테스트가 너무 오래 걸려서 실패하는 것을 방지하기 위해 테스트 러너의 타임아웃을 늘려야 할 가능성이 높습니다. 예를 들어:
wdio.conf에서:
jasmineOpts: {
defaultTimeoutInterval: (24 * 60 * 60 * 1000)
}
다른 프레임워크에서 타임아웃을 설정하는 방법에 대한 자세한 내용은 timeouts를 참조하세요.
디버깅 후 테스트를 계속하려면 쉘에서 ^C 단축키나 .exit 명령어를 사용하세요.
동적 구성
wdio.conf.js는 자바스크립트를 포함할 수 있습니다. 타임아웃 값을 영구적으로 1일로 변경하고 싶지 않을 수 있으므로, 환경 변수를 사용하여 명령줄에서 이러한 설정을 변경하는 것이 종종 유용합니다.
이 기술을 사용하면 구성을 동적으로 변경할 수 있습니다:
const debug = process.env.DEBUG
const defaultCapabilities = ...
const defaultTimeoutInterval = ...
const defaultSpecs = ...
export const config = {
// ...
maxInstances: debug ? 1 : 100,
capabilities: debug ? [{ browserName: 'chrome' }] : defaultCapabilities,
execArgv: debug ? ['--inspect'] : [],
jasmineOpts: {
defaultTimeoutInterval: debug ? (24 * 60 * 60 * 1000) : defaultTimeoutInterval
}
// ...
}
그런 다음 wdio 명령 앞에 debug 플래그를 붙일 수 있습니다:
$ DEBUG=true npx wdio wdio.conf.js --spec ./tests/e2e/myspec.test.js
...그리고 DevTools로 스펙 파일을 디버깅하세요!
Visual Studio Code(VSCode)로 디버깅하기
최신 VSCode에서 중단점을 사용하여 테스트를 디버깅하려면 두 가지 옵션이 있으며, 그 중 옵션 1이 가장 쉬운 방법입니다:
- 디버거 자동 연결
- 구성 파일을 사용하여 디버거 연결
VSCode 자동 연결 토글
다음 단계를 따라 VSCode에서 디버거를 자동으로 연결할 수 있습니다:
- CMD + Shift + P (Linux 및 Macos) 또는 CTRL + Shift + P (Windows) 누르기
- 입력 필드에 "attach" 입력
- "Debug: Toggle Auto Attach" 선택
- "Only With Flag" 선택
이게 전부입니다! 이제 테스트를 실행하면(앞서 보여드린 대로 --inspect 플래그를 설정해야 함) 자동으로 디버거가 시작되고 처음 만나는 중단점에서 멈출 것입니다.