Wie man die QUnit-Testsuiten für Discourse Core, Plugins und Themes ausführt

Discourse verfügt über umfangreiche Frontend-Tests für den Kern, Plugins und Themes. Sobald Sie eine funktionierende lokale Entwicklungsumgebung haben, können diese Tests auf verschiedene Arten lokal ausgeführt werden.

Tests im Browser ausführen

Kern / Plugins: Besuchen Sie /tests in Ihrer Entwicklungsumgebung

Themes: Besuchen Sie /theme-qunit in Ihrer Entwicklungs- (oder Produktions-) Umgebung und wählen Sie dann das Theme aus

Im Allgemeinen sollten Sie beim Arbeiten an Core-Tests „Skip Plugins“ aktivieren, und wenn Sie an Plugins arbeiten, sollten Sie das spezifische Plugin aus der Dropdown-Liste auswählen (wodurch automatisch „Skip Core“ aktiviert wird). Es wird nicht erwartet, dass die Core-Testsuite bestanden wird, wenn Plugins aktiviert sind (da Plugins oft absichtlich das Verhalten des Kerns ändern).

:information_source: Leider führen speicherintensive Tests zum Zeitpunkt der Erstellung dazu, dass der Versuch, die gesamte Suite in einem Browser auszuführen, dazu neigt, das Speicherlimit des Browsers zu erreichen. Um die gesamte Suite über mehrere Browser parallel auszuführen, lesen Sie die CLI-Beispiele unten.

Tests auf der CLI ausführen

Kern

Navigieren Sie zum Stammverzeichnis der Ember-Anwendung (app/assets/javascripts/discourse) im Discourse-Repository und stellen Sie sicher, dass Sie pnpm install ausgeführt haben, seit Sie das letzte Mal Upstream-Änderungen abgerufen haben.

Von dort aus können Sie Standard-Ember-CLI-Tools verwenden, um die Tests auszuführen – lesen Sie den Abschnitt „How to Run Tests“ in den Ember Guides. Wir haben auch Ember Exam installiert, das einige sehr nützliche Flags für Randomisierung und Parallelisierung bietet.

Hier sind einige nützliche Beispiele:

# Führt die gesamte Core-Testsuite parallel über 5 'headless' Instanzen von Chrome aus:
pnpm ember exam --parallel 5 --load-balance

# Führt alle Tests aus, die einen bestimmten String im Modul-/Testnamen enthalten:
pnpm ember exam --filter "Integration | Component | bookmark"

# Führt im "server"-Modus aus, der Ihnen eine URL zum Laden in einem Browser für einfacheres Debugging gibt:
pnpm ember exam --filter "somefilter" --server

Plugins

Vom Stammverzeichnis von Discourse aus:

bin/rake "plugin:qunit" # Führt alle Plugin-Qunit-Tests aus
bin/rake "plugin:qunit[discourse-chat-integration]" # Führt die Qunit-Tests eines einzelnen Plugins aus

Themes

Vom Stammverzeichnis von Discourse aus:

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

Dieses Dokument wird versioniert – schlagen Sie Änderungen auf github vor.

19 „Gefällt mir“