web-dev-qa-db-fra.com

Afficher la sortie du test Karma dans un navigateur?

Je suis nouveau sur 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 sorties de test dans une fenêtre de console, mais dans mon navigateur, je n'ai presque pas de contenu pour Karma sauf

Karma - connecté

S'il vous plaît donnez votre avis! Je voudrais éviter d'avoir à maintenir un fichier runner.html séparé, car le fichier de configuration de Karma m'oblige déjà à inclure tous les liens de script nécessaires.

72
blaster

AFAIK, les deux réponses précédentes sont correctes en ce que vous voudrez exécuter les tests dans un navigateur; cliquez sur DEBUG et affichez la sortie dans la console.

En contredit poliment à la réponse précédente, je le fais régulièrement et j'effectue un débogage avec une interaction variable complète en utilisant Karma.

La bonne réponse à votre question, car ce que vous voulez, c'est une sortie assez HTML, est "non". Cependant, ce plugin pour le karma peut vous donner les résultats que vous désirez.

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

27
stolli

Vous devez l'exécuter avec singleRun = false dans karma.conf.js puis cliquez sur le bouton dans le coin supérieur qui dit "DEBUG". Ensuite, vous devriez voir la sortie et elle ne disparaîtra ni ne se fermera. Vous pourrez également utiliser la console pour déboguer.

Il convient de noter que le débogage des tests e2e n'est pas aussi simple car ils sont basés sur le "futur", vous ne pourrez donc pas intercepter des valeurs (afaik).

10
Chris Nicola

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

  • Installer npm i -D karma-jasmine-html-reporter
  • ajoutez 'kjhtml' dans votre journaliste.
  • 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'],
    });
};
3
Rupesh Kumar Tiwari

Je voulais afficher HTML5 Web Notifications avec Karma, j'ai donc écrit quelque chose de rapide pour le faire fonctionner avec Karma version 0.11. Peut se comporter légèrement différemment avec d'autres versions. Je charge ce script avec le reste de mes scripts d'application, il stockera les résultats du test de karma et une fois terminé, il déterminera le succès du test, puis rétablira les fonctions de karma d'origine afin qu'elles ne soient pas modifiées lors de l'exécution de ce script encore.

// 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;
}
2
Dan-Nolan

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.

2
Jared Stark