appium-geckodriver 2.2.1 → 2.2.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/CHANGELOG.md +12 -0
- package/build/lib/commands/find.d.ts +10 -0
- package/build/lib/commands/find.d.ts.map +1 -1
- package/build/lib/commands/find.js +10 -1
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/driver.d.ts +4 -4
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +13 -17
- package/build/lib/driver.js.map +1 -1
- package/build/lib/gecko.d.ts.map +1 -1
- package/build/lib/gecko.js +24 -18
- package/build/lib/gecko.js.map +1 -1
- package/build/lib/utils.d.ts +2 -2
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +8 -9
- package/build/lib/utils.js.map +1 -1
- package/lib/commands/find.ts +10 -1
- package/lib/driver.ts +17 -17
- package/lib/gecko.ts +28 -21
- package/lib/utils.ts +8 -9
- package/npm-shrinkwrap.json +124 -93
- package/package.json +1 -3
- package/scripts/install-geckodriver.mjs +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [2.2.3](https://github.com/appium/appium-geckodriver/compare/v2.2.2...v2.2.3) (2026-05-04)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* remove lodash ([#160](https://github.com/appium/appium-geckodriver/issues/160)) ([6a4b9b6](https://github.com/appium/appium-geckodriver/commit/6a4b9b6051dcb4ed21361f6764e174645c8b9a0e))
|
|
6
|
+
|
|
7
|
+
## [2.2.2](https://github.com/appium/appium-geckodriver/compare/v2.2.1...v2.2.2) (2026-05-01)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* lint ([#159](https://github.com/appium/appium-geckodriver/issues/159)) ([92b7a12](https://github.com/appium/appium-geckodriver/commit/92b7a127b3729cc45e034ce0a08025039e444219))
|
|
12
|
+
|
|
1
13
|
## [2.2.1](https://github.com/appium/appium-geckodriver/compare/v2.2.0...v2.2.1) (2026-04-10)
|
|
2
14
|
|
|
3
15
|
### Miscellaneous Chores
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import type { GeckoDriver } from '../driver';
|
|
2
|
+
/**
|
|
3
|
+
* Find element(s) by given strategy and selector. If context is provided, search will be performed within the context element.
|
|
4
|
+
* This is needed to make lookup by image working.
|
|
5
|
+
* @this GeckoDriver
|
|
6
|
+
* @param strategy - The strategy to use for finding the element(s) (e.g., 'css selector', 'xpath', etc.)
|
|
7
|
+
* @param selector - The selector to use for finding the element(s)
|
|
8
|
+
* @param mult - Whether to find multiple elements (true) or a single element (false)
|
|
9
|
+
* @param context - Optional context element ID to search within
|
|
10
|
+
* @returns A promise that resolves to the found element(s)
|
|
11
|
+
*/
|
|
2
12
|
export declare function findElOrEls(this: GeckoDriver, strategy: string, selector: string, mult: boolean, context?: string): Promise<any>;
|
|
3
13
|
//# sourceMappingURL=find.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../lib/commands/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../lib/commands/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,CAMd"}
|
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.findElOrEls = findElOrEls;
|
|
4
4
|
const support_1 = require("appium/support");
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Find element(s) by given strategy and selector. If context is provided, search will be performed within the context element.
|
|
7
|
+
* This is needed to make lookup by image working.
|
|
8
|
+
* @this GeckoDriver
|
|
9
|
+
* @param strategy - The strategy to use for finding the element(s) (e.g., 'css selector', 'xpath', etc.)
|
|
10
|
+
* @param selector - The selector to use for finding the element(s)
|
|
11
|
+
* @param mult - Whether to find multiple elements (true) or a single element (false)
|
|
12
|
+
* @param context - Optional context element ID to search within
|
|
13
|
+
* @returns A promise that resolves to the found element(s)
|
|
14
|
+
*/
|
|
6
15
|
async function findElOrEls(strategy, selector, mult, context) {
|
|
7
16
|
const endpoint = `/element${context ? `/${support_1.util.unwrapElement(context)}/element` : ''}${mult ? 's' : ''}`;
|
|
8
17
|
return await this.gecko.proxy.command(endpoint, 'POST', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../lib/commands/find.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../lib/commands/find.ts"],"names":[],"mappings":";;AAaA,kCAYC;AAzBD,4CAAoC;AAGpC;;;;;;;;;GASG;AACI,KAAK,UAAU,WAAW,CAE/B,QAAgB,EAChB,QAAgB,EAChB,IAAa,EACb,OAAgB;IAEhB,MAAM,QAAQ,GAAG,WAAW,OAAO,CAAC,CAAC,CAAC,IAAI,cAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzG,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;QACtD,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;AACL,CAAC"}
|
package/build/lib/driver.d.ts
CHANGED
|
@@ -5,22 +5,22 @@ import { desiredCapConstraints } from './desired-caps';
|
|
|
5
5
|
import * as findCommands from './commands/find';
|
|
6
6
|
export type GeckoConstraints = typeof desiredCapConstraints;
|
|
7
7
|
export declare class GeckoDriver extends BaseDriver<GeckoConstraints, StringRecord> implements ExternalDriver<GeckoConstraints, string, StringRecord> {
|
|
8
|
+
proxyReqRes: (...args: any) => any;
|
|
9
|
+
findElOrEls: typeof findCommands.findElOrEls;
|
|
8
10
|
private isProxyActive;
|
|
9
11
|
private _gecko;
|
|
10
12
|
private _bidiProxyUrl;
|
|
11
|
-
proxyReqRes: (...args: any) => any;
|
|
12
13
|
constructor(opts?: InitialOpts);
|
|
14
|
+
get gecko(): GeckoDriverServer;
|
|
15
|
+
get bidiProxyUrl(): string | null;
|
|
13
16
|
proxyActive(sessionId?: string): boolean;
|
|
14
17
|
getProxyAvoidList(): RouteMatcher[];
|
|
15
18
|
canProxy(): boolean;
|
|
16
|
-
get gecko(): GeckoDriverServer;
|
|
17
19
|
validateDesiredCaps(caps: any): caps is any;
|
|
18
20
|
createSession(w3cCaps1: W3CDriverCaps<GeckoConstraints>, w3cCaps2?: W3CDriverCaps<GeckoConstraints>, ...args: any[]): Promise<DefaultCreateSessionResult<GeckoConstraints>>;
|
|
19
|
-
get bidiProxyUrl(): string | null;
|
|
20
21
|
deleteSession(): Promise<void>;
|
|
21
22
|
private resetState;
|
|
22
23
|
private _extractWebSocketUrl;
|
|
23
|
-
findElOrEls: typeof findCommands.findElOrEls;
|
|
24
24
|
}
|
|
25
25
|
export default GeckoDriver;
|
|
26
26
|
//# sourceMappingURL=driver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,UAAU,EAAS,MAAM,eAAe,CAAC;AACjD,OAAO,EAAoB,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAUhD,MAAM,MAAM,gBAAgB,GAAG,OAAO,qBAAqB,CAAC;AAE5D,qBAAa,WACX,SAAQ,UAAU,CAAC,gBAAgB,EAAE,YAAY,CACjD,YAAW,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC;IAE1D,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;IAE1C,WAAW,kCAA4B;IAEvC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAuB;gBAEhC,IAAI,GAAE,WAA+B;IAgBjD,IAAI,KAAK,IAAI,iBAAiB,CAK7B;IAED,IAAa,YAAY,IAAI,MAAM,GAAG,IAAI,CAEzC;IAGQ,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAIxC,iBAAiB,IAAI,YAAY,EAAE;IAInC,QAAQ,IAAI,OAAO;IAInB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG;IAmBrC,aAAa,CAC1B,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACzC,QAAQ,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC1C,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAqBzC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,oBAAoB;CAe7B;AAED,eAAe,WAAW,CAAC"}
|
package/build/lib/driver.js
CHANGED
|
@@ -32,12 +32,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
36
|
exports.GeckoDriver = void 0;
|
|
40
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
41
37
|
const driver_1 = require("appium/driver");
|
|
42
38
|
const gecko_1 = require("./gecko");
|
|
43
39
|
const desired_caps_1 = require("./desired-caps");
|
|
@@ -51,13 +47,14 @@ const NO_PROXY = [
|
|
|
51
47
|
['POST', new RegExp('^/session/[^/]+/elements?$')],
|
|
52
48
|
];
|
|
53
49
|
class GeckoDriver extends driver_1.BaseDriver {
|
|
50
|
+
proxyReqRes;
|
|
51
|
+
findElOrEls = findCommands.findElOrEls;
|
|
54
52
|
isProxyActive = false;
|
|
55
53
|
_gecko = null;
|
|
56
54
|
_bidiProxyUrl = null;
|
|
57
|
-
proxyReqRes;
|
|
58
55
|
constructor(opts = {}) {
|
|
59
56
|
super(opts);
|
|
60
|
-
this.desiredCapConstraints =
|
|
57
|
+
this.desiredCapConstraints = structuredClone(desired_caps_1.desiredCapConstraints);
|
|
61
58
|
this.locatorStrategies = [
|
|
62
59
|
'xpath',
|
|
63
60
|
'tag name',
|
|
@@ -70,6 +67,15 @@ class GeckoDriver extends driver_1.BaseDriver {
|
|
|
70
67
|
];
|
|
71
68
|
this.resetState();
|
|
72
69
|
}
|
|
70
|
+
get gecko() {
|
|
71
|
+
if (!this._gecko) {
|
|
72
|
+
throw new Error('Gecko driver is not initialized');
|
|
73
|
+
}
|
|
74
|
+
return this._gecko;
|
|
75
|
+
}
|
|
76
|
+
get bidiProxyUrl() {
|
|
77
|
+
return this._bidiProxyUrl;
|
|
78
|
+
}
|
|
73
79
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
74
80
|
proxyActive(sessionId) {
|
|
75
81
|
return this.isProxyActive;
|
|
@@ -80,12 +86,6 @@ class GeckoDriver extends driver_1.BaseDriver {
|
|
|
80
86
|
canProxy() {
|
|
81
87
|
return true;
|
|
82
88
|
}
|
|
83
|
-
get gecko() {
|
|
84
|
-
if (!this._gecko) {
|
|
85
|
-
throw new Error('Gecko driver is not initialized');
|
|
86
|
-
}
|
|
87
|
-
return this._gecko;
|
|
88
|
-
}
|
|
89
89
|
validateDesiredCaps(caps) {
|
|
90
90
|
const isValid = super.validateDesiredCaps(caps);
|
|
91
91
|
if (!isValid) {
|
|
@@ -120,9 +120,6 @@ class GeckoDriver extends driver_1.BaseDriver {
|
|
|
120
120
|
this.isProxyActive = true;
|
|
121
121
|
return [sessionId, processedCaps];
|
|
122
122
|
}
|
|
123
|
-
get bidiProxyUrl() {
|
|
124
|
-
return this._bidiProxyUrl;
|
|
125
|
-
}
|
|
126
123
|
async deleteSession() {
|
|
127
124
|
this.log.info('Ending Gecko Driver session');
|
|
128
125
|
await this._gecko?.stop();
|
|
@@ -137,7 +134,7 @@ class GeckoDriver extends driver_1.BaseDriver {
|
|
|
137
134
|
}
|
|
138
135
|
_extractWebSocketUrl(response) {
|
|
139
136
|
const webSocketUrl = response?.capabilities?.webSocketUrl;
|
|
140
|
-
if (
|
|
137
|
+
if (typeof webSocketUrl !== 'string' || webSocketUrl.length === 0) {
|
|
141
138
|
return null;
|
|
142
139
|
}
|
|
143
140
|
try {
|
|
@@ -151,7 +148,6 @@ class GeckoDriver extends driver_1.BaseDriver {
|
|
|
151
148
|
return null;
|
|
152
149
|
}
|
|
153
150
|
}
|
|
154
|
-
findElOrEls = findCommands.findElOrEls;
|
|
155
151
|
}
|
|
156
152
|
exports.GeckoDriver = GeckoDriver;
|
|
157
153
|
exports.default = GeckoDriver;
|
package/build/lib/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"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"}
|
package/build/lib/gecko.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAS,MAAM,eAAe,CAAC;AAM9C,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAWpF,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAwID,qBAAa,UAAW,SAAQ,OAAO;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEV,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAE,QAAe;CASnF;AA2BD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY;IAMjD,IAAI,KAAK,IAAI,UAAU,CAKtB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAkEhF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB5B;AAED,eAAe,iBAAiB,CAAC"}
|
package/build/lib/gecko.js
CHANGED
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.GeckoDriverServer = exports.GeckoProxy = exports.GECKO_SERVER_HOST = void 0;
|
|
7
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
8
7
|
const node_os_1 = __importDefault(require("node:os"));
|
|
9
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
9
|
const driver_1 = require("appium/driver");
|
|
@@ -20,17 +19,6 @@ const GECKO_PORT_RANGE = [5200, 5300];
|
|
|
20
19
|
const GECKO_SERVER_GUARD = support_1.util.getLockFileGuard(node_path_1.default.resolve(node_os_1.default.tmpdir(), 'gecko_server_guard.lock'), { timeout: 5, tryRecovery: true });
|
|
21
20
|
const DEFAULT_MARIONETTE_PORT = 2828;
|
|
22
21
|
exports.GECKO_SERVER_HOST = '127.0.0.1';
|
|
23
|
-
class GeckoProxy extends driver_1.JWProxy {
|
|
24
|
-
didProcessExit;
|
|
25
|
-
async proxyCommand(url, method, body = null) {
|
|
26
|
-
if (this.didProcessExit) {
|
|
27
|
-
throw new driver_1.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Gecko Driver server because ` +
|
|
28
|
-
'its process is not running (probably crashed). Check the Appium log for more details');
|
|
29
|
-
}
|
|
30
|
-
return await super.proxyCommand(url, method, body);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.GeckoProxy = GeckoProxy;
|
|
34
22
|
class GeckoDriverProcess {
|
|
35
23
|
noReset;
|
|
36
24
|
verbosity;
|
|
@@ -78,7 +66,7 @@ class GeckoDriverProcess {
|
|
|
78
66
|
const driverBin = await this.resolveGeckodriverBinary();
|
|
79
67
|
const args = [];
|
|
80
68
|
/* #region Options */
|
|
81
|
-
switch (
|
|
69
|
+
switch (this.verbosity?.toLowerCase()) {
|
|
82
70
|
case constants_1.VERBOSITY.DEBUG:
|
|
83
71
|
args.push('-v');
|
|
84
72
|
break;
|
|
@@ -89,13 +77,13 @@ class GeckoDriverProcess {
|
|
|
89
77
|
if (this.noReset) {
|
|
90
78
|
args.push('--connect-existing');
|
|
91
79
|
// https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-connect-existing-code
|
|
92
|
-
if (
|
|
80
|
+
if (this.marionettePort == null) {
|
|
93
81
|
this.log.info(`'marionettePort' capability value is not provided while 'noReset' is enabled`);
|
|
94
82
|
this.log.info(`Assigning 'marionettePort' to the default value (${DEFAULT_MARIONETTE_PORT})`);
|
|
95
83
|
}
|
|
96
84
|
args.push('--marionette-port', `${this.marionettePort ?? DEFAULT_MARIONETTE_PORT}`);
|
|
97
85
|
}
|
|
98
|
-
else if (
|
|
86
|
+
else if (this.marionettePort != null) {
|
|
99
87
|
args.push('--marionette-port', `${this.marionettePort}`);
|
|
100
88
|
}
|
|
101
89
|
/* #endregion */
|
|
@@ -105,7 +93,7 @@ class GeckoDriverProcess {
|
|
|
105
93
|
}
|
|
106
94
|
this._proc = new teen_process_1.SubProcess(driverBin, args);
|
|
107
95
|
this._proc.on('output', (stdout, stderr) => {
|
|
108
|
-
const line =
|
|
96
|
+
const line = (stdout || stderr).trim();
|
|
109
97
|
if (line) {
|
|
110
98
|
this.log.debug(`[${GD_BINARY}] ${line}`);
|
|
111
99
|
}
|
|
@@ -146,9 +134,27 @@ class GeckoDriverProcess {
|
|
|
146
134
|
}
|
|
147
135
|
}
|
|
148
136
|
}
|
|
137
|
+
class GeckoProxy extends driver_1.JWProxy {
|
|
138
|
+
didProcessExit;
|
|
139
|
+
async proxyCommand(url, method, body = null) {
|
|
140
|
+
if (this.didProcessExit) {
|
|
141
|
+
throw new driver_1.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Gecko Driver server because ` +
|
|
142
|
+
'its process is not running (probably crashed). Check the Appium log for more details');
|
|
143
|
+
}
|
|
144
|
+
return await super.proxyCommand(url, method, body);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.GeckoProxy = GeckoProxy;
|
|
149
148
|
const RUNNING_PROCESS_IDS = [];
|
|
149
|
+
const removeRunningProcessId = (pid) => {
|
|
150
|
+
let idx = RUNNING_PROCESS_IDS.indexOf(pid);
|
|
151
|
+
while (idx >= 0) {
|
|
152
|
+
RUNNING_PROCESS_IDS.splice(idx, 1);
|
|
153
|
+
idx = RUNNING_PROCESS_IDS.indexOf(pid);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
150
156
|
process.once('exit', () => {
|
|
151
|
-
if (
|
|
157
|
+
if (RUNNING_PROCESS_IDS.length === 0) {
|
|
152
158
|
return;
|
|
153
159
|
}
|
|
154
160
|
const command = support_1.system.isWindows()
|
|
@@ -230,7 +236,7 @@ class GeckoDriverServer {
|
|
|
230
236
|
const pid = this._process.proc?.pid;
|
|
231
237
|
if (pid) {
|
|
232
238
|
RUNNING_PROCESS_IDS.push(pid);
|
|
233
|
-
this._process.proc?.on('exit', () =>
|
|
239
|
+
this._process.proc?.on('exit', () => removeRunningProcessId(pid));
|
|
234
240
|
}
|
|
235
241
|
return (await this._proxy.command('/session', 'POST', {
|
|
236
242
|
capabilities: {
|
package/build/lib/gecko.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"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"}
|
package/build/lib/utils.d.ts
CHANGED
|
@@ -14,9 +14,9 @@ export declare function mkdirp(p: string): Promise<void>;
|
|
|
14
14
|
/**
|
|
15
15
|
* Extract a specific file from a tar.gz archive
|
|
16
16
|
*/
|
|
17
|
-
export declare function extractFileFromTarGz(
|
|
17
|
+
export declare function extractFileFromTarGz(srcArchive: string, fileToExtract: string, dstPath: string): Promise<void>;
|
|
18
18
|
/**
|
|
19
19
|
* Extract a specific file from a zip archive
|
|
20
20
|
*/
|
|
21
|
-
export declare function extractFileFromZip(
|
|
21
|
+
export declare function extractFileFromZip(srcArchive: string, fileToExtract: string, dstPath: string): Promise<void>;
|
|
22
22
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAKhD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAkBpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/build/lib/utils.js
CHANGED
|
@@ -8,7 +8,6 @@ exports.downloadToFile = downloadToFile;
|
|
|
8
8
|
exports.mkdirp = mkdirp;
|
|
9
9
|
exports.extractFileFromTarGz = extractFileFromTarGz;
|
|
10
10
|
exports.extractFileFromZip = extractFileFromZip;
|
|
11
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
12
11
|
const support_1 = require("appium/support");
|
|
13
12
|
const tar_stream_1 = __importDefault(require("tar-stream"));
|
|
14
13
|
const node_zlib_1 = __importDefault(require("node:zlib"));
|
|
@@ -21,7 +20,7 @@ const GECKO_CAP_PREFIXES = ['moz:'];
|
|
|
21
20
|
*/
|
|
22
21
|
function formatCapsForServer(caps) {
|
|
23
22
|
const result = {};
|
|
24
|
-
for (const [name, value] of
|
|
23
|
+
for (const [name, value] of Object.entries(caps)) {
|
|
25
24
|
if (GECKO_CAP_PREFIXES.some((prefix) => name.startsWith(prefix)) ||
|
|
26
25
|
driver_1.STANDARD_CAPS.has(name)) {
|
|
27
26
|
result[name] = value;
|
|
@@ -32,7 +31,7 @@ function formatCapsForServer(caps) {
|
|
|
32
31
|
}
|
|
33
32
|
if (result.platformName) {
|
|
34
33
|
// Geckodriver only supports lowercase platform names
|
|
35
|
-
result.platformName =
|
|
34
|
+
result.platformName = result.platformName.toLowerCase();
|
|
36
35
|
}
|
|
37
36
|
return result;
|
|
38
37
|
}
|
|
@@ -51,7 +50,7 @@ async function mkdirp(p) {
|
|
|
51
50
|
/**
|
|
52
51
|
* Extract a specific file from a tar.gz archive
|
|
53
52
|
*/
|
|
54
|
-
async function extractFileFromTarGz(
|
|
53
|
+
async function extractFileFromTarGz(srcArchive, fileToExtract, dstPath) {
|
|
55
54
|
const chunks = [];
|
|
56
55
|
const extract = tar_stream_1.default.extract();
|
|
57
56
|
const extractPromise = new bluebird_1.default((resolve, reject) => {
|
|
@@ -77,20 +76,20 @@ async function extractFileFromTarGz(srcAcrhive, fileToExtract, dstPath) {
|
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
78
|
else {
|
|
80
|
-
return reject(new Error(`The file '${fileToExtract}' could not be found in the '${
|
|
79
|
+
return reject(new Error(`The file '${fileToExtract}' could not be found in the '${srcArchive}' archive`));
|
|
81
80
|
}
|
|
82
81
|
resolve();
|
|
83
82
|
});
|
|
84
83
|
});
|
|
85
|
-
support_1.fs.createReadStream(
|
|
84
|
+
support_1.fs.createReadStream(srcArchive).pipe(node_zlib_1.default.createGunzip()).pipe(extract);
|
|
86
85
|
await extractPromise;
|
|
87
86
|
}
|
|
88
87
|
/**
|
|
89
88
|
* Extract a specific file from a zip archive
|
|
90
89
|
*/
|
|
91
|
-
async function extractFileFromZip(
|
|
90
|
+
async function extractFileFromZip(srcArchive, fileToExtract, dstPath) {
|
|
92
91
|
let didFindEntry = false;
|
|
93
|
-
await support_1.zip.readEntries(
|
|
92
|
+
await support_1.zip.readEntries(srcArchive, async ({ entry, extractEntryTo }) => {
|
|
94
93
|
if (didFindEntry || entry.fileName !== fileToExtract) {
|
|
95
94
|
return;
|
|
96
95
|
}
|
|
@@ -105,7 +104,7 @@ async function extractFileFromZip(srcAcrhive, fileToExtract, dstPath) {
|
|
|
105
104
|
}
|
|
106
105
|
});
|
|
107
106
|
if (!didFindEntry) {
|
|
108
|
-
throw new Error(`The file '${fileToExtract}' could not be found in the '${
|
|
107
|
+
throw new Error(`The file '${fileToExtract}' could not be found in the '${srcArchive}' archive`);
|
|
109
108
|
}
|
|
110
109
|
}
|
|
111
110
|
//# sourceMappingURL=utils.js.map
|
package/build/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/commands/find.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import {util} from 'appium/support';
|
|
2
2
|
import type {GeckoDriver} from '../driver';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Find element(s) by given strategy and selector. If context is provided, search will be performed within the context element.
|
|
6
|
+
* This is needed to make lookup by image working.
|
|
7
|
+
* @this GeckoDriver
|
|
8
|
+
* @param strategy - The strategy to use for finding the element(s) (e.g., 'css selector', 'xpath', etc.)
|
|
9
|
+
* @param selector - The selector to use for finding the element(s)
|
|
10
|
+
* @param mult - Whether to find multiple elements (true) or a single element (false)
|
|
11
|
+
* @param context - Optional context element ID to search within
|
|
12
|
+
* @returns A promise that resolves to the found element(s)
|
|
13
|
+
*/
|
|
5
14
|
export async function findElOrEls(
|
|
6
15
|
this: GeckoDriver,
|
|
7
16
|
strategy: string,
|
package/lib/driver.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
1
|
import type {
|
|
3
2
|
RouteMatcher,
|
|
4
3
|
DefaultCreateSessionResult,
|
|
@@ -27,14 +26,17 @@ export class GeckoDriver
|
|
|
27
26
|
extends BaseDriver<GeckoConstraints, StringRecord>
|
|
28
27
|
implements ExternalDriver<GeckoConstraints, string, StringRecord>
|
|
29
28
|
{
|
|
29
|
+
public proxyReqRes: (...args: any) => any;
|
|
30
|
+
|
|
31
|
+
findElOrEls = findCommands.findElOrEls;
|
|
32
|
+
|
|
30
33
|
private isProxyActive: boolean = false;
|
|
31
34
|
private _gecko: GeckoDriverServer | null = null;
|
|
32
35
|
private _bidiProxyUrl: string | null = null;
|
|
33
|
-
public proxyReqRes: (...args: any) => any;
|
|
34
36
|
|
|
35
37
|
constructor(opts: InitialOpts = {} as InitialOpts) {
|
|
36
38
|
super(opts);
|
|
37
|
-
this.desiredCapConstraints =
|
|
39
|
+
this.desiredCapConstraints = structuredClone(desiredCapConstraints);
|
|
38
40
|
this.locatorStrategies = [
|
|
39
41
|
'xpath',
|
|
40
42
|
'tag name',
|
|
@@ -48,6 +50,17 @@ export class GeckoDriver
|
|
|
48
50
|
this.resetState();
|
|
49
51
|
}
|
|
50
52
|
|
|
53
|
+
get gecko(): GeckoDriverServer {
|
|
54
|
+
if (!this._gecko) {
|
|
55
|
+
throw new Error('Gecko driver is not initialized');
|
|
56
|
+
}
|
|
57
|
+
return this._gecko;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
override get bidiProxyUrl(): string | null {
|
|
61
|
+
return this._bidiProxyUrl;
|
|
62
|
+
}
|
|
63
|
+
|
|
51
64
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
52
65
|
override proxyActive(sessionId?: string): boolean {
|
|
53
66
|
return this.isProxyActive;
|
|
@@ -61,13 +74,6 @@ export class GeckoDriver
|
|
|
61
74
|
return true;
|
|
62
75
|
}
|
|
63
76
|
|
|
64
|
-
get gecko(): GeckoDriverServer {
|
|
65
|
-
if (!this._gecko) {
|
|
66
|
-
throw new Error('Gecko driver is not initialized');
|
|
67
|
-
}
|
|
68
|
-
return this._gecko;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
77
|
override validateDesiredCaps(caps: any): caps is any {
|
|
72
78
|
const isValid = super.validateDesiredCaps(caps);
|
|
73
79
|
if (!isValid) {
|
|
@@ -112,10 +118,6 @@ export class GeckoDriver
|
|
|
112
118
|
return [sessionId, processedCaps];
|
|
113
119
|
}
|
|
114
120
|
|
|
115
|
-
override get bidiProxyUrl(): string | null {
|
|
116
|
-
return this._bidiProxyUrl;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
121
|
override async deleteSession(): Promise<void> {
|
|
120
122
|
this.log.info('Ending Gecko Driver session');
|
|
121
123
|
await this._gecko?.stop();
|
|
@@ -133,7 +135,7 @@ export class GeckoDriver
|
|
|
133
135
|
|
|
134
136
|
private _extractWebSocketUrl(response: StringRecord): string | null {
|
|
135
137
|
const webSocketUrl = (response?.capabilities as any)?.webSocketUrl;
|
|
136
|
-
if (
|
|
138
|
+
if (typeof webSocketUrl !== 'string' || webSocketUrl.length === 0) {
|
|
137
139
|
return null;
|
|
138
140
|
}
|
|
139
141
|
try {
|
|
@@ -146,8 +148,6 @@ export class GeckoDriver
|
|
|
146
148
|
return null;
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
|
-
|
|
150
|
-
findElOrEls = findCommands.findElOrEls;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
export default GeckoDriver;
|