Skip to content

Instantly share code, notes, and snippets.

@SkypLabs
Last active June 2, 2022 22:37
Show Gist options
  • Save SkypLabs/aa27e9f37471280c12d75e265a067d9e to your computer and use it in GitHub Desktop.
Save SkypLabs/aa27e9f37471280c12d75e265a067d9e to your computer and use it in GitHub Desktop.
[Angular] Running unit tests with Chromium in a Docker container: http://blog.skyplabs.net/2017/08/29/angular-running-unit-tests-with-chromium-in-a-docker-container/
FROM docker.io/node:8-stretch
LABEL net.skyplabs.maintainer-name="Paul-Emmanuel Raoul"
LABEL net.skyplabs.maintainer-email="[email protected]"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends chromium
ENV CHROME_BIN=chromium
WORKDIR /usr/src/app
CMD ["npm", "start"]
// 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')
],
customLaunchers: {
ChromeHeadlessCI: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},
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,
browserNoActivityTimeout: 60000
});
};
{
...
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"build:prod": "ng build -e prod",
"test": "ng test",
"test:ci": "ng test --browser ChromeHeadlessCI --code-coverage=true --single-run=true",
"lint": "ng lint",
"e2e": "ng e2e"
},
...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment