🚀

Launchable Advent Calendar 19日目 - Test notifications

2022/12/19に公開

Launchableの各機能の利用方法を紹介する Launchable Advent Calendar 19日目です。

はじめに

今日はCIのテスト結果をSlackに通知できるTest notificationsについて紹介します。(docs)

普段CIの完了をどのように確認していますか?
チャットツールに結果の通知が流れてくるのを待つ。CIのページをリロードする。等ではないでしょうか?
CIが失敗した場合どうやって失敗したテストを確認していますか?テスト結果のログから確認してませんか?

今日紹介するTest notificationはCI完了時に結果と、CIが失敗した場合には失敗したテストも同時に通知できる機能になります。

Test notification

Test notifications機能は現在Slackのみ対応しています。

Slack Appのインストール

まずはSlackのWorkspaceにLaunchableのSlack Appをインストールします。

Web Appの Test Notifications から遷移します。

表示に従ってアプリのインストールを行います。

インストールに成功するとこのような画面が表示され、LaunchableのSlack Appからメッセージが送られます。

Slack AppとLaunchable Organizationの連携

Slack Appのインストールに成功したらSlack AppとLaunchableのOrganizationの紐付けを行います。

Slackで /launchable link <organization> コマンドを実行します。実行すると紐付け用のURLが発行されます。Link ボタンから紐付けを行います。

紐付けが完了するとこのような画面が表示されます。

これで紐付けは完了です。

通知の設定

紐付けが完了したら通知の設定をします。通知の条件にはCI環境で取得可能な環境変数が利用でき、Key=Value 形式で設定します。
設定したKey/Valueと一致するKey/Valueが設定されているときのみ通知が行われます。

Slackからこのように設定します。

/launchable subscribe <YOUR_LAUNCHABLE_WORKSPACE> Key=Value

GitHubのSlack Appと同様にLaunchable Slack Appとの個別メッセージで設定すると個別に通知が行われ、共有のチャンネルで設定すると共有チャンネルに通知が飛びます。

GitHub Actions での例

Konboi/launchable-java-exampleで使用しているLaunchableのWorkspaceにGitHub Actionsのトリガーが自分だった場合に個別に通知を受け取る設定を例として行ってみます。
GitHub Actionsでは GITHUB_ACTOR という環境変数で起因となったアカウントのユーザーIDを取得で来ます。(ref: docs)

/launchable subscribe advent-calendar-2022 GITHUB_ACTOR=Konboi

成功するとこのようなメッセージが表示されます。Web Appからでも確認できます。

では、Day 6の設定を元に通知を確認してみましょう。
launchable record tests の設定が完了していれば追加で設定するものはありません。

CIが成功するとこのようなメッセーがSlackに通知されます。

試しにテストを失敗させてみます。

MulTest.java
  public class MulTest {
     @Test
     public void calc() {
-        assertThat(new Mul().calc(8,2), is(16));
+        assertThat(new Mul().calc(8,2), is(10));
     }
 }

失敗するとこのように通知されます。
最大5件までどのテストが失敗したかをメッセージから確認で来ます。
View tests result ボタンをクリックするとWeb Appの対象のテストセッションページに遷移し、より詳細に結果を確認できます。

さいごに

本日はテスト結果をSlackで受け取ることができるTest notificationsについて紹介しました。
明日はUnhealthy Testについて紹介します。

Discussion