¿Cómo probar temas o componentes de tema?

Encontré este tema sobre la prueba de plugins (automáticamente), pero no he visto ninguna mención sobre cómo probar temas o componentes de temas. ¿Hay algún ejemplo de cómo usar QUnit (o algo similar) con temas?

2 Me gusta

Puedes añadirlo a un tema seleccionable por el usuario o utilizar el enlace de prueba en la página de administración del tema.

Lo siento, me refería a las pruebas automatizadas; voy a corregir mi publicación anterior. Estaba pensando en algo como QUnit, que algunos complementos ya utilizan.

4 Me gusta

No, por el momento no es posible agregar pruebas de QUnit a temas/componentes…

@david, ¿qué tan factible sería agregar soporte para una carpeta /test como en los complementos? También tendríamos que habilitar el tema cuando se ejecuten las pruebas, ya que las pruebas principales se ejecutan sin ningún tema, ¿verdad?

9 Me gusta

Definitivamente posible, pero requerirá algo de trabajo. Por ahora, todos los archivos de JavaScript del tema están agrupados en un solo archivo. Necesitaríamos asegurarnos de que las pruebas se coloquen en un nuevo paquete separado, para que no se sirvan a los visitantes habituales. Una vez hecho eso, habría que crear una forma de ejecutar las pruebas de QUnit para un solo tema.

Otro aspecto a considerar es que no habilitamos la ruta /qunit en los servidores de producción. Dado que los temas a menudo se desarrollan en servidores de producción, puede que tengamos que replantear esto :thinking:

10 Me gusta

Esta es, en mi opinión, una de las principales desventajas de los componentes de tema. Son muy fáciles de implementar, lo cual es fantástico, pero las pruebas a menudo se dejan de lado.

10 Me gusta

Si entiendo correctamente, cualquier cosa que se pueda hacer con un componente de tema también se puede hacer con un complemento. El primero es más fácil de implementar, mientras que el segundo permite realizar pruebas.

2 Me gusta

Sí, eso es generalmente preciso. Al final, se trata de un compromiso en cuanto a lo que estás personalizando. Por ejemplo, agregar una hoja de estilos personalizada probablemente no se podría probar ni siquiera en un plugin. Agregar controles y widgets de JavaScript personalizados es donde las cosas se vuelven cuestionables.

6 Me gusta

Siento que deberíamos considerar este problema cuando trabajemos en Ember CLI. No hay nada imposible en tener algún tipo de ejecutor de pruebas para temas, y podríamos incluir algunas de las funciones básicas en el gem discourse-theme para configurar pruebas locales usando Ember CLI.

8 Me gusta

Ejecutar pruebas de temas requeriría, ¿verdad?, una instalación completa de Discourse. Hay tantas interdependencias que no creo que podamos probar los temas de forma independiente :thinking:

Quizás el theme-cli podría tener alguna lógica para extraer la imagen de docker de discourse_dev y ejecutar las pruebas de QUnit dentro de ella?

2 Me gusta

La idea completa con Ember CLI es que estamos separando limpiamente el servidor del cliente. Podríamos distribuir suficiente parte del lado de JavaScript para probar el cliente sin ejecutar un servidor Rails. Definitivamente aún necesitarías tener instalado Node y Ember CLI, pero es posible que te salves de instalar una pila completa de Discourse, incluyendo Redis y Postgres.

6 Me gusta

Puede ser complicado, pero definitivamente algo que podemos tener en cuenta.

5 Me gusta

Ahora admitimos pruebas en temas (actualización tardía, el soporte para pruebas de temas se agregó a mediados de 2021). Puede ir a /theme-qunit en su entorno local o en su sitio de producción, y allí se enumerarán todos los temas/componentes instalados que tengan pruebas. Consulte Discourse Tab Bar for Mobile o Componente de iconos de etiquetas para ver ejemplos.

6 Me gusta

Esto es genial. ¿Se extenderá esto a la prueba de JavaScript en complementos?

3 Me gusta

¿Te refieres a poder ejecutar pruebas en producción? Por ahora, eso es solo para temas.

(Por supuesto, puedes ejecutar pruebas de JS de plugins localmente).

1 me gusta

Creo que el objetivo sería poder ejecutarlos en CI en GitHub, como podemos hacerlo actualmente con las especificaciones (¿tanto Theme. como Plugin JS?).

2 Me gusta

Sí, ejecutamos pruebas en CI para todos los complementos oficiales.

1 me gusta