Nuxt 3+Spring BootでREST API #11 フロントのテストを自動化する
目次
- フロント用のワークフローを定義する
- ワークフローを分離する
- (補足)pathsとpaths-ignoreの挙動について
- フロント側の試運転
- API側の試運転
フロント用のワークフローを定義する
.github\workflows
にフロント用のワークフローであるui-test.yml
を作成する。
name: pr_check_ui on: pull_request: types: [opened, synchronize] paths: - "ui/**" jobs: comment: runs-on: ubuntu-latest steps: - name: checkout source uses: actions/checkout@v3 - name: Cache for node_modules uses: actions/cache@v2 with: path: "**/node_modules" key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - name: install package run: cd ui && npm install - name: run test run: cd ui && npm run test
依存パッケージをインストールして、前回追加したテストコマンドを叩いている。
プロジェクトのルートパスで動作するのでコマンド実行前にフロントのディレクトリに移動する必要がある。
また、on
にpaths
を指定してui以下に変更があった場合だけワークフローが動作するようにしている。
ワークフローを分離する
以前作成したAPI用のワークフロー(api-test.yml
)にはpaths
の指定がないため、フロントの変更のみを含むプルリクにも反応してしまう。
無駄なので、フロントのみの変更をAPI用のワークフローが無視するように修正していく。
name: pr_check on: pull_request: types: [opened, synchronize] paths-ignore: - "ui/**" jobs: comment: runs-on: ubuntu-latest steps: - name: checkout source uses: actions/checkout@v3 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: 17 distribution: "temurin" - uses: actions/setup-node@v1 with: node-version: "14" - name: Cache for node_modules uses: actions/cache@v2 with: path: "**/node_modules" key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - name: build java project by gradle run: sh ./gradlew clean build
on
にpaths-ignore
を指定して、ui
以下の変更しか含まれないプルリクの場合は無視するように設定した。
フロントとは異なり、paths-ignore
を用いて指定しているところに注意。
今回の構成では、api
は他の外部のプロジェクト(common
, repository
など)にも依存する場合があり、フロント以外の変更がある場合には基本的に常に動かしておきたいためこのような指定にした。
このあたりはプロジェクトの設計や都合に応じて適宜考慮すること。
(補足)pathsとpaths-ignoreの挙動について
paths
- マッチするファイルの変更が1つでもあれば起動。
paths-ignore
- マッチするファイルの変更しかなければ起動しない。
- マッチしないファイルの変更が1つでもあれば起動。
フロント側の試運転
フロント側のみに変更を入れて、プルリクを出してみる。
フロントのワークフローのみが動いている。
API側の試運転
API側のみに変更を入れて、プルリクを出してみる。
APIのワークフローのみが動いている。