appium-geckodriver 3.0.2 → 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 +12 -0
- package/README.md +23 -167
- package/npm-shrinkwrap.json +120 -30
- package/package.json +48 -41
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
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
|
+
|
|
7
|
+
## [3.0.3](https://github.com/appium/appium-geckodriver/compare/v3.0.2...v3.0.3) (2026-06-19)
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* **deps:** bump actions/checkout from 6 to 7 ([#171](https://github.com/appium/appium-geckodriver/issues/171)) ([c3f8387](https://github.com/appium/appium-geckodriver/commit/c3f8387d2e7a2a19299673829b6a9134a7c4feae))
|
|
12
|
+
|
|
1
13
|
## [3.0.2](https://github.com/appium/appium-geckodriver/compare/v3.0.1...v3.0.2) (2026-06-19)
|
|
2
14
|
|
|
3
15
|
### 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,31 @@
|
|
|
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
|
+
},
|
|
160
|
+
"node_modules/@appium/support/node_modules/teen_process": {
|
|
161
|
+
"version": "4.1.3",
|
|
162
|
+
"resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.3.tgz",
|
|
163
|
+
"integrity": "sha512-8W7Xp7WtJ5ZXjv0iHMsCgPPKzUt6ACfG/rDWX0tMIlMJaYcTYsPw3ZQQ9+hG7YsY+gm+DUATiyah3AraJ9JYpg==",
|
|
164
|
+
"license": "Apache-2.0",
|
|
165
|
+
"dependencies": {
|
|
166
|
+
"shell-quote": "^1.8.1"
|
|
167
|
+
},
|
|
168
|
+
"engines": {
|
|
169
|
+
"node": "^20.19.0 || ^22.12.0 || >=24.0.0",
|
|
170
|
+
"npm": ">=10"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
109
173
|
"node_modules/@appium/types": {
|
|
110
174
|
"version": "1.5.1",
|
|
111
175
|
"resolved": "https://registry.npmjs.org/@appium/types/-/types-1.5.1.tgz",
|
|
@@ -214,7 +278,6 @@
|
|
|
214
278
|
"version": "6.2.2",
|
|
215
279
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
|
216
280
|
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
|
|
217
|
-
"extraneous": true,
|
|
218
281
|
"license": "MIT",
|
|
219
282
|
"engines": {
|
|
220
283
|
"node": ">=12"
|
|
@@ -240,9 +303,9 @@
|
|
|
240
303
|
}
|
|
241
304
|
},
|
|
242
305
|
"node_modules/appium-adb": {
|
|
243
|
-
"version": "15.0.
|
|
244
|
-
"resolved": "https://registry.npmjs.org/appium-adb/-/appium-adb-15.0.
|
|
245
|
-
"integrity": "sha512-
|
|
306
|
+
"version": "15.0.1",
|
|
307
|
+
"resolved": "https://registry.npmjs.org/appium-adb/-/appium-adb-15.0.1.tgz",
|
|
308
|
+
"integrity": "sha512-s2B9p78PLjLn59QeO8QNVcbqu+QIXT1uDBFsbHJbUp0vci0gKXenpoF7jRDgbgwYPs7AqlILMRmFUml6/P5ZxA==",
|
|
246
309
|
"license": "Apache-2.0",
|
|
247
310
|
"dependencies": {
|
|
248
311
|
"@appium/support": "^7.2.2",
|
|
@@ -554,7 +617,6 @@
|
|
|
554
617
|
"version": "9.0.1",
|
|
555
618
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
|
|
556
619
|
"integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
|
|
557
|
-
"extraneous": true,
|
|
558
620
|
"license": "ISC",
|
|
559
621
|
"dependencies": {
|
|
560
622
|
"string-width": "^7.2.0",
|
|
@@ -569,14 +631,12 @@
|
|
|
569
631
|
"version": "10.6.0",
|
|
570
632
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
|
571
633
|
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
|
572
|
-
"extraneous": true,
|
|
573
634
|
"license": "MIT"
|
|
574
635
|
},
|
|
575
636
|
"node_modules/cliui/node_modules/string-width": {
|
|
576
637
|
"version": "7.2.0",
|
|
577
638
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
|
578
639
|
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
|
579
|
-
"extraneous": true,
|
|
580
640
|
"license": "MIT",
|
|
581
641
|
"dependencies": {
|
|
582
642
|
"emoji-regex": "^10.3.0",
|
|
@@ -594,7 +654,6 @@
|
|
|
594
654
|
"version": "7.2.0",
|
|
595
655
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
|
596
656
|
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
|
597
|
-
"extraneous": true,
|
|
598
657
|
"license": "MIT",
|
|
599
658
|
"dependencies": {
|
|
600
659
|
"ansi-regex": "^6.2.2"
|
|
@@ -663,6 +722,15 @@
|
|
|
663
722
|
"node": ">=18"
|
|
664
723
|
}
|
|
665
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
|
+
},
|
|
666
734
|
"node_modules/core-util-is": {
|
|
667
735
|
"version": "1.0.3",
|
|
668
736
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
|
@@ -730,6 +798,15 @@
|
|
|
730
798
|
"node": ">=8"
|
|
731
799
|
}
|
|
732
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
|
+
},
|
|
733
810
|
"node_modules/dunder-proto": {
|
|
734
811
|
"version": "1.0.1",
|
|
735
812
|
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
@@ -799,7 +876,6 @@
|
|
|
799
876
|
"version": "3.2.0",
|
|
800
877
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
|
801
878
|
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
|
802
|
-
"extraneous": true,
|
|
803
879
|
"license": "MIT",
|
|
804
880
|
"engines": {
|
|
805
881
|
"node": ">=6"
|
|
@@ -953,7 +1029,6 @@
|
|
|
953
1029
|
"version": "2.0.5",
|
|
954
1030
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
|
955
1031
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
|
956
|
-
"extraneous": true,
|
|
957
1032
|
"license": "ISC",
|
|
958
1033
|
"engines": {
|
|
959
1034
|
"node": "6.* || 8.* || >= 10.*"
|
|
@@ -963,7 +1038,6 @@
|
|
|
963
1038
|
"version": "1.6.0",
|
|
964
1039
|
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
|
|
965
1040
|
"integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
|
|
966
|
-
"extraneous": true,
|
|
967
1041
|
"license": "MIT",
|
|
968
1042
|
"engines": {
|
|
969
1043
|
"node": ">=18"
|
|
@@ -1260,6 +1334,18 @@
|
|
|
1260
1334
|
"safe-buffer": "~5.1.0"
|
|
1261
1335
|
}
|
|
1262
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
|
+
},
|
|
1263
1349
|
"node_modules/lockfile": {
|
|
1264
1350
|
"version": "1.0.4",
|
|
1265
1351
|
"resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz",
|
|
@@ -1579,9 +1665,9 @@
|
|
|
1579
1665
|
}
|
|
1580
1666
|
},
|
|
1581
1667
|
"node_modules/semver": {
|
|
1582
|
-
"version": "7.8.
|
|
1583
|
-
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.
|
|
1584
|
-
"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==",
|
|
1585
1671
|
"license": "ISC",
|
|
1586
1672
|
"bin": {
|
|
1587
1673
|
"semver": "bin/semver.js"
|
|
@@ -1805,9 +1891,9 @@
|
|
|
1805
1891
|
}
|
|
1806
1892
|
},
|
|
1807
1893
|
"node_modules/teen_process": {
|
|
1808
|
-
"version": "4.1.
|
|
1809
|
-
"resolved": "https://registry.npmjs.org/teen_process/-/teen_process-4.1.
|
|
1810
|
-
"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==",
|
|
1811
1897
|
"license": "Apache-2.0",
|
|
1812
1898
|
"dependencies": {
|
|
1813
1899
|
"shell-quote": "^1.8.1"
|
|
@@ -1945,7 +2031,6 @@
|
|
|
1945
2031
|
"version": "9.0.2",
|
|
1946
2032
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
|
|
1947
2033
|
"integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
|
|
1948
|
-
"extraneous": true,
|
|
1949
2034
|
"license": "MIT",
|
|
1950
2035
|
"dependencies": {
|
|
1951
2036
|
"ansi-styles": "^6.2.1",
|
|
@@ -1963,7 +2048,6 @@
|
|
|
1963
2048
|
"version": "6.2.3",
|
|
1964
2049
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
|
|
1965
2050
|
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
|
|
1966
|
-
"extraneous": true,
|
|
1967
2051
|
"license": "MIT",
|
|
1968
2052
|
"engines": {
|
|
1969
2053
|
"node": ">=12"
|
|
@@ -1976,14 +2060,12 @@
|
|
|
1976
2060
|
"version": "10.6.0",
|
|
1977
2061
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
|
1978
2062
|
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
|
1979
|
-
"extraneous": true,
|
|
1980
2063
|
"license": "MIT"
|
|
1981
2064
|
},
|
|
1982
2065
|
"node_modules/wrap-ansi/node_modules/string-width": {
|
|
1983
2066
|
"version": "7.2.0",
|
|
1984
2067
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
|
1985
2068
|
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
|
1986
|
-
"extraneous": true,
|
|
1987
2069
|
"license": "MIT",
|
|
1988
2070
|
"dependencies": {
|
|
1989
2071
|
"emoji-regex": "^10.3.0",
|
|
@@ -2001,7 +2083,6 @@
|
|
|
2001
2083
|
"version": "7.2.0",
|
|
2002
2084
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
|
2003
2085
|
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
|
2004
|
-
"extraneous": true,
|
|
2005
2086
|
"license": "MIT",
|
|
2006
2087
|
"dependencies": {
|
|
2007
2088
|
"ansi-regex": "^6.2.2"
|
|
@@ -2054,17 +2135,30 @@
|
|
|
2054
2135
|
"version": "5.0.8",
|
|
2055
2136
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
|
2056
2137
|
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
|
2057
|
-
"extraneous": true,
|
|
2058
2138
|
"license": "ISC",
|
|
2059
2139
|
"engines": {
|
|
2060
2140
|
"node": ">=10"
|
|
2061
2141
|
}
|
|
2062
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
|
+
},
|
|
2063
2158
|
"node_modules/yargs": {
|
|
2064
2159
|
"version": "18.0.0",
|
|
2065
2160
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
|
|
2066
2161
|
"integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
|
|
2067
|
-
"extraneous": true,
|
|
2068
2162
|
"license": "MIT",
|
|
2069
2163
|
"dependencies": {
|
|
2070
2164
|
"cliui": "^9.0.1",
|
|
@@ -2082,7 +2176,6 @@
|
|
|
2082
2176
|
"version": "22.0.0",
|
|
2083
2177
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
|
|
2084
2178
|
"integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
|
|
2085
|
-
"extraneous": true,
|
|
2086
2179
|
"license": "ISC",
|
|
2087
2180
|
"engines": {
|
|
2088
2181
|
"node": "^20.19.0 || ^22.12.0 || >=23"
|
|
@@ -2092,14 +2185,12 @@
|
|
|
2092
2185
|
"version": "10.6.0",
|
|
2093
2186
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
|
2094
2187
|
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
|
2095
|
-
"extraneous": true,
|
|
2096
2188
|
"license": "MIT"
|
|
2097
2189
|
},
|
|
2098
2190
|
"node_modules/yargs/node_modules/string-width": {
|
|
2099
2191
|
"version": "7.2.0",
|
|
2100
2192
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
|
2101
2193
|
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
|
2102
|
-
"extraneous": true,
|
|
2103
2194
|
"license": "MIT",
|
|
2104
2195
|
"dependencies": {
|
|
2105
2196
|
"emoji-regex": "^10.3.0",
|
|
@@ -2117,7 +2208,6 @@
|
|
|
2117
2208
|
"version": "7.2.0",
|
|
2118
2209
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
|
2119
2210
|
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
|
2120
|
-
"extraneous": true,
|
|
2121
2211
|
"license": "MIT",
|
|
2122
2212
|
"dependencies": {
|
|
2123
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.2",
|
|
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
|
}
|