Discourse dispose de tests front-end étendus pour le cœur, 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
Cœur / Plugins : Accédez à /tests dans votre environnement de développement
Thèmes : Accédez à /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 cœur, vous devez activer « Ignorer les plugins », et lorsque vous travaillez sur des plugins, vous devez choisir le plugin spécifique dans la liste déroulante (ce qui activera automatiquement « Ignorer le cœur »). La suite de tests du cœur n’est pas censée réussir lorsque des plugins sont activés (car les plugins modifient souvent délibérément le comportement du cœur)
Malheureusement, au moment de la rédaction, des fuites de mémoire dans nos tests signifient que l’essayer d’exécuter l’ensemble de la suite dans un seul navigateur a tendance à atteindre la limite de mémoire du navigateur. Pour exécuter l’ensemble de la suite sur plusieurs navigateurs en parallèle, consultez les exemples CLI ci-dessous.
Exécution des tests sur la CLI
Cœur
Depuis le répertoire racine de Discourse, utilisez bin/qunit (assurez-vous d’avoir exécuté pnpm install depuis votre dernière synchronisation avec les modifications amont). Il encapsule 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 actifs 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 tous les tests d'un répertoire :
bin/qunit frontend/discourse/tests/integration/components/bookmark-test.gjs
bin/qunit frontend/discourse/tests/integration/components
# Exécuter l'ensemble de la suite du cœur sur 5 instances Chrome sans interface 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 à une expression régulière, par exemple pour l'alternance :
bin/qunit --filter "/bookmark|reaction/i"
# Lancer 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 simple correspond à une sous-chaîne insensible à la casse, tandis qu’une valeur entourée de barres obliques comme/foo/icorrespond à une expression régulière. Incluez le drapeauipour une correspondance d’expression régulière 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.