Launchable Advent Calendar 13日目 - flavor
Launchableの各機能の利用方法を紹介する Launchable Advent Calendar 13日目です。
はじめに
今日は Day 12で紹介した launchable record session
コマンドのオプションである --flavor
オプションとその使い方について紹介します。(docs)
flavorは同じコード複数の環境でテストを実行している。そんなテスト環境をサポートするためのオプションになります。
このオプションを使って環境毎にテストセッションを発行し launchable record tests
, launchable subset
コマンドを実行する事で環境毎に適切なテストをPredictive Test Selection(PTS)で選択できるようになります。
Linux環境とWindows環境2つの環境でテストを行なっている場合。ChromeやFirefox、Edge複数のブラウザ環境でE2Eテストを行なっている場合。プログラミング言語のバージョン毎にテストを実行している場合。などが例として挙げられます。
flavorオプション
それでは --flavor
オプションの使い方を説明します。
--flavor
オプションは Key=Value
形式で指定し、複数の値を設定する事が出来ます。テストを行なっている環境に合わせて必要なKey/Valueを指定して下さい。
例としてLinux環境でfirefox向けのE2Eテストをしていると仮定し、platformにLinuxをbrowserにfirefoxを指定しました。
launchable record session --flavor platform=Linux --flavor browser=firefox
launchable subset
, launchable record tests
コマンドはテストセッションが発行されていない場合、内部で launchable record session
コマンドを実行していると紹介しました。 (参考: Day 12)
テストセッションが発行されていない場合は launchable subset
, launchable record tests
コマンドにも --flavor
オプションが提供されているのでそちらから設定することも可能です。
ただし、既にテストセッションが発行されている場合は --flavor
オプションで値を設定しても無視されますので注意点して下さい。
GitHub Actionsでの例
例としてDay 12の設定を元に複数のJavaバージョンでテストを実行するよう変更します。
jobs:
primary-node:
runs-on: ubuntu-latest
- outputs:
- test_session: ${{ steps.issue_test_session.outputs.test_session}}
steps:
- uses: actions/checkout@v3
with:
...
run: launchable verify
- name: record build
run: launchable record build --name ${GITHUB_RUN_ID}
- - name: record session
- id: issue_test_session
- run: |
- launchable record session --build ${GITHUB_RUN_ID} > test_session.txt
- test_session=$(cat test_session.txt)
- echo "test_session=$test_session" >> $GITHUB_OUTPUT
worker-node:
runs-on: ubuntu-latest
needs: [primary-node]
+ strategy:
+ matrix:
+ java-version: ['8', '11', '17']
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- - name: Set up JDK 1.8
+ - name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'adopt'
- java-version: '8'
+ java-version: ${{ matrix.java-version }}
- name: Install launchable command
run: |
pip install launchable
- - name: Restore test session
- run: echo -n '${{needs.primary-node.outputs.test_session}}' > test_session.txt
+ - name: record session
+ id: issue_test_session
+ run: launchable record session --build ${GITHUB_RUN_ID} --flavor java-version=${{ matrix.java-version }} > test_session.txt
- name: subset
run: launchable subset --session $(cat test_session.txt) --target 80% maven src/test/java > launchable-subset.txt
- name: Run tests
修正に問題が無ければ、このようにJavaのバージョン8,11,17でテストが実行されます。
Web Appからもテストセッションに指定したflavorを確認できます。
さいごに
本日は --flavor
オプションと使い方について説明しました。
明日は launchable subset
コマンドの --ignore-new-tests
オプションについて紹介します。
Discussion