서버를 시작하기 전에 Cypress 대기
6026 단어 JavaScriptTestE2Etech
이 방법으로도 잘 안되면 속편😔
서버가 시작되면 프런트엔드 테스트를 수행하려면 bahmutov/start-server-and-test를 사용합니다.
나는... 을 쓰고 싶다.문장의 나머지 부분은 배경 설명과 간단한 설정 방법에 대한 소개이기 때문에 급한 사람은 읽을 필요가 없다.우선, 상기 start-server-and-test 가져오기
$ npm install --save-dev start-server-and-test
이렇게 사용합니다.$ npx start-server-and-test 'http-server -c-1 .' http://localhost:3333 'cypress run'
단, 웹 팩-dev-server를 사용하는 경우 http-get://
로 URL을 지정합니다(후술).배경 - 불안정한 E2E 테스트
전면 E2E 테스트cypress가 사용됩니다.테스트는 CircleCI에서 진행됐지만 최근에는 E2E만 빈번하게 실패했다.아무리 실행해도 성공하지 못할 것이다.이른바'불안정 테스트(Flaky Tests)'[1]로, 개발자를 불안하게 하는 볼썽사나운 녀석이다.
원인을 규명하다
일단 보류했지만 인내의 한계에 도달해 조사를 하기로 했다.E2E 테스트는 다음과 같이 CircleaCI 워크플로우로 수행됩니다.
background
백그라운드cypress run
Opening Cypress...
Cypress could not verify that this server is running:
> http://localhost:8080
We are verifying this server because it has been configured as your `baseUrl`.
Cypress automatically waits until your server is accessible before running tests.
We will try connecting to it 3 more times...
We will try connecting to it 2 more times...
We will try connecting to it 1 more time...
Cypress failed to verify that your server is running.
Please start this server and then run Cypress again.
세 번 다시 시도했지만 부족한 것 같아요.시작 시 재시도 횟수가 증가하지 않습니다...
당초'접속 확인을 위한 재시도 횟수를 늘리면 되겠지'라고 생각했지만, 아쉽게도 안 될 것 같다[2]실패한 테스트 재시도.
그래서 그 아이슈에도 소개된 bahmutov/start-server-and-test를 입어보기로 했어요.이 npm 모듈 사용하기
start-server-and-test 설정
도입은 npm부터 시작한다.개발 때만 사용하기 때문에 devDependencies로 추가되었습니다.
$ npm install --save-dev start-server-and-test
이 증가하면 start-server-and-test
라는 명령을 사용할 수 있다.이 지령의 기본적인 사용 방법은 이렇다.$ start-server-and-test <SERVER-COMMAND> <URL or PORT> <TEST-COMMAND>
README에서 npm script를 사용하는 방법을 먼저 소개한다.{
"scripts": {
"start-server": "npm start",
"test": "mocha e2e-spec.js",
"ci": "start-server-and-test start-server http://localhost:8080 test"
}
}
도 당연히 npx로 시작할 수 있는데 이런 상황에서 <SERVER-COMMAND>
와TEST-COMMAND
의 npx를 생략할 수 있다.$ npx start-server-and-test start 8080 test
단, 서버에서 웹팩-dev-server를 사용하는 경우 주의해야 합니다.start-server-and-test는 기본값HEAD
에 따라 확인하지만 웹 패키지-dev-server는 지원하지 않습니다HEAD
.이 문제를 방지하려면 http-get://
로 시작하는 URL을 사용하여 두 번째 매개변수를 지정합니다.$ npx start-server-and-test start http-get://localhost:8080/ test
또한README 시간 초과 설정과 여러 서버를 시작하는 방법도 기재되어 있으니 어려움이 있으면 참고하시기 바랍니다.각주
Google Testing Blog: Flaky Tests at Google and How We Mitigate Them ↩︎
Feature request: Add the ability to configure the server wait behavior · Issue #8870 · cypress-io/cypress ↩︎
Reference
이 문제에 관하여(서버를 시작하기 전에 Cypress 대기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/takanori_is/articles/cypress-wait-for-server-startup텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)