Example configurations for running Karma & Protractor tests in headless Chrome (see http://cvuorinen.net/2017/05/running-angular-tests-in-headless-chrome/)
// Karma configuration file, see link for more information | |
// https://karma-runner.github.io/0.13/config/configuration-file.html | |
module.exports = function (config) { | |
config.set({ | |
basePath: '', | |
frameworks: ['jasmine', '@angular/cli'], | |
plugins: [ | |
require('karma-jasmine'), | |
require('karma-chrome-launcher'), | |
require('karma-jasmine-html-reporter'), | |
require('karma-coverage-istanbul-reporter'), | |
require('@angular/cli/plugins/karma') | |
], | |
client:{ | |
clearContext: false // leave Jasmine Spec Runner output visible in browser | |
}, | |
files: [ | |
{ pattern: './src/test.ts', watched: false } | |
], | |
preprocessors: { | |
'./src/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'] | |
: ['progress', 'kjhtml'], | |
port: 9876, | |
colors: true, | |
logLevel: config.LOG_INFO, | |
autoWatch: true, | |
browsers: ['ChromeHeadless'], | |
singleRun: false, | |
customLaunchers: { | |
ChromeHeadless: { | |
base: 'Chrome', | |
flags: [ | |
// See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md | |
'--headless', | |
'--disable-gpu', | |
// Without a remote debugging port, Google Chrome exits immediately. | |
'--remote-debugging-port=9222', | |
], | |
} | |
} | |
}); | |
}; |
// Protractor configuration file, see link for more information | |
// https://github.com/angular/protractor/blob/master/lib/config.ts | |
const { SpecReporter } = require('jasmine-spec-reporter'); | |
exports.config = { | |
allScriptsTimeout: 11000, | |
specs: [ | |
'./e2e/**/*.e2e-spec.ts' | |
], | |
capabilities: { | |
'browserName': 'chrome', | |
chromeOptions: { | |
args: [ "--headless", "--disable-gpu", "--window-size=800x600" ] | |
} | |
}, | |
directConnect: true, | |
baseUrl: 'http://localhost:4200/', | |
framework: 'jasmine', | |
jasmineNodeOpts: { | |
showColors: true, | |
defaultTimeoutInterval: 30000, | |
print: function() {} | |
}, | |
beforeLaunch: function() { | |
require('ts-node').register({ | |
project: 'e2e/tsconfig.e2e.json' | |
}); | |
}, | |
onPrepare() { | |
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment