Discourse verfügt über umfassende Frontend-Tests für Core, Plugins und Themes. Sobald du eine funktionsfähige lokale Entwicklungsumgebung eingerichtet hast, kannst du diese Tests lokal auf verschiedene Weisen ausführen.
Tests im Browser ausführen
Core / Plugins: Rufe /tests in deiner Entwicklungsumgebung auf
Themes: Rufe /theme-qunit in deiner Entwicklungs- (oder Produktions-)umgebung auf und wähle dann das Theme aus
Im Allgemeinen solltest du bei der Arbeit an Core-Tests die Option “Plugins überspringen” aktivieren. Wenn du an Plugins arbeitest, solltest du das jeweilige Plugin aus der Dropdown-Liste auswählen (dadurch wird automatisch “Core überspringen” aktiviert). Es ist nicht zu erwarten, dass die Core-Testsuite bestanden wird, wenn Plugins aktiviert sind (da Plugins das Verhalten des Core oft absichtlich ändern).
Leider führen Speicherlecks in unseren Tests dazu, dass der Versuch, die gesamte Suite in einem einzigen Browser auszuführen, in der Regel an der Speichergrenze des Browsers scheitert. Um die gesamte Suite parallel in mehreren Browsern auszuführen, findest du unten Beispiele für die CLI.
Tests über die CLI ausführen
Core
Verwende aus dem Wurzelverzeichnis von Discourse bin/qunit (stell sicher, dass du seit dem letzten Einziehen von Upstream-Änderungen pnpm install ausgeführt hast). Es kapselt Ember Exam für Randomisierung und Parallelisierung und läuft standardmäßig gegen den laufenden Rails-Server und die vorhandenen JS-Assets. Führe bin/qunit --help aus, um die vollständige Liste der Optionen zu sehen.
Hier sind einige nützliche Beispiele:
# Führe eine einzelne Testdatei oder alle Tests in einem Verzeichnis aus:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components
# Führe die gesamte Core-Suite parallel in 5 headless Chrome-Instanzen aus:
bin/qunit --parallel 5
# Führe alle Tests aus, deren "Modul: Testname" eine Teilzeichenfolge enthält (unterscheidet nicht zwischen Groß- und Kleinschreibung):
bin/qunit --filter "Integration | Component | bookmark"
# Um den Wert mit einem regulären Ausdruck abzugleichen, z. B. für Alternation, mit Schrägstrichen umschließen:
bin/qunit --filter "/bookmark|reaction/i"
# Starte einen isolierten Server und führe in einem sichtbaren Browser aus, um das Debugging zu erleichtern:
bin/qunit --standalone --no-headless
![]()
--filterwird an QUnit weitergeleitet: Ein einfacher Wert wird als Teilzeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung abgeglichen, während ein mit Schrägstrichen umschlossener Wert wie/foo/ials regulärer Ausdruck abgeglichen wird. Füge dasi-Flag hinzu, um die Groß-/Kleinschreibung bei der Abgleichung per regulärem Ausdruck zu ignorieren.
Plugins
Aus dem Wurzelverzeichnis von Discourse:
bin/rake "plugin:qunit" # Führe alle Plugin-qunit-Tests aus
bin/rake "plugin:qunit[discourse-chat-integration]" # Führe die qunit-Tests eines einzelnen Plugins aus
Themes
Aus dem Wurzelverzeichnis 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 wird versioniert verwaltet – schlage Änderungen auf github vor.