testplane 8.21.1 → 8.22.1

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.
Files changed (135) hide show
  1. package/build/package.json +15 -9
  2. package/build/src/browser/browser.d.ts +6 -2
  3. package/build/src/browser/browser.js +2 -0
  4. package/build/src/browser/browser.js.map +1 -1
  5. package/build/src/browser/existing-browser.d.ts +2 -0
  6. package/build/src/browser/existing-browser.js +3 -3
  7. package/build/src/browser/existing-browser.js.map +1 -1
  8. package/build/src/browser/new-browser.d.ts +5 -2
  9. package/build/src/browser/new-browser.js +53 -7
  10. package/build/src/browser/new-browser.js.map +1 -1
  11. package/build/src/browser-installer/chrome/browser.d.ts +3 -0
  12. package/build/src/browser-installer/chrome/browser.js +67 -0
  13. package/build/src/browser-installer/chrome/browser.js.map +1 -0
  14. package/build/src/browser-installer/chrome/driver.d.ts +3 -0
  15. package/build/src/browser-installer/chrome/driver.js +65 -0
  16. package/build/src/browser-installer/chrome/driver.js.map +1 -0
  17. package/build/src/browser-installer/chrome/index.d.ts +14 -0
  18. package/build/src/browser-installer/chrome/index.js +34 -0
  19. package/build/src/browser-installer/chrome/index.js.map +1 -0
  20. package/build/src/browser-installer/chromium/browser.d.ts +3 -0
  21. package/build/src/browser-installer/chromium/browser.js +46 -0
  22. package/build/src/browser-installer/chromium/browser.js.map +1 -0
  23. package/build/src/browser-installer/chromium/driver.d.ts +1 -0
  24. package/build/src/browser-installer/chromium/driver.js +41 -0
  25. package/build/src/browser-installer/chromium/driver.js.map +1 -0
  26. package/build/src/browser-installer/chromium/index.d.ts +2 -0
  27. package/build/src/browser-installer/chromium/index.js +8 -0
  28. package/build/src/browser-installer/chromium/index.js.map +1 -0
  29. package/build/src/browser-installer/chromium/revisions/linux.d.ts +2 -0
  30. package/build/src/browser-installer/chromium/revisions/linux.js +45 -0
  31. package/build/src/browser-installer/chromium/revisions/linux.js.map +1 -0
  32. package/build/src/browser-installer/chromium/revisions/mac.d.ts +2 -0
  33. package/build/src/browser-installer/chromium/revisions/mac.js +45 -0
  34. package/build/src/browser-installer/chromium/revisions/mac.js.map +1 -0
  35. package/build/src/browser-installer/chromium/revisions/mac_arm.d.ts +2 -0
  36. package/build/src/browser-installer/chromium/revisions/mac_arm.js +25 -0
  37. package/build/src/browser-installer/chromium/revisions/mac_arm.js.map +1 -0
  38. package/build/src/browser-installer/chromium/revisions/win32.d.ts +2 -0
  39. package/build/src/browser-installer/chromium/revisions/win32.js +45 -0
  40. package/build/src/browser-installer/chromium/revisions/win32.js.map +1 -0
  41. package/build/src/browser-installer/chromium/revisions/win64.d.ts +2 -0
  42. package/build/src/browser-installer/chromium/revisions/win64.js +45 -0
  43. package/build/src/browser-installer/chromium/revisions/win64.js.map +1 -0
  44. package/build/src/browser-installer/chromium/utils.d.ts +4 -0
  45. package/build/src/browser-installer/chromium/utils.js +61 -0
  46. package/build/src/browser-installer/chromium/utils.js.map +1 -0
  47. package/build/src/browser-installer/constants.d.ts +13 -0
  48. package/build/src/browser-installer/constants.js +17 -0
  49. package/build/src/browser-installer/constants.js.map +1 -0
  50. package/build/src/browser-installer/edge/driver.d.ts +3 -0
  51. package/build/src/browser-installer/edge/driver.js +36 -0
  52. package/build/src/browser-installer/edge/driver.js.map +1 -0
  53. package/build/src/browser-installer/edge/index.d.ts +13 -0
  54. package/build/src/browser-installer/edge/index.js +30 -0
  55. package/build/src/browser-installer/edge/index.js.map +1 -0
  56. package/build/src/browser-installer/firefox/browser.d.ts +3 -0
  57. package/build/src/browser-installer/firefox/browser.js +38 -0
  58. package/build/src/browser-installer/firefox/browser.js.map +1 -0
  59. package/build/src/browser-installer/firefox/driver.d.ts +3 -0
  60. package/build/src/browser-installer/firefox/driver.js +30 -0
  61. package/build/src/browser-installer/firefox/driver.js.map +1 -0
  62. package/build/src/browser-installer/firefox/index.d.ts +14 -0
  63. package/build/src/browser-installer/firefox/index.js +40 -0
  64. package/build/src/browser-installer/firefox/index.js.map +1 -0
  65. package/build/src/browser-installer/firefox/utils.d.ts +2 -0
  66. package/build/src/browser-installer/firefox/utils.js +16 -0
  67. package/build/src/browser-installer/firefox/utils.js.map +1 -0
  68. package/build/src/browser-installer/index.d.ts +4 -0
  69. package/build/src/browser-installer/index.js +12 -0
  70. package/build/src/browser-installer/index.js.map +1 -0
  71. package/build/src/browser-installer/install.d.ts +32 -0
  72. package/build/src/browser-installer/install.js +106 -0
  73. package/build/src/browser-installer/install.js.map +1 -0
  74. package/build/src/browser-installer/registry/cli-progress-bar.d.ts +5 -0
  75. package/build/src/browser-installer/registry/cli-progress-bar.js +30 -0
  76. package/build/src/browser-installer/registry/cli-progress-bar.js.map +1 -0
  77. package/build/src/browser-installer/registry/index.d.ts +8 -0
  78. package/build/src/browser-installer/registry/index.js +161 -0
  79. package/build/src/browser-installer/registry/index.js.map +1 -0
  80. package/build/src/browser-installer/run.d.ts +12 -0
  81. package/build/src/browser-installer/run.js +43 -0
  82. package/build/src/browser-installer/run.js.map +1 -0
  83. package/build/src/browser-installer/safari/index.d.ts +11 -0
  84. package/build/src/browser-installer/safari/index.js +27 -0
  85. package/build/src/browser-installer/safari/index.js.map +1 -0
  86. package/build/src/browser-installer/utils.d.ts +35 -0
  87. package/build/src/browser-installer/utils.js +148 -0
  88. package/build/src/browser-installer/utils.js.map +1 -0
  89. package/build/src/browser-pool/basic-pool.d.ts +1 -0
  90. package/build/src/browser-pool/basic-pool.js +3 -1
  91. package/build/src/browser-pool/basic-pool.js.map +1 -1
  92. package/build/src/browser-pool/webdriver-pool.d.ts +17 -0
  93. package/build/src/browser-pool/webdriver-pool.js +69 -0
  94. package/build/src/browser-pool/webdriver-pool.js.map +1 -0
  95. package/build/src/bundle/@wdio-utils.d.ts +1 -0
  96. package/build/src/bundle/@wdio-utils.js +7 -0
  97. package/build/src/bundle/@wdio-utils.js.map +1 -0
  98. package/build/src/bundle/{index.js → cjs/index.js} +24261 -3721
  99. package/build/src/bundle/glob-extra.d.ts +3 -0
  100. package/build/src/bundle/glob-extra.js +8 -0
  101. package/build/src/bundle/glob-extra.js.map +1 -0
  102. package/build/src/{test-reader → bundle}/test-transformer.js +4 -3
  103. package/build/src/bundle/test-transformer.js.map +1 -0
  104. package/build/src/cli/commands/install-deps/index.d.ts +2 -0
  105. package/build/src/cli/commands/install-deps/index.js +72 -0
  106. package/build/src/cli/commands/install-deps/index.js.map +1 -0
  107. package/build/src/cli/constants.d.ts +1 -0
  108. package/build/src/cli/constants.js +1 -0
  109. package/build/src/cli/constants.js.map +1 -1
  110. package/build/src/cli/index.js +3 -1
  111. package/build/src/cli/index.js.map +1 -1
  112. package/build/src/config/types.d.ts +4 -8
  113. package/build/src/constants/config.d.ts +1 -0
  114. package/build/src/constants/config.js +1 -0
  115. package/build/src/constants/config.js.map +1 -1
  116. package/build/src/dev-server/utils.d.ts +5 -5
  117. package/build/src/dev-server/utils.js +4 -0
  118. package/build/src/dev-server/utils.js.map +1 -1
  119. package/build/src/runner/browser-env/vite/browser-modules/tsconfig.tsbuildinfo +1 -1
  120. package/build/src/test-reader/sets-builder/index.js +1 -1
  121. package/build/src/test-reader/sets-builder/index.js.map +1 -1
  122. package/build/src/test-reader/sets-builder/test-set.d.ts +1 -1
  123. package/build/src/test-reader/sets-builder/test-set.js +1 -1
  124. package/build/src/test-reader/sets-builder/test-set.js.map +1 -1
  125. package/build/src/test-reader/test-parser.js +1 -1
  126. package/build/src/test-reader/test-parser.js.map +1 -1
  127. package/build/src/testplane.d.ts +2 -1
  128. package/build/src/testplane.js +2 -2
  129. package/build/src/testplane.js.map +1 -1
  130. package/build/src/vendors/uglifyify/index.d.ts +0 -0
  131. package/build/src/vendors/uglifyify/index.js +2 -0
  132. package/build/src/vendors/uglifyify/index.js.map +1 -0
  133. package/package.json +15 -9
  134. package/build/src/test-reader/test-transformer.js.map +0 -1
  135. /package/build/src/{test-reader → bundle}/test-transformer.d.ts +0 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runSafariDriver = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const get_port_1 = __importDefault(require("get-port"));
9
+ const wait_port_1 = __importDefault(require("wait-port"));
10
+ const utils_1 = require("../../dev-server/utils");
11
+ const constants_1 = require("../constants");
12
+ const runSafariDriver = async ({ debug = false } = {}) => {
13
+ const randomPort = await (0, get_port_1.default)();
14
+ const safariDriver = (0, child_process_1.spawn)(constants_1.SAFARIDRIVER_PATH, [`--port=${randomPort}`], {
15
+ windowsHide: true,
16
+ detached: false,
17
+ });
18
+ if (debug) {
19
+ (0, utils_1.pipeLogsWithPrefix)(safariDriver, `[safaridriver] `);
20
+ }
21
+ const gridUrl = `http://127.0.0.1:${randomPort}`;
22
+ process.once("exit", () => safariDriver.kill());
23
+ await (0, wait_port_1.default)({ port: randomPort, output: "silent", timeout: constants_1.DRIVER_WAIT_TIMEOUT });
24
+ return { gridUrl, process: safariDriver, port: randomPort };
25
+ };
26
+ exports.runSafariDriver = runSafariDriver;
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser-installer/safari/index.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAyD;AACzD,wDAA+B;AAC/B,0DAAiC;AACjC,kDAA4D;AAC5D,4CAAsE;AAE/D,MAAM,eAAe,GAAG,KAAK,EAAE,EAAE,KAAK,GAAG,KAAK,KAA0B,EAAE,EAI9E,EAAE;IACD,MAAM,UAAU,GAAG,MAAM,IAAA,kBAAO,GAAE,CAAC;IAEnC,MAAM,YAAY,GAAG,IAAA,qBAAK,EAAC,6BAAiB,EAAE,CAAC,UAAU,UAAU,EAAE,CAAC,EAAE;QACpE,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACR,IAAA,0BAAkB,EAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,UAAU,EAAE,CAAC;IAEjD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,IAAA,mBAAQ,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,+BAAmB,EAAE,CAAC,CAAC;IAErF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAChE,CAAC,CAAC;AAvBW,QAAA,eAAe,mBAuB1B"}
@@ -0,0 +1,35 @@
1
+ import { BrowserPlatform, Browser as PuppeteerBrowser } from "@puppeteer/browsers";
2
+ import debug from "debug";
3
+ export type DownloadProgressCallback = (downloadedBytes: number, totalBytes: number) => void;
4
+ export declare const browserInstallerDebug: debug.Debugger;
5
+ export declare const Browser: {
6
+ readonly CHROME: PuppeteerBrowser.CHROME;
7
+ readonly CHROMIUM: PuppeteerBrowser.CHROMIUM;
8
+ readonly FIREFOX: PuppeteerBrowser.FIREFOX;
9
+ readonly SAFARI: "safari";
10
+ readonly EDGE: "MicrosoftEdge";
11
+ };
12
+ export declare const Driver: {
13
+ readonly CHROMEDRIVER: PuppeteerBrowser.CHROMEDRIVER;
14
+ readonly GECKODRIVER: "geckodriver";
15
+ readonly SAFARIDRIVER: "safaridriver";
16
+ readonly EDGEDRIVER: "edgedriver";
17
+ };
18
+ export type SupportedBrowser = (typeof Browser)[keyof typeof Browser];
19
+ export type SupportedDriver = (typeof Driver)[keyof typeof Driver];
20
+ export declare const getDriverNameForBrowserName: (browserName: SupportedBrowser) => SupportedDriver | null;
21
+ export declare const createBrowserLabel: (browserName: string, version?: string) => string;
22
+ export declare const getMilestone: (version: string | number) => string;
23
+ export declare const semverVersionsComparator: (a: string, b: string) => number;
24
+ export declare const normalizeChromeVersion: (version: string) => string;
25
+ export declare const getBrowserPlatform: () => BrowserPlatform;
26
+ export declare const getChromePlatform: (version: string) => BrowserPlatform;
27
+ export declare const getRegistryPath: (envValueOverride?: string) => string;
28
+ export declare const getBrowsersDir: () => string;
29
+ export declare const getGeckoDriverDir: (driverVersion: string) => string;
30
+ export declare const getEdgeDriverDir: (driverVersion: string) => string;
31
+ export declare const getChromiumDriverDir: (driverVersion: string) => string;
32
+ export declare const getChromeDriverDir: () => string;
33
+ export declare const retryFetch: (url: Parameters<typeof fetch>[0], opts?: Parameters<typeof fetch>[1], retry?: number, retryDelay?: number) => ReturnType<typeof fetch>;
34
+ export declare const downloadFile: (url: string, filePath: string) => Promise<void>;
35
+ export declare const unzipFile: (zipPath: string, outputDir: string) => Promise<string>;
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.unzipFile = exports.downloadFile = exports.retryFetch = exports.getChromeDriverDir = exports.getChromiumDriverDir = exports.getEdgeDriverDir = exports.getGeckoDriverDir = exports.getBrowsersDir = exports.getRegistryPath = exports.getChromePlatform = exports.getBrowserPlatform = exports.normalizeChromeVersion = exports.semverVersionsComparator = exports.getMilestone = exports.createBrowserLabel = exports.getDriverNameForBrowserName = exports.Driver = exports.Browser = exports.browserInstallerDebug = void 0;
7
+ const browsers_1 = require("@puppeteer/browsers");
8
+ const extract_zip_1 = __importDefault(require("extract-zip"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const fs_1 = require("fs");
12
+ const stream_1 = require("stream");
13
+ const debug_1 = __importDefault(require("debug"));
14
+ const constants_1 = require("./constants");
15
+ exports.browserInstallerDebug = (0, debug_1.default)("testplane:browser-installer");
16
+ exports.Browser = {
17
+ CHROME: browsers_1.Browser.CHROME,
18
+ CHROMIUM: browsers_1.Browser.CHROMIUM,
19
+ FIREFOX: browsers_1.Browser.FIREFOX,
20
+ SAFARI: "safari",
21
+ EDGE: "MicrosoftEdge",
22
+ };
23
+ exports.Driver = {
24
+ CHROMEDRIVER: browsers_1.Browser.CHROMEDRIVER,
25
+ GECKODRIVER: "geckodriver",
26
+ SAFARIDRIVER: "safaridriver",
27
+ EDGEDRIVER: "edgedriver",
28
+ };
29
+ const getDriverNameForBrowserName = (browserName) => {
30
+ if (browserName === exports.Browser.CHROME || browserName === exports.Browser.CHROMIUM) {
31
+ return exports.Driver.CHROMEDRIVER;
32
+ }
33
+ if (browserName === exports.Browser.FIREFOX) {
34
+ return exports.Driver.GECKODRIVER;
35
+ }
36
+ if (browserName === exports.Browser.SAFARI) {
37
+ return exports.Driver.SAFARIDRIVER;
38
+ }
39
+ if (browserName === exports.Browser.EDGE) {
40
+ return exports.Driver.EDGEDRIVER;
41
+ }
42
+ return null;
43
+ };
44
+ exports.getDriverNameForBrowserName = getDriverNameForBrowserName;
45
+ const createBrowserLabel = (browserName, version = "latest") => browserName + "@" + version;
46
+ exports.createBrowserLabel = createBrowserLabel;
47
+ const getMilestone = (version) => {
48
+ if (typeof version === "number") {
49
+ return String(version);
50
+ }
51
+ return version.split(".")[0];
52
+ };
53
+ exports.getMilestone = getMilestone;
54
+ const semverVersionsComparator = (a, b) => {
55
+ const splitVersion = (version) => version
56
+ .replaceAll(/[^\d.]/g, "")
57
+ .split(".")
58
+ .filter(Boolean)
59
+ .map(Number);
60
+ const versionPartsA = splitVersion(a);
61
+ const versionPartsB = splitVersion(b);
62
+ for (let i = 0; i < Math.min(versionPartsA.length, versionPartsB.length); i++) {
63
+ if (versionPartsA[i] !== versionPartsB[i]) {
64
+ return versionPartsA[i] - versionPartsB[i];
65
+ }
66
+ }
67
+ return 0;
68
+ };
69
+ exports.semverVersionsComparator = semverVersionsComparator;
70
+ const normalizeChromeVersion = (version) => {
71
+ const versionParts = version.split(".").filter(Boolean);
72
+ if (versionParts.length === 2) {
73
+ return versionParts[0];
74
+ }
75
+ if (versionParts.length >= 3) {
76
+ return versionParts.slice(0, 3).join(".");
77
+ }
78
+ return versionParts[0];
79
+ };
80
+ exports.normalizeChromeVersion = normalizeChromeVersion;
81
+ const getBrowserPlatform = () => {
82
+ const platform = (0, browsers_1.detectBrowserPlatform)();
83
+ if (!platform) {
84
+ throw new Error(`Got an error while trying to download browsers: platform "${platform}" is not supported`);
85
+ }
86
+ return platform;
87
+ };
88
+ exports.getBrowserPlatform = getBrowserPlatform;
89
+ const getChromePlatform = (version) => {
90
+ const milestone = (0, exports.getMilestone)(version);
91
+ const platform = (0, exports.getBrowserPlatform)();
92
+ if (platform === browsers_1.BrowserPlatform.MAC_ARM && Number(milestone) < constants_1.MIN_CHROMIUM_MAC_ARM_VERSION) {
93
+ return browsers_1.BrowserPlatform.MAC;
94
+ }
95
+ return platform;
96
+ };
97
+ exports.getChromePlatform = getChromePlatform;
98
+ const resolveUserPath = (userPath) => userPath.startsWith("~") ? path_1.default.resolve(os_1.default.homedir(), userPath.slice(1)) : path_1.default.resolve(userPath);
99
+ const getCacheDir = (envValueOverride = process.env.TESTPLANE_BROWSERS_PATH) => envValueOverride ? resolveUserPath(envValueOverride) : path_1.default.join(os_1.default.homedir(), ".testplane");
100
+ const getRegistryPath = (envValueOverride) => path_1.default.join(getCacheDir(envValueOverride), "registry.json");
101
+ exports.getRegistryPath = getRegistryPath;
102
+ const getBrowsersDir = () => path_1.default.join(getCacheDir(), "browsers");
103
+ exports.getBrowsersDir = getBrowsersDir;
104
+ const getDriversDir = () => path_1.default.join(getCacheDir(), "drivers");
105
+ const getDriverDir = (driverName, driverVersion) => path_1.default.join(getDriversDir(), driverName, driverVersion);
106
+ const getGeckoDriverDir = (driverVersion) => getDriverDir("geckodriver", (0, exports.getBrowserPlatform)() + "-" + driverVersion);
107
+ exports.getGeckoDriverDir = getGeckoDriverDir;
108
+ const getEdgeDriverDir = (driverVersion) => getDriverDir("edgedriver", (0, exports.getBrowserPlatform)() + "-" + driverVersion);
109
+ exports.getEdgeDriverDir = getEdgeDriverDir;
110
+ const getChromiumDriverDir = (driverVersion) => getDriverDir("chromedriver", (0, exports.getBrowserPlatform)() + "-" + driverVersion);
111
+ exports.getChromiumDriverDir = getChromiumDriverDir;
112
+ const getChromeDriverDir = () => getDriversDir(); // path is set by @puppeteer/browsers.install
113
+ exports.getChromeDriverDir = getChromeDriverDir;
114
+ const retryFetch = async (url, opts, retry = 3, retryDelay = 100) => {
115
+ while (retry > 0) {
116
+ try {
117
+ return await fetch(url, opts);
118
+ }
119
+ catch (e) {
120
+ retry = retry - 1;
121
+ if (retry <= 0) {
122
+ throw e;
123
+ }
124
+ await new Promise(resolve => setTimeout(resolve, retryDelay));
125
+ }
126
+ }
127
+ return null;
128
+ };
129
+ exports.retryFetch = retryFetch;
130
+ const downloadFile = async (url, filePath) => {
131
+ const writeStream = (0, fs_1.createWriteStream)(filePath);
132
+ const response = await fetch(url);
133
+ if (!response.ok || !response.body) {
134
+ throw new Error(`Unable to download file from ${url}: ${response.statusText}`);
135
+ }
136
+ const stream = stream_1.Readable.fromWeb(response.body).pipe(writeStream);
137
+ return new Promise((resolve, reject) => {
138
+ stream.on("error", reject);
139
+ stream.on("close", resolve);
140
+ });
141
+ };
142
+ exports.downloadFile = downloadFile;
143
+ const unzipFile = async (zipPath, outputDir) => {
144
+ await (0, extract_zip_1.default)(zipPath, { dir: outputDir });
145
+ return outputDir;
146
+ };
147
+ exports.unzipFile = unzipFile;
148
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/browser-installer/utils.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare class BasicPool implements Pool {
8
8
  private _emitter;
9
9
  private _activeSessions;
10
10
  private _cancelled;
11
+ private _wdPool;
11
12
  log: debug.Debugger;
12
13
  static create(config: Config, emitter: AsyncEmitter): BasicPool;
13
14
  constructor(config: Config, emitter: AsyncEmitter);
@@ -9,6 +9,7 @@ const lodash_1 = __importDefault(require("lodash"));
9
9
  const new_browser_1 = require("../browser/new-browser");
10
10
  const cancelled_error_1 = require("./cancelled-error");
11
11
  const events_1 = require("../events");
12
+ const webdriver_pool_1 = require("./webdriver-pool");
12
13
  class BasicPool {
13
14
  static create(config, emitter) {
14
15
  return new BasicPool(config, emitter);
@@ -19,9 +20,10 @@ class BasicPool {
19
20
  this.log = (0, debug_1.default)("testplane:pool:basic");
20
21
  this._activeSessions = {};
21
22
  this._cancelled = false;
23
+ this._wdPool = new webdriver_pool_1.WebdriverPool();
22
24
  }
23
25
  async getBrowser(id, opts = {}) {
24
- const browser = new_browser_1.NewBrowser.create(this._config, { ...opts, id });
26
+ const browser = new_browser_1.NewBrowser.create(this._config, { ...opts, id, wdPool: this._wdPool });
25
27
  try {
26
28
  await browser.init();
27
29
  this.log(`browser ${browser.fullId} started`);
@@ -1 +1 @@
1
- {"version":3,"file":"basic-pool.js","sourceRoot":"","sources":["../../../src/browser-pool/basic-pool.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,oDAAuB;AAEvB,wDAAoD;AACpD,uDAAmD;AACnD,sCAAuD;AAKvD,MAAa,SAAS;IAOlB,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,OAAqB;QAC/C,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,MAAc,EAAE,OAAqB;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,IAAA,eAAK,EAAC,sBAAsB,CAAC,CAAC;QAEzC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAoB,EAAE;QAC/C,MAAM,OAAO,GAAG,wBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjE,IAAI,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YAE9C,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAEtD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM,IAAI,gCAAc,EAAE,CAAC;YAC/B,CAAC;YAED,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YAClD,OAAO,OAAO,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3C,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpD,8DAA8D;QAClE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,KAAa,EAAE,OAAgB;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE;YACvD,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC9B,CAAC;CACJ;AA3ED,8BA2EC"}
1
+ {"version":3,"file":"basic-pool.js","sourceRoot":"","sources":["../../../src/browser-pool/basic-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { SupportedBrowser } from "../browser-installer";
2
+ export type WdProcess = {
3
+ gridUrl: string;
4
+ free: () => void;
5
+ kill: () => void;
6
+ };
7
+ export declare class WebdriverPool {
8
+ private driverProcess;
9
+ private portToDriverProcess;
10
+ constructor();
11
+ getWebdriver(browserName: SupportedBrowser, browserVersion: string, { debug }?: {
12
+ debug?: boolean | undefined;
13
+ }): ReturnType<typeof this.createWebdriverProcess>;
14
+ private freeWebdriver;
15
+ private killWebdriver;
16
+ private createWebdriverProcess;
17
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebdriverPool = void 0;
4
+ const browser_installer_1 = require("../browser-installer");
5
+ class WebdriverPool {
6
+ constructor() {
7
+ this.driverProcess = new Map();
8
+ this.portToDriverProcess = new Map();
9
+ }
10
+ async getWebdriver(browserName, browserVersion, { debug = false } = {}) {
11
+ const driverName = (0, browser_installer_1.getDriverNameForBrowserName)(browserName);
12
+ if (!driverName) {
13
+ throw new Error([
14
+ `Couldn't run browser driver for "${browserName}", as this browser is not supported`,
15
+ `Supported browsers: "chrome", "firefox", "safari", "MicrosoftEdge"`,
16
+ ].join("\n"));
17
+ }
18
+ if (!browserVersion) {
19
+ throw new Error(`Couldn't run browser driver for "${browserName}" because its version is undefined`);
20
+ }
21
+ const wdProcesses = this.driverProcess.get(driverName)?.get(browserVersion) ?? {};
22
+ for (const port in wdProcesses) {
23
+ if (!wdProcesses[port].isBusy) {
24
+ wdProcesses[port].isBusy = true;
25
+ return {
26
+ gridUrl: wdProcesses[port].gridUrl,
27
+ free: () => this.freeWebdriver(port),
28
+ kill: () => this.killWebdriver(driverName, browserVersion, port),
29
+ };
30
+ }
31
+ }
32
+ return this.createWebdriverProcess(driverName, browserVersion, { debug });
33
+ }
34
+ freeWebdriver(port) {
35
+ const wdProcess = this.portToDriverProcess.get(port);
36
+ if (wdProcess) {
37
+ wdProcess.isBusy = false;
38
+ }
39
+ }
40
+ killWebdriver(driverName, browserVersion, port) {
41
+ const wdProcess = this.portToDriverProcess.get(port);
42
+ const nodes = this.driverProcess.get(driverName)?.get(browserVersion);
43
+ if (wdProcess && nodes) {
44
+ wdProcess.process.kill();
45
+ this.portToDriverProcess.delete(port);
46
+ delete nodes[port];
47
+ }
48
+ }
49
+ async createWebdriverProcess(driverName, browserVersion, { debug = false } = {}) {
50
+ const driver = await (0, browser_installer_1.runBrowserDriver)(driverName, browserVersion, { debug });
51
+ if (!this.driverProcess.has(driverName)) {
52
+ this.driverProcess.set(driverName, new Map());
53
+ }
54
+ if (!this.driverProcess.get(driverName)?.has(browserVersion)) {
55
+ this.driverProcess.get(driverName)?.set(browserVersion, {});
56
+ }
57
+ const nodes = this.driverProcess.get(driverName)?.get(browserVersion);
58
+ const node = { process: driver.process, gridUrl: driver.gridUrl, isBusy: true };
59
+ nodes[driver.port] = node;
60
+ this.portToDriverProcess.set(String(driver.port), node);
61
+ return {
62
+ gridUrl: driver.gridUrl,
63
+ free: () => this.freeWebdriver(String(driver.port)),
64
+ kill: () => this.killWebdriver(driverName, browserVersion, String(driver.port)),
65
+ };
66
+ }
67
+ }
68
+ exports.WebdriverPool = WebdriverPool;
69
+ //# sourceMappingURL=webdriver-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webdriver-pool.js","sourceRoot":"","sources":["../../../src/browser-pool/webdriver-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const sessionEnvironmentDetector: typeof import("@wdio/utils-cjs").sessionEnvironmentDetector;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sessionEnvironmentDetector = void 0;
4
+ /* eslint-disable @typescript-eslint/no-var-requires */
5
+ const bundle = require("./cjs");
6
+ exports.sessionEnvironmentDetector = bundle.wdioUtils.sessionEnvironmentDetector;
7
+ //# sourceMappingURL=@wdio-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"@wdio-utils.js","sourceRoot":"","sources":["../../../src/bundle/@wdio-utils.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnB,QAAA,0BAA0B,GACnC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC"}