]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Add cross-platform CI (#6670)
authorEdward Thomson <ethomson@github.com>
Wed, 6 Nov 2019 12:14:09 +0000 (07:14 -0500)
committerEvert Timberg <evert.timberg+github@gmail.com>
Wed, 6 Nov 2019 12:14:09 +0000 (07:14 -0500)
* 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

.github/workflows/ci.yml [new file with mode: 0644]
docs/developers/contributing.md
gulpfile.js
karma.conf.js
package-lock.json
package.json

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644 (file)
index 0000000..ca7f1ca
--- /dev/null
@@ -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
index 6180a3139bcb9db3186fb1f1403f8e7f13910456..4c43c7e3070a178c25a4d81440d3d2f86750b274 100644 (file)
@@ -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
 ```
index 972b492f7a3f35b668893512cc7621c875dcda6a..23b44af1718cd90ea001df74c4d6956f40db4e8e 100644 (file)
@@ -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
     }
   },
index d7aae642a2e7d1185e402e9be83c3a6a100b368e..884ac841d35f6056ee05a0102d42371fb3e0d3c0 100644 (file)
@@ -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'
                        }
                },
 
index 5f43a70856f27052eabca8fbc18d644d9d1c903e..3b40ffc4fd3afc4a76a2bfa2fc5df9e41dbe11d2 100644 (file)
         "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",
         "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",
         "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",
         }
       }
     },
+    "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",
index 43337b80310d61b125a51db441053b4cb0ff5172..fd9e73277b67c2b2f32b80f00ac87889a88ed8c3 100644 (file)
     "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",