74 votes

Afficher les résultats des tests de Karma dans un navigateur ?

Je suis novice en matière de Karma, mais je me demande comment afficher sa sortie dans un navigateur (un peu comme la façon dont on interagit avec Jasmine, lorsqu'un fichier runner.html est présent).

J'ai regardé le screencast d'introduction et je comprends comment afficher les résultats des tests dans une fenêtre de console, mais dans mon navigateur, je n'obtiens pratiquement aucun contenu pour Karma, à l'exception des éléments suivants

Karma - connecté

Veuillez me conseiller ! Je voudrais éviter d'avoir à maintenir un fichier runner.html séparé, puisque le fichier de configuration de Karma me demande déjà d'inclure tous les liens script nécessaires.

1 votes

Sur ma machine Linux, Karma ouvre également Chromium et indique qu'il est connecté, mais il ferme ensuite instantanément le navigateur. Et oui, le singleRun est faux dans la configuration de Karma.

0 votes

Je rencontre le même problème @StephaneEybert, l'avez-vous résolu ?

0 votes

@ChrisFletcher J'ai remplacé Chrome par PhantomJS dans le fichier test/karma.conf.js, ce qui donne : browsers : [ 'PhantomJS' // 'Chrome' ],

28voto

stolli Points 327

Les deux réponses précédentes sont correctes : vous devez exécuter les tests dans un navigateur, cliquer sur DEBUG et afficher les résultats dans la console.

Pour contredire poliment la réponse précédente, je fais régulièrement ce genre de débogage en pas à pas avec une interaction complète des variables en utilisant Karma.

La bonne réponse à votre question, parce que ce que vous voulez est une jolie sortie basée sur le HTML, est "non". Cependant, ce plugin pour karma peut vous donner les résultats que vous souhaitez.

https://npmjs.org/package/karma-html-reporter

0 votes

Merci, j'aurais dû préciser qu'il faut ouvrir la console pour voir quoi que ce soit, et pas seulement pour déboguer les tests. Je devrais vérifier ce rapporteur.

10voto

Chris Nicola Points 3699

Vous devez l'exécuter avec singleRun = false sur karma.conf.js puis cliquez sur le bouton en haut de la page qui dit "DEBUG". Vous devriez alors voir la sortie et elle ne disparaîtra pas ou ne se fermera pas. Vous pourrez également utiliser la console pour déboguer.

Il faut noter que le débogage des tests e2e n'est pas si facile car ils sont basés sur le "futur" et vous ne pourrez pas intercepter les valeurs (afaik).

0 votes

Cela ne fonctionne pas pour moi @Chris, je sais que c'est une vieille réponse mais avez-vous des suggestions sur la raison pour laquelle cela pourrait être le cas ?

0 votes

Désolé, cela fait un moment et je n'ai pas utilisé Karma aussi souvent ces derniers temps. Beaucoup de choses ont probablement changé.

6voto

Salut Dans mon cas, j'ai résolu ce problème en installant karma-jasmine-html-reporter et le mettre dans le tableau des reporters.

  • Instale npm i -D karma-jasmine-html-reporter
  • ajoutez 'kjhtml' dans votre rapport.
  • ajouter client:{clearContext:false}

    var gulpConfig = require('./build/build.conf')(); module.exports = function (config) { config.set({ browsers: ['Chrome'], basePath: './', plugins: [ // all other plugins 'karma-jasmine-html-reporter' ], colors: true, client: { clearContext: false // will show the results in browser once all the testcases are loaded }, frameworks: ['jasmine', 'jasmine-sinon', 'sinon'], files: [].concat( gulpConfig.deps.lib, 'js//mother.js', 'js//mother..js', 'js/*/.tests.js' ), logLevel: config.LOG_INFO, reporters: ['kjhtml', 'progress', 'coverage'], }); };

2voto

Jared Stark Points 11

Une option consiste à ouvrir la console Javascript dans votre navigateur. Karma crée une entrée de journal pour chaque test, y compris le résultat.

2voto

Dan-Nolan Points 2650

Je voulais afficher Notifications Web HTML5 avec Karma, j'ai donc écrit quelque chose de rapide pour le faire fonctionner avec la version 0.11 de Karma. Le comportement peut être légèrement différent avec d'autres versions. Je charge ce script avec le reste de mon application script, il stockera les résultats du test de Karma et après l'achèvement, il déterminera le succès du test, puis réinitialisera les fonctions originales de Karma afin qu'elles ne soient pas modifiées lorsque ce script sera exécuté à nouveau.

// store all my test results
var results = [];
// Wrap the karma result function
var resultFunc = window.__karma__.result;
window.__karma__.result = function(result){
    // run the original function
    resultFunc(result);
    // push each result on my storage array
    results.push(result);
}

// wrap the karma complete function
var completeFunc = window.__karma__.complete;
window.__karma__.complete = function(result){
    // run the original function
    completeFunc(result);
    // determine success
    var success = results.every(function(r){ return r.success });

    if (success) {
        // display a success notification
    }
    else {
        // display a test failure notification
    }

    // reset the result function
    window.__karma__.result = resultFunc;
    // reset the complete function
    window.__karma__.complete = completeFunc;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X