@wdio/utils 9.0.0-alpha.9 → 9.0.4
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/envDetector.d.ts +3 -3
- package/build/envDetector.d.ts.map +1 -1
- package/build/index.d.ts +2 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1902 -24
- package/build/initializeServices.d.ts +3 -3
- package/build/initializeServices.d.ts.map +1 -1
- package/build/monad.d.ts.map +1 -1
- package/build/node/manager.d.ts +2 -2
- package/build/node/manager.d.ts.map +1 -1
- package/build/node/startWebDriver.d.ts +2 -3
- package/build/node/startWebDriver.d.ts.map +1 -1
- package/build/node/utils.d.ts.map +1 -1
- package/build/node.js +473 -0
- package/build/pIteration.d.ts.map +1 -1
- package/build/shim.d.ts.map +1 -1
- package/build/startWebDriver.d.ts +2 -3
- package/build/startWebDriver.d.ts.map +1 -1
- package/build/test-framework/errorHandler.d.ts.map +1 -1
- package/build/test-framework/testFnWrapper.d.ts.map +1 -1
- package/build/test-framework/testInterfaceWrapper.d.ts.map +1 -1
- package/build/utils.d.ts +11 -2
- package/build/utils.d.ts.map +1 -1
- package/package.json +10 -11
- package/build/constants.js +0 -114
- package/build/envDetector.js +0 -251
- package/build/initializePlugin.js +0 -38
- package/build/initializeServices.js +0 -159
- package/build/monad.js +0 -196
- package/build/node/index.js +0 -3
- package/build/node/manager.js +0 -106
- package/build/node/startWebDriver.js +0 -140
- package/build/node/utils.js +0 -285
- package/build/pIteration.js +0 -347
- package/build/shim.js +0 -293
- package/build/startWebDriver.js +0 -20
- package/build/test-framework/errorHandler.js +0 -33
- package/build/test-framework/index.js +0 -4
- package/build/test-framework/testFnWrapper.js +0 -97
- package/build/test-framework/testInterfaceWrapper.js +0 -162
- package/build/test-framework/types.js +0 -1
- package/build/utils.js +0 -320
- /package/{LICENSE-MIT → LICENSE} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Services, Options, Capabilities } from '@wdio/types';
|
|
2
2
|
/**
|
|
3
3
|
* initialize service for launcher process
|
|
4
4
|
* @param {Object} config wdio config
|
|
@@ -7,7 +7,7 @@ import type { Capabilities, Services, Options } from '@wdio/types';
|
|
|
7
7
|
* as a list of services that don't need to be
|
|
8
8
|
* required in the worker
|
|
9
9
|
*/
|
|
10
|
-
export declare function initializeLauncherService(config: Omit<Options.Testrunner, 'capabilities' | keyof Services.HookFunctions>, caps: Capabilities.
|
|
10
|
+
export declare function initializeLauncherService(config: Omit<Options.Testrunner, 'capabilities' | keyof Services.HookFunctions>, caps: Capabilities.TestrunnerCapabilities): Promise<{
|
|
11
11
|
ignoredWorkerServices: string[];
|
|
12
12
|
launcherServices: Services.ServiceInstance[];
|
|
13
13
|
}>;
|
|
@@ -19,5 +19,5 @@ export declare function initializeLauncherService(config: Omit<Options.Testrunne
|
|
|
19
19
|
* as they don't export a service for it
|
|
20
20
|
* @return {Object[]} list if worker initiated worker services
|
|
21
21
|
*/
|
|
22
|
-
export declare function initializeWorkerService(config: Options.Testrunner, caps: Capabilities
|
|
22
|
+
export declare function initializeWorkerService(config: Options.Testrunner, caps: WebdriverIO.Capabilities, ignoredWorkerServices?: string[]): Promise<Services.ServiceInstance[]>;
|
|
23
23
|
//# sourceMappingURL=initializeServices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeServices.d.ts","sourceRoot":"","sources":["../src/initializeServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"initializeServices.d.ts","sourceRoot":"","sources":["../src/initializeServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAqFlE;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC3C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,EAC/E,IAAI,EAAE,YAAY,CAAC,sBAAsB,GAC1C,OAAO,CAAC;IACP,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC;CAChD,CAAC,CAmDD;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,IAAI,EAAE,WAAW,CAAC,YAAY,EAC9B,qBAAqB,GAAE,MAAM,EAAO,GACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CA+BrC"}
|
package/build/monad.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monad.d.ts","sourceRoot":"","sources":["../src/monad.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"monad.d.ts","sourceRoot":"","sources":["../src/monad.ts"],"names":[],"mappings":"AAWA,UAAU,gBAAgB;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAA;CAC7C;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAE,gBAAqB;WAkBpG,IAAI,aAAa,MAAM,mBAAmB,QAAQ;IA2IvE;;;;;;OAMG;eACyB,MAAM,QAAQ,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,QAAQ;EA4DzG"}
|
package/build/node/manager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Options, Capabilities } from '@wdio/types';
|
|
2
|
-
export declare function setupDriver(options: Omit<Options.WebDriver, 'capabilities'>, caps: Capabilities.
|
|
3
|
-
export declare function setupBrowser(options: Omit<Options.WebDriver, 'capabilities'>, caps: Capabilities.
|
|
2
|
+
export declare function setupDriver(options: Omit<Options.WebDriver, 'capabilities'>, caps: Capabilities.TestrunnerCapabilities): Promise<unknown[] | undefined>;
|
|
3
|
+
export declare function setupBrowser(options: Omit<Options.WebDriver, 'capabilities'>, caps: Capabilities.TestrunnerCapabilities): Promise<unknown[]> | undefined;
|
|
4
4
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/node/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/node/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AA0GxD,wBAAsB,WAAW,CAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,sBAAsB,kCAe7H;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,sBAAsB,kCAYxH"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import cp from 'node:child_process';
|
|
3
2
|
import { type SafaridriverOptions as SafaridriverParameters } from 'safaridriver';
|
|
4
3
|
import { type GeckodriverParameters } from 'geckodriver';
|
|
5
4
|
import { type EdgedriverParameters } from 'edgedriver';
|
|
6
5
|
import type { InstallOptions } from '@puppeteer/browsers';
|
|
7
|
-
import type {
|
|
6
|
+
import type { Capabilities } from '@wdio/types';
|
|
8
7
|
export type ChromedriverParameters = Partial<InstallOptions> & Omit<EdgedriverParameters, 'port' | 'edgeDriverVersion' | 'customEdgeDriverPath'>;
|
|
9
8
|
declare global {
|
|
10
9
|
namespace WebdriverIO {
|
|
@@ -18,5 +17,5 @@ declare global {
|
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
19
|
}
|
|
21
|
-
export declare function startWebDriver(options:
|
|
20
|
+
export declare function startWebDriver(options: Capabilities.RemoteConfig): Promise<cp.ChildProcess | undefined>;
|
|
22
21
|
//# sourceMappingURL=startWebDriver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startWebDriver.d.ts","sourceRoot":"","sources":["../../src/node/startWebDriver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"startWebDriver.d.ts","sourceRoot":"","sources":["../../src/node/startWebDriver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,MAAM,oBAAoB,CAAA;AAQ1D,OAAO,EAA8B,KAAK,mBAAmB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC7G,OAAO,EAA6B,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAA0C,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM/C,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,mBAAmB,GAAG,sBAAsB,CAAC,CAAA;AAChJ,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW,CAAC;QAClB,UAAU,mBAAoB,SAAQ,sBAAsB;SAAG;QAC/D,UAAU,kBAAmB,SAAQ,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC;SAAG;QAC3E,UAAU,iBAAkB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC;SAAG;QACzE,UAAU,mBAAoB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC;SAAG;KAChF;CACJ;AAKD,wBAAsB,cAAc,CAAE,OAAO,EAAE,YAAY,CAAC,YAAY,wCAkJvE"}
|
|
@@ -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;AAgCD,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.js
ADDED
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
// src/node/startWebDriver.ts
|
|
2
|
+
import fs3 from "node:fs";
|
|
3
|
+
import path3 from "node:path";
|
|
4
|
+
import cp2 from "node:child_process";
|
|
5
|
+
import getPort from "get-port";
|
|
6
|
+
import waitPort from "wait-port";
|
|
7
|
+
import logger2 from "@wdio/logger";
|
|
8
|
+
import split2 from "split2";
|
|
9
|
+
import { deepmerge } from "deepmerge-ts";
|
|
10
|
+
import { start as startSafaridriver } from "safaridriver";
|
|
11
|
+
import { start as startGeckodriver } from "geckodriver";
|
|
12
|
+
import { start as startEdgedriver, findEdgePath } from "edgedriver";
|
|
13
|
+
|
|
14
|
+
// src/node/utils.ts
|
|
15
|
+
import os from "node:os";
|
|
16
|
+
import fs from "node:fs";
|
|
17
|
+
import fsp from "node:fs/promises";
|
|
18
|
+
import path from "node:path";
|
|
19
|
+
import cp from "node:child_process";
|
|
20
|
+
import decamelize from "decamelize";
|
|
21
|
+
import logger from "@wdio/logger";
|
|
22
|
+
import {
|
|
23
|
+
install,
|
|
24
|
+
canDownload,
|
|
25
|
+
resolveBuildId,
|
|
26
|
+
detectBrowserPlatform,
|
|
27
|
+
Browser,
|
|
28
|
+
ChromeReleaseChannel,
|
|
29
|
+
computeExecutablePath
|
|
30
|
+
} from "@puppeteer/browsers";
|
|
31
|
+
import { download as downloadGeckodriver } from "geckodriver";
|
|
32
|
+
import { download as downloadEdgedriver } from "edgedriver";
|
|
33
|
+
import { locateChrome, locateFirefox, locateApp } from "locate-app";
|
|
34
|
+
var log = logger("webdriver");
|
|
35
|
+
var EXCLUDED_PARAMS = ["version", "help"];
|
|
36
|
+
var canAccess = (file) => {
|
|
37
|
+
if (!file) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
fs.accessSync(file);
|
|
42
|
+
return true;
|
|
43
|
+
} catch (err) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
function parseParams(params) {
|
|
48
|
+
return Object.entries(params).filter(([key]) => !EXCLUDED_PARAMS.includes(key)).map(([key, val]) => {
|
|
49
|
+
if (typeof val === "boolean" && !val) {
|
|
50
|
+
return "";
|
|
51
|
+
}
|
|
52
|
+
const vals = Array.isArray(val) ? val : [val];
|
|
53
|
+
return vals.map((v) => `--${decamelize(key, { separator: "-" })}${typeof v === "boolean" ? "" : `=${v}`}`);
|
|
54
|
+
}).flat().filter(Boolean);
|
|
55
|
+
}
|
|
56
|
+
function getBuildIdByChromePath(chromePath) {
|
|
57
|
+
if (!chromePath) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (os.platform() === "win32") {
|
|
61
|
+
const versionPath = path.dirname(chromePath);
|
|
62
|
+
const contents = fs.readdirSync(versionPath);
|
|
63
|
+
const versions = contents.filter((a) => /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/g.test(a));
|
|
64
|
+
const oldest = versions.sort((a, b) => a > b ? -1 : 1)[0];
|
|
65
|
+
return oldest;
|
|
66
|
+
}
|
|
67
|
+
const versionString = cp.execSync(`"${chromePath}" --version --no-sandbox`).toString();
|
|
68
|
+
const versionSanitized = versionString.trim().split(" ").find((s) => s.split(".").length === 4);
|
|
69
|
+
if (!versionSanitized) {
|
|
70
|
+
throw new Error(`Couldn't find valid Chrome version from "${versionString}", please raise an issue in the WebdriverIO project (https://github.com/webdriverio/webdriverio/issues/new/choose)`);
|
|
71
|
+
}
|
|
72
|
+
return versionSanitized;
|
|
73
|
+
}
|
|
74
|
+
async function getBuildIdByFirefoxPath(firefoxPath) {
|
|
75
|
+
if (!firefoxPath) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (os.platform() === "win32") {
|
|
79
|
+
const appPath = path.dirname(firefoxPath);
|
|
80
|
+
const contents = (await fsp.readFile(path.join(appPath, "application.ini"))).toString("utf-8");
|
|
81
|
+
return contents.split("\n").filter((line) => line.startsWith("Version=")).map((line) => line.replace("Version=", "").replace(/\r/, "")).pop();
|
|
82
|
+
}
|
|
83
|
+
const versionString = cp.execSync(`"${firefoxPath}" --version`).toString();
|
|
84
|
+
return versionString.trim().split(" ").pop()?.trim();
|
|
85
|
+
}
|
|
86
|
+
var lastTimeCalled = Date.now();
|
|
87
|
+
var downloadProgressCallback = (artifact, downloadedBytes, totalBytes) => {
|
|
88
|
+
if (Date.now() - lastTimeCalled < 1e3) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const percentage = (downloadedBytes / totalBytes * 100).toFixed(2);
|
|
92
|
+
log.progress(`Downloading ${artifact} ${percentage}%`);
|
|
93
|
+
lastTimeCalled = Date.now();
|
|
94
|
+
};
|
|
95
|
+
var _install = async (args, retry = false) => {
|
|
96
|
+
await install(args).catch((err) => {
|
|
97
|
+
const error = `Failed downloading ${args.browser} v${args.buildId} using ${JSON.stringify(args)}: ${err.message}, retrying ...`;
|
|
98
|
+
if (retry) {
|
|
99
|
+
err.message += "\n" + error.replace(", retrying ...", "");
|
|
100
|
+
throw new Error(err);
|
|
101
|
+
}
|
|
102
|
+
log.error(error);
|
|
103
|
+
return _install(args, true);
|
|
104
|
+
});
|
|
105
|
+
log.progress("");
|
|
106
|
+
};
|
|
107
|
+
function locateChromeSafely() {
|
|
108
|
+
return locateChrome().catch(() => void 0);
|
|
109
|
+
}
|
|
110
|
+
async function setupPuppeteerBrowser(cacheDir, caps) {
|
|
111
|
+
caps.browserName = caps.browserName?.toLowerCase();
|
|
112
|
+
const browserName = caps.browserName === Browser.FIREFOX ? Browser.FIREFOX : caps.browserName === Browser.CHROMIUM ? Browser.CHROMIUM : Browser.CHROME;
|
|
113
|
+
const exist = await fsp.access(cacheDir).then(() => true, () => false);
|
|
114
|
+
const isChromeOrChromium = browserName === Browser.CHROME || caps.browserName === Browser.CHROMIUM;
|
|
115
|
+
if (!exist) {
|
|
116
|
+
await fsp.mkdir(cacheDir, { recursive: true });
|
|
117
|
+
}
|
|
118
|
+
if (browserName === Browser.CHROMIUM) {
|
|
119
|
+
caps.browserName = Browser.CHROME;
|
|
120
|
+
}
|
|
121
|
+
const browserOptions = (isChromeOrChromium ? caps["goog:chromeOptions"] : caps["moz:firefoxOptions"]) || {};
|
|
122
|
+
if (typeof browserOptions.binary === "string") {
|
|
123
|
+
return {
|
|
124
|
+
executablePath: browserOptions.binary,
|
|
125
|
+
browserVersion: caps.browserVersion || (isChromeOrChromium ? getBuildIdByChromePath(browserOptions.binary) : await getBuildIdByFirefoxPath(browserOptions.binary))
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const platform = detectBrowserPlatform();
|
|
129
|
+
if (!platform) {
|
|
130
|
+
throw new Error("The current platform is not supported.");
|
|
131
|
+
}
|
|
132
|
+
if (!caps.browserVersion) {
|
|
133
|
+
const executablePath2 = browserName === Browser.CHROME ? await locateChromeSafely() : browserName === Browser.CHROMIUM ? await locateApp({
|
|
134
|
+
appName: Browser.CHROMIUM,
|
|
135
|
+
macOsName: Browser.CHROMIUM,
|
|
136
|
+
linuxWhich: "chromium-browser"
|
|
137
|
+
}).catch(() => void 0) : await locateFirefox().catch(() => void 0);
|
|
138
|
+
const browserVersion2 = isChromeOrChromium ? getBuildIdByChromePath(executablePath2) : await getBuildIdByFirefoxPath(executablePath2);
|
|
139
|
+
if (browserVersion2) {
|
|
140
|
+
return {
|
|
141
|
+
executablePath: executablePath2,
|
|
142
|
+
browserVersion: browserVersion2
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const tag = browserName === Browser.CHROME ? caps.browserVersion || ChromeReleaseChannel.STABLE : caps.browserVersion || "latest";
|
|
147
|
+
const buildId = await resolveBuildId(browserName, platform, tag);
|
|
148
|
+
const installOptions = {
|
|
149
|
+
unpack: true,
|
|
150
|
+
cacheDir,
|
|
151
|
+
platform,
|
|
152
|
+
buildId,
|
|
153
|
+
browser: browserName,
|
|
154
|
+
downloadProgressCallback: (downloadedBytes, totalBytes) => downloadProgressCallback(`${browserName} (${buildId})`, downloadedBytes, totalBytes)
|
|
155
|
+
};
|
|
156
|
+
const isCombinationAvailable = await canDownload(installOptions);
|
|
157
|
+
if (!isCombinationAvailable) {
|
|
158
|
+
throw new Error(`Couldn't find a matching ${browserName} browser for tag "${buildId}" on platform "${platform}"`);
|
|
159
|
+
}
|
|
160
|
+
log.info(`Setting up ${browserName} v${buildId}`);
|
|
161
|
+
await _install(installOptions);
|
|
162
|
+
const executablePath = computeExecutablePath(installOptions);
|
|
163
|
+
let browserVersion = buildId;
|
|
164
|
+
if (browserName === Browser.CHROMIUM) {
|
|
165
|
+
browserVersion = await resolveBuildId(Browser.CHROME, platform, tag);
|
|
166
|
+
}
|
|
167
|
+
return { executablePath, browserVersion };
|
|
168
|
+
}
|
|
169
|
+
function getDriverOptions(caps) {
|
|
170
|
+
return caps["wdio:chromedriverOptions"] || caps["wdio:geckodriverOptions"] || caps["wdio:edgedriverOptions"] || // Safaridriver does not have any options as it already
|
|
171
|
+
// is installed on macOS
|
|
172
|
+
{};
|
|
173
|
+
}
|
|
174
|
+
function getCacheDir(options, caps) {
|
|
175
|
+
const driverOptions = getDriverOptions(caps);
|
|
176
|
+
return driverOptions.cacheDir || options.cacheDir || os.tmpdir();
|
|
177
|
+
}
|
|
178
|
+
function getMajorVersionFromString(fullVersion) {
|
|
179
|
+
let prefix;
|
|
180
|
+
if (fullVersion) {
|
|
181
|
+
prefix = fullVersion.match(/^[+-]?([0-9]+)/);
|
|
182
|
+
}
|
|
183
|
+
return prefix && prefix.length > 0 ? prefix[0] : "";
|
|
184
|
+
}
|
|
185
|
+
async function setupChromedriver(cacheDir, driverVersion) {
|
|
186
|
+
const platform = detectBrowserPlatform();
|
|
187
|
+
if (!platform) {
|
|
188
|
+
throw new Error("The current platform is not supported.");
|
|
189
|
+
}
|
|
190
|
+
const version = driverVersion || getBuildIdByChromePath(await locateChromeSafely()) || ChromeReleaseChannel.STABLE;
|
|
191
|
+
const buildId = await resolveBuildId(Browser.CHROMEDRIVER, platform, version);
|
|
192
|
+
let executablePath = computeExecutablePath({
|
|
193
|
+
browser: Browser.CHROMEDRIVER,
|
|
194
|
+
buildId,
|
|
195
|
+
platform,
|
|
196
|
+
cacheDir
|
|
197
|
+
});
|
|
198
|
+
const hasChromedriverInstalled = await fsp.access(executablePath).then(() => true, () => false);
|
|
199
|
+
if (!hasChromedriverInstalled) {
|
|
200
|
+
log.info(`Downloading Chromedriver v${buildId}`);
|
|
201
|
+
const chromedriverInstallOpts = {
|
|
202
|
+
cacheDir,
|
|
203
|
+
buildId,
|
|
204
|
+
platform,
|
|
205
|
+
browser: Browser.CHROMEDRIVER,
|
|
206
|
+
unpack: true,
|
|
207
|
+
downloadProgressCallback: (downloadedBytes, totalBytes) => downloadProgressCallback("Chromedriver", downloadedBytes, totalBytes)
|
|
208
|
+
};
|
|
209
|
+
let knownBuild = buildId;
|
|
210
|
+
if (await canDownload(chromedriverInstallOpts)) {
|
|
211
|
+
await _install({ ...chromedriverInstallOpts, buildId });
|
|
212
|
+
log.info(`Download of Chromedriver v${buildId} was successful`);
|
|
213
|
+
} else {
|
|
214
|
+
log.warn(`Chromedriver v${buildId} don't exist, trying to find known good version...`);
|
|
215
|
+
knownBuild = await resolveBuildId(Browser.CHROMEDRIVER, platform, getMajorVersionFromString(version));
|
|
216
|
+
if (knownBuild) {
|
|
217
|
+
await _install({ ...chromedriverInstallOpts, buildId: knownBuild });
|
|
218
|
+
log.info(`Download of Chromedriver v${knownBuild} was successful`);
|
|
219
|
+
} else {
|
|
220
|
+
throw new Error(`Couldn't download any known good version from Chromedriver major v${getMajorVersionFromString(version)}, requested full version - v${version}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
executablePath = computeExecutablePath({
|
|
224
|
+
browser: Browser.CHROMEDRIVER,
|
|
225
|
+
buildId: knownBuild,
|
|
226
|
+
platform,
|
|
227
|
+
cacheDir
|
|
228
|
+
});
|
|
229
|
+
} else {
|
|
230
|
+
log.info(`Using Chromedriver v${buildId} from cache directory ${cacheDir}`);
|
|
231
|
+
}
|
|
232
|
+
return { executablePath };
|
|
233
|
+
}
|
|
234
|
+
function setupGeckodriver(cacheDir, driverVersion) {
|
|
235
|
+
return downloadGeckodriver(driverVersion, cacheDir);
|
|
236
|
+
}
|
|
237
|
+
function setupEdgedriver(cacheDir, driverVersion) {
|
|
238
|
+
return downloadEdgedriver(driverVersion, cacheDir);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// src/utils.ts
|
|
242
|
+
import fs2 from "node:fs/promises";
|
|
243
|
+
import url from "node:url";
|
|
244
|
+
import path2 from "node:path";
|
|
245
|
+
|
|
246
|
+
// src/constants.ts
|
|
247
|
+
var SUPPORTED_BROWSERNAMES = {
|
|
248
|
+
chrome: ["chrome", "googlechrome", "chromium", "chromium-browser"],
|
|
249
|
+
firefox: ["firefox", "ff", "mozilla", "mozilla firefox"],
|
|
250
|
+
edge: ["edge", "microsoftedge", "msedge"],
|
|
251
|
+
safari: ["safari", "safari technology preview"]
|
|
252
|
+
};
|
|
253
|
+
var DEFAULT_HOSTNAME = "localhost";
|
|
254
|
+
var DEFAULT_PROTOCOL = "http";
|
|
255
|
+
var DEFAULT_PATH = "/";
|
|
256
|
+
|
|
257
|
+
// src/utils.ts
|
|
258
|
+
function isAppiumCapability(caps) {
|
|
259
|
+
return Boolean(
|
|
260
|
+
caps && // @ts-expect-error outdated jsonwp cap
|
|
261
|
+
(caps.automationName || caps["appium:automationName"] || caps.deviceName || caps.appiumVersion)
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
function definesRemoteDriver(options) {
|
|
265
|
+
return Boolean(
|
|
266
|
+
options.protocol && options.protocol !== DEFAULT_PROTOCOL || options.hostname && options.hostname !== DEFAULT_HOSTNAME || Boolean(options.port) || options.path && options.path !== DEFAULT_PATH || Boolean(options.user && options.key)
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
function isChrome(browserName) {
|
|
270
|
+
return Boolean(browserName && SUPPORTED_BROWSERNAMES.chrome.includes(browserName.toLowerCase()));
|
|
271
|
+
}
|
|
272
|
+
function isSafari(browserName) {
|
|
273
|
+
return Boolean(browserName && SUPPORTED_BROWSERNAMES.safari.includes(browserName.toLowerCase()));
|
|
274
|
+
}
|
|
275
|
+
function isFirefox(browserName) {
|
|
276
|
+
return Boolean(browserName && SUPPORTED_BROWSERNAMES.firefox.includes(browserName.toLowerCase()));
|
|
277
|
+
}
|
|
278
|
+
function isEdge(browserName) {
|
|
279
|
+
return Boolean(browserName && SUPPORTED_BROWSERNAMES.edge.includes(browserName.toLowerCase()));
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// src/node/startWebDriver.ts
|
|
283
|
+
var log2 = logger2("@wdio/utils");
|
|
284
|
+
var DRIVER_WAIT_TIMEOUT = 10 * 1e3;
|
|
285
|
+
async function startWebDriver(options) {
|
|
286
|
+
if (process.env.WDIO_SKIP_DRIVER_SETUP) {
|
|
287
|
+
options.hostname = "localhost";
|
|
288
|
+
options.port = 4321;
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
let driverProcess;
|
|
292
|
+
let driver = "";
|
|
293
|
+
const start = Date.now();
|
|
294
|
+
const caps = options.capabilities.alwaysMatch || options.capabilities;
|
|
295
|
+
if (isAppiumCapability(caps)) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
if (!caps.browserName) {
|
|
299
|
+
throw new Error(
|
|
300
|
+
`No "browserName" defined in capabilities nor hostname or port found!
|
|
301
|
+
If you like to run a local browser session make sure to pick from one of the following browser names: ${Object.values(SUPPORTED_BROWSERNAMES).flat(Infinity)}`
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
const port = await getPort();
|
|
305
|
+
const cacheDir = getCacheDir(options, caps);
|
|
306
|
+
if (isChrome(caps.browserName)) {
|
|
307
|
+
const chromedriverOptions = caps["wdio:chromedriverOptions"] || {};
|
|
308
|
+
const chromedriverBinary = chromedriverOptions.binary || process.env.CHROMEDRIVER_PATH;
|
|
309
|
+
const { executablePath: chromeExecuteablePath, browserVersion } = await setupPuppeteerBrowser(cacheDir, caps);
|
|
310
|
+
const { executablePath: chromedriverExcecuteablePath } = chromedriverBinary ? { executablePath: chromedriverBinary } : await setupChromedriver(cacheDir, browserVersion);
|
|
311
|
+
caps["goog:chromeOptions"] = deepmerge(
|
|
312
|
+
{ binary: chromeExecuteablePath },
|
|
313
|
+
caps["goog:chromeOptions"] || {}
|
|
314
|
+
);
|
|
315
|
+
chromedriverOptions.allowedOrigins = chromedriverOptions.allowedOrigins || ["*"];
|
|
316
|
+
chromedriverOptions.allowedIps = chromedriverOptions.allowedIps || ["0.0.0.0"];
|
|
317
|
+
const driverParams = parseParams({ port, ...chromedriverOptions });
|
|
318
|
+
driverProcess = cp2.spawn(chromedriverExcecuteablePath, driverParams);
|
|
319
|
+
driver = `Chromedriver v${browserVersion} with params ${driverParams.join(" ")}`;
|
|
320
|
+
} else if (isSafari(caps.browserName)) {
|
|
321
|
+
const safaridriverOptions = caps["wdio:safaridriverOptions"] || {};
|
|
322
|
+
driver = "SafariDriver";
|
|
323
|
+
driverProcess = startSafaridriver({
|
|
324
|
+
useTechnologyPreview: Boolean(caps.browserName.match(/preview/i)),
|
|
325
|
+
...safaridriverOptions,
|
|
326
|
+
port
|
|
327
|
+
});
|
|
328
|
+
} else if (isFirefox(caps.browserName)) {
|
|
329
|
+
const { executablePath } = await setupPuppeteerBrowser(cacheDir, caps);
|
|
330
|
+
caps["moz:firefoxOptions"] = deepmerge(
|
|
331
|
+
{ binary: executablePath },
|
|
332
|
+
caps["moz:firefoxOptions"] || {}
|
|
333
|
+
);
|
|
334
|
+
delete caps.browserVersion;
|
|
335
|
+
const { binary, ...geckodriverOptions } = caps["wdio:geckodriverOptions"] || {};
|
|
336
|
+
if (binary) {
|
|
337
|
+
geckodriverOptions.customGeckoDriverPath = binary;
|
|
338
|
+
}
|
|
339
|
+
driver = "GeckoDriver";
|
|
340
|
+
driverProcess = await startGeckodriver({ ...geckodriverOptions, cacheDir, port, allowHosts: ["localhost"] });
|
|
341
|
+
} else if (isEdge(caps.browserName)) {
|
|
342
|
+
const { binary, ...edgedriverOptions } = caps["wdio:edgedriverOptions"] || {};
|
|
343
|
+
if (binary) {
|
|
344
|
+
edgedriverOptions.customEdgeDriverPath = binary;
|
|
345
|
+
}
|
|
346
|
+
driver = "EdgeDriver";
|
|
347
|
+
driverProcess = await startEdgedriver({ ...edgedriverOptions, cacheDir, port, allowedIps: ["0.0.0.0"] }).catch((err) => {
|
|
348
|
+
log2.warn(`Couldn't start EdgeDriver: ${err.message}, retry ...`);
|
|
349
|
+
return startEdgedriver({ ...edgedriverOptions, cacheDir, port });
|
|
350
|
+
});
|
|
351
|
+
caps.browserName = "MicrosoftEdge";
|
|
352
|
+
if (!caps["ms:edgeOptions"]?.binary) {
|
|
353
|
+
caps["ms:edgeOptions"] = caps["ms:edgeOptions"] || {};
|
|
354
|
+
caps["ms:edgeOptions"].binary = findEdgePath();
|
|
355
|
+
log2.info(`Found Edge binary at ${caps["ms:edgeOptions"].binary}`);
|
|
356
|
+
}
|
|
357
|
+
} else {
|
|
358
|
+
throw new Error(
|
|
359
|
+
`Unknown browser name "${caps.browserName}". Make sure to pick from one of the following ` + Object.values(SUPPORTED_BROWSERNAMES).flat(Infinity)
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
const logIdentifier = driver.split(" ").shift()?.toLowerCase() || "driver";
|
|
363
|
+
if (options.outputDir) {
|
|
364
|
+
const logFileName = process.env.WDIO_WORKER_ID ? `wdio-${process.env.WDIO_WORKER_ID}-${logIdentifier}.log` : `wdio-${logIdentifier}-${port}.log`;
|
|
365
|
+
const logFile = path3.resolve(options.outputDir, logFileName);
|
|
366
|
+
const logStream = fs3.createWriteStream(logFile, { flags: "w" });
|
|
367
|
+
driverProcess.stdout?.pipe(logStream);
|
|
368
|
+
driverProcess.stderr?.pipe(logStream);
|
|
369
|
+
} else {
|
|
370
|
+
const driverLog = logger2(logIdentifier);
|
|
371
|
+
driverProcess.stdout?.pipe(split2()).on("data", driverLog.info.bind(driverLog));
|
|
372
|
+
driverProcess.stderr?.pipe(split2()).on("data", driverLog.warn.bind(driverLog));
|
|
373
|
+
}
|
|
374
|
+
await waitPort({ port, output: "silent", timeout: DRIVER_WAIT_TIMEOUT }).catch((e) => {
|
|
375
|
+
throw new Error(`Timed out to connect to ${driver}: ${e.message}`);
|
|
376
|
+
});
|
|
377
|
+
options.hostname = "localhost";
|
|
378
|
+
options.port = port;
|
|
379
|
+
log2.info(`Started ${driver} in ${Date.now() - start}ms on port ${port}`);
|
|
380
|
+
return driverProcess;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// src/node/manager.ts
|
|
384
|
+
import logger3 from "@wdio/logger";
|
|
385
|
+
var log3 = logger3("@wdio/utils");
|
|
386
|
+
var UNDEFINED_BROWSER_VERSION = null;
|
|
387
|
+
function mapCapabilities(options, caps, task, taskItemLabel) {
|
|
388
|
+
const capabilitiesToRequireSetup = (Array.isArray(caps) ? caps.map((cap) => {
|
|
389
|
+
const w3cCaps = cap;
|
|
390
|
+
const multiremoteCaps = cap;
|
|
391
|
+
const multiremoteInstanceNames = Object.keys(multiremoteCaps);
|
|
392
|
+
if (typeof multiremoteCaps[multiremoteInstanceNames[0]] === "object" && "capabilities" in multiremoteCaps[multiremoteInstanceNames[0]]) {
|
|
393
|
+
return Object.values(multiremoteCaps).map((c) => "alwaysMatch" in c.capabilities ? c.capabilities.alwaysMatch : c.capabilities);
|
|
394
|
+
}
|
|
395
|
+
if (w3cCaps.alwaysMatch) {
|
|
396
|
+
return w3cCaps.alwaysMatch;
|
|
397
|
+
}
|
|
398
|
+
return cap;
|
|
399
|
+
}).flat() : Object.values(caps).map((mrOpts) => {
|
|
400
|
+
const w3cCaps = mrOpts.capabilities;
|
|
401
|
+
if (w3cCaps.alwaysMatch) {
|
|
402
|
+
return w3cCaps.alwaysMatch;
|
|
403
|
+
}
|
|
404
|
+
return mrOpts.capabilities;
|
|
405
|
+
})).flat().filter((cap) => (
|
|
406
|
+
/**
|
|
407
|
+
* only set up driver if
|
|
408
|
+
*/
|
|
409
|
+
// - capabilities are defined and not empty
|
|
410
|
+
cap && // - browserName is defined so we know it is a browser session
|
|
411
|
+
cap.browserName && // - we are not about to run a cloud session
|
|
412
|
+
!definesRemoteDriver(options) && // - we are not running Safari (driver already installed on macOS)
|
|
413
|
+
!isSafari(cap.browserName) && // - driver options don't define a binary path
|
|
414
|
+
!getDriverOptions(cap).binary && // - environment does not define a binary path
|
|
415
|
+
!(process.env.CHROMEDRIVER_PATH && isChrome(cap.browserName))
|
|
416
|
+
));
|
|
417
|
+
if (capabilitiesToRequireSetup.length === 0) {
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
const queueByBrowserName = capabilitiesToRequireSetup.reduce((queue, cap) => {
|
|
421
|
+
if (!cap.browserName) {
|
|
422
|
+
return queue;
|
|
423
|
+
}
|
|
424
|
+
if (!queue.has(cap.browserName)) {
|
|
425
|
+
queue.set(cap.browserName, /* @__PURE__ */ new Map());
|
|
426
|
+
}
|
|
427
|
+
const browserVersion = cap.browserVersion || UNDEFINED_BROWSER_VERSION;
|
|
428
|
+
queue.get(cap.browserName).set(browserVersion, cap);
|
|
429
|
+
return queue;
|
|
430
|
+
}, /* @__PURE__ */ new Map());
|
|
431
|
+
const driverToSetupString = Array.from(queueByBrowserName.entries()).map(([browserName, versions]) => `${browserName}@${Array.from(versions.keys()).map((bv) => bv || "stable").join(", ")}`).join(" - ");
|
|
432
|
+
log3.info(`Setting up ${taskItemLabel} for: ${driverToSetupString}`);
|
|
433
|
+
return Promise.all(
|
|
434
|
+
Array.from(queueByBrowserName.entries()).map(([browserName, queueByBrowserVersion]) => {
|
|
435
|
+
return Array.from(queueByBrowserVersion).map(([browserVersion, cap]) => task({
|
|
436
|
+
...cap,
|
|
437
|
+
browserName,
|
|
438
|
+
...browserVersion !== UNDEFINED_BROWSER_VERSION ? { browserVersion } : {}
|
|
439
|
+
}));
|
|
440
|
+
}).flat()
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
async function setupDriver(options, caps) {
|
|
444
|
+
return mapCapabilities(options, caps, async (cap) => {
|
|
445
|
+
const cacheDir = getCacheDir(options, cap);
|
|
446
|
+
if (isEdge(cap.browserName)) {
|
|
447
|
+
return setupEdgedriver(cacheDir, cap.browserVersion);
|
|
448
|
+
} else if (isFirefox(cap.browserName)) {
|
|
449
|
+
const version = cap.browserVersion === "latest" ? void 0 : cap.browserVersion;
|
|
450
|
+
return setupGeckodriver(cacheDir, version);
|
|
451
|
+
} else if (isChrome(cap.browserName)) {
|
|
452
|
+
return setupChromedriver(cacheDir, cap.browserVersion);
|
|
453
|
+
}
|
|
454
|
+
return Promise.resolve();
|
|
455
|
+
}, "browser driver" /* DRIVER */);
|
|
456
|
+
}
|
|
457
|
+
function setupBrowser(options, caps) {
|
|
458
|
+
return mapCapabilities(options, caps, async (cap) => {
|
|
459
|
+
const cacheDir = getCacheDir(options, cap);
|
|
460
|
+
if (isEdge(cap.browserName)) {
|
|
461
|
+
return Promise.resolve();
|
|
462
|
+
} else if (isChrome(cap.browserName) || isFirefox(cap.browserName)) {
|
|
463
|
+
return setupPuppeteerBrowser(cacheDir, cap);
|
|
464
|
+
}
|
|
465
|
+
return Promise.resolve();
|
|
466
|
+
}, "browser binaries" /* BROWSER */);
|
|
467
|
+
}
|
|
468
|
+
export {
|
|
469
|
+
canAccess,
|
|
470
|
+
setupBrowser,
|
|
471
|
+
setupDriver,
|
|
472
|
+
startWebDriver
|
|
473
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pIteration.d.ts","sourceRoot":"","sources":["../src/pIteration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"pIteration.d.ts","sourceRoot":"","sources":["../src/pIteration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,kBAW3E,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,kBAMjF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,GAAG,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,mBAUvE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,mBAQ7E,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,2BAqBlE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,2BAM9E,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,qBAqBvE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,gCAMnF,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,qBAyBlE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,qBAO9E,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,qBAyB9D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,qBAO/E,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,qBAwBpE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,YAAY,CAAC,0BAQhF,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,iBAAiB,CAAC,iBAmB/E,CAAA"}
|
package/build/shim.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shim.d.ts","sourceRoot":"","sources":["../src/shim.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"shim.d.ts","sourceRoot":"","sources":["../src/shim.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAuB7C,wBAAsB,oBAAoB,CAAC,CAAC,EAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,QAAQ,GAAG,QAAQ,EAAO,EAAE,IAAI,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CA4DvJ;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CA4N9F;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,GAAE,GAAG,EAAO,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA2CxJ"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare function startWebDriver(options: Options.WebDriver): Promise<import("child_process").ChildProcess | undefined>;
|
|
1
|
+
import type { Capabilities } from '@wdio/types';
|
|
2
|
+
export declare function startWebDriver(options: Capabilities.RemoteConfig): Promise<import("child_process").ChildProcess | undefined>;
|
|
4
3
|
//# sourceMappingURL=startWebDriver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startWebDriver.d.ts","sourceRoot":"","sources":["../src/startWebDriver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"startWebDriver.d.ts","sourceRoot":"","sources":["../src/startWebDriver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM/C,wBAAsB,cAAc,CAAE,OAAO,EAAE,YAAY,CAAC,YAAY,6DAkBvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/test-framework/errorHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,aAAc,MAAM,
|
|
1
|
+
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/test-framework/errorHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,aAAc,MAAM,eAAe,GAAG,EAAE,mBAAY,MAAM,SA0BlF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testFnWrapper.d.ts","sourceRoot":"","sources":["../../src/test-framework/testFnWrapper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,EACjB,MAAM,YAAY,CAAA;AAEnB,OAAO,CAAC,MAAM,CAAC;IAGX,IAAI,kCAAkC,EAAE,GAAG,GAAG,SAAS,CAAA;IAEvD,IAAI,kBAAkB,EAAE,GAAG,GAAG,SAAS,CAAA;CAC1C;AAUD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,SAChB,OAAO,oNAahB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,SACzB,OAAO,0CAC2B,cAAc,QAChD,MAAM,0BACY,YAAY,8BACR,
|
|
1
|
+
{"version":3,"file":"testFnWrapper.d.ts","sourceRoot":"","sources":["../../src/test-framework/testFnWrapper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,EACjB,MAAM,YAAY,CAAA;AAEnB,OAAO,CAAC,MAAM,CAAC;IAGX,IAAI,kCAAkC,EAAE,GAAG,GAAG,SAAS,CAAA;IAEvD,IAAI,kBAAkB,EAAE,GAAG,GAAG,SAAS,CAAA;CAC1C;AAUD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,SAChB,OAAO,oNAahB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,SACzB,OAAO,0CAC2B,cAAc,QAChD,MAAM,0BACY,YAAY,8BACR,eAAe,CAAC,OAAO,CAAC,4BAC1B,cAAc,CAAC,OAAO,CAAC,OAC5C,MAAM,kCAEA,MAAM,YACP,MAAM,iBAoDnB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,MAMhD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testInterfaceWrapper.d.ts","sourceRoot":"","sources":["../../src/test-framework/testInterfaceWrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACR,UAAU,EAIV,aAAa,EAChB,MAAM,YAAY,CAAA;AAInB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,SACV,OAAO,UACL,QAAQ,UACR,QAAQ,YACN,QAAQ,GAAG,QAAQ,EAAE,gBACjB,
|
|
1
|
+
{"version":3,"file":"testInterfaceWrapper.d.ts","sourceRoot":"","sources":["../../src/test-framework/testInterfaceWrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACR,UAAU,EAIV,aAAa,EAChB,MAAM,YAAY,CAAA;AAInB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,SACV,OAAO,UACL,QAAQ,UACR,QAAQ,YACN,QAAQ,GAAG,QAAQ,EAAE,gBACjB,UAAU,CAAC,OAAO,CAAC,WACxB,QAAQ,GAAG,QAAQ,EAAE,eACjB,UAAU,CAAC,OAAO,CAAC,OAC3B,MAAM,cACC,MAAM,WACT,MAAM,QAuClB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,SACV,OAAO,aACF,MAAM,UACT,QAAQ,UACR,QAAQ,YACN,QAAQ,GAAG,QAAQ,EAAE,gBACjB,UAAU,CAAC,OAAO,CAAC,WACxB,QAAQ,GAAG,QAAQ,EAAE,eACjB,UAAU,CAAC,OAAO,CAAC,OAC3B,MAAM,cACC,MAAM,WACT,MAAM,QAqClB,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,SACnB,OAAO,UACL,QAAQ,UACR,OAAO,YACL,QAAQ,GAAG,QAAQ,EAAE,gBACjB,UAAU,CAAC,OAAO,CAAC,WACxB,QAAQ,GAAG,QAAQ,EAAE,eACjB,UAAU,CAAC,OAAO,CAAC,OAC3B,MAAM,wBAEwB,aAAa,QAkEnD,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,SACvB,OAAO,UACL,OAAO,YACL,QAAQ,GAAG,QAAQ,EAAE,gBACjB,UAAU,CAAC,OAAO,CAAC,WACxB,QAAQ,GAAG,QAAQ,EAAE,eACjB,UAAU,CAAC,OAAO,CAAC,UACxB,MAAM,OACT,MAAM,oCAcd,CAAA"}
|
package/build/utils.d.ts
CHANGED
|
@@ -24,8 +24,8 @@ export declare function transformCommandLogResult(result: {
|
|
|
24
24
|
file?: string;
|
|
25
25
|
script?: string;
|
|
26
26
|
}): "\"<Screenshot[base64]>\"" | "\"<Script[base64]>\"" | {
|
|
27
|
-
file?: string
|
|
28
|
-
script?: string
|
|
27
|
+
file?: string;
|
|
28
|
+
script?: string;
|
|
29
29
|
};
|
|
30
30
|
/**
|
|
31
31
|
* checks if command argument is valid according to specification
|
|
@@ -95,4 +95,13 @@ export declare function isChrome(browserName?: string): boolean;
|
|
|
95
95
|
export declare function isSafari(browserName?: string): boolean;
|
|
96
96
|
export declare function isFirefox(browserName?: string): boolean;
|
|
97
97
|
export declare function isEdge(browserName?: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* traverse up the scope chain until browser element was reached
|
|
100
|
+
*/
|
|
101
|
+
export declare function getBrowserObject(elem: WebdriverIO.Element | WebdriverIO.Browser | WebdriverIO.ElementArray): WebdriverIO.Browser;
|
|
102
|
+
/**
|
|
103
|
+
* Enables logging to a file in a specified directory.
|
|
104
|
+
* @param {string} outputDir Directory containing the log file
|
|
105
|
+
*/
|
|
106
|
+
export declare function enableFileLogging(outputDir?: string): Promise<void>;
|
|
98
107
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAepD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,WAGnC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE;IAAE,sBAAsB,CAAC,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,QAwCzH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,UAAQ,UA+BrF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAE,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;WAAzB,MAAM;aAAW,MAAM;EAalF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,WA8B/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,GAAG,wGAExC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAAG,UAAU,EAAE,MAAM,EAAE,WAAW,SAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAW5F;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,CA8DtF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAE,EAAE,EAAE,QAAQ,WAE5C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAE,IAAI,EAAE,GAAG,EAAE,SAE1C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,WAenC;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,mCAAoD,CAAA;AAEtE;;;;;EAKE;AACF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,GAAG,OAAO,CAM1E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,WAQ/H;AAED,wBAAgB,QAAQ,CAAE,WAAW,CAAC,EAAE,MAAM,WAE7C;AACD,wBAAgB,QAAQ,CAAE,WAAW,CAAC,EAAE,MAAM,WAE7C;AACD,wBAAgB,SAAS,CAAE,WAAW,CAAC,EAAE,MAAM,WAE9C;AACD,wBAAgB,MAAM,CAAE,WAAW,CAAC,EAAE,MAAM,WAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAGjI;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1E"}
|