Cómo ejecutar los conjuntos de pruebas QUnit del núcleo, complementos y temas de Discourse

Discourse cuenta con amplias pruebas de frontend para el núcleo, los plugins y los temas. Una vez que tengas un entorno de desarrollo local funcional, esas pruebas se pueden ejecutar localmente de varias maneras diferentes.

Ejecutar pruebas en el navegador

Núcleo / Plugins: Visita /tests en tu entorno de desarrollo

Temas: Visita /theme-qunit en tu entorno de desarrollo (o producción) y luego selecciona el tema

En general, cuando trabajes en pruebas del núcleo, deberías activar “Omitir plugins” y, cuando trabajes en plugins, deberías seleccionar el plugin específico de la lista desplegable (lo que omitirá automáticamente el “núcleo”). No se espera que el conjunto de pruebas del núcleo pase cuando los plugins están activados (porque los plugins a menudo cambian deliberadamente el comportamiento del núcleo).

:information_source: Lamentablemente, en el momento de escribir esto, las fugas de memoria en nuestras pruebas significan que intentar ejecutar todo el conjunto en un solo navegador suele alcanzar el límite de memoria del navegador. Para ejecutar todo el conjunto en varios navegadores en paralelo, consulta los ejemplos de CLI a continuación.

Ejecutar pruebas en la CLI

Núcleo

Desde el directorio raíz de Discourse, usa bin/qunit (asegúrate de haber ejecutado pnpm install desde la última vez que incorporaste cambios upstream). Envuelve Ember Exam para la aleatorización y paralelización, y por defecto se ejecuta contra el servidor Rails en ejecución y los activos JS existentes. Ejecuta bin/qunit --help para ver la lista completa de opciones.

Aquí tienes algunos ejemplos útiles:

# Ejecuta un solo archivo de prueba, o todas las pruebas en un directorio:
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components

# Ejecuta todo el conjunto del núcleo en 5 instancias de Chrome sin cabeza en paralelo:
bin/qunit --parallel 5

# Ejecuta todas las pruebas cuyo "módulo: nombre de prueba" contenga una subcadena (insensible a mayúsculas y minúsculas):
bin/qunit --filter "Integration | Component | bookmark"

# Envuelve el valor con barras para coincidir con una expresión regular, por ejemplo, para alternancia:
bin/qunit --filter "/bookmark|reaction/i"

# Inicia un servidor aislado y ejecuta en un navegador visible para facilitar la depuración:
bin/qunit --standalone --no-headless

:information_source: --filter se reenvía a QUnit: un valor simple coincide como una subcadena insensible a mayúsculas y minúsculas, mientras que un valor envuelto con barras como /foo/i coincide como una expresión regular. Incluye la bandera i para coincidir con expresiones regulares insensibles a mayúsculas y minúsculas.

Plugins

Desde el directorio raíz de Discourse:

bin/rake "plugin:qunit" # Ejecuta todas las pruebas qunit de plugins
bin/rake "plugin:qunit[discourse-chat-integration]" # Ejecuta las pruebas qunit de un solo plugin

Temas

Desde el directorio raíz de 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á controlado por versiones - sugiere cambios en github.

19 Me gusta