@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 CHANGED
@@ -1001,7 +1001,7 @@ var ELEMENT_QUERY_COMMANDS = [
1001
1001
  "nextElement",
1002
1002
  "previousElement",
1003
1003
  "parentElement",
1004
- "unstable_select"
1004
+ "select"
1005
1005
  ];
1006
1006
  var ELEMENT_PROPS = [
1007
1007
  "elementId",
@@ -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;AAgCD,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;;GAgDhF;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"}
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 error = `Failed downloading ${args.browser} v${args.buildId} using ${JSON.stringify(args)}: ${err.message}, retrying ...`;
135
+ const details = redactCredentials(`Failed downloading ${args.browser} v${args.buildId} using ${JSON.stringify(args)}: ${describeRejection(err)}`);
117
136
  if (retry) {
118
- err.message += "\n" + error.replace(", retrying ...", "");
119
- throw new Error(err);
137
+ throw new Error(details);
120
138
  }
121
- log.error(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
- log.warn(`Chromedriver v${buildId} don't exist, trying to find known good version...`);
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.31.6",
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.29.1",
42
- "@wdio/types": "9.31.2",
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.2",
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": "b18898e3c339a2bba3a6c5af46bdf0f4f897cad8"
58
+ "gitHead": "d8b6a29ba73af54edb002d2a2e1a55b64849a8ef"
59
59
  }