Como executar os conjuntos de testes QUnit do núcleo, plug-ins e temas do Discourse

O Discourse possui extensos testes de frontend 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 então escolha o tema

Em geral, ao trabalhar em testes do núcleo, você deve habilitar a opção “Ignorar Plugins” (Skip Plugins), e ao trabalhar em plugins, você deve escolher o plugin específico da lista suspensa (o que irá automaticamente “Ignorar Núcleo”/Skip Core). Não se espera que a suíte de testes do núcleo passe quando plugins estão habilitados (porque plugins frequentemente mudam deliberadamente o comportamento do núcleo).

:information_source: Infelizmente, no momento da escrita, 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 puxou mudanças do upstream). Ele envolve o Ember Exam para randomização e paralelização, e por padrão executa contra o servidor Rails em execução e os ativos JS existentes. Execute bin/qunit --help para a lista completa de opções.

Aqui estão alguns exemplos úteis:

# Executa 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

# Executa toda a suíte do núcleo em 5 instâncias de Chrome sem interface (headless) em paralelo:
bin/qunit --parallel 5

# Executa todos os testes cujo "módulo: nome do teste" contenha uma substring (insensível a maiúsculas/minúsculas):
bin/qunit --filter "Integration | Component | bookmark"

# Envolve o valor com barras para corresponder com uma expressão regular, por exemplo, para alternância:
bin/qunit --filter "/bookmark|reaction/i"

# Inicia um servidor isolado e executa em um navegador visível para depuração mais fácil:
bin/qunit --standalone --no-headless

:information_source: --filter é encaminhado para o QUnit: um valor simples corresponde como uma substring insensível a maiúsculas/minúsculas, enquanto um valor envolvido com barras como /foo/i corresponde como uma expressão regular. Inclua a flag i para correspondência de expressão regular insensível a maiúsculas/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 está sob controle de versão - sugira alterações no github.

19 curtidas