Skip to content
This repository was archived by the owner on Feb 26, 2020. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/chrome/webdriver/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ const timelineTraceCategories =
/**
* Configure a WebDriver builder based on the specified options.
* @param builder
* @param {Object} options the options for a web driver.
* @param {!Promise<Object>} options the options for a web driver.
*/
module.exports.configureBuilder = function(builder, baseDir, options) {
module.exports.configureBuilder = async function(builder, baseDir, options) {
const chromeConfig = options.chrome || {};
const moduleRootPath = path.resolve(__dirname, '..', '..', '..');

Expand Down
4 changes: 2 additions & 2 deletions lib/core/webdriver/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ module.exports.createWebDriver = async function(baseDir, options) {

switch (browser) {
case 'chrome':
chrome.configureBuilder(builder, baseDir, options);
await chrome.configureBuilder(builder, baseDir, options);
break;

case 'firefox':
firefox.configureBuilder(builder, baseDir, options);
await firefox.configureBuilder(builder, baseDir, options);
break;

default:
Expand Down
13 changes: 10 additions & 3 deletions lib/firefox/webdriver/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ const get = require('lodash.get');
const geckodriver = require('@sitespeed.io/geckodriver');
const defaultFirefoxPreferences = require('./firefoxPreferences');

module.exports.configureBuilder = function(builder, baseDir, options) {
let serviceBuilder;

module.exports.configureBuilder = async function(builder, baseDir, options) {
const firefoxConfig = options.firefox || {};
const moduleRootPath = path.resolve(__dirname, '..', '..', '..');

Expand All @@ -27,8 +29,13 @@ module.exports.configureBuilder = function(builder, baseDir, options) {
// port is not held. That means the OS can allocate it, and indeed
// collisions are frequent in the wild. By configuring the Web
// Driver service, we fix a new port for `geckodriver` each
// iteration, avoiding port collisions.
let serviceBuilder = new firefox.ServiceBuilder(geckodriverPath);
// iteration, avoiding port collisions. However, we must also stop
// any existing Web Driver service each iteration as well.
if (serviceBuilder) {
await serviceBuilder.stop();
}

serviceBuilder = new firefox.ServiceBuilder(geckodriverPath);
if (options.verbose >= 2) {
// This echoes the output from geckodriver to the console.
serviceBuilder.setStdio('inherit');
Expand Down