Commit Graph

817 Commits

Author SHA1 Message Date
github-actions 6815fbebac chore: publish
- appium@4.0.0-beta.3
 - @appium/base-driver@11.0.0-beta.2
 - @appium/base-plugin@4.0.0-beta.2
 - @appium/docutils@4.0.0-beta.2
 - @appium/driver-test-support@4.0.0-beta.2
 - @appium/execute-driver-plugin@8.0.0-beta.3
 - @appium/fake-driver@7.0.0-beta.3
 - @appium/fake-plugin@5.0.0-beta.3
 - @appium/http-server@1.0.0-beta.2
 - @appium/images-plugin@6.0.0-beta.3
 - @appium/logger@3.0.0-beta.1
 - @appium/opencv@6.0.0-beta.2
 - @appium/oxc-config@2.0.0-beta.1
 - @appium/plugin-test-support@4.0.0-beta.3
 - @appium/relaxed-caps-plugin@4.0.0-beta.3
 - @appium/schema@2.0.0-beta.1
 - @appium/semantic-release-config@2.0.0-beta.1
 - @appium/storage-plugin@3.0.0-beta.3
 - @appium/strongbox@3.0.0-beta.1
 - @appium/support@8.0.0-beta.2
 - @appium/tsconfig@2.0.0-beta.1
 - @appium/types@2.0.0-beta.2
 - @appium/universal-xml-plugin@4.0.0-beta.3
2026-10-05 09:57:28 +00:00
Mohamed Mostafa c159d1925c fix(base-driver): remove incomplete app downloads (#22878) 2026-10-05 15:24:38 +09:00
Kazuaki Matsuo c5f4217806 fix(base-driver): decode credentials in app download URLs (#22887) 2026-10-05 15:00:38 +09:00
Kazuaki Matsuo b791915ffc fix(base-driver): track and remove BiDi subscriptions by ID (#22876)
* fix(base-driver): track and remove BiDi subscriptions by ID

* refactor(base-driver): organize BiDi subscription helpers

* fix(base-driver): address BiDi subscription review feedback

* test(base-driver): cover BiDi unsubscribe review cases

* docs(appium): document BiDi subscription IDs
2026-10-05 14:58:56 +09:00
Kazuaki Matsuo ae8a27e02b fix(base-driver): reject queued commands when their session ends (#22874)
* fix(base-driver): reject queued commands when their session ends

* refactor(base-driver): cancel queued commands with AbortController
2026-10-05 01:12:52 +09:00
Kazuaki Matsuo b077efd67d fix(base-driver): reject unsupported BiDi user-context scopes (#22877) 2026-10-04 10:18:50 +02:00
Kazuaki Matsuo 1b7d1e0eb7 fix(base-driver): validate reset options before creating session state (#22870) 2026-10-04 10:00:44 +02:00
Kazuaki Matsuo 14c42f791c fix(base-driver): return protocol errors for null rejections (#22869) 2026-10-04 09:59:50 +02:00
Kazuaki Matsuo 63e9aa4f57 fix(base-driver): declare the path-to-regexp runtime dependency (#22865) 2026-10-04 09:59:08 +02:00
Kazuaki Matsuo 9de70be6e2 fix(base-driver): keep the idle timer off while commands execute (#22867) 2026-10-04 09:55:12 +02:00
Mohamed Mostafa 318329fba7 fix(base-driver): report noReset and fullReset together as session not created (#22861) 2026-10-04 15:53:00 +09:00
Edgars Eglītis 6d1f28ed05 fix(base-driver): reject empty array in capabilities.firstMatch (#22860)
BREAKING CHANGE: when creating a new session, capabilities.firstMatch can no longer be set to an empty array, as per the WebDriver spec
2026-10-03 20:54:41 +03:00
Mykola Mokhnach 53b36283f3 chore: use version ranges instead of exact pins (#22846) 2026-10-03 14:41:42 +02:00
Mohamed Mostafa f330716793 fix(base-driver): do not arm the idle timer while a command is still running (#22828) 2026-09-29 19:18:15 +02:00
Mykola Mokhnach 6b0938d3ac refactor: drop type-fest dependency across the monorepo (#22825) 2026-09-27 20:18:03 +02:00
Mykola Mokhnach bb51494f67 chore: remove unused jsftp, serve-favicon, and mjpeg dev dependencies (#22827) 2026-09-27 20:14:29 +02:00
github-actions d8370ccf19 chore: publish
- appium@4.0.0-beta.2
 - @appium/base-driver@11.0.0-beta.1
 - @appium/base-plugin@4.0.0-beta.1
 - @appium/docutils@4.0.0-beta.1
 - @appium/driver-test-support@4.0.0-beta.1
 - @appium/execute-driver-plugin@8.0.0-beta.2
 - @appium/fake-driver@7.0.0-beta.2
 - @appium/fake-plugin@5.0.0-beta.2
 - @appium/http-server@1.0.0-beta.1
 - @appium/images-plugin@6.0.0-beta.2
 - @appium/opencv@6.0.0-beta.1
 - @appium/plugin-test-support@4.0.0-beta.2
 - @appium/relaxed-caps-plugin@4.0.0-beta.2
 - @appium/storage-plugin@3.0.0-beta.2
 - @appium/support@8.0.0-beta.1
 - @appium/types@2.0.0-beta.1
 - @appium/universal-xml-plugin@4.0.0-beta.2
2026-09-27 07:38:49 +00:00
Mohamed Mostafa f313306848 fix(base-driver): keep the default idle timeout when newCommandTimeout is null or blank (#22815) 2026-09-26 13:52:08 +02:00
Mykola Mokhnach ad8e7d56f8 chore: backport recent fixes from master (#22810) 2026-09-24 19:16:20 +02:00
Mykola Mokhnach 7a79dc208c refactor(base-driver): vendor Levenshtein distance and drop http-status-codes dep (#22805) 2026-09-22 22:16:34 +02:00
Mykola Mokhnach 2596da02d2 fix(base-driver): carry proxy req via AsyncLocalStorage instead of args (#22799) 2026-09-22 18:28:20 +02:00
Mykola Mokhnach 225a1c6d9d refactor(base-driver)!: extract the HTTP/Express server into @appium/http-server (#22800)
BREAKING CHANGE: @appium/base-driver no longer exports server, normalizeBasePath, configureServer, ServerOpts, ConfigureServerOpts, ConfigureHttpOpts, or StartServerOpts, and no longer depends on express/morgan/body-parser/ method-override/path-to-regexp. Use the new @appium/http-server package instead.

BREAKING CHANGE: appium/driver.js and driver.d.ts no longer re-export server/normalizeBasePath/configureServer/ServerOpts (or their types), and no longer use a blanket export *. Import from @appium/http-server directly if you were relying on this undocumented path.
2026-09-22 07:44:13 +02:00
Mykola Mokhnach 22a00c7a55 feat(base-driver)!: exempt getStatus from the commands queue by default (#22796) 2026-09-21 17:14:52 +02:00
github-actions e303649a42 chore: publish
- appium@4.0.0-beta.0
 - @appium/base-driver@11.0.0-beta.0
 - @appium/base-plugin@4.0.0-beta.0
 - @appium/docutils@4.0.0-beta.0
 - @appium/driver-test-support@4.0.0-beta.0
 - @appium/execute-driver-plugin@8.0.0-beta.0
 - @appium/fake-driver@7.0.0-beta.0
 - @appium/fake-plugin@5.0.0-beta.0
 - @appium/images-plugin@6.0.0-beta.0
 - @appium/logger@3.0.0-beta.0
 - @appium/opencv@6.0.0-beta.0
 - @appium/oxc-config@2.0.0-beta.0
 - @appium/plugin-test-support@4.0.0-beta.0
 - @appium/relaxed-caps-plugin@4.0.0-beta.0
 - @appium/schema@2.0.0-beta.0
 - @appium/semantic-release-config@2.0.0-beta.0
 - @appium/storage-plugin@3.0.0-beta.0
 - @appium/strongbox@3.0.0-beta.0
 - @appium/support@8.0.0-beta.0
 - @appium/tsconfig@2.0.0-beta.0
 - @appium/types@2.0.0-beta.0
 - @appium/universal-xml-plugin@4.0.0-beta.0
2026-09-19 20:35:44 +00:00
JustasM 33d866e575 fix(base-driver): clean up aborted session creation (#22733) 2026-09-16 17:55:53 +02:00
Giorgio Boa 0b104f6bf9 feat(appium): add --app-url-rules server arg to restrict remote app URLs (#22753) 2026-09-16 17:51:48 +02:00
Edgars Eglītis 93115d1957 feat(base-driver)!: align timeouts endpoints closer to W3C standard (#22776)
* feat!: align timeouts endpoints closer to W3C standard

* chore: remove unnecessary wrappers
2026-09-14 22:57:53 +03:00
Mykola Mokhnach ac01aa83ad feat(base-driver): add definitions for all WebDriver BiDi commands (#22770) 2026-09-14 08:32:02 +02:00
Mykola Mokhnach 0e91fb756b fix(base-driver)!: don't implicitly allow sessionId/id params in bidi commands (#22771)
BREAKING CHANGE: PayloadParams['validate'] no longer receives a protocol argument; its signature is now (obj: any) => boolean | string | undefined. No implementation in this repo used the second argument.
2026-09-13 22:18:30 +02:00
Mykola Mokhnach 8b62a7971a fix(base-driver): improve bidi command param validation and error messages (#22769) 2026-09-13 18:28:04 +02:00
Mykola Mokhnach 33def2cc0b refactor(base-driver)!: split basedriver helpers into a barrel (#22764)
BREAKING CHANGE: Removed the deprecated sessionId argument from generateDriverLogPrefix helper
2026-09-12 13:17:40 +02:00
Edgars Eglītis b7b09f750f chore!: cleanup remaining code for removed JSONWP/MJSONWP methods (#22765)
BREAKING CHANGE: types for the following commands have been removed: `getGeoLocation`, `setGeoLocation`, `getNetworkConnection`, `setNetworkConnection`. The `Location` type has also been removed.
2026-09-12 14:13:24 +03:00
Edgars Eglītis b129cbbcd5 fix: adjust deprecated JSONWP/MJSONWP routes (#22763)
* fix: adjust deprecated JSONWP/MJSONWP routes

* fix: add back geolocation routes for fake-driver

* test: update snapshot
2026-09-12 11:52:52 +03:00
Mykola Mokhnach d6ef7e3f12 fix: Address several TODOs (#22762) 2026-09-12 08:38:47 +02:00
Mykola Mokhnach 74d1ee6d17 feat(base-driver)!: remove deprecated JSONWP/MJSONWP routes (#22757)
BREAKING CHANGE: Dropped APIs: receive_async_response, element/:elementId GET stub, IME endpoints, orientation, location (geolocation), context/contexts, network_connection, and rotation.
BREAKING CHANGE: Dropped the allowCrossDomainAsyncExecute middleware + its dedicated test suite, which existed solely to CORS-enable the now-removed receive_async_response endpoint.
2026-09-11 14:13:33 +02:00
Mykola Mokhnach ff458d7cac refactor(base-driver): split protocol.ts into focused modules (#22750) 2026-09-10 18:39:09 +02:00
Mykola Mokhnach 6323df1d73 feat: backport diff from master (#22749) 2026-09-10 18:31:23 +02:00
Mykola Mokhnach 506bfeeb9a refactor(base-driver)!: replace command mixin with explicit named exports (#22741)
BREAKING CHANGE: @appium/base-driver's default export (BaseDriver) and @appium/base-driver's basedriver/helpers.js default export are removed; use the named exports instead. The appium/driver.js and driver.d.ts re-exports of the default are removed accordingly.
BREAKING CHANGE: BaseDriver.reset() is removed; it was unused, not part of any protocol route or the Driver interface, and had no callers in this monorepo or any driver package that was checked.
BREAKING CHANGE: BaseDriver's constructor is removed in favor of inherited DriverCore construction; opts is no longer a required constructor argument (it now defaults to {}, matching DriverCore).
2026-09-07 20:58:00 +02:00
Mykola Mokhnach add1615607 refactor(support)!: replace glob package with native node:fs glob (#22735)
BREAKING CHANGE: @appium/support's fs.glob option shape changed from the glob package's GlobOptions to a smaller, @appium/support-owned GlobOptions interface. Supported fields: cwd, withFileTypes, absolute, lazy. Options like nodir/ignore/nocase are no longer supported directly — callers needing directory filtering can pass withFileTypes: true and filter on .isFile()/.isDirectory(); callers needing path exclusion can filter the returned array by pattern.
2026-09-07 17:38:56 +02:00
Mykola Mokhnach db72249873 refactor(base-driver)!: remove deprecated multi-argument createSession overload (#22730)
BREAKING CHANGE: ISessionHandler.createSession (@appium/types) and LegacyCreateSessionArgs — overload and type deleted, single-argument signature only.
BREAKING CHANGE: BaseDriver.createSession and AppiumDriver.createSession — collapsed to the single-argument mplementation; capability validation now checks the one argument directly instead of scanning three positions for the first W3C-shaped value.
BREAKING CHANGE: FakeDriver.createSession (and the base-driver e2e test double) — overrides updated to match.
BREAKING CHANGE: RelaxedCapsPlugin.createSession — this plugin existed specifically to normalize capabilities across the (now-gone) three positions; its hook is simplified to a single caps argument.
BREAKING CHANGE: POST /session wire route (w3c.ts) — payloadParams.optional no longer sends capabilities three times into the command args.
2026-09-05 16:31:00 +02:00
Mykola Mokhnach f71d980779 refactor(base-driver)!: remove deprecated getSession command (#22725)
BREAKING CHANGE: BaseDriver.getSession, ISessionHandler.getSession, and the GET /session/:sessionId JSONWP route are gone. Use getAppiumSessionCapabilities to retrieve session capabilities and EventCommands.getLogEvents to retrieve event history instead.
BREAKING CHANGE: The appium:eventTimings capability is removed; it only ever controlled whether getSession's response was decorated with event history, which getLogEvents already exposes unconditionally.
2026-09-05 12:33:19 +02:00
Mykola Mokhnach 5875b94fc4 fix(types): declare express and ws as direct dependencies (#22720) 2026-09-04 22:36:39 +02:00
Mykola Mokhnach ef8a8e1934 refactor!: remove deprecated driverData mechanism (#22716)
BREAKING CHANGE: Core.driverData, DriverData, and the driverData parameter on ISessionHandler.createSession/deleteSession are gone. Any driver overriding get driverData() or relying on the umbrella driver passing sibling-session data into createSession/deleteSession needs to migrate off this mechanism.
BREAKING CHANGE: FakeDriver no longer supports the uniqueApp capability.
2026-09-04 21:24:49 +02:00
Mykola Mokhnach 8709844b21 test: use native WebSocket client in e2e tests instead of ws (#22715) 2026-09-04 11:48:17 +02:00
Mykola Mokhnach 464c271fbc refactor: replace axios with native fetch across the monorepo (#22700) 2026-09-03 18:41:36 +02:00
Mykola Mokhnach 9f4a11e719 feat!: bump minimum supported Node.js engine to ^22.22.2 || ^24.15.0 || >=26.0.0 (#22685)
BREAKING CHANGE: the minimum supported Node.js engine is set to ^22.22.2 || ^24.15.0 || >=26.0.0
2026-09-01 18:28:58 +02:00
Mykola Mokhnach 8b7bf30d43 fix(base-driver)!: map timeout and script timeout errors to HTTP 500 (#22686)
BREAKING CHANGE: Changes HTTP return codes for TimeoutError and ScriptTimeoutError from 408 to 500
2026-08-31 21:07:03 +02:00
Mykola Mokhnach 0b83e77e7a feat(base-driver)!: remove legacy (M)JSONWP protocol support (#22681)
BREAKING CHANGE: @appium/base-driver no longer exports statusCodes or getSummaryByCode (the jsonwp-status module was removed).
BREAKING CHANGE: errorFromMJSONWPStatusCode (aliased as errorFromCode) has been removed; use errorFromW3CJsonCode for W3C error-signature mapping.
BREAKING CHANGE: ProtocolError instances no longer have a jsonwpCode property.
BREAKING CHANGE: WebDriverProxy (formerly JWProxy) no longer proxies to or interprets responses from downstream servers speaking the legacy MJSONWP protocol; the ProtocolConverter class, COMMAND_URLS_CONFLICTS, and the downstreamProtocol getter/setter have been removed. Downstream automation servers must speak W3C WebDriver.
BREAKING CHANGE: Responses no longer duplicate element references under the legacy ELEMENT key; only the W3C element-6066-11e4-a52e-4f735466cecf key is present. The MJSONWP_ELEMENT_KEY constant has been removed.
BREAKING CHANGE: determineProtocol has been removed, and drivers can no longer produce the legacy {sessionId, status, value} response shape; all responses are now W3C-shaped regardless of how the client formatted its createSession capabilities.
BREAKING CHANGE: DriverCore#setProtocolMJSONWP() has been removed.
BREAKING CHANGE: The deprecated JWProxy export has been removed; use WebDriverProxy instead. Its source also moved from lib/jsonwp-proxy/proxy.js to lib/wd-proxy/proxy.js.
BREAKING CHANGE: DriverCore#isMjsonwpProtocol() has been removed.
2026-08-31 19:24:19 +02:00
Mykola Mokhnach a38539deaf feat(base-driver)!: remove deprecated legacy test pages (#22680)
BREAKING CHANGE: The STATIC_DIR export has been removed from @appium/base-driver, along with the built-in /welcome, /test/guinea-pig*, /produce_error, and /crash routes and the APPIUM_ENABLE_LEGACY_TEST_PAGES environment variable that used to enable them.
2026-08-30 15:05:47 +02:00
Mykola Mokhnach ec7de4768f feat(base-driver)!: replace spdy with native https transport (#22676)
BREAKING CHANGE: TLS-enabled Appium servers no longer negotiate SPDY/HTTP2 (spdy/2, spdy/3, spdy/3.1, h2) via ALPN; connections are now served as plain HTTPS (HTTP/1.1) using Node's native https module. Clients relying on SPDY or HTTP/2 multiplexing against Appium's TLS listener must switch to HTTP/1.1.
2026-08-29 21:00:24 +02:00