Django3×Nightwatch×Github Actions에서 최소 구성의 e2e 실행

개요



장고에서 e2e 테스트를 Github Actions에서 실행하고 싶습니다 ...
그런 식으로 생각할 때 어쩌면 있을지도 모릅니다...

최소 구성, 폭속, Nigthwatch, Github Actions에서 장고의 e2e 테스트를 실행해 봅시다.

환경



파이썬 - 3.8.1
장고 - 3.1.4
Node - 12.x
Nightwatch - 1.5.1

우선 장고



장고를 최소 구성으로 준비합시다.
python -m django startproject mysite
cd mysite
python manage.py runserver

네.



갓 태어난 장고의 시작을 확인할 수 있었습니까?
3.1이므로 asgi.py도 있습니다.

다음 Nightwatch



설치



Nightwach를 설치합니다.
npm install nightwatch

package.json 준비


package.json 명령을 추가합니다.
    "scripts": {
        "e2e": "nightwatch"
    }

테스트 코드



최소 구성의 테스트 코드를 추가하겠습니다.tests/e2e/test.js 를 다음과 같이 씁니다.
module.exports = {
    '@tags': ['sample'],
    '最小構成のテストだよ:for github actions': function (client) {
        client
            .url('http://localhost:8000')
            .waitForElementVisible('body', 1000)
            .assert.title('Django: the Web framework for perfectionists with deadlines.')
    },
}

Nightwatch 설정 파일



그리고 Nightwatch의 설정 파일인 nightwatch.json를 준비합시다.src_folders 에 테스트 코드를 배치한 위치.
대상은 chrome으로 둡시다.
{
  "src_folders" : ["tests/e2e"],

  "webdriver" : {
    "start_process": true,
    "server_path": "node_modules/chromedriver/bin/chromedriver",
    "port": 9515
  },
  "test_settings": {
    "default": {
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "chromeOptions": {
          "args": ["--headless"]
        }
      }
    }
  }
}

이제 소스를 준비했습니다.
이것을 github에 커밋하십시오.

마지막으로 Github Actions



해당 프로젝트에서 Github Actions 탭을 엽니다.



그리고 장고의 워크플로를 선택합니다. 


Django는 테스트 실행을 위한 워크플로우를 만듭니다. 


이 녀석을 조금 이지 갑니다.

node를 사용하도록 추기해 갑니다.
    branches: [ main ]

## add
env:
  NODE_VERSION: '12.x'
## add

jobs:
  build:

그리고 설치의 주위에.
nodemodules는 캐시해 둡시다. 

        pip install -r requirements.txt

## add
    - name: Cache node modules
      uses: actions/cache@v2
      env:
        cache-name: cache-node-modules
      with:
        path: ~/.npm
        key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-build-${{ env.cache-name }}-
          ${{ runner.os }}-build-
          ${{ runner.os }}-      
    - name: Use Node.js ${{ env.NODE_VERSION }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ env.NODE_VERSION }}
    - name: npm install, build
      run: |
        npm install
## add


그리고 runserver와 Nightwatch의 실행입니다!

## add
    - name: run server
      run: python manage.py runserver >/dev/null 2>&1 &
    - uses: nanasess/setup-chromedriver@master
    - name: npm test
      run: |
        npm run e2e
## add

그러면...



바삭바삭~~ 하고 실행되어 갔습니다.

요약



어땠습니까?
쉽게 실행할 수 있는지 확인해 주셨습니까? 
e2e 테스트 ... 아무래도 사용하지 않으면 안되는 경우에 참고하실 수 있으면 다행입니다.

오늘의 소스



jrfk/minimum-django-nightwatch

좋은 웹페이지 즐겨찾기