Commit Graph

3354 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
Cassian433 b95aaac60b feat(universal-xml-plugin): add execute methods to toggle translation (#22862)
* feat(universal-xml-plugin): add execute methods to toggle translation

Translation could not be turned off during a session, so there was no
way to get the driver's original page source or to run an XPath query
against the original node names while the plugin was active.

This adds two execute methods:

- `universalXml: setEnabled` turns translation off or on for the
  current session. While it's off, getPageSource and findElement(s)
  are passed on unchanged.
- `universalXml: isEnabled` returns the current state.

Translation stays on by default, so existing sessions behave as
before. The context API is not touched, so drivers' assumptions about
the current context are unaffected.

Refs #21630

* chore(universal-xml-plugin): add jsdoc to public methods and mark unused args with void

---------

Co-authored-by: Cassian433 <262026629+Cassian433@users.noreply.github.com>
2026-10-05 17:00:54 +09:00
Kazuaki Matsuo 83122525db fix(appium): import extensions through escaped file URLs (#22884)
* fix(appium): import extensions through escaped file URLs

* docs(appium): clarify why extension imports still require file URLs

* Enhance comments for schemaPath handling

Add comments explaining file URL requirements for Windows and POSIX paths.
2026-10-05 15:27:08 +09:00
Mohamed Mostafa c159d1925c fix(base-driver): remove incomplete app downloads (#22878) 2026-10-05 15:24:38 +09:00
Kazuaki Matsuo b1ec406fd3 docs: document contributor style conventions for agents (#22879)
* feat(oxc-config): restore class member ordering through JS plugins

* docs: document class method ordering for agents and contributors

* docs: keep ordering rules in the contributor style guide

* docs: simplify the agent style guide reference

* docs: add JSDoc and module ordering conventions
2026-10-04 23:10:40 -07:00
Kazuaki Matsuo c5f4217806 fix(base-driver): decode credentials in app download URLs (#22887) 2026-10-05 15:00:38 +09:00
Kazuaki Matsuo 3188c9fbab fix(appium): resolve default extension export conditions (#22885) 2026-10-05 15:00:01 +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 95c04611e7 fix(appium): apply initial settings from selected capabilities (#22882)
* fix(appium): apply initial settings from selected capabilities

* test(appium): keep settings regressions separate from timeout tests
2026-10-05 14:55:58 +09:00
Kazuaki Matsuo e37f1c1583 fix(appium): start idle timeout after session initialization (#22881) 2026-10-05 14:29:32 +09:00
Kazuaki Matsuo 879873bad5 fix(appium): match global and module BiDi event subscriptions (#22883) 2026-10-05 01:54:47 +09:00
Kazuaki Matsuo 6c9c930cbe fix(support): preserve symlinks inside moved directories (#22880) 2026-10-05 01:54:06 +09:00
Kazuaki Matsuo 4de1a3e62c fix(support): accept transparently decompressed downloads (#22886) 2026-10-05 01:53:47 +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 b9c020c6eb fix(appium): explain manual recovery after manifest lock timeouts (#22875)
* fix(appium): recover abandoned manifest locks with heartbeats

* fix(appium): retry released manifest locks promptly

* fix(appium): explain manual manifest lock recovery without new dependencies

* test(appium): keep manifest lock mocks compatible with Node 22
2026-10-05 01:12:36 +09:00
Kazuaki Matsuo e391bb249f fix: use native ESM entrypoint detection (#22868) 2026-10-04 17:39:35 +02:00
Kazuaki Matsuo f24e7046eb fix(appium): roll back sessions when initialization fails (#22873) 2026-10-05 00:21:14 +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 3875344e11 fix(appium): bracket IPv6 hosts in BiDi websocket URLs (#22872) 2026-10-04 10:02:13 +02:00
Kazuaki Matsuo 11d9904166 fix(appium): detect project homes with prerelease dependencies (#22871) 2026-10-04 10:01:42 +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
Kazuaki Matsuo c78cfa405f fix(types): align the logger peer dependency with Appium 4 (#22866) 2026-10-04 09:54:12 +02:00
Kazuaki Matsuo 29a60d6e93 fix(support): preserve directories on failed downloads (#22864) 2026-10-04 09:53:22 +02:00
Mohamed Mostafa 1b852557a3 fix(storage-plugin): reject storage file names that start with a dot (#22863) 2026-10-04 08:57:43 +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
Mohamed Mostafa 00547fe9f6 refactor(support): share websocket close codes from net (#22855) 2026-10-03 14:43:16 +02:00
Mohamed Mostafa 3cdc69b198 fix(appium): close bidi sockets when a session ends unexpectedly (#22854) 2026-10-03 14:42:27 +02:00
Mykola Mokhnach 53b36283f3 chore: use version ranges instead of exact pins (#22846) 2026-10-03 14:41:42 +02:00
Edgars Eglītis ebcac6a7e1 chore: replace ora with yocto-spinner (#22840) 2026-09-30 21:53:21 +03:00
Mohamed Mostafa 66ab396a71 fix(appium): do not crash when a proxied bidi socket closes without a sendable code (#22835) 2026-09-30 08:13:56 +02:00
Mohamed Mostafa 15ecc718c4 fix(support): do not leave a file behind when downloadFile fails (#22836) 2026-09-29 22:16:19 +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 e033851cdf refactor(support): vendor klaw as internal fs walker (#22826) 2026-09-28 08:06:55 +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
Kazuaki Matsuo fb89bb7423 fix(support): preserve exclamation marks with apostrophes (#22816) (#22822)
* fix(support): preserve exclamation marks with apostrophes

* test(support): use async shell execution and document workaround

(cherry picked from commit 359ef4ba89)
2026-09-27 03:07:32 +09:00
Mykola Mokhnach dc0568bc65 fix(appium): release the manifest lock before errAndQuit exits (#22821) 2026-09-26 20:05:48 +02: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 b7356ee53e feat(appium): accept package names for installed extension commands (#22747) (#22812) 2026-09-24 23:06:25 +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 822e4d19d5 refactor(http-server): move network/listener-address helpers out of appium (#22804) 2026-09-22 21:33:05 +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