メールでJUnitのテスト結果を知りたいという要望のため調査

Allure Reportはサーバが必要(HTML版含め)だったが、 fescobar/allure-docker-serviceEmailable Report 機能を使用するとメール用の1枚のHTMLで生成できることがわかった。

NOTE

HTMLレポートをカスタマイズできるようなのだけど時間がないためこちらを使用する

方法

docker-compose up で起動した後、 http://localhost:5050/allure-docker-service/emailable-report/render にアクセスしレポートを取得する。

NOTE

/emailable-report/export のパスもあるが、zip形式のため /emailable-report/render を使用する

今回作成したdocker-composeは以下の通り。 fescobar/allure-docker-service のdocker-composeに起動待ちのヘルスチェック設定と Emailable Report の設定を追加

docker-compose.yml
version: '3'
services:
  allure:
    image: "frankescobar/allure-docker-service"
    environment:
      CHECK_RESULTS_EVERY_SECONDS: 1
      KEEP_HISTORY: 1
      EMAILABLE_REPORT_TITLE: Myテストレポート
      SERVER_URL: https://www.szk302.dev/
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://127.0.0.1:5050/ || exit 1"]
      start_period: "1s" # ヘルスチェックの開始遅延
      retries: 3
      timeout: "5s"
      interval: "5s"
    ports:
      - "5050:5050"
    volumes:
      - ${PWD}/test-results/test1:/app/allure-results
      - ${PWD}/allure-reports:/app/default-reports
ディレクトリ構成
.
├── docker-compose.yml
└── test-results
    ├── test1
    │   ├── TEST-sample.timeout.SampleTest1.xml
    │   └── TEST-sample.timeout.SampleTest2.xml
    └── test2
        └── TEST-sample.timeout.SampleTest2.xml

test-resultsはgradleで実行したjunitテストの結果。

xmlのあるディレクトリを /app/allure-results にマウントすることでレポートが生成される。

Note
test-resultsを指定しても生成されなれない。階層構造のディレクトリは対応していない。

手順

取得したEmailable Report

環境変数

Emailable Reportは環境変数で以下の設定変更が可能

EMAILABLE_REPORT_CSS_CDN

レポートに使用されているCSSのCDNのURL

EMAILABLE_REPORT_TITLE

レポートのタイトル

SERVER_URL

Server Linkという部分のURL

レポート表示時に使用されているリソースのURL