# ¿Cómo probar temas o componentes de tema?

**URL:** https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788
**Category:** Development
**Created:** [27 Febrero, 2020 15:04 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788 "2020-02-27T15:04:01Z")
**Posts on this page:** 17
**Page:** 1

<div class="post-metadata">

### Author: ![agmontpetit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/agmontpetit/32/160109_2.png) [@agmontpetit](https://meta.discourse.org/u/agmontpetit)
#### Post date: [27 Febrero, 2020 15:04 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/1 "2020-02-27T15:04:02Z")

</div>

Encontré este [tema](https://meta.discourse.org/t/beginner-s-guide-to-creating-discourse-plugins-part-6-acceptance-tests/32619) 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](https://qunitjs.com/) (o algo similar) con temas?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [27 Febrero, 2020 15:09 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/2 "2020-02-27T15:09:14Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![agmontpetit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/agmontpetit/32/160109_2.png) [@agmontpetit](https://meta.discourse.org/u/agmontpetit)
#### Post date: [27 Febrero, 2020 15:13 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/3 "2020-02-27T15:13:07Z")

</div>

Lo siento, me refería a las pruebas automatizadas; voy a corregir mi publicación anterior. Estaba pensando en algo como [QUnit](https://qunitjs.com/), que algunos complementos ya utilizan.

---

<div class="post-metadata">

### Author: ![awesomerobot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/awesomerobot/32/142900_2.png) [@awesomerobot](https://meta.discourse.org/u/awesomerobot)
#### Post date: [27 Febrero, 2020 16:04 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/4 "2020-02-27T16:04:12Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [27 Febrero, 2020 16:08 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/5 "2020-02-27T16:08:49Z")

</div>

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 🤔

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [27 Febrero, 2020 16:13 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/6 "2020-02-27T16:13:31Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![agmontpetit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/agmontpetit/32/160109_2.png) [@agmontpetit](https://meta.discourse.org/u/agmontpetit)
#### Post date: [27 Febrero, 2020 16:17 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/7 "2020-02-27T16:17:07Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [27 Febrero, 2020 16:18 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/8 "2020-02-27T16:18:49Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2 Marzo, 2020 04:56 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/9 "2020-03-02T04:56:46Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2 Marzo, 2020 09:33 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/10 "2020-03-02T09:33:42Z")

</div>

> [@sam](#):
>
> Podríamos incluir algunas de las funcionalidades básicas en el gem de discourse-theme para configurar pruebas locales usando ember cli

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 🤔

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?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2 Marzo, 2020 09:49 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/11 "2020-03-02T09:49:17Z")

</div>

> [@sam](#):
>
> Ejecutar pruebas de temas requeriría, ¿verdad?, una instalación completa de Discourse.

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.

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [2 Marzo, 2020 17:24 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/12 "2020-03-02T17:24:14Z")

</div>

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

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [14 Enero, 2022 19:00 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/13 "2022-01-14T19:00:56Z")

</div>

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](https://meta.discourse.org/t/discourse-tab-bar-for-mobile/75696) o [Componente de iconos de etiquetas](https://meta.discourse.org/t/tag-icons-component/109757) para ver ejemplos.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [15 Enero, 2022 10:11 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/14 "2022-01-15T10:11:25Z")

</div>

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

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [15 Enero, 2022 12:46 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/15 "2022-01-15T12:46:37Z")

</div>

¿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).

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [15 Enero, 2022 12:48 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/16 "2022-01-15T12:48:13Z")

</div>

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

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [15 Enero, 2022 12:57 UTC](https://meta.discourse.org/t/how-to-test-themes-or-theme-components/142788/17 "2022-01-15T12:57:13Z")

</div>

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