@wdio/utils 9.31.6 → 9.32.0-alpha.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/index.js +1 -1
- package/build/node/utils.d.ts +10 -0
- package/build/node/utils.d.ts.map +1 -1
- package/build/node.js +27 -5
- package/package.json +5 -5
package/build/index.js
CHANGED
package/build/node/utils.d.ts
CHANGED
|
@@ -2,6 +2,16 @@ import type { EdgedriverParameters } from 'edgedriver';
|
|
|
2
2
|
import type { Options } from '@wdio/types';
|
|
3
3
|
export declare const DEFAULT_EDGEDRIVER_CDN_URL = "https://msedgedriver.microsoft.com";
|
|
4
4
|
export declare function setDefaultEdgedriverCdnUrl(): void;
|
|
5
|
+
/**
|
|
6
|
+
* Allows to download Chromedriver from a custom host, e.g. an internal mirror
|
|
7
|
+
* or artifact registry, in environments where the default CDN is not reachable.
|
|
8
|
+
* This is the Chrome equivalent to the `EDGEDRIVER_CDNURL` environment variable
|
|
9
|
+
* that the `edgedriver` package supports.
|
|
10
|
+
* A blank value is treated as unset so that an empty variable in a CI config
|
|
11
|
+
* falls back to the default CDN rather than producing an invalid url.
|
|
12
|
+
* @return the configured CDN url without trailing slashes or `undefined` if not set
|
|
13
|
+
*/
|
|
14
|
+
export declare function getChromedriverCdnUrl(): string | undefined;
|
|
5
15
|
/**
|
|
6
16
|
* Helper utility to check file access
|
|
7
17
|
* @param {string} file file to check access for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/node/utils.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,eAAO,MAAM,0BAA0B,uCAAuC,CAAA;AAG9E,wBAAgB,0BAA0B,SAKzC;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,YAWtC,CAAA;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,YAYvD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,sBA6BzD;AAED,wBAAsB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,+BAyBjE;AAGD,eAAO,MAAM,wBAAwB,GAAI,UAAU,MAAM,EAAE,iBAAiB,MAAM,EAAE,YAAY,MAAM,SAOrG,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/node/utils.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,eAAO,MAAM,0BAA0B,uCAAuC,CAAA;AAG9E,wBAAgB,0BAA0B,SAKzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,uBAEpC;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,YAWtC,CAAA;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,YAYvD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,sBA6BzD;AAED,wBAAsB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,+BAyBjE;AAGD,eAAO,MAAM,wBAAwB,GAAI,UAAU,MAAM,EAAE,iBAAiB,MAAM,EAAE,YAAY,MAAM,SAOrG,CAAA;AAoFD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY;;;;;;GA4G3F;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;;GA0DhF;AAED,wBAAgB,gBAAgB,CAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,mBAEzE;AAED,wBAAsB,eAAe,CAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,mBAI9E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY;;;;;;EAIlE"}
|
package/build/node.js
CHANGED
|
@@ -40,6 +40,9 @@ function setDefaultEdgedriverCdnUrl() {
|
|
|
40
40
|
process.env.EDGEDRIVER_CDNURL = DEFAULT_EDGEDRIVER_CDN_URL;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
+
function getChromedriverCdnUrl() {
|
|
44
|
+
return process.env.CHROMEDRIVER_CDNURL?.trim().replace(/\/+$/, "") || void 0;
|
|
45
|
+
}
|
|
43
46
|
var canAccess = (file) => {
|
|
44
47
|
if (!file) {
|
|
45
48
|
return false;
|
|
@@ -111,14 +114,29 @@ var downloadProgressCallback = (artifact, downloadedBytes, totalBytes) => {
|
|
|
111
114
|
log.progress(`Downloading ${artifact} ${percentage}%`);
|
|
112
115
|
lastTimeCalled = Date.now();
|
|
113
116
|
};
|
|
117
|
+
function redactCredentials(message) {
|
|
118
|
+
return message.replace(/([a-zA-Z][\w+.-]{0,30}:\/\/)[^/\s?#]+@/g, "$1").replace(/([a-zA-Z][\w+.-]{0,30}:\/\/[^\s"'?#]*)\?[^\s"']*/g, "$1?[redacted]");
|
|
119
|
+
}
|
|
120
|
+
function describeRejection(err) {
|
|
121
|
+
if (err instanceof Error) {
|
|
122
|
+
return err.message;
|
|
123
|
+
}
|
|
124
|
+
if (typeof err === "string") {
|
|
125
|
+
return err;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
return JSON.stringify(err) ?? String(err);
|
|
129
|
+
} catch {
|
|
130
|
+
return String(err);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
114
133
|
var _install = async (args, retry = false) => {
|
|
115
134
|
await install(args).catch((err) => {
|
|
116
|
-
const
|
|
135
|
+
const details = redactCredentials(`Failed downloading ${args.browser} v${args.buildId} using ${JSON.stringify(args)}: ${describeRejection(err)}`);
|
|
117
136
|
if (retry) {
|
|
118
|
-
|
|
119
|
-
throw new Error(err);
|
|
137
|
+
throw new Error(details);
|
|
120
138
|
}
|
|
121
|
-
log.error(
|
|
139
|
+
log.error(`${details}, retrying ...`);
|
|
122
140
|
return _install(args, true);
|
|
123
141
|
});
|
|
124
142
|
log.progress("");
|
|
@@ -224,6 +242,7 @@ async function setupChromedriver(cacheDir, driverVersion) {
|
|
|
224
242
|
platform,
|
|
225
243
|
browser: Browser.CHROMEDRIVER,
|
|
226
244
|
unpack: true,
|
|
245
|
+
baseUrl: getChromedriverCdnUrl(),
|
|
227
246
|
downloadProgressCallback: (downloadedBytes, totalBytes) => downloadProgressCallback("Chromedriver", downloadedBytes, totalBytes)
|
|
228
247
|
};
|
|
229
248
|
let knownBuild = buildId;
|
|
@@ -231,7 +250,10 @@ async function setupChromedriver(cacheDir, driverVersion) {
|
|
|
231
250
|
await _install({ ...chromedriverInstallOpts, buildId });
|
|
232
251
|
log.info(`Download of Chromedriver v${buildId} was successful`);
|
|
233
252
|
} else {
|
|
234
|
-
|
|
253
|
+
const cdnUrl = getChromedriverCdnUrl();
|
|
254
|
+
log.warn(
|
|
255
|
+
`Chromedriver v${buildId} don't exist, trying to find known good version...` + (cdnUrl ? ` (checked ${redactCredentials(cdnUrl)} from CHROMEDRIVER_CDNURL, a failed request is reported the same way as a missing version)` : "")
|
|
256
|
+
);
|
|
235
257
|
knownBuild = await resolveBuildId(Browser.CHROMEDRIVER, platform, getMajorVersionFromString(version));
|
|
236
258
|
if (knownBuild) {
|
|
237
259
|
await _install({ ...chromedriverInstallOpts, buildId: knownBuild });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/utils",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.32.0-alpha.3+d8b6a29ba",
|
|
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",
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@puppeteer/browsers": "^2.2.0",
|
|
41
|
-
"@wdio/logger": "9.
|
|
42
|
-
"@wdio/types": "9.
|
|
41
|
+
"@wdio/logger": "9.32.0-alpha.3+d8b6a29ba",
|
|
42
|
+
"@wdio/types": "9.32.0-alpha.3+d8b6a29ba",
|
|
43
43
|
"decamelize": "^6.0.0",
|
|
44
44
|
"deepmerge-ts": "^8.0.0",
|
|
45
|
-
"edgedriver": "^6.1
|
|
45
|
+
"edgedriver": "^6.3.1",
|
|
46
46
|
"geckodriver": "^6.1.1",
|
|
47
47
|
"get-port": "^7.0.0",
|
|
48
48
|
"import-meta-resolve": "^4.0.0",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "d8b6a29ba73af54edb002d2a2e1a55b64849a8ef"
|
|
59
59
|
}
|