2017-11-15 13 views
1

Capybara 및 Selenium과 함께 헤드리스 크롬을 사용하여 세 가지 기능 테스트를 수행합니다.이전 Capybara js spec에서의 XHR 요청이 다음 사양에서 표면 발생 (및 실패)

하나의 특정 js 테스트 (xhr 사용)가 xhr을 사용하는 다른 테스트 (코드 실행시 또는 샘플 실행의 경우 https://travis-ci.org/thredded/thredded/jobs/302376004 참조) 일 때 예측 가능한 (CI에서만) 오류가 발생했습니다.

"사용자가 제목과 내용으로 새 주제를 만듭니다."라는 URL에서 서버 오류가 항상 발생하지만 "url은"topic에 답장하는 사용자가 quote-reply (js)를 시작합니다.

명백한 것은 사양 끝에서 떨어지고 DatabaseCleaner.clean 이후에 발생하는 요청 사이에 경쟁 조건이 있다는 것입니다. 그러나, 나의 이해는 Capybara 2.7+ [1] after_eachreset_session! 후에 발생해야 정확한 문제를 예방할 수 있다는 것입니다. 어쨌든이 요청을 만들 수있는 페이지에는 아무것도 없다는 것을 확신합니다 (우리는 특정 wait/test for the completion of this ajax request을가집니다).

이것은 3 개의 다른 데이터베이스와 3 개의 다른 레일 버전 (4.2, 5.0, 5.1)에서 발생합니다. 최신 Capybara로 업그레이드했습니다.

터보 링크 사용을 중지하고 문제가있는 사양의 끝 부분에 거대한 (10 초) 수면 시간을 추가했습니다. 수동으로 세션을 재설정하려고 시도했습니다.

뭔가 빠뜨린 것 같습니다. 어떤 포인터?

[1] https://bibwild.wordpress.com/2016/02/18/struggling-towards-reliable-capybara-javascript-testing/

UPDATE에서 참조 https://github.com/teamcapybara/capybara/pull/1637 : 같이 XHR 참조 추가 한 다른 JS 스펙 문제를 구비하고, 첫 번째 두 요청 (로그인 폼 및 없다는 것이다 (신규)는 POST로 로그인) 오류를 처리하지만 첫 xhr 요청은 오류를 나타냅니다. 새로운 케이스에서는 요청 된 xhr이 GET으로 요청 된 원래의 요청 이었지만 이후의 사양에서 POST로 요청되었습니다

답변

0

크롬 드라이버 버그처럼 보입니다.

chromedriver (travis)를 v2.33 (linux)으로 업그레이드하여이 문제를 해결했습니다. https://travis-ci.org/thredded/thredded/builds/302431113

이전 버전은 v2.31입니다. 이상하게도 우리는 이것을 2.31 (mac)으로 로컬에서 깨뜨릴 수 없었다.