Skip to content

Commit d5f7156

Browse files
committed
test: replace travis-multirunner with @puppeter/browsers
following what was done in adapter which is now back to supporting Firefox stable. Also ignore CHROME_BIN environment variable to download the actual Chrome version, see webrtcHacks/adapter#1157
1 parent 7ac95ca commit d5f7156

File tree

25 files changed

+87
-66
lines changed

25 files changed

+87
-66
lines changed

.github/workflows/interop-tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ jobs:
1313
browserB: [firefox, chrome]
1414
bver: ['unstable']
1515
steps:
16-
- uses: actions/checkout@v3
17-
- uses: actions/setup-node@v3
16+
- uses: actions/checkout@v4
17+
- uses: actions/setup-node@v4
1818
- run: npm install
19-
- run: BROWSER=${{matrix.browserA}} BVER=${{matrix.bver}} ./node_modules/travis-multirunner/setup.sh
20-
- run: BROWSER=${{matrix.browserB}} BVER=${{matrix.bver}} ./node_modules/travis-multirunner/setup.sh
2119
- run: sudo rm /usr/bin/chromedriver /usr/bin/geckodriver # remove preinstalled github chromedriver/geckodriver from $PATH
2220
- run: Xvfb :99 &
21+
- run: BROWSER=${{matrix.browserA}} BVER=${{matrix.version}} node -e "require('./test/webdriver').buildDriver()" # preinstall
22+
- run: BROWSER=${{matrix.browserB}} BVER=${{matrix.version}} node -e "require('./test/webdriver').buildDriver()" # preinstall
2323
- run: BROWSER_A=${{matrix.browserA}} BROWSER_B=${{matrix.browserB}} BVER=${{matrix.bver}} DISPLAY=:99.0 node_modules/.bin/jest --retries=3 test/interop/

.github/workflows/test.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ jobs:
66
lint:
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v3
10-
- uses: actions/setup-node@v3
9+
- uses: actions/checkout@v4
10+
- uses: actions/setup-node@v4
1111
- run: npm install
1212
- run: npm run eslint
1313
- run: npm run stylelint
@@ -20,10 +20,10 @@ jobs:
2020
browser: [chrome]
2121
version: [stable]
2222
steps:
23-
- uses: actions/checkout@v2
24-
- uses: actions/setup-node@v3
23+
- uses: actions/checkout@v4
24+
- uses: actions/setup-node@v4
2525
- run: npm install
26-
- run: BROWSER=${{matrix.browser}} BVER=${{matrix.version}} ./node_modules/travis-multirunner/setup.sh
2726
- run: sudo rm /usr/bin/chromedriver # remove preinstalled github chromedriver from $PATH
2827
- run: Xvfb :99 &
28+
- run: BROWSER=${{matrix.browser}} BVER=${{matrix.version}} node -e "require('./test/webdriver').buildDriver()" # preinstall
2929
- run: BROWSER=${{matrix.browser}} BVER=${{matrix.version}} DISPLAY=:99.0 npm run jest -- --retries=3

package.json

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
{
22
"name": "webrtc-samples",
3+
"private": true,
34
"version": "1.0.0",
45
"description": "Project checking for WebRTC GitHub samples repo",
56
"keywords": [
6-
"webrtc",
7-
"demos",
8-
"samples",
9-
"javascript"
7+
"webrtc"
108
],
11-
"homepage": "https://github.com/webrtc/samples",
9+
"homepage": "https://webrtc.github.io/samples/",
1210
"bugs": {
1311
"url": "https://github.com/webrtc/samples/issues"
1412
},
@@ -29,14 +27,14 @@
2927
"'**/third_party/*.js'"
3028
],
3129
"devDependencies": {
30+
"@puppeteer/browsers": "^2.2.0",
3231
"eslint": "^8.9.0",
3332
"eslint-config-google": "^0.14.0",
3433
"eslint-plugin-jest": "^27.4.0",
3534
"http-server": "^14.1.0",
3635
"jest": "^29.7.0",
37-
"selenium-webdriver": "^4.12.0",
36+
"selenium-webdriver": "^4.19.0",
3837
"stylelint": "^14.5.3",
39-
"stylelint-config-recommended": "^7.0.0",
40-
"travis-multirunner": "^5.0.1"
38+
"stylelint-config-recommended": "^7.0.0"
4139
}
4240
}

src/content/datachannel/basic/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ const path = '/src/content/datachannel/basic/index.html';
1313
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1414

1515
describe('datachannel basic', () => {
16-
beforeAll(() => {
17-
driver = seleniumHelpers.buildDriver();
16+
beforeAll(async () => {
17+
driver = await seleniumHelpers.buildDriver();
1818
});
1919
afterAll(() => {
2020
return driver.quit();

src/content/datachannel/channel/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/datachannel/channel/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('datachannel and broadcast channels', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/datachannel/datatransfer/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/datachannel/datatransfer/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('datachannel datatransfer', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/datachannel/filetransfer/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/datachannel/filetransfer/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('datachannel filetransfer', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/devices/input-output/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ const path = '/src/content/devices/input-output/index.html';
1515
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1616

1717
describe('input-output', () => {
18-
beforeAll(() => {
19-
driver = seleniumHelpers.buildDriver();
18+
beforeAll(async () => {
19+
driver = await seleniumHelpers.buildDriver();
2020
});
2121
afterAll(() => {
2222
return driver.quit();

src/content/getusermedia/gum/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/getusermedia/gum/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('getUserMedia', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/getusermedia/resolution/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ const path = '/src/content/getusermedia/resolution/index.html';
1717
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1818

1919
describe('getUserMedia resolutions', () => {
20-
beforeAll(() => {
21-
driver = seleniumHelpers.buildDriver();
20+
beforeAll(async () => {
21+
driver = await seleniumHelpers.buildDriver();
2222
});
2323
afterAll(() => {
2424
return driver.quit();

src/content/insertable-streams/endtoend-encryption/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/insertable-streams/endtoend-encryption/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('insertable streams e2ee', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/audio/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ const path = '/src/content/peerconnection/audio/index.html';
1515
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1616

1717
describe('audio-only peerconnection', () => {
18-
beforeAll(() => {
19-
driver = seleniumHelpers.buildDriver();
18+
beforeAll(async () => {
19+
driver = await seleniumHelpers.buildDriver();
2020
});
2121
afterAll(() => {
2222
return driver.quit();

src/content/peerconnection/change-codecs/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/change-codecs/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('peerconnection with setCodecPreferences', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/channel/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/channel/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('peerconnection and broadcast channels', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/dtmf/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ const path = '/src/content/peerconnection/dtmf/index.html';
1717
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1818

1919
describe('peerconnection dtmf', () => {
20-
beforeAll(() => {
21-
driver = seleniumHelpers.buildDriver();
20+
beforeAll(async () => {
21+
driver = await seleniumHelpers.buildDriver();
2222
});
2323
afterAll(() => {
2424
return driver.quit();

src/content/peerconnection/multiple/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/multiple/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('multiple peerconnections', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/munge-sdp/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/munge-sdp/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('peerconnection sdp munging', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/negotiate-timing/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/negotiate-timing/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('peerconnection with negotiation timing', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/pc1/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/pc1/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('simple peerconnection', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/restart-ice/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/restart-ice/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('peerconnection ice restart', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/states/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/states/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('peerconnection states', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/trickle-ice/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/trickle-ice/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('Trickle-Ice', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

src/content/peerconnection/upgrade/js/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const path = '/src/content/peerconnection/upgrade/index.html';
1616
const url = `${process.env.BASEURL ? process.env.BASEURL : ('file://' + process.cwd())}${path}`;
1717

1818
describe('peerconnection upgrade from audio-only to audio-video', () => {
19-
beforeAll(() => {
20-
driver = seleniumHelpers.buildDriver();
19+
beforeAll(async () => {
20+
driver = await seleniumHelpers.buildDriver();
2121
});
2222
afterAll(() => {
2323
return driver.quit();

test/interop/connection.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ describe(`basic interop test ${browserA} => ${browserB}`, function() {
2121
browserLogging: true,
2222
}
2323
drivers = [
24-
buildDriver(browserA, options),
25-
buildDriver(browserB, options),
24+
await buildDriver(browserA, options),
25+
await buildDriver(browserB, options),
2626
];
2727
clients = drivers.map(driver => {
2828
return {

test/webdriver.js

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,47 @@
66
* tree.
77
*/
88
const os = require('os');
9+
const path = require('path');
910

1011
const webdriver = require('selenium-webdriver');
1112
const chrome = require('selenium-webdriver/chrome');
1213
const firefox = require('selenium-webdriver/firefox');
1314
const safari = require('selenium-webdriver/safari');
1415

16+
const puppeteerBrowsers = require('@puppeteer/browsers');
17+
18+
async function download(browser, version, cacheDir, platform) {
19+
const buildId = await puppeteerBrowsers
20+
.resolveBuildId(browser, platform, version);
21+
await puppeteerBrowsers.install({
22+
browser,
23+
buildId,
24+
cacheDir,
25+
platform
26+
});
27+
return buildId;
28+
}
29+
const cacheDir = path.join(process.cwd(), 'browsers');
30+
1531
if (os.platform() === 'win32') {
1632
process.env.PATH += ';' + process.cwd() + '\\node_modules\\chromedriver\\lib\\chromedriver\\';
1733
process.env.PATH += ';' + process.cwd() + '\\node_modules\\geckodriver';
1834
} else {
19-
process.env.PATH += ':node_modules/.bin';
35+
process.env.PATH = path.join(process.env.PATH, 'node_modules', '.bin');
2036
}
2137

22-
function buildDriver(browser = process.env.BROWSER || 'chrome', options = {version: process.env.BVER}) {
38+
async function buildDriver(browser = process.env.BROWSER || 'chrome', options = {version: process.env.BVER}) {
39+
const platform = puppeteerBrowsers.detectBrowserPlatform();
40+
41+
const buildId = await download(browser, options.version || 'stable',
42+
cacheDir, platform);
43+
if (browser === 'chrome') {
44+
process.env.CHROME_BIN = puppeteerBrowsers
45+
.computeExecutablePath({browser, buildId, cacheDir, platform});
46+
} else if (browser === 'firefox') {
47+
process.env.FIREFOX_BIN = puppeteerBrowsers
48+
.computeExecutablePath({browser, buildId, cacheDir, platform});
49+
}
2350
// Chrome options.
2451
const chromeOptions = new chrome.Options()
2552
.addArguments('allow-insecure-localhost')
@@ -28,11 +55,8 @@ function buildDriver(browser = process.env.BROWSER || 'chrome', options = {versi
2855
if (options.chromeFlags) {
2956
options.chromeFlags.forEach((flag) => chromeOptions.addArguments(flag));
3057
}
31-
3258
if (options.chromepath) {
3359
chromeOptions.setChromeBinaryPath(options.chromepath);
34-
} else if (os.platform() === 'linux' && options.version) {
35-
chromeOptions.setChromeBinaryPath('browsers/bin/chrome-' + options.version);
3660
}
3761

3862
if (!options.devices || options.headless) {
@@ -65,6 +89,7 @@ function buildDriver(browser = process.env.BROWSER || 'chrome', options = {versi
6589
});
6690
}
6791

92+
// Safari options.
6893
const safariOptions = new safari.Options();
6994
safariOptions.setTechnologyPreview(options.version === 'unstable');
7095

@@ -73,8 +98,6 @@ function buildDriver(browser = process.env.BROWSER || 'chrome', options = {versi
7398
let firefoxPath = firefox.Channel.RELEASE;
7499
if (options.firefoxpath) {
75100
firefoxPath = options.firefoxpath;
76-
} else if (os.platform() == 'linux' && options.version) {
77-
firefoxPath = 'browsers/bin/firefox-' + options.version;
78101
}
79102
if (options.headless) {
80103
firefoxOptions.addArguments('-headless');

0 commit comments

Comments
 (0)