Geb・Spockのテスト結果レポートもSahaginで生成

2015/09/28
Geb
Pocket

先日公開したオープンソースのSeleniumテスト結果レポートSahaginを使い、GebSpockのテスト結果も見やすくできるようになりました。現在ベータ版ですが、今日はその方法をご紹介します。

目次

  1. Sahagin for Geb・Spock
  2. セットアップ手順
    1. 依存関係にsahagin-groovy.jarを追加
    2. @TestDocアノテーションとcontentTestDocフィールドを追加
    3. テスト前処理にコードを1行追加
    4. 設定ファイルsahagin.ymlを作成
    5. テスト実行
    6. Jenkinsプラグインの設定
  3. 対応環境
  4. 既知の問題

Sahagin for Geb・Spock

Gebは、Groovyを使ってシンプルにスクリプトを記述できるブラウザ画面テストツールで、内部ではSelenium WebDriverを使ってブラウザ操作を行っています。GroovyのテストフレームワークであるSpockと組み合わせてよく利用されます。

SahaginのGroovy版を使えば、このGeb・Spockのスクリプトから、日本語 + 画面キャプチャのテスト結果レポートを生成することができます。

例えば、次の図1のようなテストスクリプトから、

次の図2のようなレポートが生成されます。

Geb・SpockスクリプトのSahaginレポート

図2 Geb・SpockスクリプトのSahaginレポート

さらにSahaginなら、Spockのブロック内のロジックの内容も階層表示できます。(図3)

Spockのブロック内のロジック

図3 Spockのブロック内のロジック

もちろん、ページオブジェクトを使ったスクリプトにも対応しています。(図4)

ページオブジェクトを使ったスクリプトのSahaginレポート

図4 ページオブジェクトを使ったスクリプトのSahaginレポート

図4のようにページオブジェクトクラスのメソッドやプロパティを日本語表示するためには、図5のように、ページオブジェクトクラスにcontentTestDocフィールドや@TestDocアノテーションで日本語の説明を付加しておきます。

エラー行をハイライトしたり、プラグインを使ってJenkins上でレポートを表示したりすることもできます。

セットアップ手順

続いて、Geb・SpockのスクリプトにSahaginを組み合わせる手順を説明していきます。

1. 依存関係にsahagin-groovy.jarを追加

sahagin-groovy.jarの依存関係を追加します1 。Gradleを使っている場合は図6のようにして、Mavenを使っている場合は図7のようにして、依存関係を追加します。

2. @TestDocアノテーションとcontentTestDocフィールドを追加

図4のように、日本語表示したいメソッドには@TestDocアノテーションを、日本語表示したいページオブジェクトのcontentにはcontentTestDocフィールドを付加します。Pageクラスを継承したページオブジェクトクラスに@PageDocアノテーションを付けると、ページ名も日本語表示されます。

3. テスト前処理にコードを1行追加

画面キャプチャを取得するために、Spockのsetupメソッドなどに「GebAdapter.setAdapter」メソッドの呼び出しを追加します。(図8)

4. 設定ファイルsahagin.ymlを作成

Groovyプロジェクトの最上位ディレクトリに「sahagin.yml」という名前でファイルを作成し、図9のように設定を記述します。

5. テスト実行

テストを実行すると、sahagin.ymlと同じディレクトリにsahagin-report/index.htmlが作成されています。

6. Jenkinsプラグインの設定

こちらの方法で設定します。

対応環境

現在の最新バージョンでは、下記の環境に対応しています。

  • Groovy2.4以上(他のバージョンでも動作すると思いますが未検証です)
  • Spock、JUnit42
  • Geb

既知の問題

  • エラーメッセージ中の改行がレポート上で無視されるため、パワーアサートのメッセージがうまく表示できない。
  • ページ遷移した時は、テストスクリプト中で「at」「to」「via」メソッドのいずれかで明示しないと、Sahaginに認識されない。
  • こちらに記載されている、Sahagin-Javaで未解消の問題。
Pocket

注釈・出典
  1. Sahagin-Javaと違い、実行時引数の指定は特に不要です。 []
  2. JUnit4とGebを組み合わせる場合のセットアップ手順は、こちらを参照してください。 []
    

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です