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

Discourse dispone di estesi test frontend per il core, i plugin e i temi. Una volta configurato un ambiente di sviluppo locale funzionante, è possibile eseguire questi test 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 di produzione), quindi seleziona il tema

In generale, quando si lavora sui test del core, è consigliabile abilitare “Salta Plugin”, mentre quando si lavora sui plugin, è consigliabile selezionare il plugin specifico dall’elenco a discesa (che attiverà automaticamente ‘Salta Core’). Non ci si aspetta che la suite di test del core venga superata con i plugin abilitati (poiché i plugin spesso modificano deliberatamente il comportamento del core)

:information_source: Purtroppo, al momento della stesura di questo documento, le perdite di memoria nei nostri test fanno sì che il tentativo di eseguire l’intera suite in un unico browser tenda a raggiungere il limite di memoria del browser. Per eseguire l’intera suite in parallelo su più browser, consulta gli esempi CLI qui sotto.

Esecuzione dei test da riga di comando

Core

Dalla directory radice di Discourse, usa bin/qunit (assicurati di aver eseguito pnpm install dall’ultimo pull delle modifiche upstream). Avvolge Ember Exam per la randomizzazione e la parallelizzazione e, per impostazione predefinita, viene eseguito contro il server Rails in esecuzione e gli asset JS esistenti. Esegui bin/qunit --help per l’elenco completo delle opzioni.

Ecco alcuni esempi utili:

# Esegui un singolo file di test, o tutti i 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 in parallelo su 5 istanze di Chrome headless:
bin/qunit --parallel 5

# Esegui tutti i test il cui "modulo: nome del test" contiene una sottostringa (senza distinzione tra maiuscole e minuscole):
bin/qunit --filter "Integration | Component | bookmark"

# Incapsula il valore con barre oblique per corrispondere a un'espressione regolare, ad esempio per l'alternanza:
bin/qunit --filter "/bookmark|reaction/i"

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

:information_source: --filter viene inoltrato a QUnit: un valore semplice corrisponde come sottostringa senza distinzione tra maiuscole e minuscole, mentre un valore incapsulato con barre oblique come /foo/i corrisponde come espressione regolare. Includi il flag i per la corrispondenza di espressioni regolari senza distinzione tra maiuscole e minuscole.

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 è sottoposto a controllo di versione - suggerisci modifiche su github.

19 Mi Piace