Skip to content

Commit

Permalink
chore: add a code coverage ci workflow (#7282)
Browse files Browse the repository at this point in the history
  • Loading branch information
brandonocasey committed Jun 23, 2021
1 parent 9cfc15c commit 4cecbda
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 14 deletions.
17 changes: 12 additions & 5 deletions .github/workflows/ci.yml
Expand Up @@ -5,7 +5,7 @@ on: [push, pull_request]
jobs:
should-skip:
continue-on-error: true
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
should-skip-job: ${{steps.skip-check.outputs.should_skip}}
Expand All @@ -21,10 +21,12 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-18.04]
os: [ubuntu-latest]
test-type: [unit, coverage]
env:
BROWSER_STACK_USERNAME: ${{secrets.BROWSER_STACK_USERNAME}}
BROWSER_STACK_ACCESS_KEY: ${{secrets.BROWSER_STACK_ACCESS_KEY}}
CI_TEST_TYPE: ${{matrix.test-type}}
runs-on: ${{matrix.os}}
steps:
- name: checkout code
Expand All @@ -48,15 +50,12 @@ jobs:

- name: update apt cache on linux w/o browserstack
run: sudo apt-get update
if: ${{startsWith(matrix.os, 'ubuntu') && !env.BROWSER_STACK_USERNAME}}

- name: install ffmpeg/pulseaudio for firefox on linux w/o browserstack
run: sudo apt-get install ffmpeg pulseaudio
if: ${{startsWith(matrix.os, 'ubuntu') && !env.BROWSER_STACK_USERNAME}}

- name: start pulseaudio for firefox on linux w/o browserstack
run: pulseaudio -D
if: ${{startsWith(matrix.os, 'ubuntu') && !env.BROWSER_STACK_USERNAME}}

- name: setup node
uses: actions/setup-node@v1
Expand All @@ -75,3 +74,11 @@ jobs:
uses: GabrielBB/xvfb-action@v1
with:
run: npm run test

- name: coverage
uses: codecov/codecov-action@v1
with:
token: ${{secrets.CODECOV_TOKEN}}
files: './test/dist/coverage/coverage-final.json'
fail_ci_if_error: true
if: ${{startsWith(env.CI_TEST_TYPE, 'coverage')}}
60 changes: 60 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Expand Up @@ -59,6 +59,7 @@
"lint": "vjsstandard",
"lint-errors": "vjsstandard --errors",
"karma-server": "karma start test/karma.conf.js --singleRun=false --auto-watch",
"posttest": "[ \"$CI_TEST_TYPE\" != 'coverage' ] || shx cat test/dist/coverage/text.txt",
"pretest": "npm run build-dev",
"test": "npm-run-all -p test:*",
"test:node-require": "node test/require/node.js",
Expand Down Expand Up @@ -138,6 +139,7 @@
"remark-validate-links": "^8.0.2",
"replace": "^1.2.1",
"rollup": "^2.2.0",
"rollup-plugin-istanbul": "^3.0.0",
"rollup-plugin-alias": "^1.5.2",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-commonjs": "^9.3.4",
Expand Down
11 changes: 11 additions & 0 deletions rollup.config.js
Expand Up @@ -13,7 +13,16 @@ import multiEntry from 'rollup-plugin-multi-entry';
import stub from 'rollup-plugin-stub';
import isCI from 'is-ci';
import replace from '@rollup/plugin-replace';
import istanbul from 'rollup-plugin-istanbul';

const excludeCoverage = [
'test/**',
'node_modules/**',
'package.json',
/^data-files!/
];

const CI_TEST_TYPE = process.env.CI_TEST_TYPE || '';
const compiledLicense = _.template(fs.readFileSync('./build/license-header.txt', 'utf8'));
const bannerData = _.pick(pkg, ['version', 'copyright']);
const banner = compiledLicense(Object.assign({includesVtt: true}, bannerData));
Expand Down Expand Up @@ -172,8 +181,10 @@ export default cliargs => [
json(),
stub(),
primedCjs,
CI_TEST_TYPE === 'coverage' ? istanbul({exclude: excludeCoverage}) : {},
primedBabel,
cliargs.progress !== false ? progress() : {}

],
onwarn,
watch
Expand Down
27 changes: 18 additions & 9 deletions test/karma.conf.js
@@ -1,21 +1,28 @@
const generate = require('videojs-generate-karma-config');
const CI_TEST_TYPE = process.env.CI_TEST_TYPE || '';

module.exports = function(config) {
// const coverageFlag = process.env.npm_config_coverage;
// process.env.TRAVIS || coverageFlag || false;
const reportCoverage = false;

// see https://github.com/videojs/videojs-generate-karma-config
// for options
const options = {
travisLaunchers(defaults) {
delete defaults.travisFirefox;
return defaults;
browsers(aboutToRun) {
// never run on Chromium
return aboutToRun.filter(function(launcherName) {
return !(/^(Chromium)/).test(launcherName);
});
},
serverBrowsers(defaults) {
return [];
},
coverage: reportCoverage
browserstackLaunchers(defaults) {
// do not use browserstack for coverage testing
if (CI_TEST_TYPE === 'coverage') {
return {};
}

return defaults;
},
coverage: CI_TEST_TYPE === 'coverage' ? true : false
};

config = generate(config, options);
Expand Down Expand Up @@ -43,7 +50,9 @@ module.exports = function(config) {

// pin Browserstack Firefox version to 64
/* eslint-disable camelcase */
config.customLaunchers.bsFirefox.browser_version = '64.0';
if (config.customLaunchers && config.customLaunchers.bsFirefox) {
config.customLaunchers.bsFirefox.browser_version = '64.0';
}
/* eslint-enable camelcase */

// uncomment the section below to re-enable all browserstack video recording
Expand Down

0 comments on commit 4cecbda

Please sign in to comment.