appium-geckodriver 2.1.12 → 2.2.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [2.2.1](https://github.com/appium/appium-geckodriver/compare/v2.2.0...v2.2.1) (2026-04-10)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * **deps-dev:** bump typescript from 5.9.3 to 6.0.2 ([#158](https://github.com/appium/appium-geckodriver/issues/158)) ([bf9246c](https://github.com/appium/appium-geckodriver/commit/bf9246c584c6a477c07c779c75ed6a28affeab8e))
6
+
7
+ ## [2.2.0](https://github.com/appium/appium-geckodriver/compare/v2.1.12...v2.2.0) (2026-03-17)
8
+
9
+ ### Features
10
+
11
+ * Add 'geckodriverExecutable' capability ([#157](https://github.com/appium/appium-geckodriver/issues/157)) ([0156715](https://github.com/appium/appium-geckodriver/commit/015671502b595040b242d3775a92fd8c8e0d97dd))
12
+
1
13
  ## [2.1.12](https://github.com/appium/appium-geckodriver/compare/v2.1.11...v2.1.12) (2026-02-16)
2
14
 
3
15
  ### Bug Fixes
package/README.md CHANGED
@@ -50,6 +50,7 @@ appium:marionettePort | Selects the port for Geckodriver’s connection to the M
50
50
  appium:systemPort | The number of the port for the driver to listen on. Must be unique for each session. If not provided then Appium will try to detect it automatically.
51
51
  appium:verbosity | The verbosity level of driver logging. By default minimum verbosity is applied. Possible values are `debug` or `trace`.
52
52
  appium:androidStorage | See https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-android-storage-var-android-storage-var-code
53
+ appium:geckodriverExecutable | Optional full path to the `geckodriver` binary to be used for this session instead of resolving it from `PATH`. Using this capability is considered an insecure feature and requires the Appium server to be started with the `custom_geckodriver_executable` insecure feature enabled (for example via `--allow-insecure gecko:custom_geckodriver_executable` or `--relaxed-security`). If the capability is provided but the insecure feature is not enabled, session creation will fail with a capability validation error.
53
54
  moz:firefoxOptions | See https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
54
55
  acceptInsecureCerts | See https://www.w3.org/TR/webdriver/#capabilities
55
56
  pageLoadStrategy | See https://www.w3.org/TR/webdriver/#capabilities
@@ -2,4 +2,13 @@ export declare const VERBOSITY: {
2
2
  readonly DEBUG: "debug";
3
3
  readonly TRACE: "trace";
4
4
  };
5
+ /**
6
+ * Insecure feature flag name which must be enabled on the Appium server
7
+ * in order to use the `geckodriverExecutable` capability.
8
+ *
9
+ * Note: when starting the Appium server, this feature must be referenced
10
+ * with the automation name prefix (for example
11
+ * `--allow-insecure gecko:custom_geckodriver_executable`).
12
+ */
13
+ export declare const INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE: "custom_geckodriver_executable";
5
14
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;CAGZ,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,2CAA2C,EAAG,+BAAwC,CAAC"}
@@ -1,8 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VERBOSITY = void 0;
3
+ exports.INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE = exports.VERBOSITY = void 0;
4
4
  exports.VERBOSITY = {
5
5
  DEBUG: 'debug',
6
6
  TRACE: 'trace',
7
7
  };
8
+ /**
9
+ * Insecure feature flag name which must be enabled on the Appium server
10
+ * in order to use the `geckodriverExecutable` capability.
11
+ *
12
+ * Note: when starting the Appium server, this feature must be referenced
13
+ * with the automation name prefix (for example
14
+ * `--allow-insecure gecko:custom_geckodriver_executable`).
15
+ */
16
+ exports.INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE = 'custom_geckodriver_executable';
8
17
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG;IACvB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACN,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG;IACvB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACN,CAAC;AAEX;;;;;;;GAOG;AACU,QAAA,2CAA2C,GAAG,+BAAwC,CAAC"}
@@ -29,6 +29,9 @@ export declare const desiredCapConstraints: {
29
29
  readonly marionettePort: {
30
30
  readonly isNumber: true;
31
31
  };
32
+ readonly geckodriverExecutable: {
33
+ readonly isString: true;
34
+ };
32
35
  readonly verbosity: {
33
36
  readonly isString: true;
34
37
  readonly inclusionCaseInsensitive: [string, ...string[]];
@@ -1 +1 @@
1
- {"version":3,"file":"desired-caps.d.ts","sourceRoot":"","sources":["../../lib/desired-caps.ts"],"names":[],"mappings":"AA+CA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAXwB,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;;;;;;;;;CAWnB,CAAC"}
1
+ {"version":3,"file":"desired-caps.d.ts","sourceRoot":"","sources":["../../lib/desired-caps.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAXwB,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;;;;;;;;;CAWnB,CAAC"}
@@ -33,6 +33,9 @@ const DESIRED_CAP_CONSTRAINTS = {
33
33
  marionettePort: {
34
34
  isNumber: true,
35
35
  },
36
+ geckodriverExecutable: {
37
+ isString: true,
38
+ },
36
39
  verbosity: {
37
40
  isString: true,
38
41
  inclusionCaseInsensitive: Object.values(constants_1.VERBOSITY),
@@ -1 +1 @@
1
- {"version":3,"file":"desired-caps.js","sourceRoot":"","sources":["../../lib/desired-caps.ts"],"names":[],"mappings":";;;AACA,2CAAsC;AAEtC,MAAM,uBAAuB,GAAG;IAC9B,WAAW,EAAE;QACX,QAAQ,EAAE,IAAI;KACf;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;KAChB;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,IAAI;KACf;IACD,aAAa,EAAE;QACb,SAAS,EAAE,IAAI;KAChB;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,IAAI;KACf;IACD,uBAAuB,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,IAAI;KACf;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAS,CAA0B;KAC5E;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,IAAI;QACd,wBAAwB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC;KAChE;IACD,oBAAoB,EAAE;QACpB,QAAQ,EAAE,IAAI;KACf;CAC6B,CAAC;AAEpB,QAAA,qBAAqB,GAAG,uBAAuB,CAAC"}
1
+ {"version":3,"file":"desired-caps.js","sourceRoot":"","sources":["../../lib/desired-caps.ts"],"names":[],"mappings":";;;AACA,2CAAsC;AAEtC,MAAM,uBAAuB,GAAG;IAC9B,WAAW,EAAE;QACX,QAAQ,EAAE,IAAI;KACf;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI;KAChB;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,IAAI;KACf;IACD,aAAa,EAAE;QACb,SAAS,EAAE,IAAI;KAChB;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,IAAI;KACf;IACD,uBAAuB,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,IAAI;KACf;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,IAAI;KACf;IACD,qBAAqB,EAAE;QACrB,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,IAAI;QACd,wBAAwB,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAS,CAA0B;KAC5E;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,IAAI;QACd,wBAAwB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC;KAChE;IACD,oBAAoB,EAAE;QACpB,QAAQ,EAAE,IAAI;KACf;CAC6B,CAAC;AAEpB,QAAA,qBAAqB,GAAG,uBAAuB,CAAC"}
@@ -14,6 +14,7 @@ export declare class GeckoDriver extends BaseDriver<GeckoConstraints, StringReco
14
14
  getProxyAvoidList(): RouteMatcher[];
15
15
  canProxy(): boolean;
16
16
  get gecko(): GeckoDriverServer;
17
+ validateDesiredCaps(caps: any): caps is any;
17
18
  createSession(w3cCaps1: W3CDriverCaps<GeckoConstraints>, w3cCaps2?: W3CDriverCaps<GeckoConstraints>, ...args: any[]): Promise<DefaultCreateSessionResult<GeckoConstraints>>;
18
19
  get bidiProxyUrl(): string | null;
19
20
  deleteSession(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAoB,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AACrD,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;IAEjE,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAuB;IACrC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;gBAE9B,IAAI,GAAE,WAA+B;IAiBxC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAIxC,iBAAiB,IAAI,YAAY,EAAE;IAInC,QAAQ,IAAI,OAAO;IAI5B,IAAI,KAAK,IAAI,iBAAiB,CAK7B;IAEc,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;IAqBxD,IAAa,YAAY,IAAI,MAAM,GAAG,IAAI,CAEzC;IAEc,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,oBAAoB;IAgB5B,WAAW,kCAA4B;CACxC;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"AACA,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;IAEjE,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,aAAa,CAAuB;IACrC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;gBAE9B,IAAI,GAAE,WAA+B;IAiBxC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAIxC,iBAAiB,IAAI,YAAY,EAAE;IAInC,QAAQ,IAAI,OAAO;IAI5B,IAAI,KAAK,IAAI,iBAAiB,CAK7B;IAEQ,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;IAqBxD,IAAa,YAAY,IAAI,MAAM,GAAG,IAAI,CAEzC;IAEc,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,oBAAoB;IAgB5B,WAAW,kCAA4B;CACxC;AAED,eAAe,WAAW,CAAC"}
@@ -41,6 +41,7 @@ const lodash_1 = __importDefault(require("lodash"));
41
41
  const driver_1 = require("appium/driver");
42
42
  const gecko_1 = require("./gecko");
43
43
  const desired_caps_1 = require("./desired-caps");
44
+ const constants_1 = require("./constants");
44
45
  const findCommands = __importStar(require("./commands/find"));
45
46
  const utils_1 = require("./utils");
46
47
  const NO_PROXY = [
@@ -85,6 +86,19 @@ class GeckoDriver extends driver_1.BaseDriver {
85
86
  }
86
87
  return this._gecko;
87
88
  }
89
+ validateDesiredCaps(caps) {
90
+ const isValid = super.validateDesiredCaps(caps);
91
+ if (!isValid) {
92
+ return false;
93
+ }
94
+ if (caps.geckodriverExecutable &&
95
+ !this.isFeatureEnabled(constants_1.INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE)) {
96
+ throw new driver_1.errors.SessionNotCreatedError(`The 'geckodriverExecutable' capability requires the ` +
97
+ `'${constants_1.INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE}' insecure feature to be enabled ` +
98
+ `on the Appium server.`);
99
+ }
100
+ return true;
101
+ }
88
102
  async createSession(w3cCaps1, w3cCaps2, ...args) {
89
103
  const [sessionId, processedCaps] = await super.createSession(w3cCaps1, w3cCaps2, ...args);
90
104
  this._gecko = new gecko_1.GeckoDriverServer(this.log, processedCaps);
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"AAGA,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;AAED,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;AA0ID,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"}
1
+ {"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"AAGA,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;AAED,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;AAyJD,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"}
@@ -36,6 +36,7 @@ class GeckoDriverProcess {
36
36
  verbosity;
37
37
  androidStorage;
38
38
  marionettePort;
39
+ geckodriverExecutable;
39
40
  _port;
40
41
  log;
41
42
  _proc = null;
@@ -44,6 +45,7 @@ class GeckoDriverProcess {
44
45
  this.verbosity = opts.verbosity;
45
46
  this.androidStorage = opts.androidStorage;
46
47
  this.marionettePort = opts.marionettePort;
48
+ this.geckodriverExecutable = opts.geckodriverExecutable;
47
49
  this._port = opts.systemPort;
48
50
  this.log = log;
49
51
  }
@@ -73,14 +75,7 @@ class GeckoDriverProcess {
73
75
  }
74
76
  });
75
77
  }
76
- let driverBin;
77
- try {
78
- driverBin = await support_1.fs.which(GD_BINARY);
79
- }
80
- catch {
81
- throw new Error(`${GD_BINARY} binary cannot be found in PATH. ` +
82
- `Please make sure it is present on your system`);
83
- }
78
+ const driverBin = await this.resolveGeckodriverBinary();
84
79
  const args = [];
85
80
  /* #region Options */
86
81
  switch (lodash_1.default.toLower(this.verbosity)) {
@@ -134,6 +129,22 @@ class GeckoDriverProcess {
134
129
  catch { }
135
130
  }
136
131
  }
132
+ async resolveGeckodriverBinary() {
133
+ if (this.geckodriverExecutable) {
134
+ if (!(await support_1.fs.exists(this.geckodriverExecutable))) {
135
+ throw new Error(`The custom geckodriver binary at '${this.geckodriverExecutable}' cannot be found. ` +
136
+ `Make sure the path is correct and accessible to the Appium server process`);
137
+ }
138
+ return this.geckodriverExecutable;
139
+ }
140
+ try {
141
+ return await support_1.fs.which(GD_BINARY);
142
+ }
143
+ catch {
144
+ throw new Error(`${GD_BINARY} binary cannot be found in PATH. ` +
145
+ `Please make sure it is present on your system`);
146
+ }
147
+ }
137
148
  }
138
149
  const RUNNING_PROCESS_IDS = [];
139
150
  process.once('exit', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../lib/gecko.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,sDAAyB;AACzB,0DAA6B;AAC7B,0CAA8C;AAC9C,4CAAgD;AAChD,+CAAwC;AACxC,uCAA0C;AAC1C,6CAA8C;AAC9C,2DAA4C;AAE5C,2CAAsC;AAEtC,MAAM,SAAS,GAAG,cAAc,gBAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnE,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,aAAa;AAC/C,MAAM,gBAAgB,GAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxD,MAAM,kBAAkB,GAAG,cAAI,CAAC,gBAAgB,CAC9C,mBAAI,CAAC,OAAO,CAAC,iBAAE,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,EACpD,EAAC,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAC,CAChC,CAAC;AACF,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACxB,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAM7C,MAAa,UAAW,SAAQ,gBAAO;IACrC,cAAc,CAAW;IAEhB,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAkB,EAAE,OAAiB,IAAI;QAChF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,eAAM,CAAC,mBAAmB,CAClC,IAAI,MAAM,IAAI,GAAG,qDAAqD;gBACpE,sFAAsF,CACzF,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;CACF;AAZD,gCAYC;AAED,MAAM,kBAAkB;IACL,OAAO,CAAW;IAClB,SAAS,CAAU;IACnB,cAAc,CAAU;IACxB,cAAc,CAAU;IACxB,qBAAqB,CAAU;IACxC,KAAK,CAAU;IACN,GAAG,CAAe;IAC3B,KAAK,GAAsB,IAAI,CAAC;IAExC,YAAY,GAAiB,EAAE,OAAqB,EAAE;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;gBAC9C,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,GAAG,MAAM,IAAA,+BAAiB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC3D,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CACb,sCAAsC,SAAS,KAAK,OAAO,IAAI;wBAC7D,oFAAoF;wBACpF,+FAA+F,CAClG,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACxD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,qBAAqB;QACrB,QAAQ,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,KAAK,qBAAS,CAAC,KAAK;gBAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,MAAM;YACR,KAAK,qBAAS,CAAC,KAAK;gBAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;QACV,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAChC,oGAAoG;YACpG,IAAI,gBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,8EAA8E,CAC/E,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,oDAAoD,uBAAuB,GAAG,CAC/E,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,uBAAuB,EAAE,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,CAAC,gBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,gBAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,yBAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,gBAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,yBAAyB,IAAI,YAAY,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,SAAS,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,CAAC,qBAAqB,qBAAqB;oBAClF,2EAA2E,CAC9E,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,YAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,mCAAmC;gBAC7C,+CAA+C,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,mBAAmB,GAA2B,EAAE,CAAC;AACvD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IACxB,IAAI,gBAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,gBAAM,CAAC,SAAS,EAAE;QAChC,CAAC,CAAC,eAAe;YACf,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;iBAClE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;iBAC3B,IAAI,CAAC,GAAG,CAAC;QACd,CAAC,CAAC,QAAQ,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9F,IAAI,CAAC;QACH,IAAA,6BAAQ,EAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,MAAa,iBAAiB;IACpB,MAAM,GAAsB,IAAI,CAAC;IACxB,QAAQ,CAAqB;IAC7B,GAAG,CAAe;IAEnC,YAAY,GAAiB,EAAE,IAAkB;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAuB,EAAE,OAAuB,EAAE;QAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3B,MAAM,SAAS,GAAQ;YACrB,MAAM,EAAE,yBAAiB;YACzB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAA,2BAAgB,EACpB,KAAK,IAAI,EAAE;gBACT,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC7C,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;wBAChC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC/B,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,EACD;gBACE,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,IAAI;aACjB,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC5B,4BAA4B;gBAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,+CAA+C,kBAAkB,cAAc;oBAC7E,wDAAwD,CAC3D,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;QACpC,IAAI,GAAG,EAAE,CAAC;YACR,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,gBAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;YACpD,YAAY,EAAE;gBACZ,UAAU,EAAE,CAAC,EAAE,CAAC;gBAChB,WAAW,EAAE,SAAS;aACvB;SACF,CAAC,CAAiB,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,OAAO,0BAA0B,CAAC,CAAC;YAC9F,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AA7GD,8CA6GC;AAED,kBAAe,iBAAiB,CAAC"}
package/lib/constants.ts CHANGED
@@ -2,3 +2,13 @@ export const VERBOSITY = {
2
2
  DEBUG: 'debug',
3
3
  TRACE: 'trace',
4
4
  } as const;
5
+
6
+ /**
7
+ * Insecure feature flag name which must be enabled on the Appium server
8
+ * in order to use the `geckodriverExecutable` capability.
9
+ *
10
+ * Note: when starting the Appium server, this feature must be referenced
11
+ * with the automation name prefix (for example
12
+ * `--allow-insecure gecko:custom_geckodriver_executable`).
13
+ */
14
+ export const INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE = 'custom_geckodriver_executable' as const;
@@ -32,6 +32,9 @@ const DESIRED_CAP_CONSTRAINTS = {
32
32
  marionettePort: {
33
33
  isNumber: true,
34
34
  },
35
+ geckodriverExecutable: {
36
+ isString: true,
37
+ },
35
38
  verbosity: {
36
39
  isString: true,
37
40
  inclusionCaseInsensitive: Object.values(VERBOSITY) as [string, ...string[]],
package/lib/driver.ts CHANGED
@@ -7,9 +7,10 @@ import type {
7
7
  ExternalDriver,
8
8
  W3CDriverCaps,
9
9
  } from '@appium/types';
10
- import {BaseDriver} from 'appium/driver';
10
+ import {BaseDriver, errors} from 'appium/driver';
11
11
  import {GECKO_SERVER_HOST, GeckoDriverServer} from './gecko';
12
12
  import {desiredCapConstraints} from './desired-caps';
13
+ import {INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE} from './constants';
13
14
  import * as findCommands from './commands/find';
14
15
  import {formatCapsForServer} from './utils';
15
16
 
@@ -67,6 +68,25 @@ export class GeckoDriver
67
68
  return this._gecko;
68
69
  }
69
70
 
71
+ override validateDesiredCaps(caps: any): caps is any {
72
+ const isValid = super.validateDesiredCaps(caps);
73
+ if (!isValid) {
74
+ return false;
75
+ }
76
+
77
+ if (
78
+ caps.geckodriverExecutable &&
79
+ !this.isFeatureEnabled(INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE)
80
+ ) {
81
+ throw new errors.SessionNotCreatedError(
82
+ `The 'geckodriverExecutable' capability requires the ` +
83
+ `'${INSECURE_FEAT_CUSTOM_GECKODRIVER_EXECUTABLE}' insecure feature to be enabled ` +
84
+ `on the Appium server.`,
85
+ );
86
+ }
87
+ return true;
88
+ }
89
+
70
90
  override async createSession(
71
91
  w3cCaps1: W3CDriverCaps<GeckoConstraints>,
72
92
  w3cCaps2?: W3CDriverCaps<GeckoConstraints>,
package/lib/gecko.ts CHANGED
@@ -43,6 +43,7 @@ class GeckoDriverProcess {
43
43
  private readonly verbosity?: string;
44
44
  private readonly androidStorage?: string;
45
45
  private readonly marionettePort?: number;
46
+ private readonly geckodriverExecutable?: string;
46
47
  private _port?: number;
47
48
  private readonly log: AppiumLogger;
48
49
  private _proc: SubProcess | null = null;
@@ -52,6 +53,7 @@ class GeckoDriverProcess {
52
53
  this.verbosity = opts.verbosity;
53
54
  this.androidStorage = opts.androidStorage;
54
55
  this.marionettePort = opts.marionettePort;
56
+ this.geckodriverExecutable = opts.geckodriverExecutable;
55
57
  this._port = opts.systemPort;
56
58
  this.log = log;
57
59
  }
@@ -88,15 +90,7 @@ class GeckoDriverProcess {
88
90
  });
89
91
  }
90
92
 
91
- let driverBin: string;
92
- try {
93
- driverBin = await fs.which(GD_BINARY);
94
- } catch {
95
- throw new Error(
96
- `${GD_BINARY} binary cannot be found in PATH. ` +
97
- `Please make sure it is present on your system`,
98
- );
99
- }
93
+ const driverBin = await this.resolveGeckodriverBinary();
100
94
  const args: string[] = [];
101
95
  /* #region Options */
102
96
  switch (_.toLower(this.verbosity)) {
@@ -155,6 +149,27 @@ class GeckoDriverProcess {
155
149
  } catch {}
156
150
  }
157
151
  }
152
+
153
+ private async resolveGeckodriverBinary(): Promise<string> {
154
+ if (this.geckodriverExecutable) {
155
+ if (!(await fs.exists(this.geckodriverExecutable))) {
156
+ throw new Error(
157
+ `The custom geckodriver binary at '${this.geckodriverExecutable}' cannot be found. ` +
158
+ `Make sure the path is correct and accessible to the Appium server process`,
159
+ );
160
+ }
161
+ return this.geckodriverExecutable;
162
+ }
163
+
164
+ try {
165
+ return await fs.which(GD_BINARY);
166
+ } catch {
167
+ throw new Error(
168
+ `${GD_BINARY} binary cannot be found in PATH. ` +
169
+ `Please make sure it is present on your system`,
170
+ );
171
+ }
172
+ }
158
173
  }
159
174
 
160
175
  const RUNNING_PROCESS_IDS: (number | undefined)[] = [];