Nuxt(vue.js) Nightwatch E2E 나이트워치 크롬드라이버 버전 문제로 테스트 실행 실패시 해결 방법 - Chromedriver

Nuxt.js·2021년 9월 9일
0

시행착오

목록 보기
3/6
post-thumbnail

어느날 갑자기 맥북의 크롬이 업데이트 되더니 그전까지 잘 되던 Nuxt프로젝트에서의 e2e 나이트워치 테스트가 실행이 안되었다.

나중에 크롬 드라이버가 업데이트되면 또 비슷한 경우가 있을 것 같아서 해결법을 블로그에 남겨둔다.

에러메시지

...
[Specs/2 F Ans Single Spec] Test Suite
======================================
⚠ Error connecting to localhost on port 9515.

[Specs/2 G Ans Text Spec] Test Suite
====================================
⚠ Error connecting to localhost on port 9515.

[Specs/2 H Ans Date Spec] Test Suite
====================================
⚠ Error connecting to localhost on port 9515.
_________________________________________________

TEST FAILURE: 15 errors during execution; 0 tests failed, 0 passed (7.006s)

 ✖ specs/1-A_Genre_create.spec
   An error occurred while retrieving a new session: "session not created: This version of ChromeDriver only supports Chrome version 91"
Error: An error occurred while retrieving a new session: "session not created: This version of ChromeDriver only supports Chrome version 91"
    at HttpRequest.emit (node:events:394:28)
    at HttpResponse.emit (node:events:394:28)
    at IncomingMessage.emit (node:events:406:35)
    at endReadableNT (node:internal/streams/readable:1343:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)

  Error: An error occurred while retrieving a new session: "session not created: This version of ChromeDriver only supports Chrome version 91"
       at HttpRequest.emit (node:events:394:28)
       at HttpResponse.emit (node:events:394:28)
       at IncomingMessage.emit (node:events:406:35)
       at endReadableNT (node:internal/streams/readable:1343:12)
       at processTicksAndRejections (node:internal/process/task_queues:83:21)
...

요지는 This version of ChromeDriver only supports Chrome version 91 으로, 크롬 드라이버와 크롬 버전이 맞지 않는다는 말이다.

해결법

  1. 크롬 버전을 업데이트 한다. 필자의 경우에는 크롬드라이버 업데이트가 pending 되어 있는데 한달이 넘도록 재시작을 하지 않아 업데이트가 미뤄졌었다 (ㅋㅋ) 일단 드라이버가 아닌 웹브라우저 크롬을 최신버전으로 올려주자. 업데이트 후 환경설정에서 버전을 확인 해본다.

기존 90.xxx이던것이 93.xxx 으로 변경 되었다.

  1. 크롬 드라이버 버전을 업데이트 한다.
  • brew를 이용 해서 버전 지정 인스톨을 할 수있다.
brew cask install chromedriver@93.0.4577.63
  • which chromedriver 커맨드를 이용 하면 현재 사용중인 크롬 드라이버 위치가 노출 된다. 여러 곳에 인스톨 한 경우 정확하게 $PATH에 있는 드라이버를 업데이트 해야 한다. (루비, 파이썬 등 여러 개발환경을 혼용 운용 하는 개발자의 경우 여러군데 설치 되어 있을 가능성이 크다.)


    작업이 잘 진행 되지 않는다면 드라이버를 크롬 공식 홈페이지에서 다운 받아 수동으로 원하는 PATH의 bin 폴더에 넣어 줘도 해결 가능한 경우가 있었다. M1 애플 실리콘 맥북을 사용 하는 경우 정확한 바이너리 파일을 골라서 다운로드 하도록 주의 하도록 하자.

  • brew cask 파일을 수동으로 변경 한다.
    위 방법들을 다 해봐도 안되는 경우 '수술' 작업에 들어가자.

아래 커맨드로 brew cask 파일을 연다.

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
vim chromedriver.rb

여기서 명시 되어 있는 버전을 자신이 원하는 버전으로 변경 하고
brew install --cask chromedriver 명령어를 실행 하면 원하는 버전이 실행 될 것이다. 실행시 sha256 해쉬값 에러가 날텐데 에러 메시지에 출력된 해쉬값을 다시 위 chromedriver.rb 파일의 sha256에 복붙 해주면 해결 된다.

  • nightwatch.json 파일에서 원하는 크롬 드라이버를 지정 한다.

필자의 경우 원래 .node_modules에 있던 드라이버가 지정 되어 있으면 문제가 되는데 다른 경로의 크롬드라이버를 지정 하니 잘 동작 되었다.

이 외에 해결 안되는 경우가 있다면 추가 포스팅을 해보도록 하겠다.

profile
Nuxt.js

0개의 댓글