Come testare temi o componenti di tema?

Ho trovato questo topic sui test dei plugin (automatici), ma non ho mai visto menzionare come testare i temi o i componenti dei temi. Ci sono esempi su come usare QUnit (o qualcosa di simile) con i temi?

Puoi aggiungerlo a un tema selezionabile dall’utente o utilizzare il link di test nella pagina di amministrazione del tema.

Scusa, intendevo i test automatizzati – correggerò il mio post precedente. Stavo pensando a qualcosa come QUnit che alcuni plugin già utilizzano.

No, al momento non è possibile aggiungere test QUnit a temi o componenti…

@david, quanto sarebbe fattibile aggiungere il supporto per una cartella /test simile a quella dei plugin? Dovremmo anche abilitare il tema durante l’esecuzione dei test, dato che i test core vengono eseguiti senza alcun tema, giusto?

Certamente possibile, ma richiederà un po’ di lavoro. Al momento, tutti i file JavaScript del tema sono raggruppati in un unico file. Dovremmo assicurarci che i test vengano inseriti in un nuovo bundle separato, in modo che non vengano forniti ai visitatori ordinari. Una volta fatto ciò, bisognerà creare un modo per eseguire i test QUnit per un singolo tema.

Un’altra cosa da considerare è che non rendiamo disponibile la rotta /qunit sui server di produzione. Poiché i temi vengono spesso sviluppati sui server di produzione, potremmo dover ripensare a questa impostazione :thinking:

Questo è, a mio parere, uno dei principali svantaggi dei componenti del tema. Sono estremamente semplici da distribuire, il che è fantastico, ma i test vengono spesso trascurati.

Se ho capito correttamente, tutto ciò che può essere fatto con un componente del tema può essere fatto anche con un plugin. Il primo è piÚ semplice da distribuire, mentre il secondo consente i test.

Sì, è generalmente corretto. Alla fine si tratta di un compromesso in base a ciò che si sta personalizzando. Ad esempio, l’aggiunta di un foglio di stile personalizzato probabilmente non potrebbe essere testata nemmeno in un plugin. È quando si aggiungono controlli e widget JavaScript personalizzati che le cose diventano problematiche.

Credo che dovremmo considerare questa problematica quando svolgeremo il lavoro su Ember CLI. Non c’è nulla di impossibile nel creare una sorta di test runner per i temi, e potremmo includere alcune funzionalità di base nel gem discourse-theme per impostare i test locali utilizzando Ember CLI.

Tuttavia, l’esecuzione dei test del tema richiederebbe un’installazione completa di Discourse, giusto? Ci sono così tante interdipendenze che non credo potremmo testare i temi in modo indipendente :thinking:

Forse il theme-cli potrebbe avere una logica per scaricare l’immagine Docker discourse_dev ed eseguire i test QUnit all’interno di essa?

L’idea alla base di Ember CLI è separare in modo pulito il server dal client. Potremmo fornire una parte sufficiente del lato JavaScript per testare il client senza dover eseguire un server Rails. Dovresti comunque avere installati Node e Ember CLI, ma potresti evitare di installare l’intera pila di Discourse, inclusi Redis e Postgres.

Potrebbe essere complicato, ma è sicuramente qualcosa da tenere a mente.

Ora supportiamo i test nei temi (aggiornamento tardivo, il supporto per i test dei temi è stato aggiunto a metà 2021). Puoi accedere a /theme-qunit nel tuo ambiente locale o nel tuo sito di produzione, e tutti i temi/componenti installati che hanno test saranno elencati lÏ. Vedi Discourse Tab Bar for Mobile o Componente icone tag per esempi.

Questo è fantastico. Si estenderà anche al testing di javascript nei Plugin?

Intendi la possibilità di eseguire test in produzione? Al momento è possibile solo per i temi.

(Ovviamente, a livello locale puoi eseguire i test JS dei plugin.)

Penso che l’obiettivo sarebbe poterli eseguire in CI su GitHub come possiamo attualmente fare con le specifiche (sia Theme. che Plugin JS)?

SĂŹ, eseguiamo test in CI per tutti i plugin ufficiali.