こんにちは、エンジニアをしているタカです。
本記事では、過去に紹介したローコードの自動テストツールのmablを、自動CI/CDツールであるGitHub Actionsと連携させる手順を紹介したいと思います。
■過去記事はこちら
GitHub Actionsとは
GitHub Actionsは、2019年11月に公開されたGitHubの機能です。
定時実行に加え、例えばGitHubのリポジトリの特定のブランチにpushした、pull requestを出したなどをトリガーをして、予め定義しておいた処理(Workflow)を実行できます。
今回はソースの更新時のリグレッション発生を防ぐ目的で、このGitHub Actionsでmablの自動テストを実行します。
なお、本手順は記事執筆時点(2022年5月末)の、下記 mabl 公式ドキュメントを参照のうえ、実施した手順を記事化しています。
GitHub integration
前提条件
前提として以下の準備が必要です。
- GitHub
- リポジトリのオーナー権限があること
- GitHub Actionsは使用時間で料金がかかるため、その確認が済んでいること。(契約プランごとに一定の無料時間あり)
- mabl
- 実行するmablのテストがPlan単位で準備されていること。PlanにLabelを付けることで、実行するテストを絞りやすくなります。
mabl botのインストール
手順に従ってmabl botをGitHubにインストールします。なお、インストールにはオーナー以上の権限が必要になります。
詳細な手順は公式ガイドを参照してください。
GitHub integration setup
手順概要:
- mablアプリのSettings → Integrationsにアクセスし、GitHubアイコンのLearn Moreのリンクをクリックする
ブラウザでGitHubのページが開き、mabl botをOrganization全体またはリポジトリ単体にインストールする。
https://github.com/apps/mabl-bot
インストールするとmablの画面が開き、下記の設定画面が表示されるので実行許可タイミングの設定(設定済の場合は編集)を行います。
今回は前者2つのみONにします。
設定完了後、リポジトリのGitHub appの欄に mabl botがあることを確認してください。
mabl APIキーの発行と登録
次に、Workflow設定時に使用するmablのAPIキーを発行します。
mablアプリのSettings → APISからAPIキーを発行し、クリップボードにコピーします。
GitHubを開き、テスト対象リポジトリのSecretに、MABL_API_KEY
というキー名でAPIキーを登録します。なお、手順は公式ドキュメントを参照してください。
暗号化されたシークレット – GitHub Docs
GitHub Actionsの設定
リポジトリのActionsリンクにてWorkflow用のymlファイルを新規作成します。
なお、既にWorkflowが存在する場合は、新たなjobsとして登録する形となります。
Workflowのymlファイルは、mablが提供するサンプルがあるので、こちらを使用して作成します。
Run mabl tests – GitHub Marketplace
なお、jobsのusesパラメータは、サンプルページのUse latest versionボタンから最新バージョンを確認し、表示されたものを使用してください。
その他の各種パラメータはMarketplaceのページを確認してください。
以下で、必須パラメータを解説します。
env
MABL_API_KEY
は、前述の手順でシークレットにAPIキーが登録されていれば問題ありません。GITHUB_TOKEN
は特に設定は不要です。
with
application-id
と environment-id
の指定が必須です。
これらの値は、mablアプリの下記画面で生成します。
Settings画面 → APIS → API documentation(Deployment Events APIを選択)
→ Curl command builder
テストを行う Envrionment、Applicationを指定するとcurlコマンドが生成され、その中にapplication-idとenvironment-idが含まれます。
なお、必須ではありませんが、plan-labels
にLabelを指定することで、実行するPlanを指定できます。
その他のパラメータについては、当該画面で設定しcurlコマンドを生成のうえ、Marketplaceの説明を確認のうえ指定してください。
実行と結果確認
ymlファイルを保存しcommitとpushを行うと、以降はWorkflowで指定した条件のタイミングでmablのテストが流れます。
動作確認ですが、Actionsの画面で手動実行ができるので実行します。
確認後は、まずはWorkflowの実行結果を確認します。
全てに チェックマークが付いていること、また目安として、テスト自体が秒単位などで完了してないことを確認すると良いかと思います。
実行後すぐに完了している場合は、設定ミスなどの理由により、mabl側でテストが実行できなかったなどの理由が考えられます。
Github Actionsの実行結果
次にmablアプリのテスト結果の確認を行います。
サイドバーメニューから[Results]→[BY DEPLOYMENT]をクリックすると、実行結果一覧が表示されます。
mablアプリ
この画面では直近の実行結果一覧が表示されており、PassedとFailedが – の場合は実行結果が0件を表します。
なお、実行完了直後はいずれも – のままの場合がありましたが、時間が経つと結果が反映されました。(詳細ページにはPlanのTest単位で表示がされています)
ここで、該当する個別の実行結果の年月日の部分をクリックすると詳細ページが表示されるのでテスト結果を確認します。
注意点
テストの注意点ですが、mablはE2Eテストのため、比較的テスト実行時間が長めとなります。
そのため、必然的にGitHub Actionsでの実行時間も長めになる恐れがあるので、予めテスト時間の見積もりやjobのタイムアウトの設定などは行ったほうが良いかと思います。
おわりに
GitHubとmablアプリを行き来するなど少し設定が難解な箇所がありますが、GitHub Actionsとmablを連携することで、各々の開発に適したタイミングでのE2Eテストによるリグレッションテストを実現できます。
今回紹介した設定以外にも細かい設定が可能なので、mablを活用してバグの組み込み防止や早期発見に役立てていきましょう。