Discourse possui testes de frontend extensivos para o núcleo, plugins e temas. Assim que você tiver um ambiente de desenvolvimento local funcionando, esses testes podem ser executados localmente de várias maneiras.
Executando testes no navegador
Núcleo / Plugins: Visite /tests no seu ambiente de desenvolvimento
Temas: Visite /theme-qunit no seu ambiente de desenvolvimento (ou produção) e, em seguida, escolha o tema
Em geral, ao trabalhar em testes do núcleo, você deve habilitar “Skip Plugins” (Ignorar Plugins), e quando estiver trabalhando em plugins, você deve escolher o plugin específico na lista suspensa (o que automaticamente fará “Skip Core” (Ignorar Núcleo)). Não se espera que a suíte de testes do núcleo passe quando os plugins estão habilitados (porque os plugins frequentemente alteram intencionalmente o comportamento do núcleo)
Infelizmente, no momento em que este documento foi escrito, vazamentos de memória em nossos testes significam que tentar executar a suíte inteira em um único navegador tende a atingir o limite de memória do navegador. Para executar a suíte inteira em vários navegadores em paralelo, confira os exemplos de CLI abaixo.
Executando testes na CLI
Núcleo
Navegue até a raiz da aplicação Ember (app/assets/javascripts/discourse) no repositório Discourse e certifique-se de ter executado pnpm install desde a última vez que puxou as alterações do upstream.
A partir daí, você pode usar as ferramentas padrão do Ember-CLI para executar os testes - confira a seção “How to Run Tests” (Como Executar Testes) dos Guias do Ember. Também temos o Ember Exam instalado, que fornece algumas sinalizadores de aleatorização e paralelização muito úteis.
Aqui estão alguns exemplos úteis:
# Executa a suíte de testes completa do núcleo em 5 instâncias 'headless' do Chrome em paralelo:
pnpm ember exam --parallel 5 --load-balance
# Executa todos os testes que contêm uma determinada string no nome do módulo/teste:
pnpm ember exam --filter "Integration | Component | bookmark"
# Executa no modo "server", que fornece um URL para carregar em um navegador para facilitar a depuração:
pnpm ember exam --filter "somefilter" --server
Plugins
A partir do diretório raiz do Discourse:
bin/rake "plugin:qunit" # Executa todos os testes qunit de plugins
bin/rake "plugin:qunit[discourse-chat-integration]" # Executa os testes qunit de um único plugin
Temas
A partir do diretório raiz do Discourse:
bin/rake "themes:qunit[url,\u003ctheme_url\u003e]"
bin/rake "themes:qunit[name,\u003ctheme_name\u003e]"
bin/rake "themes:qunit[id,\u003ctheme_id\u003e]"
Este documento é controlado por versão - sugira alterações no github.