Skip to content
Merged
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
2 changes: 2 additions & 0 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ arch [sometimes](https://code.google.com/p/selenium/issues/detail?id=5116#c9).

`baseURL` is used to find the server having the selenium or drivers files.

`fullURL` as an alternative to baseURL it's possible specify full url, ex `https://selenium-release.storage.googleapis.com/4.0-alpha-7/selenium-server-4.0.0-alpha-7.jar`.

`opts.ignoreExtraDrivers` only downloads and installs drivers explicity specified.

`opts.basePath` sets the base directory used to store the selenium standalone `.jar` and drivers. Defaults to current working directory + .selenium/
Expand Down
6 changes: 6 additions & 0 deletions docs/CLI.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ selenium-standalone start -- -debug
# choose selenium version
selenium-standalone install --version=3.141.59 --baseURL=https://selenium-release.storage.googleapis.com

# exact selenium download url
selenium-standalone install --version=4.0.0-alpha-7 --fullURL=https://selenium-release.storage.googleapis.com/4.0-alpha-7/selenium-server-4.0.0-alpha-7.jar

# choose chrome driver version
selenium-standalone install --drivers.chrome.version=87.0.4280.20 --drivers.chrome.baseURL=https://chromedriver.storage.googleapis.com

Expand All @@ -35,6 +38,9 @@ selenium-standalone start -- -role hub
selenium-standalone start -- -role node -hub http://localhost:4444/grid/register
selenium-standalone start -- -role node -hub http://localhost:4444/grid/register -port 5556

# don't forget to specify downloaded version for v4 alpha
./bin/selenium-standalone start --version=4.0.0-alpha-7

# If you have a complex configuration with numerous options or if you want to keep a clear configuration changes history,
# you can specify the options in a configuration file :
selenium-standalone install --config=/path/to/config.json
Expand Down
78 changes: 44 additions & 34 deletions lib/compute-download-urls.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,60 +42,70 @@ async function computeDownloadUrls(opts) {
// 2.44.0 would be `patch`, 2.44 `minor`, 2 `major` as per semver

const downloadUrls = {
selenium: util.format(
urls.selenium,
opts.seleniumBaseURL,
opts.seleniumVersion.replace(/(\d+\.\d+)\.\d+/, '$1'),
opts.seleniumVersion
),
selenium:
opts.seleniumFullURL ||
util.format(
urls.selenium,
opts.seleniumBaseURL,
opts.seleniumVersion.replace(/(\d+\.\d+)\.\d+/, '$1'),
opts.seleniumVersion
),
};
if (opts.drivers.chrome) {
await resolveLatestVersion(opts, 'chrome', opts.drivers.chrome.baseURL + '/LATEST_RELEASE');
if (opts.drivers.chrome.version < 2.23) {
mac32 = true;
}
downloadUrls.chrome = util.format(
urls.chrome,
opts.drivers.chrome.baseURL,
opts.drivers.chrome.version,
getChromeDriverArchitecture(opts.drivers.chrome.version, opts.drivers.chrome.arch)
);
downloadUrls.chrome =
opts.drivers.chrome.fullURL ||
util.format(
urls.chrome,
opts.drivers.chrome.baseURL,
opts.drivers.chrome.version,
getChromeDriverArchitecture(opts.drivers.chrome.version, opts.drivers.chrome.arch)
);
}
if (opts.drivers.ie) {
downloadUrls.ie = util.format(
urls.ie,
opts.drivers.ie.baseURL,
opts.drivers.ie.version.slice(0, opts.drivers.ie.version.lastIndexOf('.')),
getIeDriverArchitecture(opts.drivers.ie.arch),
opts.drivers.ie.version
);
downloadUrls.ie =
opts.drivers.ie.fullURL ||
util.format(
urls.ie,
opts.drivers.ie.baseURL,
opts.drivers.ie.version.slice(0, opts.drivers.ie.version.lastIndexOf('.')),
getIeDriverArchitecture(opts.drivers.ie.arch),
opts.drivers.ie.version
);
}
if (opts.drivers.firefox) {
await resolveLatestVersion(opts, 'firefox', 'https://api.github.com/repos/mozilla/geckodriver/releases/latest');
downloadUrls.firefox = util.format(
urls.firefox,
opts.drivers.firefox.baseURL,
getFirefoxDriverDirectory(opts.drivers.firefox.version),
getFirefoxDriverName(opts.drivers.firefox.version),
getFirefoxDriverVersionForUrl(opts.drivers.firefox.version),
getFirefoxDriverArchitecture(opts.drivers.firefox.version, opts.drivers.firefox.arch)
);
downloadUrls.firefox =
opts.drivers.firefox.fullURL ||
util.format(
urls.firefox,
opts.drivers.firefox.baseURL,
getFirefoxDriverDirectory(opts.drivers.firefox.version),
getFirefoxDriverName(opts.drivers.firefox.version),
getFirefoxDriverVersionForUrl(opts.drivers.firefox.version),
getFirefoxDriverArchitecture(opts.drivers.firefox.version, opts.drivers.firefox.arch)
);
}
if (opts.drivers.edge) {
downloadUrls.edge = getEdgeDriverUrl(opts.drivers.edge.version);
downloadUrls.edge = opts.drivers.edge.fullURL || getEdgeDriverUrl(opts.drivers.edge.version);
}
if (opts.drivers.chromiumedge) {
await resolveLatestVersion(
opts,
'chromiumedge',
'https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver/LATEST_STABLE'
);
downloadUrls.chromiumedge = util.format(
urls.chromiumedge,
opts.drivers.chromiumedge.baseURL,
opts.drivers.chromiumedge.version,
getChromiumEdgeDriverArchitecture(opts.drivers.chromiumedge.arch)
);
downloadUrls.chromiumedge =
opts.drivers.chromiumedge.fullURL ||
util.format(
urls.chromiumedge,
opts.drivers.chromiumedge.baseURL,
opts.drivers.chromiumedge.version,
getChromiumEdgeDriverArchitecture(opts.drivers.chromiumedge.arch)
);
}

return downloadUrls;
Expand Down
1 change: 1 addition & 0 deletions lib/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ async function install(_opts, _cb) {
const urls = await computeDownloadUrls({
seleniumVersion: opts.version,
seleniumBaseURL: opts.baseURL,
seleniumFullURL: opts.fullURL,
drivers: opts.drivers,
});

Expand Down
27 changes: 27 additions & 0 deletions test/compute-download-urls-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,20 @@ describe('compute-download-urls', () => {

assert.strictEqual(actual.selenium, 'https://localhost/3.0-beta2/selenium-server-standalone-3.0.0-beta2.jar');
});

it('fullURL', async () => {
const actual = await computeDownloadUrls({
seleniumVersion: '4.0.0-alpha-7',
seleniumFullURL:
'https://selenium-release.storage.googleapis.com/4.0-alpha-7/selenium-server-4.0.0-alpha-7.jar',
drivers: {},
});

assert.strictEqual(
actual.selenium,
'https://selenium-release.storage.googleapis.com/4.0-alpha-7/selenium-server-4.0.0-alpha-7.jar'
);
});
});

describe('chrome', () => {
Expand Down Expand Up @@ -99,6 +113,19 @@ describe('compute-download-urls', () => {
const actual = await computeDownloadUrls(opts);
assert.strictEqual(actual.chrome, 'https://localhost/2.0/chromedriver_linux64.zip');
});

it('fullURL', async () => {
opts.drivers.chrome = {
fullURL: 'https://chromedriver.storage.googleapis.com/87.0.4280.20/chromedriver_linux64.zip',
version: 'custom',
};

const actual = await computeDownloadUrls(opts);
assert.strictEqual(
actual.chrome,
'https://chromedriver.storage.googleapis.com/87.0.4280.20/chromedriver_linux64.zip'
);
});
});

describe('mac', () => {
Expand Down