From: Edward Thomson Date: Wed, 6 Nov 2019 12:14:09 +0000 (-0500) Subject: Add cross-platform CI (#6670) X-Git-Tag: v3.0.0-alpha~262 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aff7d411404fe3499b9cd11333fb45d5922cdf91;p=thirdparty%2FChart.js.git Add cross-platform CI (#6670) * Linux and Windows CI with GitHub Actions * Add karma-edge-launcher * Add edge configuration to karma.conf.js * Support --browsers on the command line for karma tests * Add macOS CI builds * Add karma-safari-private-launcher * Document browser specification for tests --- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..ca7f1caab --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,49 @@ +name: CI + +on: [push] + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + fail-fast: false + + steps: + - uses: actions/checkout@v1 + - name: Use Node.js + uses: actions/setup-node@v1 + - name: Setup xvfb + run: | + Xvfb :99 -screen 0 1024x768x24 & + echo "::set-env name=DISPLAY:::99.0" + if: runner.os == 'Linux' + - name: Install gulp + run: npm install --global gulp + if: runner.os == 'macOS' + - name: Install chrome + run: | + brew update + brew cask install google-chrome + if: runner.os == 'macOS' + - name: Select browsers + run: | + if [ "${{ runner.os }}" == "macOS" ]; then + echo "::set-env name=BROWSERS::--browsers chrome" + fi + shell: bash + - name: Build and Test + run: | + npm install + gulp build + gulp test --coverage ${BROWSERS} + - name: Package + run: | + gulp docs + gulp package + gulp bower + - name: Publish Test Results + run: cat ./coverage/lcov.info | ./node_modules/.bin/coveralls + continue-on-error: true diff --git a/docs/developers/contributing.md b/docs/developers/contributing.md index 6180a3139..4c43c7e30 100644 --- a/docs/developers/contributing.md +++ b/docs/developers/contributing.md @@ -36,6 +36,7 @@ The following commands are now available from the repository root: > gulp unittest --coverage // run tests and generate coverage reports in ./coverage > gulp lint // perform code linting (ESLint) > gulp test // perform code linting and run unit tests +> gulp test --browsers ... // test with specified browsers (comma-separated) > gulp docs // build the documentation in ./dist/docs > gulp docs --watch // starts the gitbook live reloaded server ``` diff --git a/gulpfile.js b/gulpfile.js index 972b492f7..23b44af17 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -145,6 +145,7 @@ function unittestTask(done) { args: { coverage: !!argv.coverage, inputs: (argv.inputs || 'test/specs/**/*.js').split(';'), + browsers: (argv.browsers || 'chrome,firefox').split(','), watch: argv.watch } }, diff --git a/karma.conf.js b/karma.conf.js index d7aae642a..884ac841d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -22,7 +22,7 @@ module.exports = function(karma) { karma.set({ frameworks: ['jasmine'], reporters: ['progress', 'kjhtml'], - browsers: ['chrome', 'firefox'], + browsers: args.browsers, logLevel: karma.LOG_WARN, // Explicitly disable hardware acceleration to make image @@ -40,6 +40,12 @@ module.exports = function(karma) { prefs: { 'layers.acceleration.disabled': true } + }, + safari: { + base: 'SafariPrivate' + }, + edge: { + base: 'Edge' } }, diff --git a/package-lock.json b/package-lock.json index 5f43a7085..3b40ffc4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -938,6 +938,12 @@ "buffer-equal": "^1.0.0" } }, + "applescript": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/applescript/-/applescript-1.0.0.tgz", + "integrity": "sha1-u4evVoytA0pOSMS9r2Bno6JwExc=", + "dev": true + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -2969,6 +2975,12 @@ "safer-buffer": "^2.1.0" } }, + "edge-launcher": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/edge-launcher/-/edge-launcher-1.2.2.tgz", + "integrity": "sha1-60Cq+9Bnpup27/+rBke81VCbN7I=", + "dev": true + }, "editions": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", @@ -6057,6 +6069,15 @@ "source-map": "^0.5.1" } }, + "karma-edge-launcher": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.2.tgz", + "integrity": "sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw==", + "dev": true, + "requires": { + "edge-launcher": "1.2.2" + } + }, "karma-firefox-launcher": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.2.0.tgz", @@ -6189,6 +6210,15 @@ } } }, + "karma-safari-private-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/karma-safari-private-launcher/-/karma-safari-private-launcher-1.0.0.tgz", + "integrity": "sha1-d/zpBIgrNBvRNBWv01KcuSJkC0M=", + "dev": true, + "requires": { + "applescript": "^1.0.0" + } + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", diff --git a/package.json b/package.json index 43337b803..fd9e73277 100644 --- a/package.json +++ b/package.json @@ -53,10 +53,12 @@ "karma": "^4.0.0", "karma-chrome-launcher": "^3.0.0", "karma-coverage": "^2.0.0", + "karma-edge-launcher": "^0.4.2", "karma-firefox-launcher": "^1.0.1", "karma-jasmine": "^2.0.1", "karma-jasmine-html-reporter": "^1.4.0", "karma-rollup-preprocessor": "^7.0.0", + "karma-safari-private-launcher": "^1.0.0", "merge-stream": "^1.0.1", "pixelmatch": "^5.0.0", "rollup": "^1.0.0",