# プラグイン

プラグインを使用すると、@logigear/gondola内部APIを使用してその機能を拡張できます。
内部イベントディスパッチャ、コンテナ、および出力プラグインを使用して、独自のプラグインを作成できます。

@logigear/gondolaのビルトインプラグインは、 gondola.jsonでオンとオフを切り替えることができます。
独自のプラグインを開発するときの例として使用してください。

プラグインは、関数を戻す基本的なJSモジュールです。プラグインは、この関数に渡される個別の設定を持つことができます。
例えば:

const defaultConfig = {
  someDefaultOption: true
}

module.exports = function(config) {
  config = Object.assign(defaultConfig, config);
  // do stuff
}

gondola.jsonでカスタムプラグインを有効にするには、プラグインセクションに追加します。
requireを使用してノードモジュールへのパスを指定します。

"plugins": {
  "myPlugin": {
    "require": "./path/to/my/module",
    "enabled": true
  }
}

require-プラグインファイルへの相対パスを指定します。 パスは gondola.jsonファイルに相対的です。 enabled-このプラグインを有効にする。 プラグインが無効になっている( enabledが設定されていないか、falseに設定されている)場合、このプラグインはコマンドラインから有効にできます。

./node_modules/.bin/gondola run --plugin myPlugin

複数のプラグインを同時に有効にできます。

./node_modules/.bin/gondola run --plugin myPlugin,allure

例:特定のテストグループに対してコードを実行 テストのグループの前にコードの一部を実行する必要がある場合、これらのテストに共通のタグを付けることができます。
次に、このタグが含まれるテストを紹介します(テストオブジェクトを参照)。

テストグループ用のデータをデータベースに入力する必要があります。

// populate database for slow tests
import {event} from "@logigear/gondola";
module.exports = function() {
  event.dispatcher.on(event.test.before, (test:any)=> {
    if (test.tags.indexOf('@populate') >= 0) {
      recorder.add('populate database', async () => {
        // populate database for this test
      })
    }
  });
}

# API

ローカルの**@logigear/gondolaインストールを使用して@logigear/gondola**モジュールにアクセスします

@logigear/gondolaは、@logigear/gondolaがローカルにインストールされている場合にrequire('@logigear/gondola')を介してロードできるAPIを提供します。
これらの内部オブジェクトは利用可能です:

  • gondola: テストランナークラス。
  • config: 現在のGondola設定。
  • event: イベントリスナー。
  • output: 内部のプリンター。
  • container: 現在のヘルパーとサポートオブジェクトが含まれるテスト用の依存性注入コンテナ。

# イベントリスナー

@logigear/gondolaは、イベントディスパッチャーと事前定義済みイベントのセットを含むモジュールを提供します。

ローカルにインストールされている場合は、@logigear/gondolaパッケージからロードできます。

import {event} from "@logigear/gondola";
module.exports = function() {
  event.dispatcher.on(event.test.before, (test:any) => {
    console.log('--- I am before the test --');
  });
}

# 利用可能なイベント

イベント 説明
event.test.before(test) ヘルパーからのフックとテストケースが実行される前のasync
event.test.after(test) テストケースの後のasync
event.test.started(test) テストケースの始まりのsync。 現在のテストオブジェクトを渡す
event.test.passed(test) テストケースが成功した時のsync
event.test.failed(test, error) テストケースが失敗した時のsync
event.test.finished(test) テストケースが終了した時のsync
event.suite.before(suite) テストスイートの前のasync
event.suite.after(suite) テストスイートの後のasync
event.step.before(step) ステップの実行がスケジュールされている時のasync
event.step.after(step) ステップの後のasync
event.step.started(step) ステップの開始時のsync
event.step.passed(step) ステップが成功した時のsync
event.step.failed(step, err) ステップが失敗した時のsync
event.step.finished(step) ステップが終了した時のsync
event.all.before 全てのテストが実行される前
event.all.after 全てのテストが実行された後
event.all.result 結果が印刷される時

# テストオブジェクト

テストイベントは次のフィールドを含むテストオブジェクトを提供する:

  • title テストのタイトル
  • body 文字列としてのテスト関数
  • opts 再試行などの追加のテストオプション
  • pending テストの実行がスケジュールされている場合はtrueになり、テストが終了した場合はfalseになる
  • tags このテストのタッグの配列
  • file テストファイルのパス
  • steps 実行されたステップの配列(test.passed, test.failed, test.finishedのイベントでのみ使用可能)

および他のフィールドも含まれます。

# ステップオブジェクト

ステップイベントは次のフィールドを含むステップオブジェクトを提供する:

  • name 'see', 'click'などのステップの名前
  • helper このステップを実行するには使用される現在のヘルパーインスタンス
  • helperMethod 対応するヘルパーメソッドで、ほとんどの場合はnameと同じ
  • status ステップのステータス(成功か失敗か)
  • prefix 'Within .js-signup-form'のように、テキスト内に含まれるwithinブロック内でステップが実行される場合
  • args 渡された引数

# 出力

出力モジュールは、4つの詳細レベルを提供します。 モードに応じて、対応する機能を使用して異なる情報を印刷できます。

  • default: output.printを使用して基本的な情報を印刷する。
  • steps: --stepsオプションで切り替え、テストステップを印刷する。
  • debug: --debugオプションで切り替え、output.debugファイルのデバッグ情報とステップを印刷する。
  • verbose: --verboseオプションで切り替え、output.logファイルの内部ログとデバッグ情報を印刷する。
    印刷するにはconsole.log()関数を使用しなくて、次のoutput.*メソッドを使用することをお勧めします。
import {output} from "@logigear/gondola"; 

output.print("This is basic information");
output.debug("This is debug information");
output.log("This is verbose logging information");

# コンテナ

@logigear/gondolaには、ヘルパーまたはプラグインを含む依存性注入コンテナがあります。 ヘルパーとプラグインがコンテナから取得できます:

import {container} from "@logigear/gondola"; 

// 全てのヘルパーを含んでいるオブジェクトを取得する
let helpers = container.helpers();

// 名前を使用してヘルパーを取得する
let WebDriver = container.helpers("WebDriver");

// 全ての登録済みプラグインを取得する
let plugins = container.plugins();

コンテナには、現在のMochaインスタンスも含まれます。

let mocha = container.mocha();

# 設定

@logigear/gondola'sの設定にはアクションconfig.get()でアクセスできます:

import {config} from "@logigear/gondola"; 

if (config.myKey == "value") {
  // run hook
}
最終更新: 2020/12/28 4:12:58