Karma-Testausgabe in einem Browser anzeigen?

74

Ich bin neu in Karma, aber ich frage mich, wie ich die Ausgabe in einem Browser anzeigen soll (ähnlich wie bei der Interaktion mit Jasmine, wenn eine Runner.html-Datei vorhanden ist).

Ich habe den einführenden Screencast gesehen und verstehe, wie Testausgaben in einem Konsolenfenster angezeigt werden, aber in meinem Browser erhalte ich fast keinen Inhalt für Karma außer

Karma - verbunden

Bitte beraten! Ich möchte vermeiden, dass eine separate Datei running.html verwaltet werden muss, da ich in der Karma-Konfigurationsdatei bereits alle erforderlichen Skriptlinks einfügen muss.

Blaster
quelle
1
Auf meiner Linux-Box öffnet Karma auch Chromium und sagt, dass es verbunden ist, schließt dann aber sofort den Browser. Und ja, der singleRun ist in der Karma-Konfiguration falsch.
Stephane
Ich sehe das gleiche Problem @StephaneEybert, hast du es gelöst?
ChrisFletcher
@ChrisFletcher Ich wechselte von Chrome zu PhantomJS im Test / karma.conf.js Datei, dies mit: Browser: [ 'PhantomJS' // 'Chrome'],
Stephane

Antworten:

28

AFAIK, die beiden vorherigen Antworten sind insofern richtig, als Sie die Tests in einem Browser ausführen möchten. Klicken Sie auf DEBUG und zeigen Sie die Ausgabe in der Konsole an.

Ich widerspreche höflich der vorherigen Antwort und mache dies regelmäßig und mache ein schrittweises Debugging mit voller variabler Interaktion unter Verwendung von Karma.

Die richtige Antwort auf Ihre Frage lautet "Nein", da Sie eine ziemlich HTML-basierte Ausgabe wünschen. Dieses Plugin für Karma kann Ihnen jedoch die gewünschten Ergebnisse liefern.

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

Stolli
quelle
Danke, ich hätte erwähnen sollen, dass Sie die Konsole öffnen müssen, um überhaupt etwas zu sehen, nicht nur um die Tests zu debuggen. Ich sollte diesen Reporter überprüfen.
Chris Nicola
10

Sie müssen es mit singleRun = falsein ausführen karma.conf.jsund dann auf die Schaltfläche in der oberen Ecke mit der Aufschrift "DEBUG" klicken. Dann sollten Sie die Ausgabe sehen und sie wird nicht verschwinden oder schließen. Sie können die Konsole auch zum Debuggen verwenden.

Es ist erwähnenswert, dass das Debuggen von e2e-Tests nicht so einfach ist, da sie "zukunftsorientiert" sind, sodass Sie keine Werte abfangen können (afaik).

Chris Nicola
quelle
Das funktioniert bei mir nicht @Chris, ich weiß, dass dies eine alte Antwort ist, aber haben Sie Vorschläge, warum dies der Fall sein könnte?
ChrisFletcher
Entschuldigung, es ist eine Weile her und ich habe Karma in letzter Zeit nicht so oft benutzt. Viel hat sich wahrscheinlich geändert.
Chris Nicola
5

Hallo In meinem Fall habe ich dieses Problem gelöst, indem karma-jasmine-html-reporterich es installiert und in das Reporter-Array eingefügt habe.

  • Installieren npm i -D karma-jasmine-html-reporter
  • Fügen Sie Ihrem Reporter 'kjhtml' hinzu.
  • hinzufügen 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'],
    });
};

Rupesh Kumar Tiwari
quelle
2

Eine Möglichkeit besteht darin, die Javascript-Konsole in Ihrem Browser zu öffnen. Karma erstellt für jeden Test einen Protokolleintrag, einschließlich des Ergebnisses.

Jared Stark
quelle
2

Ich wollte HTML5-Webbenachrichtigungen mit Karma anzeigen, also habe ich schnell etwas geschrieben, damit es mit Karma Version 0.11 funktioniert. Könnte sich bei anderen Versionen etwas anders verhalten. Ich lade dieses Skript zusammen mit den restlichen Anwendungsskripten, es speichert die Karma-Testergebnisse und nach Abschluss bestimmt es den Erfolg des Tests und setzt es dann auf die ursprünglichen Karma-Funktionen zurück, damit sie nicht geändert werden, wenn dieses Skript ausgeführt wird nochmal.

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