Skip to content

Commit

Permalink
use @puppeteer/browsers instead of travis-multirunner (#1133)
Browse files Browse the repository at this point in the history
* use @puppeteer/browsers instead of travis-multirunner

which reduces the maintenance burden
  • Loading branch information
fippo authored Jun 27, 2023
1 parent 4eef120 commit 873a68d
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 67 deletions.
13 changes: 2 additions & 11 deletions .github/workflows/e2e-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
browser: [chrome, firefox]
version: [stable, beta]
browser: [chrome]
version: [stable, beta, dev]
include:
- browser: chrome
version: unstable
- browser: chrome
version: stable
disableunifiedplan: true
- browser: firefox
version: nightly
- browser: firefox
version: esr
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
Expand All @@ -28,7 +21,5 @@ jobs:
env:
BROWSER: ${{matrix.browser}}
BVER: ${{matrix.version}}
CHROME_BIN: browsers/bin/chrome-${{matrix.version}}
FIREFOX_BIN: browsers/bin/firefox-${{matrix.version}}
DISPLAY: :99.0
run: npm run e2e-tests
6 changes: 0 additions & 6 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,12 @@ module.exports = function(grunt) {
expand: true
}
},
shell: {
downloadBrowser : {
command: 'BROWSER=${BROWSER-chrome} BVER=${BVER-stable} ./node_modules/travis-multirunner/setup.sh'
},
},
});

grunt.loadNpmTasks('grunt-eslint');
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-babel');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-shell');

grunt.registerTask('default', ['eslint', 'build']);
grunt.registerTask('lint', ['eslint']);
Expand Down
9 changes: 4 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
"postversion": "export GITTAG=\"echo $(git describe --abbrev=0 --tags | sed 's/^v//')\" && git push --force --set-upstream origin bumpVersion --follow-tags && git checkout gh-pages && git pull && cp out/adapter.js adapter.js && cp adapter.js adapter-`$GITTAG`.js && rm adapter-latest.js && ln -s adapter-`$GITTAG`.js adapter-latest.js && mkdir -p adapter-`$GITTAG`-variants && cp out/adapter.js adapter-`$GITTAG`-variants/ && cp out/adapter_*.js adapter-`$GITTAG`-variants/ && git add adapter.js adapter-latest.js adapter-`$GITTAG`.js adapter-`$GITTAG`-variants && git commit -m `$GITTAG` && git push --set-upstream origin gh-pages && git checkout main",
"prepare": "grunt build",
"prepublishonly": "npm test",
"test": "grunt && mocha test/unit && grunt downloadBrowser && karma start test/karma.conf.js",
"test": "grunt && mocha test/unit && karma start test/karma.conf.js",
"lint-and-unit-tests": "grunt && mocha test/unit",
"e2e-tests": "grunt && grunt downloadBrowser && karma start test/karma.conf.js"
"e2e-tests": "grunt && karma start test/karma.conf.js"
},
"dependencies": {
"sdp": "^3.2.0"
Expand All @@ -34,6 +34,7 @@
"devDependencies": {
"@babel/core": "^7.21.0",
"@babel/preset-env": "^7.20.2",
"@puppeteer/browsers": "^1.4.1",
"babel-preset-env": "^1.7.0",
"brfs": "^1.5.0",
"chai": "^3.5.0",
Expand All @@ -44,7 +45,6 @@
"grunt-contrib-clean": "^1.1.0",
"grunt-contrib-copy": "^1.0.0",
"grunt-eslint": "^24.0.0",
"grunt-shell": "^2.1.0",
"karma": "^6.4.1",
"karma-browserify": "^8.1.0",
"karma-chai": "^0.1.0",
Expand All @@ -56,7 +56,6 @@
"karma-stability-reporter": "^3.0.1",
"mocha": "^10.1.0",
"sinon": "^2.2.0",
"sinon-chai": "^2.14.0",
"travis-multirunner": "^5.0.1"
"sinon-chai": "^2.14.0"
}
}
5 changes: 4 additions & 1 deletion test/.eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@
"node": true,
"es6": true
},
"rules": {}
"rules": {},
"parserOptions": {
"ecmaVersion": 2022
}
}
File renamed without changes.
File renamed without changes.
130 changes: 86 additions & 44 deletions test/karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,58 +9,100 @@
'use strict';

const os = require('os');
const puppeteerBrowsers = require('@puppeteer/browsers');

let browsers;
if (process.env.BROWSER) {
if (process.env.BROWSER === 'safari') {
browsers = ['Safari'];
} else if (process.env.BROWSER === 'Electron') {
browsers = ['electron'];
} else {
browsers = [process.env.BROWSER];
}
} else if (os.platform() === 'darwin') {
browsers = ['chrome', 'firefox', 'Safari'];
} else if (os.platform() === 'win32') {
browsers = ['chrome', 'firefox'];
} else {
browsers = ['chrome', 'firefox'];
async function determineFirefoxVersion(version) {
const rawVersions = await fetch('https://product-details.mozilla.org/1.0/firefox_versions.json');
const versions = await rawVersions.json();
return versions.FIREFOX_NIGHTLY;
// TODO: support stable, beta, nightly, esr.
// This has issues with the assumptions browsers makes about download urls
// (or Firefox about directory structure and where it includes the platform)
// This base url coems close:
// 'https://archive.mozilla.org/pub/firefox/releases/' + buildId + '/' + platform + '/en-US/';
}

let reporters = ['mocha'];
if (process.env.CI) {
// stability must be the last reporter as it munges the
// exit code and always returns 0.
reporters.push('stability');
async function download(browser, version, cacheDir, platform) {
if (browser === 'firefox') {
// TODO: see above, resolve stable, beta, nightly, esr
const buildId = await determineFirefoxVersion(version);
await puppeteerBrowsers.install({
browser,
buildId,
cacheDir,
platform,
});
return buildId;
}
const buildId = await puppeteerBrowsers
.resolveBuildId(browser, platform, version);
await puppeteerBrowsers.install({
browser,
buildId,
cacheDir,
platform
});
return buildId;
}

// uses Safari Technology Preview.
if (os.platform() === 'darwin' && process.env.BVER === 'unstable' &&
!process.env.SAFARI_BIN) {
process.env.SAFARI_BIN = '/Applications/Safari Technology Preview.app' +
'/Contents/MacOS/Safari Technology Preview';
}
module.exports = async(config) => {
const cacheDir = process.cwd() + '/browsers';
const platform = puppeteerBrowsers.detectBrowserPlatform();

if (!process.env.FIREFOX_BIN) {
process.env.FIREFOX_BIN = process.cwd() + '/browsers/bin/firefox-'
+ (process.env.BVER || 'stable');
}
if (!process.env.CHROME_BIN) {
process.env.CHROME_BIN = process.cwd() + '/browsers/bin/chrome-'
+ (process.env.BVER || 'stable');
}
let browsers;
if (process.env.BROWSER) {
if (process.env.BROWSER === 'safari') {
browsers = ['Safari'];
} else if (process.env.BROWSER === 'Electron') {
browsers = ['electron'];
} else {
browsers = [process.env.BROWSER];
}
} else if (os.platform() === 'darwin') {
browsers = ['chrome', 'firefox', 'Safari'];
} else if (os.platform() === 'win32') {
browsers = ['chrome', 'firefox'];
} else {
browsers = ['chrome', 'firefox'];
}

let chromeFlags = [
'--use-fake-device-for-media-stream',
'--use-fake-ui-for-media-stream',
'--no-sandbox',
'--headless', '--disable-gpu', '--remote-debugging-port=9222'
];
if (process.env.CHROMEEXPERIMENT !== 'false') {
chromeFlags.push('--enable-experimental-web-platform-features');
}
let reporters = ['mocha'];
if (process.env.CI) {
// stability must be the last reporter as it munges the
// exit code and always returns 0.
reporters.push('stability');
}

// uses Safari Technology Preview.
if (browsers.includes('Safari') && os.platform() === 'darwin' &&
process.env.BVER === 'unstable' && !process.env.SAFARI_BIN) {
process.env.SAFARI_BIN = '/Applications/Safari Technology Preview.app' +
'/Contents/MacOS/Safari Technology Preview';
}

if (browsers.includes('firefox') && !process.env.FIREFOX_BIN) {
const buildId = await download('firefox', process.env.BVER || 'stable',
cacheDir, platform);
process.env.FIREFOX_BIN = puppeteerBrowsers
.computeExecutablePath({browser: 'firefox', buildId, cacheDir, platform});
}
if (browsers.includes('chrome') && !process.env.CHROME_BIN) {
const buildId = await download('chrome', process.env.BVER || 'stable',
cacheDir, platform);
process.env.CHROME_BIN = puppeteerBrowsers
.computeExecutablePath({browser: 'chrome', buildId, cacheDir, platform});
}

let chromeFlags = [
'--use-fake-device-for-media-stream',
'--use-fake-ui-for-media-stream',
'--no-sandbox',
'--headless', '--disable-gpu', '--remote-debugging-port=9222'
];
if (process.env.CHROMEEXPERIMENT !== 'false') {
chromeFlags.push('--enable-experimental-web-platform-features');
}

module.exports = function(config) {
config.set({
basePath: '..',
frameworks: ['browserify', 'mocha', 'chai'],
Expand Down

0 comments on commit 873a68d

Please sign in to comment.