web-dev-qa-db-fra.com

Comment déboguer des tests ember-cli en cours d'exécution dans phantomjs

Contexte: j'ai un test d'acceptation pour mon application ember-cli, et le test réussit très bien sous Chrome. Cependant, dans phantomjs, mon test échoue - l'interface utilisateur n'est pas créée de la même manière, et j'essaie de comprendre pourquoi. (Je pense que le test est cassé à cause de https://github.com/ember-cli/ember-cli/issues/1763 , mais la question générale de savoir comment déboguer reste posée)

Dans Chrome, je peux utiliser les outils de débogage standard dans mes tests et tout va bien, mais dans les phantomjs, je ne peux pas y arriver avec un débogueur. De plus, les messages console.log () ne sont pas affichés dans la sortie. Tout ce que je reçois est une liste des résultats de test dans la fenêtre de mon terminal.

Je peux en quelque sorte obtenir des informations de diagnostic en écrivant des choses comme

equal(true, false, "This is a log message");

et puis je reçois le message comme détails de l'assertion qui a échoué, ou je peux essayer de comprendre ce qu'il y a dans le DOM

equal(true, false, document.getElementsByClassName("my-class".innerHTML);

mais les deux: a: arrêtez le test, et b: laissez-moi seulement consigner les informations du test lui-même, pas mon application.

Existe-t-il un moyen d'exécuter mes tests en dehors de "ember test" ou un moyen de se connecter aux processus de test en cours d'exécution? Sinon, existe-t-il un moyen d’afficher les messages console.log () dans la sortie?

23
Dan Mitchell

Vous pouvez exposer le port de débogage de PhantomJS et l'ouvrir dans un navigateur pour pouvoir interagir avec le contexte à vos points d'arrêt de débogueur.

Débogage des tests sur PhantomJS à l'aide de Testem Test Runner

12
Pooyan Khosravi

Dans testem.json, ajoutez "phantomjs_debug_port": 9000

Pendant que vous exécutez vos tests, visitez http://localhost:9000 dans votre navigateur et cliquez sur le long lien affiché.

Source: cssugared

9
Nelu

Je n'ai pas eu de chance avec les autres réponses, alors voici ce que j'ai découvert:

Ajoutez une return pauseTest(); au point de votre test où vous souhaitez pouvoir interagir avec le conteneur dans le navigateur. Ceci est dans la documentation mais je ne suis pas sûr que ce soit dans les guides.

6
aceofspades

Pour répondre à la partie de ma question initiale sur "comment obtenir l'affichage des messages de journal", si j'utilise le rapporteur TAP, les messages console.log (dans mon application et mes tests) apparaissent dans le résultat; le journaliste xunit ne transmet pas console.log, ce qui me déroutait.

(J'ai également rencontré des problèmes où l'exécution des tests sur teamcity se comporte différemment que l'exécution locale; dans cette situation, associer le rapporteur TAP avec https://github.com/aghassemi/tap-xunit (ou l'équipe TAP) plugin) me permet d’obtenir des messages de journal et de tester les comptes)

0
Dan Mitchell