概要

JUnitは、テスト結果を生成するための広く普及しているXML形式であり、ほとんどのCIシステム(例:Jenkins)はこれをネイティブにサポートしており、より高度なレポートを表示できます。

NightwatchはデフォルトでJUnit形式のXMLを出力し、これは`output_folder`設定で制御できます。

設定

HTMLレポーターは、v2.2以降、HTMLおよびJSONレポーターとともに**デフォルトで有効**になっていますが、その動作は次のように構成できます。

設定ファイルによる方法

`output_folder`設定は、JUnit XMLレポートファイルが保存される場所を指定するために使用されます。Nightwatchは、各テストスイートファイルに対してXMLファイルを作成します。

nightwatch/.../lib/settings/defaults.js
module.exports = {
  output_folder: 'tests_output'
}

テスト出力関連の設定の完全なリストについては、設定 > 出力設定ページを参照してください。

CLIによる方法

`--output`フラグを使用して、CLIで実行時に出力フォルダを構成することもできます。

nightwatch --output ./tests-output

Nightwatchが受け入れるCLIフラグの完全なリストについては、CLIリファレンスページを参照してください。

XMLファイル名は次のパターンに従います。

<BROWSER>_<VERSION>__<testSuiteFileName>.xml

ステップ0:新規プロジェクトの作成

まず、新しい空のプロジェクトを作成し、その中にNightwatchをインストールしましょう。

mkdir ./test-project && cd ./test-project

ステップ1:Nightwatchとchromedriverのインストール

NPMから`nightwatch`と`chromedriver`をインストールします(`chromedriver`はGoogle Chromeブラウザでテストを実行するためのW3C WebDriver実装です。お使いのコンピューターに最新のChromeブラウザがインストールされていることを確認してください)。

npm i nightwatch chromedriver

ステップ2:サンプルテストの実行

duckDuckGo.jsのサンプルテストを検討してください。

duckDuckGo.js
describe('duckduckgo example', function() {
  it('Search Nightwatch.js and check results', function(browser) {
    browser
      .navigateTo('https://duckduckgo.com')
      .waitForElementVisible('#search_form_input_homepage')
      .sendKeys('#search_form_input_homepage', ['Nightwatch.js'])
      .click('#search_button_homepage')
      .assert.visible('.results--main')
      .assert.textContains('.results--main', 'Nightwatch.js');
  }); 
});

次のコマンドを使用して実行できます。

npx nightwatch examples/tests/duckDuckGo.js --env chrome

組み込みのJUnit-XMLレポートのみを生成するには、次のコマンドを実行します。

npx nightwatch examples/tests/duckDuckGo.js --env chrome --reporter=junit

組み込みのJUnit-XMLレポートとHTMLレポートの両方を生成するには、次のコマンドを実行します(v2.2以降)。

npx nightwatch examples/tests/duckDuckGo.js --env chrome --reporter=junit --reporter=html

ステップ3:JUnit XMLレポートの表示

JUnit XMLレポートは、現在のプロジェクトディレクトリ内のローカル`tests_output`フォルダに生成されているはずです。次のようになります。

<?xml version="1.0" encoding="UTF-8" ?>
<testsuites errors="0"
            failures="0"
            tests="1">

  <testsuite name="duckDuckGo"
    errors="0" failures="0" hostname="" id="" package="duckDuckGo" skipped="0"
    tests="1" time="2.007" timestamp="">
  
    <testcase name="Search Nightwatch.js and check results" classname="duckDuckGo" time="2.007" assertions="3">
    </testcase>
  </testsuite>

</testsuites>
</pre>

Jenkinsとの統合

JUnit形式のXML出力は、「JUnitテスト結果レポートの公開」ビルド後アクションを介して、Jenkinsにデフォルトで統合されます。

Publish JUnit test result report

テストレポートをJenkinsに統合することにより、トレンドとレポートを生成し、Jenkinsのレポート機能を最大限に活用できます。

Jenkins test results history

詳細は、Jenkinsユーザーガイドを参照してください。

JUnitスキーマ

Apache Ant JUnit XML `.xsd`スキーマの完全版は、Githubで入手できます:windyroad/JUnit-Schema/blob/master/JUnit.xsd.

JUnitレポートの無効化

`output_folder`設定を`false`に設定することで、必要に応じてレポートを完全に無効化できます。

nightwatch.conf.js
module.exports = {
  output_folder: false
}