Discourse dispose de nombreux tests frontend pour le noyau, les plugins et les thèmes. Une fois que vous avez un environnement de développement local fonctionnel, ces tests peuvent être exécutés localement de plusieurs manières différentes.
Exécution des tests dans le navigateur
Noyau / Plugins : Visitez /tests dans votre environnement de développement
Thèmes : Visitez /theme-qunit dans votre environnement de développement (ou de production), puis choisissez le thème
En général, lorsque vous travaillez sur les tests du noyau, vous devriez activer “Ignorer les plugins”, et lorsque vous travaillez sur des plugins, vous devriez choisir le plugin spécifique dans la liste déroulante (ce qui ignorera automatiquement le “Noyau”). La suite de tests du noyau n’est pas censée réussir lorsque les plugins sont activés (car les plugins modifient souvent délibérément le comportement du noyau)
Malheureusement, au moment de la rédaction, des fuites de mémoire dans nos tests signifient que l’essai d’exécuter toute la suite dans un seul navigateur tend à atteindre la limite de mémoire du navigateur. Pour exécuter toute la suite sur plusieurs navigateurs en parallèle, consultez les exemples CLI ci-dessous.
Exécution des tests sur la CLI
Noyau
Depuis le répertoire racine de Discourse, utilisez bin/qunit (assurez-vous d’avoir exécuté pnpm install depuis votre dernier tirage de changements en amont). Il enveloppe Ember Exam pour la randomisation et la parallélisation, et par défaut s’exécute contre le serveur Rails en cours d’exécution et les assets JS existants. Exécutez bin/qunit --help pour la liste complète des options.
Voici quelques exemples utiles :
# Exécuter un seul fichier de test, ou chaque test dans un répertoire :
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components
# Exécuter toute la suite du noyau sur 5 instances Chrome headless en parallèle :
bin/qunit --parallel 5
# Exécuter tous les tests dont le "module : nom du test" contient une sous-chaîne (insensible à la casse) :
bin/qunit --filter "Integration | Component | bookmark"
# Entourer la valeur de barres obliques pour correspondre avec une expression régulière, par ex. pour l'alternation :
bin/qunit --filter "/bookmark|reaction/i"
# Démarrer un serveur isolé et exécuter dans un navigateur visible pour un débogage plus facile :
bin/qunit --standalone --no-headless
![]()
--filterest transmis à QUnit : une valeur brute correspond en tant que sous-chaîne insensible à la casse, tandis qu’une valeur entourée de barres obliques comme/foo/icorrespond en tant qu’expression régulière. Incluez le drapeauipour une correspondance regex insensible à la casse.
Plugins
Depuis le répertoire racine de Discourse :
bin/rake "plugin:qunit" # Exécuter tous les tests qunit des plugins
bin/rake "plugin:qunit[discourse-chat-integration]" # Exécuter les tests qunit d'un seul plugin
Thèmes
Depuis le répertoire racine de Discourse :
bin/rake "themes:qunit[url,<theme_url>]"
bin/rake "themes:qunit[name,<theme_name>]"
bin/rake "themes:qunit[id,<theme_id>]"
Ce document est sous contrôle de version - suggérez des modifications sur github.