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)
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
![]()
--filterse 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/icoincide como expresión regular. Incluye la banderaipara 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.