Help us understand the problem. What is going on with this article?

AWS CodeBuildのテストレポート機能は、やはり build か post_build でしか使えない

TL; DR

CodeBuild のテストレポート生成コマンドは、 build または post_build シーケンスの commands セクションで指定しましょう。
そうしないと、テスト失敗時にテストレポートを表示してくれません。

はじめに

CodeBuild に、テストレポート機能がリリースされて久しいですね。
僕も、既にいくつか記事を書いていますが、テストカバレッジが表示できるようになり、使いやすさに拍車がかかりました。

そんな便利なテストレポート機能ですが、何度か使っていくうちに、とある現象に気付いたので、記述していきます。

テストレポート生成コマンドを指定できるのは build または post_build だけ?

ドキュメントに記載されている、次の文言を見つけました。

build または post_build シーケンスの commands セクションで、レポートグループに対して指定したテストケースを実行するコマンドを指定します。

テストレポートの作成 - AWS CodeBuild

これが何を意味するのかというと、 buildspec.yml ファイルにおいて、次のように記述する必要があることを意味します。
つまり、 CodeBuild では、テストレポート生成コマンドである npm run test を、 build または post_build シーケンスの commands セクションで指定するように要求しているわけです。

buildspec.yml
version: 0.2

phases:
  install:
    commands:
      - npm install

  pre_build:
    commands:
      # この pre_build シーケンスではテストレポート生成コマンドを指定しない
      - npm run test

  build:
    commands:
      # この build シーケンスか、
      - npm run test

  post_build:
    commands:
      # この post_build シーケンスでテストレポート生成コマンドを指定する
      - npm run test

しかし、テストレポート生成コマンドを pre_build シーケンスで指定しても、テスト成功時には CodeBuild のテストレポートに表示されます。
この現象は、単純にドキュメントの不備なのかと軽く思っていたのですが、別の問題で明らかになりました。

テストレポート生成コマンドを pre_build で指定するとテストレポートが表示されない

しばらくして、テストが失敗してしまうと、なぜか CodeBuild のテストレポートに表示されない問題にぶつかりました。
いろいろ試行錯誤した結果、どうやら pre_build では、テスト失敗時のテストレポートファイルを、 CodeBuild のテストレポート機能が読取ってくれないようです。

buildspec.yml
version: 0.2

phases:
  install:
    commands:
      - npm install

  pre_build:
    commands:
      # pre_build でテストが失敗すると、失敗結果がテストレポートとして読取ってくれない
      - npm run test

  build:
    commands:
      # build か post_build でテストが失敗すると、失敗結果がテストレポートとして読取ってくれる
      - npm run test

テストレポートは、成功時であっても失敗時であっても表示してほしいため、テスト失敗時にテストレポートを表示しない事象に遭遇してしまった際は、非常に焦りました。
最初は npm run test 失敗結果(利用している Jest コマンドの失敗結果)である Error Code 1 に未対応なのかなーと、的外れなところを調べていました。

おわりに

少しは仕様書を信じようと思いました。

Morichan
※これらの記事などは個人の感想であり、組織の効果・効能を示すものではありません。
https://morichan.qrunch.io/
qiitadon
Qiitadon(β)から生まれた Qiita ユーザー・コミュニティです。
https://qiitadon.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした