LoginSignup
1
0

More than 3 years have passed since last update.

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

Posted at

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 に未対応なのかなーと、的外れなところを調べていました。

おわりに

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0