엔드 투 엔드 테스트 문제 해결
브라우저에서 진행 상황 보기
엔드 투 엔드 테스트가 실패할 경우, 실패할 때 브라우저에서 무슨 일이 벌어지고 있는지 보는 것이 매우 유용할 수 있습니다. 예를 들어, 테스트가 전혀 실행되지 않는 경우, 테스트 프레임워크가 귀하의 머신에서 유효하지 않은 URL을 열려고 시도하고 있을 수 있습니다. 브라우저에서 페이지가 실패하는 모습을 보면 이 문제가 더욱 명확해집니다.
테스트 프레임워크가 테스트를 실행할 때 브라우저를 표시하도록 하려면, WEBDRIVER_HEADLESS=false
로 설정하십시오. 예를 들면:
cd gitlab/qa
WEBDRIVER_HEADLESS=false bundle exec bin/qa Test::Instance::All http://localhost:3000
로깅 활성화
때때로 테스트가 실패하고 실패 스택 추적이 무엇이 잘못되었는지 판단하는 데 충분한 정보를 제공하지 않을 수 있습니다. QA_LOG_LEVEL=debug
로 설정하여 디버그 로그를 활성화하면 테스트 프레임워크가 시도하고 있는 내용을 더 많이 확인할 수 있습니다. 예를 들어:
cd gitlab/qa
QA_LOG_LEVEL=debug bundle exec bin/qa Test::Instance::All http://localhost:3000
그런 다음 테스트 프레임워크는 테스트 중에 수행된 작업을 보여주는 많은 로그를 출력합니다:
[date=2022-03-31 23:19:47 from=QA Tests] INFO -- 테스트 시작: Fork에서 Merge 요청 생성을 가져오고 기능 브랜치를 메인라인으로 병합할 수 있습니다.
[date=2022-03-31 23:19:49 from=QA Tests] DEBUG -- has_element? :login_page (대기: 0) 반환: true
[date=2022-03-31 23:19:52 from=QA Tests] DEBUG -- :login_field에 "root" 입력 중
[date=2022-03-31 23:19:52 from=QA Tests] DEBUG -- :password_field에 "*****" 입력 중
[date=2022-03-31 23:19:52 from=QA Tests] DEBUG -- :sign_in_button 클릭 중
테스트가 전혀 실행되지 않음
이 섹션은 테스트를 로컬에서(GDK와 같은) 실행하고 있으며 gitlab/qa/
폴더에서 실행하고 있다는 가정을 합니다. gitlab-qa
에서 실행하지 않습니다. 예를 들어, Net::ReadTimeout
오류가 발생하면 브라우저가 지정된 URL을 로드할 수 없을 수 있습니다:
cd gitlab/qa
bundle exec bin/qa Test::Instance::All http://localhost:3000
bundler: 명령을 로드하지 못했습니다: bin/qa (bin/qa)
Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>
이 오류는 GitLab이 localhost
에서 해결되지 않는 주소에서 실행될 경우 발생할 수 있습니다. 예를 들어, GDK의 hostname
을 특정 로컬 IP 주소로 설정한 경우, 명령에 localhost
대신 해당 IP 주소를 사용해야 합니다. 예를 들어, IP가 192.168.0.12
인 경우:
bundle exec bin/qa Test::Instance::All http://192.168.0.12:3000