2015-07-25 5 views
8

This project mit einem begleitenden blog post zeigt, wie Karma mit React.js zu verwenden, aber wenn Sie npm run test ausführen Karma öffnet den Browser sehr schnell und schaltet es fast so schnell, so dass Sie nicht zu debuggen die Anwendung (die es tun soll). Ich änderte die Konfiguration zu singleRun: false, denkend, dass es singleRun sein könnte, das die Anwendung herunterfährt.haben Karma halten Browser und Testergebnisse öffnen länger

Ich fügte auch hinzu autoWatch: true in der Hoffnung, es würde die Testergebnisse sichtbar, aber das hat auch nicht funktioniert.

Frage: Wie bekomme ich Karma, um den Browser lange genug offen zu halten, um die Testergebnisse anzuzeigen und die Anwendung zu debuggen?

Dies ist die karma.config.js

Datei
var webpack = require('webpack'); 

module.exports = function (config) { 
    config.set({ 

    // browsers: [ process.env.CONTINUOUS_INTEGRATION ? 'Firefox' : 'Chrome' ], 
    browsers: [ 'Chrome' ], 

    singleRun: true, 

    // autoWatch: true, 

    frameworks: [ 'mocha' ], 

    files: [ 
     'tests.webpack.js' 
    ], 

    preprocessors: { 
     'tests.webpack.js': [ 'webpack', 'sourcemap' ] 
    }, 

    reporters: [ 'dots' ], 

    webpack: { 
     devtool: 'inline-source-map', 
     module: { 
     loaders: [ 
      { test: /\.js$/, loader: 'babel-loader' } 
     ] 
     } 
    }, 

    webpackServer: { 
     noInfo: true 
    } 

    }); 
}; 
+0

Die 'singleRun: true' Option tötet Ihren Browser nach der Durchführung der Tests. –

Antwort

6

Referenzierung auf official docs der Standardname der Karma-Konfigurationsdatei karma.conf.js ist, stellen Sie sicher, dass Ihr richtig benannt ist.

In Bezug auf das Verlassen des Browser-Fensters geöffnet, habe ich mit einem ähnlichen Problem aufgetreten und meine Lösung lief das Karma direkt mit --auto-watch Flag. Versuchen Sie $ karma start --auto-watch anstelle von $ npm run test(stellen Sie sicher, dass Sie karma-cli weltweit über $ npm install -g karma-cli installiert haben).

Sie sollten auch die scripts: Konfigurationsabschnitt in Ihrer package.json Datei auschecken. Einige Forcing-Optionen können dort angegeben werden.

1

Mit der Option singleRun:false werden geschlossene Browserfenster automatisch wiederhergestellt. Sie müssen karma stop ausführen oder den Prozess beenden. Das war sehr nervig für mich.

Der Uhrmodus von Karma war auch nervig für mich, da ich> 2500 Tests habe, die eine lange Zeit brauchen, um ausgeführt zu werden. Ich möchte das nicht bei jedem Dateiwechsel auslösen.

Die Verwendung von Gulp in Kombination mit der Karma API bietet mehr Flexibilität.

Folgendes Beispiel kann verwendet werden, um eine einzelne Datei zu testen und den Browser geöffnet zu lassen, bis er manuell geschlossen wird. Es wendet das Ereignis browsers_change von Karma an, um den Server zu stoppen.

Verwandte Infos:


var gulp = require('gulp'); 
var karma = require('karma'); 
var KarmaServerConstructor = karma.Server; 
var karmaStopper = karma.stopper; 
var commandLineArguments = require('yargs').argv; 

    //Executes only one test which has to be passed as command line argument --filePath 
    //The option --browser also has to be passed as command line argument. 
    //Example usage: gulp single --browser="Chrome_With_Saved_DevTools_Settings" --filePath="C:\myTest.spec.js" 
    gulp.task('single', function (done) {  

     var filePath = commandLineArguments.filePath.replace(/\\/g, "/"); 

     var karmaOptions = { 
      configFile: __dirname + '/karma.conf.js', 
      action: 'start',   
      browsers: [commandLineArguments.browser],  
      files: [ 
       './Leen.Managementsystem/bower_components/jquery/dist/jquery.js', 
       './Leen.Managementsystem/bower_components/globalize/lib/globalize.js', 
       { pattern: './Leen.Managementsystem/bower_components/**/*.js', included: false }, 
       { pattern: './Leen.Managementsystem.Tests/App/test/mockFactory.js', included: false }, 
       { pattern: './Leen.Managementsystem/App/**/*.js', included: false }, 
       { pattern: './Leen.Managementsystem.Tests/App/test/*.js', included: false }, 
       { pattern: filePath, included: false }, 
       './Leen.Managementsystem.Tests/App/test-main.js', 
       './switchKarmaToDebugTab.js' //also see https://stackoverflow.com/questions/33023535/open-karma-debug-html-page-on-startup 
      ] 
     }; 

     var karmaServer = new KarmaServerConstructor(karmaOptions, done); 
     karmaServer.on('browsers_change', stopServerIfAllBrowsersAreClosed); 
     karmaServer.start();  
    }); 

    function stopServerIfAllBrowsersAreClosed(browsers) { 
    if (browsers.length === 0) { 

//double check since browser might only be closed temporarily due to connection issues 
setTimeout(function() { 
    if (browsers.length === 0) { 
    karmaStopper.stop(); 
    } 
}, 2000); 
    } 
} 
Verwandte Themen