2017-08-16 3 views
2

Ich möchte meine Tests lokal mit Chrome als Browser und auf dem Build-Server mit Phantomjs ausführen. Wie kann ich einstellen, dassJasmine testen Angular App mit verschiedenen Browsern

module.exports = function (config) { 
    config.set({ 
    basePath: '', 
    frameworks: ['jasmine', '@angular/cli'], 
    plugins: [ 
     require('karma-jasmine'), 
     require('karma-chrome-launcher'), 
     require('karma-phantomjs-launcher'), 
     require('karma-jasmine-html-reporter'), 
     require('karma-coverage-istanbul-reporter'), 
     require('karma-trx-reporter'), 
     require('@angular/cli/plugins/karma') 
    ], 
    client:{ 
     clearContext: false // leave Jasmine Spec Runner output visible in browser 
    }, 
    files: [ 
     { pattern: './<%= sourceDir %>/test.ts', watched: false }, 
    ], 
    preprocessors: { 
     './<%= sourceDir %>/test.ts': ['@angular/cli'] 
    }, 
    mime: { 
     'text/x-typescript': ['ts','tsx'] 
    }, 
    coverageIstanbulReporter: { 
     reports: [ 'html', 'lcovonly' ], 
     fixWebpackSourcePaths: true 
    }, 
    angularCli: { 
     environment: 'dev' 
    }, 
    reporters: config.angularCli && config.angularCli.codeCoverage 
     ? ['progress', 'coverage-istanbul', 'trx'] 
     : ['progress', 'kjhtml', 'trx'], 
    trxReporter: { 
     outputFile: 'test-results.trx', 
     shortTestName: false 
    }, 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false 
    }); 
}; 

auf meinem Build-Server in den karma.conf.js Datei verwende ich diese config:

browsers: ['PhantomJs'], 
singleRun: true 

ich die Tests auf meinem Buildserver laufen durch npm Test ausgeführt wird, die Startet den ng-Test. Gibt es eine Möglichkeit, das direkt in dieser Konfigurationsdatei zu konfigurieren, oder sollte ich andere karma.conf.js Dateien verwenden? Und wie soll ich das benutzen? Oder sollte ich einige Argumente für ng Test verwenden?

Antwort

0

fand ich eine schöne und einfache Lösung, die durch einige Skripte in meinem Paket Config

"test": "ng test --single-run --browsers=PhantomJS", 
"test.watch": "ng test --browsers=Chrome", 
1

Was ich getan habe, ist 2 verschiedene npm Skripte verwendet, um den Test (im Grunde laufen Karma Start), genannt test und test-chrome. Dann in karma.conf.js tat ich dies vor module.exports:

var ENV = process.env.npm_lifecycle_event; 
var isChrome= ENV === 'test-chrome'; 

und in der config:

browsers: isChrome? ['Chrome'] : ['PhantomJS'] 

In Ihrem Fall könnten Sie Test-Chrom lokal und nur testen, auf dem Build laufen Server.

+0

Dank für Ihre Hinweise verwenden. Jetzt habe ich eine gute Lösung für mich gefunden – cpiock

+0

Gern geschehen. Sie sollten Ihre Antwort als akzeptiert markieren, damit die Frage geschlossen wird. –

Verwandte Themen