Discourseのコア、プラグイン、テーマのQUnitテストスイートを実行する方法

Discourseには、コア、プラグイン、テーマに対する広範なフロントエンドテストが用意されています。ローカルの開発環境が正常に動作する状態になったら、これらのテストをいくつかの方法でローカルで実行できます。

ブラウザでのテスト実行

コア / プラグイン: 開発環境で /tests にアクセス

テーマ: 開発(または本番)環境で /theme-qunit にアクセスし、テーマを選択

一般的に、コアのテストを扱う際は「プラグインをスキップ」を有効にし、プラグインを扱う際はドロップダウンリストから特定のプラグインを選択します(これにより「コアをスキップ」が自動的に有効になります)。プラグインが有効な状態では、コアのテストスイートがパスすることは想定されていません(プラグインはしばしば意図的にコアの動作を変更するためです)。

:information_source: 残念ながら、執筆時点ではテスト内のメモリリークにより、ブラウザ1つですべてのスイートを実行しようとするとブラウザのメモリ制限に達してしまいます。複数のブラウザで並列にすべてのスイートを実行するには、以下のCLIの例を参照してください。

CLIでのテスト実行

コア

Discourseのルートディレクトリから bin/qunit を使用します(アップストリームの変更を最後に取り込んで以来、pnpm install を実行していることを確認してください)。これはランダム化と並列化のために Ember Exam をラップしており、デフォルトでは起動中のRailsサーバーと既存のJSアセットに対して実行されます。オプションの全一覧については bin/qunit --help を実行してください。

以下に有用な例を示します。

# 単一のテストファイル、またはディレクトリ内のすべてのテストを実行:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components

# 5つのヘッドレスChromeインスタンスでコアスイート全体を並列実行:
bin/qunit --parallel 5

# 「モジュール: テスト名」に部分文字列が含まれるすべてのテストを実行(大文字小文字を区別しない):
bin/qunit --filter "Integration | Component | bookmark"

# 値をスラッシュで囲むことで正規表現でマッチ、例えば代替表現の場合:
bin/qunit --filter "/bookmark|reaction/i"

# 隔離されたサーバーを起動し、デバッグが容易な可視ブラウザで実行:
bin/qunit --standalone --no-headless

:information_source: --filter はQUnitに転送されます:プレーンな値は大文字小文字を区別しない部分文字列としてマッチし、/foo/i のようなスラッシュで囲まれた値は正規表現としてマッチします。大文字小文字を区別しない正規表現マッチには i フラグを含めてください。

プラグイン

Discourseのルートディレクトリから:

bin/rake "plugin:qunit" # すべてのプラグインのqunitテストを実行
bin/rake "plugin:qunit[discourse-chat-integration]" # 単一のプラグインのqunitテストを実行

テーマ

Discourseのルートディレクトリから:

bin/rake "themes:qunit[url,<theme_url>]"
bin/rake "themes:qunit[name,<theme_name>]"
bin/rake "themes:qunit[id,<theme_id>]"

このドキュメントはバージョン管理されています。変更提案は GitHub で行ってください。

「いいね!」 19