So führen Sie die QUnit-Tests für Discourse-Core, Plugins und Themes aus

Discourse verfügt über umfangreiche Frontend-Tests für das Core-System, Plugins und Themes. Sobald du eine funktionierende lokale Entwicklungsumgebung hast, kannst du diese Tests auf verschiedene Arten lokal ausführen.

Tests im Browser ausführen

Core / Plugins: Besuche /tests in deiner Entwicklungsumgebung

Themes: Besuche /theme-qunit in deiner Entwicklungs- (oder Produktiv-) Umgebung und wähle dann das Theme aus

Im Allgemeinen solltest du beim Arbeiten an Core-Tests die Option „Plugins überspringen“ aktivieren, und beim Arbeiten an Plugins solltest du das spezifische Plugin aus der Dropdown-Liste auswählen (was automatisch „Core überspringen“ auslöst). Die Core-Test-Suite wird nicht bestanden, wenn Plugins aktiviert sind (da Plugins oft absichtlich das Verhalten des Core-Systems ändern).

:information_source: Leider führen Speicherlecks in unseren Tests dazu, dass der Versuch, die gesamte Suite in einem Browser auszuführen, oft das Speichergrenzen des Browsers erreicht. Um die gesamte Suite parallel über mehrere Browser hinweg auszuführen, sieh dir die CLI-Beispiele unten an.

Tests über die CLI ausführen

Core

Im Stammverzeichnis von Discourse verwende bin/qunit (stelle sicher, dass du pnpm install ausgeführt hast, seit du zuletzt Änderungen aus dem Upstream geholt hast). Es nutzt Ember Exam für Randomisierung und Parallelisierung und führt standardmäßig gegen den laufenden Rails-Server und bestehende JS-Assets aus. Führe bin/qunit --help aus, um die vollständige Liste der Optionen zu sehen.

Hier sind einige nützliche Beispiele:

# Eine einzelne Testdatei oder alle Tests in einem Verzeichnis ausführen:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components

# Die gesamte Core-Suite parallel über 5 headless Chrome-Instanzen ausführen:
bin/qunit --parallel 5

# Alle Tests ausführen, deren „Modul: Testname“ einen Teilstring enthält (Groß-/Kleinschreibung wird nicht unterschieden):
bin/qunit --filter "Integration | Component | bookmark"

# Den Wert mit Schrägstrichen umschließen, um mit einem regulären Ausdruck zu vergleichen, z. B. für Alternation:
bin/qunit --filter "/bookmark|reaction/i"

# Einen isolierten Server starten und in einem sichtbaren Browser ausführen, um das Debugging zu erleichtern:
bin/qunit --standalone --no-headless

:information_source: --filter wird an QUnit weitergeleitet: Ein einfacher Wert wird als Groß-/Kleinschreibung nicht unterscheidender Teilstring abgeglichen, während ein mit Schrägstrichen umschlossener Wert wie /foo/i als regulärer Ausdruck abgeglichen wird. Füge das i-Flag für eine groß-/kleinschreibung nicht unterscheidende Regex-Suche hinzu.

Plugins

Im Stammverzeichnis von Discourse:

bin/rake "plugin:qunit" # Alle Plugin-QUnit-Tests ausführen
bin/rake "plugin:qunit[discourse-chat-integration]" # QUnit-Tests eines einzelnen Plugins ausführen

Themes

Im Stammverzeichnis von Discourse:

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

Dieses Dokument ist versionskontrolliert – schlage Änderungen auf GitHub vor.

19 „Gefällt mir“