O Discourse possui testes de frontend extensos para o núcleo, plugins e temas. Uma vez que você tenha um ambiente de desenvolvimento local funcional, esses testes podem ser executados localmente de várias maneiras diferentes.
Executando testes no navegador
Núcleo / Plugins: Acesse /tests no seu ambiente de desenvolvimento
Temas: Acesse /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 ativar a opção “Pular Plugins” (Skip Plugins), e ao trabalhar em plugins, deve escolher o plugin específico na lista suspensa (o que automaticamente “Pulará o Núcleo” / Skip Core). A suíte de testes do núcleo não é esperada para passar quando os plugins estão habilitados (porque os plugins frequentemente alteram deliberadamente o comportamento do núcleo)
Infelizmente, no momento da redação, 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
A partir do diretório raiz do Discourse, use bin/qunit (certifique-se de ter executado pnpm install desde a última vez que trouxe alterações do upstream). Ele encapsula o Ember Exam para randomização e paralelização e, por padrão, executa contra o servidor Rails em execução e os assets JS existentes. Execute bin/qunit --help para a lista completa de opções.
Aqui estão alguns exemplos úteis:
# Execute um único arquivo de teste, ou todos os testes em um diretório:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components
# Execute a suíte inteira do núcleo em 5 instâncias do Chrome headless em paralelo:
bin/qunit --parallel 5
# Execute todos os testes cujo "módulo: nome do teste" contenha uma subcadeia (ignorando maiúsculas e minúsculas):
bin/qunit --filter "Integration | Component | bookmark"
# Envolve o valor em barras para corresponder a uma expressão regular, por exemplo, para alternância:
bin/qunit --filter "/bookmark|reaction/i"
# Inicie um servidor isolado e execute em um navegador visível para facilitar a depuração:
bin/qunit --standalone --no-headless
![]()
--filteré encaminhado para o QUnit: um valor simples corresponde como uma subcadeia ignorando maiúsculas e minúsculas, enquanto um valor envolvido em barras como/foo/icorresponde como uma expressão regular. Inclua a bandeiraipara correspondência de regex ignorando maiúsculas e minúsculas.
Plugins
A partir do diretório raiz do Discourse:
bin/rake "plugin:qunit" # Executa todos os testes qunit dos 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,<theme_url>]"
bin/rake "themes:qunit[name,<theme_name>]"
bin/rake "themes:qunit[id,<theme_id>]"
Este documento é controlado por versão - sugira alterações no github.