Cómo ejecutar las suites de pruebas QUnit de Discourse core, plugins y temas

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

Ejecución de 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 elige el tema

En general, al trabajar con pruebas del núcleo, debes habilitar “Omitir plugins” (Skip Plugins), y cuando estés trabajando en plugins, debes elegir el plugin específico de la lista desplegable (lo cual omitirá automáticamente el “Núcleo” [Skip Core]). No se espera que la suite de pruebas del núcleo pase cuando los plugins están habilitados (ya que los plugins a menudo cambian deliberadamente el comportamiento del núcleo)

:information_source: Por desgracia, en el momento de escribir esto, las fugas de memoria en nuestras pruebas hacen que intentar ejecutar toda la suite en un solo navegador tienda a alcanzar el límite de memoria del navegador. Para ejecutar toda la suite en varios navegadores en paralelo, consulta los ejemplos de la CLI a continuación.

Ejecución de pruebas en la CLI

Núcleo

Desde el directorio raíz de Discourse, usa bin/qunit (asegúrate de haber ejecutado pnpm install desde que incorporaste los cambios de 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 obtener la lista completa de opciones.

Aquí tienes algunos ejemplos útiles:

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

# Ejecutar toda la suite del núcleo en 5 instancias de Chrome sin interfaz en paralelo:
bin/qunit --parallel 5

# Ejecutar todas las pruebas cuyo "módulo: nombre de prueba" contenga un subcadena (sin distinción entre mayúsculas y minúsculas):
bin/qunit --filter "Integration | Component | bookmark"

# Envolver el valor con barras para coincidir con una expresión regular, p. ej. para alternancia:
bin/qunit --filter "/bookmark|reaction/i"

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

:information_source: --filter se reenvía a QUnit: un valor plano coincide como subcadena sin distinción entre mayúsculas y minúsculas, mientras que un valor envuelto con barras como /foo/i coincide como expresión regular. Incluye la bandera i para la coincidencia de expresiones regulares sin distinción entre mayúsculas y minúsculas.

Plugins

Desde el directorio raíz de Discourse:

bin/rake "plugin:qunit" # Ejecutar todas las pruebas qunit de plugins
bin/rake "plugin:qunit[discourse-chat-integration]" # Ejecutar 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