appium-geckodriver 3.0.3 → 3.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/CHANGELOG.md +6 -0
- package/README.md +23 -167
- package/npm-shrinkwrap.json +104 -27
- package/package.json +48 -41
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [3.0.4](https://github.com/appium/appium-geckodriver/compare/v3.0.3...v3.0.4) (2026-06-22)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* actually enable doctor checks ([#176](https://github.com/appium/appium-geckodriver/issues/176)) ([ca23c16](https://github.com/appium/appium-geckodriver/commit/ca23c16db720d4443b3f9458ed22190994238a41))
|
|
6
|
+
|
|
1
7
|
## [3.0.3](https://github.com/appium/appium-geckodriver/compare/v3.0.2...v3.0.3) (2026-06-19)
|
|
2
8
|
|
|
3
9
|
### Miscellaneous Chores
|
package/README.md
CHANGED
|
@@ -1,180 +1,36 @@
|
|
|
1
|
-
Appium Geckodriver
|
|
2
|
-
|
|
1
|
+
## Appium Geckodriver
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="https://appium.github.io/appium-geckodriver/">
|
|
5
|
+
<img alt="Appium Geckodriver" src="./docs/assets/images/appium-plus-gecko.png" width="400">
|
|
6
|
+
</a>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<div align="center">
|
|
3
10
|
|
|
4
11
|
[](https://npmjs.org/package/appium-geckodriver)
|
|
5
12
|
[](https://npmjs.org/package/appium-geckodriver)
|
|
6
|
-
|
|
7
13
|
[](https://github.com/appium/appium-geckodriver/actions/workflows/publish.js.yml)
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
The driver only supports Firefox and Gecko-based web views (Android only) automation using [W3C WebDriver protocol](https://www.w3.org/TR/webdriver/).
|
|
11
|
-
Under the hood this driver is a wrapper/proxy over `geckodriver` binary. Check the driver [release notes](https://github.com/mozilla/geckodriver/releases) and the [official documentation](https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities) to get more details on the supported features and possible pitfalls.
|
|
12
|
-
|
|
13
|
-
> [!IMPORTANT]
|
|
14
|
-
> Since major version *2.0.0*, this driver is only compatible with Appium 3. Use the `appium driver install gecko`
|
|
15
|
-
> command to add it to your distribution.
|
|
16
|
-
|
|
17
|
-
## Requirements
|
|
18
|
-
|
|
19
|
-
It is mandatory to have both Firefox browser installed and the geckodriver binary downloaded on the platform where automated tests are going to be executed. Firefox could be downloaded from the [official download site](https://www.mozilla.org/en-GB/firefox/all/) and the driver binary could be retrieved from the GitHub [releases page](https://github.com/mozilla/geckodriver/releases). The binary must be put into one of the folders included to PATH environment variable. On macOS it also might be necessary to run `xattr -cr "<binary_path>"` to avoid [notarization](https://firefox-source-docs.mozilla.org/testing/geckodriver/Notarization.html) issues.
|
|
20
|
-
|
|
21
|
-
Since driver version 1.4.0 the geckodriver binary deployment could be automated via the
|
|
22
|
-
[install-geckodriver](#install-geckodriver) driver script.
|
|
23
|
-
|
|
24
|
-
Then you need to decide where the automated test is going to be executed. Gecko driver supports the following target platforms:
|
|
25
|
-
- macOS
|
|
26
|
-
- Windows
|
|
27
|
-
- Linux
|
|
28
|
-
- Android (note that `android` *cannot* be passed as a value to `platformName` capability; it should always equal to the *host* platform name)
|
|
29
|
-
|
|
30
|
-
In order to run your automated tests on an Android device it is necessary to have [Android SDK](https://developer.android.com/studio) installed, so the destination device is marked as `online` in the `adb devices -l` command output.
|
|
31
|
-
|
|
32
|
-
### Doctor
|
|
33
|
-
|
|
34
|
-
Since driver version 1.3.0 you can automate the validation for the most of the above
|
|
35
|
-
requirements as well as various optional ones needed by driver extensions by running the
|
|
36
|
-
`appium driver doctor gecko` server command.
|
|
37
|
-
|
|
38
|
-
## Capabilities
|
|
39
|
-
|
|
40
|
-
Gecko driver allows defining of multiple criterions for platform selection and also to fine-tune your automation session properties. This could be done via the following session capabilities:
|
|
41
|
-
|
|
42
|
-
Capability Name | Description
|
|
43
|
-
--- | ---
|
|
44
|
-
platformName | Gecko Driver supports the following platforms: `mac`, `linux`, `windows`. The fact your test must be executed on Android is detected based on `moz:firefoxOptions` entry values. Values of platformName are compared case-insensitively.
|
|
45
|
-
browserName | Any value passed to this capability will be changed to 'firefox'.
|
|
46
|
-
browserVersion | Provide the version number of the browser to automate if there are multiple versions installed on the same machine where the driver is running.
|
|
47
|
-
appium:automationName | Must always be set to `Gecko`.
|
|
48
|
-
appium:noReset | Being set to `true` adds the `--connect-existing` argument to the server, that allows to connect to an existing browser instance instead of starting a new browser instance on session startup.
|
|
49
|
-
appium:marionettePort | Selects the port for Geckodriver’s connection to the Marionette remote protocol. The existing Firefox instance must have Marionette enabled. To enable the remote protocol in Firefox, you can pass the `-marionette` flag. Unless the `marionette.port` preference has been user-set, Marionette will listen on port `2828`, which is the default value for this capability.
|
|
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
|
-
appium:verbosity | The verbosity level of driver logging. By default minimum verbosity is applied. Possible values are `debug` or `trace`.
|
|
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.
|
|
54
|
-
moz:firefoxOptions | See https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
|
|
55
|
-
acceptInsecureCerts | See https://www.w3.org/TR/webdriver/#capabilities
|
|
56
|
-
pageLoadStrategy | See https://www.w3.org/TR/webdriver/#capabilities
|
|
57
|
-
proxy | See https://www.w3.org/TR/webdriver/#capabilities
|
|
58
|
-
setWindowRect | See https://www.w3.org/TR/webdriver/#capabilities
|
|
59
|
-
timeouts | See https://www.w3.org/TR/webdriver/#capabilities
|
|
60
|
-
unhandledPromptBehavior | See https://www.w3.org/TR/webdriver/#capabilities
|
|
61
|
-
|
|
62
|
-
## Scripts
|
|
15
|
+
</div>
|
|
63
16
|
|
|
64
|
-
|
|
17
|
+
---
|
|
65
18
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
on macOS and Linux or into `%LOCALAPPDATA%\Mozilla\geckodriver.exe` on Windows.
|
|
72
|
-
You must also make sure the `%LOCALAPPDATA%\Mozilla` (Windows) or `/usr/local/bin/` (Linux & macOS)
|
|
73
|
-
folder is present in the PATH environment variable before
|
|
74
|
-
starting an actual automation session. The deployment script should also show a warning message if
|
|
75
|
-
it is unable to find the parent folder in the PATH folders list.
|
|
19
|
+
<p align="center"><b>
|
|
20
|
+
<a href="https://appium.github.io/appium-geckodriver/">Documentation</a> |
|
|
21
|
+
<a href="https://appium.github.io/appium-geckodriver/latest/getting-started/">Get Started</a> |
|
|
22
|
+
<a href="https://github.com/appium/appium-geckodriver/blob/master/CHANGELOG.md">Changelog</a>
|
|
23
|
+
</b></p>
|
|
76
24
|
|
|
77
|
-
|
|
25
|
+
---
|
|
78
26
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
import pytest
|
|
82
|
-
import time
|
|
27
|
+
This is Appium driver for automating Gecko-based browsers (such as Firefox) and webviews on different
|
|
28
|
+
platforms, including Android.
|
|
83
29
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
from appium.options.gecko import GeckoOptions
|
|
87
|
-
from selenium.webdriver.common.by import By
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def generate_options():
|
|
91
|
-
common_caps = {
|
|
92
|
-
# It does not really matter what to put there, although setting 'Firefox' might cause a failure
|
|
93
|
-
# depending on the particular client library
|
|
94
|
-
'browserName': 'MozillaFirefox',
|
|
95
|
-
# Should have the name of the host platform, where the geckodriver binary is deployed
|
|
96
|
-
'platformName': 'mac',
|
|
97
|
-
}
|
|
98
|
-
android_options = GeckoOptions().load_capabilities(common_caps)
|
|
99
|
-
android_options.firefox_options = {
|
|
100
|
-
'androidDeviceSerial': '<device/emulator serial>',
|
|
101
|
-
# These capabilities depend on what you are going to automate
|
|
102
|
-
# Refer Mozilla documentation at https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions for more details
|
|
103
|
-
'androidPackage': 'org.mozilla.firefox',
|
|
104
|
-
}
|
|
105
|
-
desktop_options = GeckoOptions().load_capabilities(common_caps)
|
|
106
|
-
return [android_options, desktop_options]
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
@pytest.fixture(params=generate_options())
|
|
110
|
-
def driver(request):
|
|
111
|
-
# The default URL is http://127.0.0.1:4723/wd/hub in Appium1
|
|
112
|
-
drv = webdriver.Remote('http://127.0.0.1:4723', options=request.param)
|
|
113
|
-
yield drv
|
|
114
|
-
drv.quit()
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
class TimeoutError(Exception):
|
|
118
|
-
pass
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
def wait_until_truthy(func, timeout_sec=5.0, interval_sec=0.5):
|
|
122
|
-
started = time.time()
|
|
123
|
-
original_error = None
|
|
124
|
-
while time.time() - started < timeout_sec:
|
|
125
|
-
original_error = None
|
|
126
|
-
try:
|
|
127
|
-
result = func()
|
|
128
|
-
if result:
|
|
129
|
-
return result
|
|
130
|
-
except Exception as e:
|
|
131
|
-
original_error = e
|
|
132
|
-
time.sleep(interval_sec)
|
|
133
|
-
if original_error is None:
|
|
134
|
-
raise TimeoutError(f'Condition unmet after {timeout_sec}s timeout')
|
|
135
|
-
raise original_error
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
def test_feature_status_page_search(driver):
|
|
139
|
-
driver.get('https://webkit.org/status/')
|
|
140
|
-
|
|
141
|
-
# Enter "CSS" into the search box.
|
|
142
|
-
# Ensures that at least one result appears in search
|
|
143
|
-
# !!! Remember there are no ID and NAME locators in W3C standard
|
|
144
|
-
# These two have been superseded by CSS ones
|
|
145
|
-
search_box = driver.find_element_by_css('#search')
|
|
146
|
-
search_box.send_keys('CSS')
|
|
147
|
-
value = search_box.get_attribute('value')
|
|
148
|
-
assert len(value) > 0
|
|
149
|
-
search_box.submit()
|
|
150
|
-
# Count the visible results when filters are applied
|
|
151
|
-
# so one result shows up in at most one filter
|
|
152
|
-
assert wait_until_truthy(
|
|
153
|
-
lambda: len(driver.execute_script("return document.querySelectorAll('li.feature:not(.is-hidden)')")) > 0)
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
def test_feature_status_page_filters(driver):
|
|
157
|
-
driver.get('https://webkit.org/status/')
|
|
158
|
-
|
|
159
|
-
assert wait_until_truthy(
|
|
160
|
-
lambda: len(driver.execute_script("return document.querySelectorAll('.filter-toggle')")) == 7)
|
|
161
|
-
|
|
162
|
-
# Make sure every filter is turned off.
|
|
163
|
-
for checked_filter in filter(lambda f: f.is_selected(), filters):
|
|
164
|
-
checked_filter.click()
|
|
30
|
+
> [!IMPORTANT]
|
|
31
|
+
> Since major version *2.0.0*, this driver is only compatible with Appium 3.
|
|
165
32
|
|
|
166
|
-
# Make sure you can select every filter.
|
|
167
|
-
for filt in filters:
|
|
168
|
-
filt.click()
|
|
169
|
-
assert filt.is_selected()
|
|
170
|
-
filt.click()
|
|
171
|
-
```
|
|
172
33
|
|
|
173
|
-
##
|
|
34
|
+
## Documentation
|
|
174
35
|
|
|
175
|
-
|
|
176
|
-
# clone repo, then in repo dir:
|
|
177
|
-
npm install
|
|
178
|
-
npm run lint
|
|
179
|
-
npm run test
|
|
180
|
-
```
|
|
36
|
+
You can access the documentation here: [**https://appium.github.io/appium-geckodriver**](https://appium.github.io/appium-geckodriver)
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-geckodriver",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "appium-geckodriver",
|
|
9
|
-
"version": "3.0.
|
|
9
|
+
"version": "3.0.4",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"appium-adb": "^15.0.0",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"teen_process": "^4.0.4"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
+
"@appium/docutils": "^2.5.0",
|
|
22
23
|
"@appium/eslint-config-appium-ts": "^3.0.0",
|
|
23
24
|
"@appium/tsconfig": "^1.0.0-rc.1",
|
|
24
25
|
"@appium/types": "^1.0.0-rc.1",
|
|
@@ -41,6 +42,44 @@
|
|
|
41
42
|
"appium": "^3.0.0-rc.2"
|
|
42
43
|
}
|
|
43
44
|
},
|
|
45
|
+
"node_modules/@appium/docutils": {
|
|
46
|
+
"version": "2.5.1",
|
|
47
|
+
"resolved": "https://registry.npmjs.org/@appium/docutils/-/docutils-2.5.1.tgz",
|
|
48
|
+
"integrity": "sha512-P2Kveb4I68KGC6gAY0TRTVgvqBaZW3WqpnHgK0iiN+lLhaxBoRrqoaGJR95oPb93sgkZQT59ZexdZ5KXf8wFtA==",
|
|
49
|
+
"license": "Apache-2.0",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@appium/support": "7.2.5",
|
|
52
|
+
"consola": "3.4.2",
|
|
53
|
+
"diff": "9.0.0",
|
|
54
|
+
"lilconfig": "3.1.3",
|
|
55
|
+
"normalize-package-data": "8.0.0",
|
|
56
|
+
"teen_process": "4.1.3",
|
|
57
|
+
"type-fest": "5.7.0",
|
|
58
|
+
"yaml": "2.9.0",
|
|
59
|
+
"yargs": "18.0.0",
|
|
60
|
+
"yargs-parser": "22.0.0"
|
|
61
|
+
},
|
|
62
|
+
"bin": {
|
|
63
|
+
"appium-docs": "bin/appium-docs.js"
|
|
64
|
+
},
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": "^20.19.0 || ^22.12.0 || >=24.0.0",
|
|
67
|
+
"npm": ">=10"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"node_modules/@appium/docutils/node_modules/teen_process": {
|
|
71
|
+
"version": "4.1.3",
|
|
72
|
+
"resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.3.tgz",
|
|
73
|
+
"integrity": "sha512-8W7Xp7WtJ5ZXjv0iHMsCgPPKzUt6ACfG/rDWX0tMIlMJaYcTYsPw3ZQQ9+hG7YsY+gm+DUATiyah3AraJ9JYpg==",
|
|
74
|
+
"license": "Apache-2.0",
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"shell-quote": "^1.8.1"
|
|
77
|
+
},
|
|
78
|
+
"engines": {
|
|
79
|
+
"node": "^20.19.0 || ^22.12.0 || >=24.0.0",
|
|
80
|
+
"npm": ">=10"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
44
83
|
"node_modules/@appium/logger": {
|
|
45
84
|
"version": "2.0.9",
|
|
46
85
|
"resolved": "https://registry.npmjs.org/@appium/logger/-/logger-2.0.9.tgz",
|
|
@@ -106,6 +145,18 @@
|
|
|
106
145
|
"sharp": "0.35.1"
|
|
107
146
|
}
|
|
108
147
|
},
|
|
148
|
+
"node_modules/@appium/support/node_modules/semver": {
|
|
149
|
+
"version": "7.8.4",
|
|
150
|
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz",
|
|
151
|
+
"integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==",
|
|
152
|
+
"license": "ISC",
|
|
153
|
+
"bin": {
|
|
154
|
+
"semver": "bin/semver.js"
|
|
155
|
+
},
|
|
156
|
+
"engines": {
|
|
157
|
+
"node": ">=10"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
109
160
|
"node_modules/@appium/support/node_modules/teen_process": {
|
|
110
161
|
"version": "4.1.3",
|
|
111
162
|
"resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.3.tgz",
|
|
@@ -227,7 +278,6 @@
|
|
|
227
278
|
"version": "6.2.2",
|
|
228
279
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
|
229
280
|
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
|
|
230
|
-
"extraneous": true,
|
|
231
281
|
"license": "MIT",
|
|
232
282
|
"engines": {
|
|
233
283
|
"node": ">=12"
|
|
@@ -567,7 +617,6 @@
|
|
|
567
617
|
"version": "9.0.1",
|
|
568
618
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
|
|
569
619
|
"integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
|
|
570
|
-
"extraneous": true,
|
|
571
620
|
"license": "ISC",
|
|
572
621
|
"dependencies": {
|
|
573
622
|
"string-width": "^7.2.0",
|
|
@@ -582,14 +631,12 @@
|
|
|
582
631
|
"version": "10.6.0",
|
|
583
632
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
|
584
633
|
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
|
585
|
-
"extraneous": true,
|
|
586
634
|
"license": "MIT"
|
|
587
635
|
},
|
|
588
636
|
"node_modules/cliui/node_modules/string-width": {
|
|
589
637
|
"version": "7.2.0",
|
|
590
638
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
|
591
639
|
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
|
592
|
-
"extraneous": true,
|
|
593
640
|
"license": "MIT",
|
|
594
641
|
"dependencies": {
|
|
595
642
|
"emoji-regex": "^10.3.0",
|
|
@@ -607,7 +654,6 @@
|
|
|
607
654
|
"version": "7.2.0",
|
|
608
655
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
|
609
656
|
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
|
610
|
-
"extraneous": true,
|
|
611
657
|
"license": "MIT",
|
|
612
658
|
"dependencies": {
|
|
613
659
|
"ansi-regex": "^6.2.2"
|
|
@@ -676,6 +722,15 @@
|
|
|
676
722
|
"node": ">=18"
|
|
677
723
|
}
|
|
678
724
|
},
|
|
725
|
+
"node_modules/consola": {
|
|
726
|
+
"version": "3.4.2",
|
|
727
|
+
"resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
|
|
728
|
+
"integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
|
|
729
|
+
"license": "MIT",
|
|
730
|
+
"engines": {
|
|
731
|
+
"node": "^14.18.0 || >=16.10.0"
|
|
732
|
+
}
|
|
733
|
+
},
|
|
679
734
|
"node_modules/core-util-is": {
|
|
680
735
|
"version": "1.0.3",
|
|
681
736
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
|
@@ -743,6 +798,15 @@
|
|
|
743
798
|
"node": ">=8"
|
|
744
799
|
}
|
|
745
800
|
},
|
|
801
|
+
"node_modules/diff": {
|
|
802
|
+
"version": "9.0.0",
|
|
803
|
+
"resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz",
|
|
804
|
+
"integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==",
|
|
805
|
+
"license": "BSD-3-Clause",
|
|
806
|
+
"engines": {
|
|
807
|
+
"node": ">=0.3.1"
|
|
808
|
+
}
|
|
809
|
+
},
|
|
746
810
|
"node_modules/dunder-proto": {
|
|
747
811
|
"version": "1.0.1",
|
|
748
812
|
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
@@ -812,7 +876,6 @@
|
|
|
812
876
|
"version": "3.2.0",
|
|
813
877
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
|
814
878
|
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
|
815
|
-
"extraneous": true,
|
|
816
879
|
"license": "MIT",
|
|
817
880
|
"engines": {
|
|
818
881
|
"node": ">=6"
|
|
@@ -966,7 +1029,6 @@
|
|
|
966
1029
|
"version": "2.0.5",
|
|
967
1030
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
|
968
1031
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
|
969
|
-
"extraneous": true,
|
|
970
1032
|
"license": "ISC",
|
|
971
1033
|
"engines": {
|
|
972
1034
|
"node": "6.* || 8.* || >= 10.*"
|
|
@@ -976,7 +1038,6 @@
|
|
|
976
1038
|
"version": "1.6.0",
|
|
977
1039
|
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
|
|
978
1040
|
"integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
|
|
979
|
-
"extraneous": true,
|
|
980
1041
|
"license": "MIT",
|
|
981
1042
|
"engines": {
|
|
982
1043
|
"node": ">=18"
|
|
@@ -1273,6 +1334,18 @@
|
|
|
1273
1334
|
"safe-buffer": "~5.1.0"
|
|
1274
1335
|
}
|
|
1275
1336
|
},
|
|
1337
|
+
"node_modules/lilconfig": {
|
|
1338
|
+
"version": "3.1.3",
|
|
1339
|
+
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
|
|
1340
|
+
"integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
|
|
1341
|
+
"license": "MIT",
|
|
1342
|
+
"engines": {
|
|
1343
|
+
"node": ">=14"
|
|
1344
|
+
},
|
|
1345
|
+
"funding": {
|
|
1346
|
+
"url": "https://github.com/sponsors/antonk52"
|
|
1347
|
+
}
|
|
1348
|
+
},
|
|
1276
1349
|
"node_modules/lockfile": {
|
|
1277
1350
|
"version": "1.0.4",
|
|
1278
1351
|
"resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz",
|
|
@@ -1592,9 +1665,9 @@
|
|
|
1592
1665
|
}
|
|
1593
1666
|
},
|
|
1594
1667
|
"node_modules/semver": {
|
|
1595
|
-
"version": "7.8.
|
|
1596
|
-
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.
|
|
1597
|
-
"integrity": "sha512-
|
|
1668
|
+
"version": "7.8.5",
|
|
1669
|
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
|
1670
|
+
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
|
|
1598
1671
|
"license": "ISC",
|
|
1599
1672
|
"bin": {
|
|
1600
1673
|
"semver": "bin/semver.js"
|
|
@@ -1818,9 +1891,9 @@
|
|
|
1818
1891
|
}
|
|
1819
1892
|
},
|
|
1820
1893
|
"node_modules/teen_process": {
|
|
1821
|
-
"version": "4.1.
|
|
1822
|
-
"resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.
|
|
1823
|
-
"integrity": "sha512-
|
|
1894
|
+
"version": "4.1.5",
|
|
1895
|
+
"resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.5.tgz",
|
|
1896
|
+
"integrity": "sha512-XQ4MDij09YygEZyXD6QFKfWhAi7efiEQ4fM2ACNDgkj/LO5mZWi2bR5ghNEU232mMx4+MLrNwV95BV4S+4PGsg==",
|
|
1824
1897
|
"license": "Apache-2.0",
|
|
1825
1898
|
"dependencies": {
|
|
1826
1899
|
"shell-quote": "^1.8.1"
|
|
@@ -1958,7 +2031,6 @@
|
|
|
1958
2031
|
"version": "9.0.2",
|
|
1959
2032
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
|
|
1960
2033
|
"integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
|
|
1961
|
-
"extraneous": true,
|
|
1962
2034
|
"license": "MIT",
|
|
1963
2035
|
"dependencies": {
|
|
1964
2036
|
"ansi-styles": "^6.2.1",
|
|
@@ -1976,7 +2048,6 @@
|
|
|
1976
2048
|
"version": "6.2.3",
|
|
1977
2049
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
|
|
1978
2050
|
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
|
|
1979
|
-
"extraneous": true,
|
|
1980
2051
|
"license": "MIT",
|
|
1981
2052
|
"engines": {
|
|
1982
2053
|
"node": ">=12"
|
|
@@ -1989,14 +2060,12 @@
|
|
|
1989
2060
|
"version": "10.6.0",
|
|
1990
2061
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
|
1991
2062
|
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
|
1992
|
-
"extraneous": true,
|
|
1993
2063
|
"license": "MIT"
|
|
1994
2064
|
},
|
|
1995
2065
|
"node_modules/wrap-ansi/node_modules/string-width": {
|
|
1996
2066
|
"version": "7.2.0",
|
|
1997
2067
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
|
1998
2068
|
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
|
1999
|
-
"extraneous": true,
|
|
2000
2069
|
"license": "MIT",
|
|
2001
2070
|
"dependencies": {
|
|
2002
2071
|
"emoji-regex": "^10.3.0",
|
|
@@ -2014,7 +2083,6 @@
|
|
|
2014
2083
|
"version": "7.2.0",
|
|
2015
2084
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
|
2016
2085
|
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
|
2017
|
-
"extraneous": true,
|
|
2018
2086
|
"license": "MIT",
|
|
2019
2087
|
"dependencies": {
|
|
2020
2088
|
"ansi-regex": "^6.2.2"
|
|
@@ -2067,17 +2135,30 @@
|
|
|
2067
2135
|
"version": "5.0.8",
|
|
2068
2136
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
|
2069
2137
|
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
|
2070
|
-
"extraneous": true,
|
|
2071
2138
|
"license": "ISC",
|
|
2072
2139
|
"engines": {
|
|
2073
2140
|
"node": ">=10"
|
|
2074
2141
|
}
|
|
2075
2142
|
},
|
|
2143
|
+
"node_modules/yaml": {
|
|
2144
|
+
"version": "2.9.0",
|
|
2145
|
+
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
|
|
2146
|
+
"integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
|
|
2147
|
+
"license": "ISC",
|
|
2148
|
+
"bin": {
|
|
2149
|
+
"yaml": "bin.mjs"
|
|
2150
|
+
},
|
|
2151
|
+
"engines": {
|
|
2152
|
+
"node": ">= 14.6"
|
|
2153
|
+
},
|
|
2154
|
+
"funding": {
|
|
2155
|
+
"url": "https://github.com/sponsors/eemeli"
|
|
2156
|
+
}
|
|
2157
|
+
},
|
|
2076
2158
|
"node_modules/yargs": {
|
|
2077
2159
|
"version": "18.0.0",
|
|
2078
2160
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
|
|
2079
2161
|
"integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
|
|
2080
|
-
"extraneous": true,
|
|
2081
2162
|
"license": "MIT",
|
|
2082
2163
|
"dependencies": {
|
|
2083
2164
|
"cliui": "^9.0.1",
|
|
@@ -2095,7 +2176,6 @@
|
|
|
2095
2176
|
"version": "22.0.0",
|
|
2096
2177
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
|
|
2097
2178
|
"integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
|
|
2098
|
-
"extraneous": true,
|
|
2099
2179
|
"license": "ISC",
|
|
2100
2180
|
"engines": {
|
|
2101
2181
|
"node": "^20.19.0 || ^22.12.0 || >=23"
|
|
@@ -2105,14 +2185,12 @@
|
|
|
2105
2185
|
"version": "10.6.0",
|
|
2106
2186
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
|
2107
2187
|
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
|
2108
|
-
"extraneous": true,
|
|
2109
2188
|
"license": "MIT"
|
|
2110
2189
|
},
|
|
2111
2190
|
"node_modules/yargs/node_modules/string-width": {
|
|
2112
2191
|
"version": "7.2.0",
|
|
2113
2192
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
|
2114
2193
|
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
|
2115
|
-
"extraneous": true,
|
|
2116
2194
|
"license": "MIT",
|
|
2117
2195
|
"dependencies": {
|
|
2118
2196
|
"emoji-regex": "^10.3.0",
|
|
@@ -2130,7 +2208,6 @@
|
|
|
2130
2208
|
"version": "7.2.0",
|
|
2131
2209
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
|
2132
2210
|
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
|
2133
|
-
"extraneous": true,
|
|
2134
2211
|
"license": "MIT",
|
|
2135
2212
|
"dependencies": {
|
|
2136
2213
|
"ansi-regex": "^6.2.2"
|
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-geckodriver",
|
|
3
|
+
"version": "3.0.4",
|
|
3
4
|
"description": "Appium driver for Gecko-based browsers and web views",
|
|
4
5
|
"keywords": [
|
|
5
6
|
"appium",
|
|
6
7
|
"gecko",
|
|
7
|
-
"
|
|
8
|
+
"geckodriver",
|
|
8
9
|
"firefox"
|
|
9
10
|
],
|
|
10
|
-
"version": "3.0.3",
|
|
11
11
|
"author": "Appium Contributors",
|
|
12
12
|
"license": "Apache-2.0",
|
|
13
|
+
"homepage": "https://appium.github.io/appium-geckodriver",
|
|
13
14
|
"repository": {
|
|
14
15
|
"type": "git",
|
|
15
16
|
"url": "https://github.com/appium/appium-geckodriver.git"
|
|
@@ -17,29 +18,6 @@
|
|
|
17
18
|
"bugs": {
|
|
18
19
|
"url": "https://github.com/appium/appium-geckodriver/issues"
|
|
19
20
|
},
|
|
20
|
-
"engines": {
|
|
21
|
-
"node": "^20.19.0 || ^22.12.0 || >=24.0.0",
|
|
22
|
-
"npm": ">=10"
|
|
23
|
-
},
|
|
24
|
-
"prettier": {
|
|
25
|
-
"bracketSpacing": false,
|
|
26
|
-
"printWidth": 100,
|
|
27
|
-
"singleQuote": true
|
|
28
|
-
},
|
|
29
|
-
"appium": {
|
|
30
|
-
"driverName": "gecko",
|
|
31
|
-
"automationName": "Gecko",
|
|
32
|
-
"platformNames": [
|
|
33
|
-
"Linux",
|
|
34
|
-
"Mac",
|
|
35
|
-
"Android",
|
|
36
|
-
"Windows"
|
|
37
|
-
],
|
|
38
|
-
"scripts": {
|
|
39
|
-
"install-geckodriver": "./scripts/install-geckodriver.mjs"
|
|
40
|
-
},
|
|
41
|
-
"mainClass": "GeckoDriver"
|
|
42
|
-
},
|
|
43
21
|
"type": "module",
|
|
44
22
|
"main": "./build/lib/index.js",
|
|
45
23
|
"types": "./build/lib/index.d.ts",
|
|
@@ -57,23 +35,36 @@
|
|
|
57
35
|
"files": [
|
|
58
36
|
"lib",
|
|
59
37
|
"build/lib",
|
|
38
|
+
"README.md",
|
|
60
39
|
"CHANGELOG.md",
|
|
61
40
|
"LICENSE",
|
|
62
41
|
"npm-shrinkwrap.json",
|
|
63
42
|
"scripts/*.mjs"
|
|
64
43
|
],
|
|
65
|
-
"
|
|
66
|
-
"
|
|
44
|
+
"appium": {
|
|
45
|
+
"driverName": "gecko",
|
|
46
|
+
"automationName": "Gecko",
|
|
47
|
+
"platformNames": [
|
|
48
|
+
"Linux",
|
|
49
|
+
"Mac",
|
|
50
|
+
"Android",
|
|
51
|
+
"Windows"
|
|
52
|
+
],
|
|
53
|
+
"mainClass": "GeckoDriver",
|
|
54
|
+
"scripts": {
|
|
55
|
+
"install-geckodriver": "./scripts/install-geckodriver.mjs"
|
|
56
|
+
},
|
|
57
|
+
"doctor": {
|
|
58
|
+
"checks": [
|
|
59
|
+
"./build/lib/doctor/required-checks.js",
|
|
60
|
+
"./build/lib/doctor/optional-checks.js"
|
|
61
|
+
]
|
|
62
|
+
}
|
|
67
63
|
},
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"commander": "^14.0.3",
|
|
73
|
-
"portscanner": "^2.2.0",
|
|
74
|
-
"semver": "^7.6.3",
|
|
75
|
-
"tar-stream": "^3.1.7",
|
|
76
|
-
"teen_process": "^4.0.4"
|
|
64
|
+
"prettier": {
|
|
65
|
+
"bracketSpacing": false,
|
|
66
|
+
"printWidth": 100,
|
|
67
|
+
"singleQuote": true
|
|
77
68
|
},
|
|
78
69
|
"scripts": {
|
|
79
70
|
"build": "tsc -b",
|
|
@@ -85,11 +76,29 @@
|
|
|
85
76
|
"prepare": "npm run build",
|
|
86
77
|
"format": "prettier -w ./lib ./test",
|
|
87
78
|
"format:check": "prettier --check ./lib ./test",
|
|
79
|
+
"build:docs": "appium-docs build",
|
|
80
|
+
"dev:docs": "appium-docs build --serve",
|
|
81
|
+
"publish:docs": "appium-docs build --deploy --push -b docs-site -m 'docs: build docs for appium-geckodriver@%s' --alias latest --use-prefixed-major-deploy-version",
|
|
82
|
+
"install-docs-deps": "appium-docs init --no-mkdocs",
|
|
88
83
|
"pretest": "npm run build",
|
|
89
84
|
"test": "node --test --test-timeout=60000 \"build/test/unit/**/*.test.js\"",
|
|
90
85
|
"e2e-test": "npm run build && node --test --test-timeout=300000 \"build/test/functional/**/*.test.js\""
|
|
91
86
|
},
|
|
87
|
+
"dependencies": {
|
|
88
|
+
"appium-adb": "^15.0.0",
|
|
89
|
+
"asyncbox": "^6.3.0",
|
|
90
|
+
"axios": "^1.16.1",
|
|
91
|
+
"commander": "^14.0.3",
|
|
92
|
+
"portscanner": "^2.2.0",
|
|
93
|
+
"semver": "^7.6.3",
|
|
94
|
+
"tar-stream": "^3.1.7",
|
|
95
|
+
"teen_process": "^4.0.4"
|
|
96
|
+
},
|
|
97
|
+
"peerDependencies": {
|
|
98
|
+
"appium": "^3.0.0-rc.2"
|
|
99
|
+
},
|
|
92
100
|
"devDependencies": {
|
|
101
|
+
"@appium/docutils": "^2.5.0",
|
|
93
102
|
"@appium/eslint-config-appium-ts": "^3.0.0",
|
|
94
103
|
"@appium/tsconfig": "^1.0.0-rc.1",
|
|
95
104
|
"@appium/types": "^1.0.0-rc.1",
|
|
@@ -104,10 +113,8 @@
|
|
|
104
113
|
"typescript": "^6.0.2",
|
|
105
114
|
"webdriverio": "^9.0.5"
|
|
106
115
|
},
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
|
|
110
|
-
"./build/lib/doctor/optional-checks.js"
|
|
111
|
-
]
|
|
116
|
+
"engines": {
|
|
117
|
+
"node": "^20.19.0 || ^22.12.0 || >=24.0.0",
|
|
118
|
+
"npm": ">=10"
|
|
112
119
|
}
|
|
113
120
|
}
|