@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.
@@ -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;AAoBD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY;;;;;;GA6E3F;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"}
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"}
@@ -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 ? Browser.FIREFOX : Browser.CHROME;
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 = (browserName === Browser.CHROME
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
- (browserName === Browser.CHROME
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 locateChrome().catch(() => undefined)
134
- : await locateFirefox().catch(() => undefined);
135
- const tag = browserName === Browser.CHROME
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
- return { executablePath, browserVersion: buildId };
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 locateChrome()) || ChromeReleaseChannel.STABLE;
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.0",
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": "6aa9e33233a6abc832bb16d2e24aaaa382e206b6"
58
+ "gitHead": "963b578edcfd5636994662122ebac35b0bd641f1"
59
59
  }