End-to-end 테스트의 문제 해결

브라우저 동작 확인

End-to-end 테스트가 실패하면, 실패 시 브라우저에서 무슨 일이 일어나는지 확인하는 것이 매우 도움이 될 수 있습니다. 예를 들어, 테스트가 전혀 실행되지 않는다면, 테스트 프레임워크가 머신에서 유효하지 않은 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  -- Starting test: Create Merge request creation from fork can merge feature branch fork to mainline
[date=2022-03-31 23:19:49 from=QA Tests] DEBUG -- has_element? :login_page (wait: 0) returned: true
[date=2022-03-31 23:19:52 from=QA Tests] DEBUG -- filling :login_field with "root"
[date=2022-03-31 23:19:52 from=QA Tests] DEBUG -- filling :password_field with "*****"
[date=2022-03-31 23:19:52 from=QA Tests] DEBUG -- clicking :sign_in_button

테스트가 전혀 실행되지 않음

이 섹션은 (예: GDK와 같은) 로컬에서 테스트를 실행하고 있고 gitlab/qa/ 폴더에서 실행하고 있는 것을 가정합니다. 예를 들어, Net::ReadTimeout 오류가 발생하면, 브라우저가 지정된 URL을 로드하지 못할 수 있습니다:

cd gitlab/qa
bundle exec bin/qa Test::Instance::All http://localhost:3000

bundler: failed to load command: 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