Come eseguire le suite di test QUnit per Discourse core, plugin e temi

Discourse dispone di ampi test frontend per il core, i plugin e i temi. Una volta che hai un ambiente di sviluppo locale funzionante, questi test possono essere eseguiti localmente in diversi modi.

Esecuzione dei test nel browser

Core / Plugin: Visita /tests nel tuo ambiente di sviluppo

Temi: Visita /theme-qunit nel tuo ambiente di sviluppo (o produzione), quindi scegli il tema

In generale, quando lavori sui test del core dovresti abilitare “Salta Plugin” (Skip Plugins), e quando lavori sui plugin dovresti scegliere il plugin specifico dall’elenco a discesa (che disabiliterà automaticamente il “Core”). Non ci si aspetta che la suite di test del core venga superata quando i plugin sono abilitati (poiché i plugin spesso modificano deliberatamente il comportamento del core)

:information_source: Sfortunatamente, al momento della stesura di questo documento, le memory leak nei nostri test significano che provare a eseguire l’intera suite in un singolo browser tende a raggiungere il limite di memoria del browser. Per eseguire l’intera suite su più browser in parallelo, dai un’occhiato agli esempi CLI qui sotto.

Esecuzione dei test sulla CLI

Core

Dalla directory radice di Discourse, usa bin/qunit (assicurati di aver eseguito pnpm install dall’ultima volta che hai integrato le modifiche upstream). Wrappa Ember Exam per la randomizzazione e la parallelizzazione, e per default esegue contro il server Rails in esecuzione e gli asset JS esistenti. Esegui bin/qunit --help per la lista completa delle opzioni.

Ecco alcuni esempi utili:

# Esegui un singolo file di test, o ogni test in una directory:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components

# Esegui l'intera suite del core su 5 istanze di Chrome headless in parallelo:
bin/qunit --parallel 5

# Esegui tutti i test il cui "modulo: nome test" contiene una sottostringa (case-insensitive):
bin/qunit --filter "Integration | Component | bookmark"

# Rinchiusi tra slash, il valore corrisponde a un'espressione regolare, es. per alternanza:
bin/qunit --filter "/bookmark|reaction/i"

# Avvia un server isolato ed esegui in un browser visibile per un debugging più facile:
bin/qunit --standalone --no-headless

:information_source: --filter è inoltrato a QUnit: un valore semplice corrisponde come sottostringa case-insensitive, mentre un valore racchiuso tra slash come /foo/i corrisponde come espressione regolare. Includi il flag i per il matching regex case-insensitive.

Plugin

Dalla directory radice di Discourse:

bin/rake "plugin:qunit" # Esegui tutti i test qunit dei plugin
bin/rake "plugin:qunit[discourse-chat-integration]" # Esegui i test qunit di un singolo plugin

Temi

Dalla directory radice di Discourse:

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

Questo documento è sotto controllo versione - suggerisci modifiche su github.

19 Mi Piace