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

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

ブラウザでのテスト実行

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

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

一般的に、コアのテストに取り組む場合は「Skip Plugins」を有効にし、プラグインに取り組む場合はドロップダウンリストから特定のプラグインを選択する必要があります(これにより自動的に「Skip Core」が選択されます)。プラグインが有効な場合、コアのテストスイートはパスすると期待されていません(プラグインは意図的にコアの動作を変更することが多いためです)

: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

# "module: test name" に部分文字列を含むすべてのテストを実行する(大文字小文字を区別しない):
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