본문 바로가기

에러노트

[github action] CI 단계에서 run npm test가 끝나지 않는 문제

이번에 github action을 프로젝트에 처음 도입해봤다.

아래와 같이 yml파일을 작성해주었다. 매우 간단한 ci다. 

name: intergrate

on:
  pull_request:
    branches: ['main']

jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
      # Checkout the Repo
      - uses: actions/checkout@v2

      # Install Node 12
      - name: Setup Node
        uses: actions/setup-node@v1
        with:
          node-version: 16.17.0

      # Install dependencies
      - run: npm install --force

      # Run tests
      - run: npm test

 

그냥 npm install을 해준 다음, 내가 작성한 jest 코드를 테스트 하도록, npm test를 넣어주었다. 

 

그런데 해당 단계에서 계속해서 시간을 잡아먹고 통과되지를 않는 것이다. 

 

왜 그런걸까 계속 찾아보다가, package.json에서 script 부분에 "test" : "jest --watch" 라고 적어주었던 것 때문에 테스트 할 파일을 찾지 못하기 때문에 그런 것일까?? 라고 생각했다. 

그래서 "jest --watchAll" 키워드로 바꿔서 테스트를 진행했다. 

그런데도 통과하지 않는 것이다. 

 

 

나중에 알게 된 것은 --watch 는 수정된 파일만 찾아내서 테스트를 진행하는 것이고, --watchAll은 모든 테스트 파일을 찾아서 테스트를 진행하는 것인데 이 옵션을 붙여서 ci 단계를 진행하게 되면 test가 끝나지 않게 된다. 

 

고로 package.json 파일을 

  "scripts": {
	...
    "test": "jest"
  },

로 바꿔서 다시 push를 하면 run : npm test 단계에서도 정상적으로 테스트를 하고 통과를 시켜준다. 

 

 


그렇다고, push를 할 때마다 jest에서 watch 옵션을 빼주는건 귀찮은 것 같다. 어떻게하면 ci 단계에서만 watch 옵션을 빼고 올릴 수 있을까? 

 

create react app 에서는 ci 환경에서 test를 watch 모드로 진행하지 않도록 하는 뭔가가 있는 것 같은데, 솔직히 뭔소린지 잘 모르겠다. 

https://github.com/facebook/create-react-app/issues/1137

 

Allow `npm test` to not run in watch mode for better cross-platform / tooling CI. · Issue #1137 · facebook/create-react-app

I've been using create-react-app in conjunction with lerna repos and for the most part its been an awesome experience. The one issue I've been seeing is when trying to issue lerna run test ...

github.com

다음에 조금 더 찬찬히 읽어봐야겠다