webdriver 8.14.3 → 8.14.6

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/command.js CHANGED
@@ -95,7 +95,7 @@ export default function (method, endpointUri, commandInfo, doubleEncodeVariables
95
95
  /**
96
96
  * kill driver process if there is one
97
97
  */
98
- if (this._driverProcess) {
98
+ if (this._driverProcess && body.deleteSessionOpts?.shutdownDriver !== false) {
99
99
  log.info(`Kill ${this._driverProcess.spawnfile} driver process with command line: ${this._driverProcess.spawnargs.slice(1).join(' ')}`);
100
100
  const killedSuccessfully = this._driverProcess.kill('SIGKILL');
101
101
  if (!killedSuccessfully) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAyB,MAAM,oBAAoB,CAAA;AAM1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAA6B,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAElG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO/C,MAAM,WAAW,oBAAqB,SAAQ,YAAY,CAAC,YAAY,EAAE,iBAAiB;CAAG;AAC7F,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,mBAAmB,GAAG,sBAAsB,CAAC,CAAA;AAEpI,MAAM,WAAW,iBAAiB;IAC9B,0BAA0B,CAAC,EAAE,mBAAmB,CAAA;IAChD,0BAA0B,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;IAC9D,yBAAyB,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;IAC/D,wBAAwB,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;CAChE;AAED,wBAAsB,cAAc,CAAE,OAAO,EAAE,OAAO,CAAC,SAAS,wCAyI/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAyB,MAAM,oBAAoB,CAAA;AAO1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAA6B,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,EAA2C,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAElG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO/C,MAAM,WAAW,oBAAqB,SAAQ,YAAY,CAAC,YAAY,EAAE,iBAAiB;CAAG;AAC7F,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,mBAAmB,GAAG,sBAAsB,CAAC,CAAA;AAEpI,MAAM,WAAW,iBAAiB;IAC9B,0BAA0B,CAAC,EAAE,mBAAmB,CAAA;IAChD,0BAA0B,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;IAC9D,yBAAyB,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;IAC/D,wBAAwB,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;CAChE;AAED,wBAAsB,cAAc,CAAE,OAAO,EAAE,OAAO,CAAC,SAAS,wCAsK/D"}
@@ -3,6 +3,7 @@ import fsp from 'node:fs/promises';
3
3
  import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import cp from 'node:child_process';
6
+ import got from 'got';
6
7
  import getPort from 'get-port';
7
8
  import waitPort from 'wait-port';
8
9
  import logger from '@wdio/logger';
@@ -48,6 +49,7 @@ export async function startWebDriver(options) {
48
49
  /**
49
50
  * Chrome
50
51
  */
52
+ caps.browserName = caps.browserName.toLowerCase();
51
53
  const chromedriverOptions = caps['wdio:chromedriverOptions'] || {};
52
54
  const cacheDir = chromedriverOptions.cacheDir || options.cacheDir || os.tmpdir();
53
55
  const exist = await fsp.access(cacheDir).then(() => true, () => false);
@@ -55,22 +57,47 @@ export async function startWebDriver(options) {
55
57
  await fsp.mkdir(cacheDir, { recursive: true });
56
58
  }
57
59
  const { executablePath, buildId, platform } = await setupChrome(caps, cacheDir);
58
- const chromedriverBinaryPath = computeExecutablePath({
60
+ let chromedriverBinaryPath = computeExecutablePath({
59
61
  browser: Browser.CHROMEDRIVER,
60
62
  buildId,
61
63
  cacheDir
62
64
  });
65
+ let loggedBuildId = buildId;
63
66
  const hasChromedriverInstalled = await fsp.access(chromedriverBinaryPath).then(() => true, () => false);
64
67
  if (!hasChromedriverInstalled) {
65
68
  log.info(`Downloading Chromedriver v${buildId}`);
66
- await install({
69
+ const chromedriverInstallOpts = {
67
70
  ...chromedriverOptions,
68
71
  cacheDir,
69
72
  platform,
70
73
  buildId,
71
74
  browser: Browser.CHROMEDRIVER,
75
+ unpack: true,
72
76
  downloadProgressCallback: (downloadedBytes, totalBytes) => downloadProgressCallback('Chromedriver', downloadedBytes, totalBytes)
73
- });
77
+ };
78
+ try {
79
+ await install({ ...chromedriverInstallOpts, buildId });
80
+ }
81
+ catch (err) {
82
+ /**
83
+ * in case we detect a Chrome browser installed for which there is no Chromedriver available
84
+ * we are falling back to the latest known good version
85
+ */
86
+ log.warn(`Couldn't download Chromedriver v${buildId}: ${err.message}, trying to find known good version...`);
87
+ const majorVersion = buildId.split('.')[0];
88
+ const knownGoodVersions = await got('https://googlechromelabs.github.io/chrome-for-testing/known-good-versions.json').json();
89
+ const knownGoodVersion = knownGoodVersions.versions.filter(({ version }) => version.startsWith(majorVersion)).pop();
90
+ if (!knownGoodVersion) {
91
+ throw new Error(`Couldn't find known good version for Chromedriver v${majorVersion}`);
92
+ }
93
+ loggedBuildId = knownGoodVersion.version;
94
+ await install({ ...chromedriverInstallOpts, buildId: loggedBuildId });
95
+ chromedriverBinaryPath = computeExecutablePath({
96
+ browser: Browser.CHROMEDRIVER,
97
+ buildId: loggedBuildId,
98
+ cacheDir
99
+ });
100
+ }
74
101
  }
75
102
  else {
76
103
  log.info(`Using Chromedriver v${buildId} from cache directory ${cacheDir}`);
@@ -80,7 +107,7 @@ export async function startWebDriver(options) {
80
107
  chromedriverOptions.allowedIps = chromedriverOptions.allowedIps || [''];
81
108
  const driverParams = parseParams({ port, ...chromedriverOptions });
82
109
  driverProcess = cp.spawn(chromedriverBinaryPath, driverParams);
83
- driver = `ChromeDriver v${buildId} with params ${driverParams.join(' ')}`;
110
+ driver = `Chromedriver v${loggedBuildId} with params ${driverParams.join(' ')}`;
84
111
  }
85
112
  else if (SUPPORTED_BROWSERNAMES.safari.includes(caps.browserName.toLowerCase())) {
86
113
  const safaridriverOptions = caps['wdio:safaridriverOptions'] || {};
@@ -114,7 +141,10 @@ export async function startWebDriver(options) {
114
141
  const edgedriverOptions = caps['wdio:edgedriverOptions'] || {};
115
142
  const cacheDir = edgedriverOptions.cacheDir || options.cacheDir || os.tmpdir();
116
143
  driver = 'EdgeDriver';
117
- driverProcess = await startEdgedriver({ ...edgedriverOptions, cacheDir, port });
144
+ driverProcess = await startEdgedriver({ ...edgedriverOptions, cacheDir, port }).catch((err) => {
145
+ log.warn(`Couldn't start EdgeDriver: ${err.message}, retry ...`);
146
+ return startEdgedriver({ ...edgedriverOptions, cacheDir, port });
147
+ });
118
148
  /**
119
149
  * Microsoft Edge is very particular when it comes to browser names
120
150
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/driver/utils.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAOxD,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,YAYvD;AAED,wBAAgB,kBAAkB,uBAOjC;AAED,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,sBAenD;AAGD,eAAO,MAAM,wBAAwB,aAAc,MAAM,mBAAmB,MAAM,cAAc,MAAM,SAOrG,CAAA;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM;;;;GA2ClF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,WAO7D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/driver/utils.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAOxD,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,YAYvD;AAED,wBAAgB,kBAAkB,uBAOjC;AAED,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,sBAenD;AAGD,eAAO,MAAM,wBAAwB,aAAc,MAAM,mBAAmB,MAAM,cAAc,MAAM,SAOrG,CAAA;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM;;;;GA4ClF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,WAO7D"}
@@ -80,6 +80,7 @@ export async function setupChrome(caps, cacheDir) {
80
80
  const tag = caps.browserVersion || ChromeReleaseChannel.STABLE;
81
81
  const buildId = await resolveBuildId(Browser.CHROME, platform, tag);
82
82
  const installOptions = {
83
+ unpack: true,
83
84
  cacheDir,
84
85
  platform,
85
86
  buildId,
package/build/index.js CHANGED
@@ -23,8 +23,8 @@ export default class WebDriver {
23
23
  process.env.WDIO_LOG_PATH = path.join(params.outputDir, 'wdio.log');
24
24
  }
25
25
  log.info('Initiate new session using the WebDriver protocol');
26
- const requestedCapabilities = { ...params.capabilities };
27
26
  const driverProcess = await startWebDriver(params);
27
+ const requestedCapabilities = { ...params.capabilities };
28
28
  const { sessionId, capabilities } = await startWebDriverSession(params);
29
29
  const environment = sessionEnvironmentDetector({ capabilities, requestedCapabilities });
30
30
  const environmentPrototype = getEnvironmentVars(environment);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webdriver",
3
- "version": "8.14.3",
3
+ "version": "8.14.6",
4
4
  "description": "A Node.js bindings implementation for the W3C WebDriver and Mobile JSONWire Protocol",
5
5
  "author": "Christian Bromann <mail@bromann.dev>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/webdriver",
@@ -39,16 +39,16 @@
39
39
  "@puppeteer/browsers": "^1.4.6",
40
40
  "@types/node": "^20.1.0",
41
41
  "@types/ws": "^8.5.3",
42
- "@wdio/config": "8.14.0",
42
+ "@wdio/config": "8.14.6",
43
43
  "@wdio/logger": "8.11.0",
44
- "@wdio/protocols": "8.11.0",
44
+ "@wdio/protocols": "8.14.6",
45
45
  "@wdio/types": "8.14.0",
46
46
  "@wdio/utils": "8.14.0",
47
47
  "chrome-launcher": "^1.0.0",
48
48
  "decamelize": "^6.0.0",
49
49
  "deepmerge-ts": "^5.1.0",
50
50
  "edgedriver": "^5.3.2",
51
- "geckodriver": "^4.1.3",
51
+ "geckodriver": "^4.2.0",
52
52
  "get-port": "^7.0.0",
53
53
  "got": "^ 12.6.1",
54
54
  "ky": "^0.33.0",
@@ -56,5 +56,5 @@
56
56
  "wait-port": "^1.0.4",
57
57
  "ws": "^8.8.0"
58
58
  },
59
- "gitHead": "5229517c22d25975c0e5dd3207b307f770b87605"
59
+ "gitHead": "84472108356bc234e6765ba9ffd84867aea2df2a"
60
60
  }