@wdio/utils 8.20.0 → 8.20.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/node/utils.d.ts.map +1 -1
- package/build/node/utils.js +39 -9
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/node/utils.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAK1C;;;;GAIG;AACH,eAAO,MAAM,SAAS,UAAW,MAAM,YAWtC,CAAA;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,YAYvD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,sBAqBzD;AAED,wBAAsB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,+BAiBjE;AAGD,eAAO,MAAM,wBAAwB,aAAc,MAAM,mBAAmB,MAAM,cAAc,MAAM,SAOrG,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/node/utils.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAK1C;;;;GAIG;AACH,eAAO,MAAM,SAAS,UAAW,MAAM,YAWtC,CAAA;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,YAYvD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,sBAqBzD;AAED,wBAAsB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,+BAiBjE;AAGD,eAAO,MAAM,wBAAwB,aAAc,MAAM,mBAAmB,MAAM,cAAc,MAAM,SAOrG,CAAA;AAwBD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY;;;;;;GA2G3F;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,CAAC,YAAY,oGAS/D;AAED,wBAAgB,WAAW,CAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,UAGxG;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAC,MAAM,UAM3D;AAED,wBAAsB,iBAAiB,CAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;;GAgDhF;AAED,wBAAgB,gBAAgB,CAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,mBAEzE;AAED,wBAAgB,eAAe,CAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,mBAExE"}
|
package/build/node/utils.js
CHANGED
|
@@ -8,7 +8,7 @@ import logger from '@wdio/logger';
|
|
|
8
8
|
import { install, canDownload, resolveBuildId, detectBrowserPlatform, Browser, ChromeReleaseChannel, computeExecutablePath } from '@puppeteer/browsers';
|
|
9
9
|
import { download as downloadGeckodriver } from 'geckodriver';
|
|
10
10
|
import { download as downloadEdgedriver } from 'edgedriver';
|
|
11
|
-
import { locateChrome, locateFirefox } from 'locate-app';
|
|
11
|
+
import { locateChrome, locateFirefox, locateApp } from 'locate-app';
|
|
12
12
|
const log = logger('webdriver');
|
|
13
13
|
const EXCLUDED_PARAMS = ['version', 'help'];
|
|
14
14
|
/**
|
|
@@ -102,24 +102,39 @@ const _install = async (args) => {
|
|
|
102
102
|
await install(args);
|
|
103
103
|
log.progress('');
|
|
104
104
|
};
|
|
105
|
+
function locateChromeSafely() {
|
|
106
|
+
return locateChrome().catch(() => undefined);
|
|
107
|
+
}
|
|
105
108
|
export async function setupPuppeteerBrowser(cacheDir, caps) {
|
|
106
109
|
caps.browserName = caps.browserName?.toLowerCase();
|
|
107
|
-
const browserName = caps.browserName === Browser.FIREFOX
|
|
110
|
+
const browserName = caps.browserName === Browser.FIREFOX
|
|
111
|
+
? Browser.FIREFOX
|
|
112
|
+
: caps.browserName === Browser.CHROMIUM
|
|
113
|
+
? Browser.CHROMIUM
|
|
114
|
+
: Browser.CHROME;
|
|
108
115
|
const exist = await fsp.access(cacheDir).then(() => true, () => false);
|
|
116
|
+
const isChromeOrChromium = browserName === Browser.CHROME || caps.browserName === Browser.CHROMIUM;
|
|
109
117
|
if (!exist) {
|
|
110
118
|
await fsp.mkdir(cacheDir, { recursive: true });
|
|
111
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* in case we run Chromium tests we have to switch back to browserName: 'chrome'
|
|
122
|
+
* as 'chromium' is not recognised as a valid browser name by Chromedriver
|
|
123
|
+
*/
|
|
124
|
+
if (browserName === Browser.CHROMIUM) {
|
|
125
|
+
caps.browserName = Browser.CHROME;
|
|
126
|
+
}
|
|
112
127
|
/**
|
|
113
128
|
* don't set up Chrome/Firefox if a binary was defined in caps
|
|
114
129
|
*/
|
|
115
|
-
const browserOptions = (
|
|
130
|
+
const browserOptions = (isChromeOrChromium
|
|
116
131
|
? caps['goog:chromeOptions']
|
|
117
132
|
: caps['moz:firefoxOptions']) || {};
|
|
118
133
|
if (typeof browserOptions.binary === 'string') {
|
|
119
134
|
return {
|
|
120
135
|
executablePath: browserOptions.binary,
|
|
121
136
|
browserVersion: (caps.browserVersion ||
|
|
122
|
-
(
|
|
137
|
+
(isChromeOrChromium
|
|
123
138
|
? getBuildIdByChromePath(browserOptions.binary)
|
|
124
139
|
: await getBuildIdByFirefoxPath(browserOptions.binary)))
|
|
125
140
|
};
|
|
@@ -130,9 +145,15 @@ export async function setupPuppeteerBrowser(cacheDir, caps) {
|
|
|
130
145
|
}
|
|
131
146
|
if (!caps.browserVersion) {
|
|
132
147
|
const executablePath = browserName === Browser.CHROME
|
|
133
|
-
? await
|
|
134
|
-
:
|
|
135
|
-
|
|
148
|
+
? await locateChromeSafely()
|
|
149
|
+
: browserName === Browser.CHROMIUM
|
|
150
|
+
? await locateApp({
|
|
151
|
+
appName: Browser.CHROMIUM,
|
|
152
|
+
macOsName: Browser.CHROMIUM,
|
|
153
|
+
linuxWhich: 'chromium-browser'
|
|
154
|
+
}).catch(() => undefined)
|
|
155
|
+
: await locateFirefox().catch(() => undefined);
|
|
156
|
+
const tag = isChromeOrChromium
|
|
136
157
|
? getBuildIdByChromePath(executablePath)
|
|
137
158
|
: await getBuildIdByFirefoxPath(executablePath);
|
|
138
159
|
/**
|
|
@@ -167,7 +188,16 @@ export async function setupPuppeteerBrowser(cacheDir, caps) {
|
|
|
167
188
|
log.info(`Setting up ${browserName} v${buildId}`);
|
|
168
189
|
await _install(installOptions);
|
|
169
190
|
const executablePath = computeExecutablePath(installOptions);
|
|
170
|
-
|
|
191
|
+
/**
|
|
192
|
+
* for Chromium browser `resolveBuildId` returns with a useless build id
|
|
193
|
+
* which will not find a Chromedriver, therefor we need to resolve the
|
|
194
|
+
* id using Chrome as browser name
|
|
195
|
+
*/
|
|
196
|
+
let browserVersion = buildId;
|
|
197
|
+
if (browserName === Browser.CHROMIUM) {
|
|
198
|
+
browserVersion = await resolveBuildId(Browser.CHROME, platform, tag);
|
|
199
|
+
}
|
|
200
|
+
return { executablePath, browserVersion };
|
|
171
201
|
}
|
|
172
202
|
export function getDriverOptions(caps) {
|
|
173
203
|
return (caps['wdio:chromedriverOptions'] ||
|
|
@@ -193,7 +223,7 @@ export async function setupChromedriver(cacheDir, driverVersion) {
|
|
|
193
223
|
if (!platform) {
|
|
194
224
|
throw new Error('The current platform is not supported.');
|
|
195
225
|
}
|
|
196
|
-
const version = driverVersion || getBuildIdByChromePath(await
|
|
226
|
+
const version = driverVersion || getBuildIdByChromePath(await locateChromeSafely()) || ChromeReleaseChannel.STABLE;
|
|
197
227
|
const buildId = await resolveBuildId(Browser.CHROMEDRIVER, platform, version);
|
|
198
228
|
let executablePath = computeExecutablePath({
|
|
199
229
|
browser: Browser.CHROMEDRIVER,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/utils",
|
|
3
|
-
"version": "8.20.
|
|
3
|
+
"version": "8.20.3",
|
|
4
4
|
"description": "A WDIO helper utility to provide several utility functions used across the project.",
|
|
5
5
|
"author": "Christian Bromann <mail@bromann.dev>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-utils",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "963b578edcfd5636994662122ebac35b0bd641f1"
|
|
59
59
|
}
|