Compare commits

...
Author SHA1 Message Date
github-actions f5369c65a8 chore: publish
- appium@3.4.2
 - @appium/base-driver@10.5.2
 - @appium/base-plugin@3.2.4
 - @appium/docutils@2.4.2
 - @appium/fake-plugin@4.2.4
 - @appium/images-plugin@4.2.4
 - @appium/storage-plugin@1.1.4
 - @appium/support@7.2.2
 - @appium/test-support@4.1.4
2026-05-07 18:32:52 +00:00
Mykola Mokhnach 8c6c19982e fix(support): accept Uint8Array/ArrayBuffer in plist parse path (#22256) 2026-05-07 20:26:25 +02:00
Mykola Mokhnach e39017feac ci: Restore publish fallback script (#22255) 2026-05-07 20:25:25 +02:00
github-actions fd6dbe9eff chore: publish
- appium@3.4.1
 - @appium/base-driver@10.5.1
 - @appium/base-plugin@3.2.3
 - @appium/docutils@2.4.1
 - @appium/eslint-config-appium-ts@3.2.1
 - @appium/fake-plugin@4.2.3
 - @appium/images-plugin@4.2.3
 - @appium/storage-plugin@1.1.3
 - @appium/support@7.2.1
 - @appium/test-support@4.1.3
2026-05-06 20:38:58 +00:00
dependabot[bot] c18b535d42 chore(deps): bump basic-ftp in the npm_and_yarn group across 1 directory (#22253)
Bumps the npm_and_yarn group with 1 update in the / directory: [basic-ftp](https://github.com/patrickjuchli/basic-ftp).


Updates `basic-ftp` from 5.3.0 to 5.3.1
- [Release notes](https://github.com/patrickjuchli/basic-ftp/releases)
- [Changelog](https://github.com/patrickjuchli/basic-ftp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/patrickjuchli/basic-ftp/compare/v5.3.0...v5.3.1)

---
updated-dependencies:
- dependency-name: basic-ftp
  dependency-version: 5.3.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-06 23:24:12 +03:00
Edgars Eglītis 9045dfcefa ci: tune release workflows (#22252)
* ci: tune release workflows

* revert splitting workflows
2026-05-06 23:16:35 +03:00
Edgars Eglītis 98a1735913 fix(eslint-config-appium-ts): set new ESLint 10 rules to 'warn' (#22251) 2026-05-06 22:36:19 +03:00
Mykola Mokhnach 3229e74d3d fix(support): Avoid exceptions in unwrapElement (#22250) 2026-05-06 21:28:12 +02:00
28 changed files with 286 additions and 68 deletions
+2 -3
View File
@@ -67,7 +67,7 @@ jobs:
exit $release_exit_code
fi
echo "Detected existing tag failure for ${existing_tag}; attempting publish recovery from tagged commit"
echo "Detected existing tag failure for ${existing_tag}; attempting scoped publish recovery from tagged commit"
git fetch --tags --force origin
tagged_commit="$(git rev-list -n 1 "$existing_tag")"
if [ -z "$tagged_commit" ]; then
@@ -111,7 +111,7 @@ jobs:
scoped_exit_code=$?
set -e
if [ $scoped_exit_code -ne 0 ]; then
echo "Scoped retry failed for ${pkg_name}"
echo "Scoped publish exited non-zero for ${pkg_name}; will verify on npm"
fi
done
@@ -135,4 +135,3 @@ jobs:
exit $release_exit_code
fi
fi
+4 -1
View File
@@ -1,4 +1,7 @@
name: Appium Server Version
# This job only publishes new releases on GitHub and updates the changelog, without publishing to NPM.
# It can be used if the standard release workflow failed and *only* published to NPM.
name: Appium Server Version (Without NPM Publish)
on:
workflow_dispatch:
+27 -27
View File
@@ -5509,9 +5509,9 @@
"license": "MIT"
},
"node_modules/basic-ftp": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.0.tgz",
"integrity": "sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==",
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz",
"integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
@@ -19337,16 +19337,16 @@
}
},
"packages/appium": {
"version": "3.4.0",
"version": "3.4.2",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@appium/base-driver": "10.5.0",
"@appium/base-plugin": "3.2.2",
"@appium/docutils": "2.4.0",
"@appium/base-driver": "10.5.2",
"@appium/base-plugin": "3.2.4",
"@appium/docutils": "2.4.2",
"@appium/logger": "2.0.7",
"@appium/schema": "1.1.1",
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"@appium/types": "1.4.0",
"@sidvind/better-ajv-errors": "5.0.0",
"ajv": "8.20.0",
@@ -19425,10 +19425,10 @@
},
"packages/base-driver": {
"name": "@appium/base-driver",
"version": "10.5.0",
"version": "10.5.2",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"@appium/types": "1.4.0",
"@colors/colors": "1.6.0",
"async-lock": "1.4.1",
@@ -19481,11 +19481,11 @@
},
"packages/base-plugin": {
"name": "@appium/base-plugin",
"version": "3.2.2",
"version": "3.2.4",
"license": "Apache-2.0",
"dependencies": {
"@appium/base-driver": "10.5.0",
"@appium/support": "7.2.0",
"@appium/base-driver": "10.5.2",
"@appium/support": "7.2.2",
"@appium/types": "1.4.0"
},
"engines": {
@@ -19495,10 +19495,10 @@
},
"packages/docutils": {
"name": "@appium/docutils",
"version": "2.4.0",
"version": "2.4.2",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"consola": "3.4.2",
"diff": "9.0.0",
"lilconfig": "3.1.3",
@@ -19800,7 +19800,7 @@
},
"packages/eslint-config-appium-ts": {
"name": "@appium/eslint-config-appium-ts",
"version": "3.2.0",
"version": "3.2.1",
"license": "Apache-2.0",
"dependencies": {
"@eslint/compat": "2.0.5",
@@ -19861,11 +19861,11 @@
},
"packages/fake-plugin": {
"name": "@appium/fake-plugin",
"version": "4.2.2",
"version": "4.2.4",
"license": "Apache-2.0",
"dependencies": {
"@appium/base-plugin": "3.2.2",
"@appium/support": "7.2.0",
"@appium/base-plugin": "3.2.4",
"@appium/support": "7.2.2",
"asyncbox": "6.2.0",
"lodash": "4.18.1"
},
@@ -19883,11 +19883,11 @@
},
"packages/images-plugin": {
"name": "@appium/images-plugin",
"version": "4.2.2",
"version": "4.2.4",
"license": "Apache-2.0",
"dependencies": {
"@appium/opencv": "4.1.4",
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"lodash": "4.18.1",
"lru-cache": "11.3.5",
"sharp": "0.34.5"
@@ -20000,10 +20000,10 @@
},
"packages/storage-plugin": {
"name": "@appium/storage-plugin",
"version": "1.1.2",
"version": "1.1.4",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"async-lock": "1.4.1",
"asyncbox": "6.2.0",
"lodash": "4.18.1",
@@ -20057,7 +20057,7 @@
},
"packages/support": {
"name": "@appium/support",
"version": "7.2.0",
"version": "7.2.2",
"license": "Apache-2.0",
"dependencies": {
"@appium/logger": "2.0.7",
@@ -20073,7 +20073,7 @@
"bplist-parser": "0.3.2",
"form-data": "4.0.5",
"get-stream": "9.0.1",
"glob": "13.0.6",
"glob": "13.0.5",
"jsftp": "2.1.3",
"klaw": "4.1.0",
"lockfile": "1.0.4",
@@ -20369,11 +20369,11 @@
},
"packages/test-support": {
"name": "@appium/test-support",
"version": "4.1.2",
"version": "4.1.4",
"deprecated": "This module is deprecated. Use sinon directly instead (e.g., sinon.createSandbox() with Mocha hooks).",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"@colors/colors": "1.6.0",
"bluebird": "3.7.2",
"lodash": "4.18.1",
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.4.2](https://github.com/appium/appium/compare/appium@3.4.1...appium@3.4.2) (2026-05-07)
**Note:** Version bump only for package appium
## [3.4.1](https://github.com/appium/appium/compare/appium@3.4.0...appium@3.4.1) (2026-05-06)
**Note:** Version bump only for package appium
## [3.4.0](https://github.com/appium/appium/compare/appium@3.3.1...appium@3.4.0) (2026-05-06)
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "appium",
"version": "3.4.0",
"version": "3.4.2",
"description": "Automation for Apps.",
"keywords": [
"automation",
@@ -60,12 +60,12 @@
"test:unit": "mocha \"./test/unit/**/*.spec.ts\""
},
"dependencies": {
"@appium/base-driver": "10.5.0",
"@appium/base-plugin": "3.2.2",
"@appium/docutils": "2.4.0",
"@appium/base-driver": "10.5.2",
"@appium/base-plugin": "3.2.4",
"@appium/docutils": "2.4.2",
"@appium/logger": "2.0.7",
"@appium/schema": "1.1.1",
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"@appium/types": "1.4.0",
"@sidvind/better-ajv-errors": "5.0.0",
"ajv": "8.20.0",
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [10.5.2](https://github.com/appium/appium/compare/@appium/base-driver@10.5.1...@appium/base-driver@10.5.2) (2026-05-07)
**Note:** Version bump only for package @appium/base-driver
## [10.5.1](https://github.com/appium/appium/compare/@appium/base-driver@10.5.0...@appium/base-driver@10.5.1) (2026-05-06)
**Note:** Version bump only for package @appium/base-driver
## [10.5.0](https://github.com/appium/appium/compare/@appium/base-driver@10.4.0...@appium/base-driver@10.5.0) (2026-05-06)
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/base-driver",
"version": "10.5.0",
"version": "10.5.2",
"description": "Base driver class for Appium drivers",
"keywords": [
"automation",
@@ -45,7 +45,7 @@
"test:types": "tsd"
},
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"@appium/types": "1.4.0",
"@colors/colors": "1.6.0",
"async-lock": "1.4.1",
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.2.4](https://github.com/appium/appium/compare/@appium/base-plugin@3.2.3...@appium/base-plugin@3.2.4) (2026-05-07)
**Note:** Version bump only for package @appium/base-plugin
## [3.2.3](https://github.com/appium/appium/compare/@appium/base-plugin@3.2.2...@appium/base-plugin@3.2.3) (2026-05-06)
**Note:** Version bump only for package @appium/base-plugin
## [3.2.2](https://github.com/appium/appium/compare/@appium/base-plugin@3.2.1...@appium/base-plugin@3.2.2) (2026-05-06)
**Note:** Version bump only for package @appium/base-plugin
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/base-plugin",
"version": "3.2.2",
"version": "3.2.4",
"description": "The base plugin used to create Appium plugins",
"keywords": [
"automation",
@@ -40,8 +40,8 @@
"test:unit": "mocha \"./test/unit/**/*.spec.*ts\""
},
"dependencies": {
"@appium/base-driver": "10.5.0",
"@appium/support": "7.2.0",
"@appium/base-driver": "10.5.2",
"@appium/support": "7.2.2",
"@appium/types": "1.4.0"
},
"engines": {
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.4.2](https://github.com/appium/appium/compare/@appium/docutils@2.4.1...@appium/docutils@2.4.2) (2026-05-07)
**Note:** Version bump only for package @appium/docutils
## [2.4.1](https://github.com/appium/appium/compare/@appium/docutils@2.4.0...@appium/docutils@2.4.1) (2026-05-06)
**Note:** Version bump only for package @appium/docutils
## [2.4.0](https://github.com/appium/appium/compare/@appium/docutils@2.3.1...@appium/docutils@2.4.0) (2026-05-06)
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/docutils",
"version": "2.4.0",
"version": "2.4.2",
"description": "Documentation generation utilities for Appium and related projects",
"keywords": [
"automation",
@@ -46,7 +46,7 @@
"start": "node ./build/lib/cli/index.js"
},
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"consola": "3.4.2",
"diff": "9.0.0",
"lilconfig": "3.1.3",
@@ -3,6 +3,15 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.2.1](https://github.com/appium/appium/compare/@appium/eslint-config-appium-ts@3.2.0...@appium/eslint-config-appium-ts@3.2.1) (2026-05-06)
### Bug Fixes
* **eslint-config-appium-ts:** set new ESLint 10 rules to 'warn' ([#22251](https://github.com/appium/appium/issues/22251)) ([98a1735](https://github.com/appium/appium/commit/98a1735913bcc02be7574156e0f13e1d05fcb87f))
## [3.2.0](https://github.com/appium/appium/compare/@appium/eslint-config-appium-ts@3.1.0...@appium/eslint-config-appium-ts@3.2.0) (2026-05-06)
@@ -179,6 +179,15 @@ export default defineConfig([
* `return await somePromise` have their own use-cases.
*/
'require-await': 'off',
/**
* These rules are enabled by default since ESLint 10.
* They are set to 'warn' to prevent a breaking change.
*/
'no-unassigned-vars': 'warn',
'no-useless-assignment': 'warn',
'preserve-caught-error': 'warn',
'unicorn/prefer-node-protocol': 'warn',
/**
@@ -1,7 +1,7 @@
{
"name": "@appium/eslint-config-appium-ts",
"type": "module",
"version": "3.2.0",
"version": "3.2.1",
"description": "Shared ESLint config for Appium projects (TypeScript version)",
"keywords": [
"eslint",
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [4.2.4](https://github.com/appium/appium/compare/@appium/fake-plugin@4.2.3...@appium/fake-plugin@4.2.4) (2026-05-07)
**Note:** Version bump only for package @appium/fake-plugin
## [4.2.3](https://github.com/appium/appium/compare/@appium/fake-plugin@4.2.2...@appium/fake-plugin@4.2.3) (2026-05-06)
**Note:** Version bump only for package @appium/fake-plugin
## [4.2.2](https://github.com/appium/appium/compare/@appium/fake-plugin@4.2.1...@appium/fake-plugin@4.2.2) (2026-05-06)
**Note:** Version bump only for package @appium/fake-plugin
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/fake-plugin",
"version": "4.2.2",
"version": "4.2.4",
"description": "A fake Appium plugin",
"keywords": [
"automation",
@@ -39,8 +39,8 @@
"test:unit": "mocha \"./test/unit/**/*.spec.*ts\""
},
"dependencies": {
"@appium/base-plugin": "3.2.2",
"@appium/support": "7.2.0",
"@appium/base-plugin": "3.2.4",
"@appium/support": "7.2.2",
"asyncbox": "6.2.0",
"lodash": "4.18.1"
},
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [4.2.4](https://github.com/appium/appium/compare/@appium/images-plugin@4.2.3...@appium/images-plugin@4.2.4) (2026-05-07)
**Note:** Version bump only for package @appium/images-plugin
## [4.2.3](https://github.com/appium/appium/compare/@appium/images-plugin@4.2.2...@appium/images-plugin@4.2.3) (2026-05-06)
**Note:** Version bump only for package @appium/images-plugin
## [4.2.2](https://github.com/appium/appium/compare/@appium/images-plugin@4.2.1...@appium/images-plugin@4.2.2) (2026-05-06)
**Note:** Version bump only for package @appium/images-plugin
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/images-plugin",
"version": "4.2.2",
"version": "4.2.4",
"description": "Plugin for working with images and image elements in Appium",
"keywords": [
"automation",
@@ -41,7 +41,7 @@
},
"dependencies": {
"@appium/opencv": "4.1.4",
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"lodash": "4.18.1",
"lru-cache": "11.3.5",
"sharp": "0.34.5"
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.1.4](https://github.com/appium/appium/compare/@appium/storage-plugin@1.1.3...@appium/storage-plugin@1.1.4) (2026-05-07)
**Note:** Version bump only for package @appium/storage-plugin
## [1.1.3](https://github.com/appium/appium/compare/@appium/storage-plugin@1.1.2...@appium/storage-plugin@1.1.3) (2026-05-06)
**Note:** Version bump only for package @appium/storage-plugin
## [1.1.2](https://github.com/appium/appium/compare/@appium/storage-plugin@1.1.1...@appium/storage-plugin@1.1.2) (2026-05-06)
**Note:** Version bump only for package @appium/storage-plugin
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/storage-plugin",
"version": "1.1.2",
"version": "1.1.4",
"description": "Server-side storage plugin for Appium",
"keywords": [
"automation",
@@ -40,7 +40,7 @@
"test:e2e": "mocha --timeout 20s --slow 10s \"./test/e2e/**/*.spec.ts\""
},
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"async-lock": "1.4.1",
"asyncbox": "6.2.0",
"lodash": "4.18.1",
+18
View File
@@ -3,6 +3,24 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [7.2.2](https://github.com/appium/appium/compare/@appium/support@7.2.1...@appium/support@7.2.2) (2026-05-07)
### Bug Fixes
* **support:** accept Uint8Array/ArrayBuffer in plist parse path ([#22256](https://github.com/appium/appium/issues/22256)) ([8c6c199](https://github.com/appium/appium/commit/8c6c19982e97eded690da51e745c69e4ccc1e6bd))
## [7.2.1](https://github.com/appium/appium/compare/@appium/support@7.2.0...@appium/support@7.2.1) (2026-05-06)
### Bug Fixes
* **support:** Avoid exceptions in unwrapElement ([#22250](https://github.com/appium/appium/issues/22250)) ([3229e74](https://github.com/appium/appium/commit/3229e74d3d9c1c5bc32d63751901c299133539a8))
## [7.2.0](https://github.com/appium/appium/compare/@appium/support@7.1.1...@appium/support@7.2.0) (2026-05-06)
+24 -9
View File
@@ -134,11 +134,11 @@ export function createPlist(object: object, binary = false): Buffer | string {
/**
* Parses a buffer or string into a JS object
*
* @param data - The plist as a string or Buffer
* @param data - The plist as a string, Buffer, Uint8Array, or ArrayBuffer
* @returns Parsed plist as a JS object
* @throws Will throw an error if the plist type is unknown
*/
export function parsePlist(data: string | Buffer): object {
export function parsePlist(data: string | Buffer | Uint8Array | ArrayBuffer): object {
const textPlist = getXmlPlist(data);
if (textPlist) {
return plistParse(textPlist);
@@ -159,29 +159,44 @@ async function parseXmlPlistFile(plistFilename: string): Promise<object> {
return plistParse(xmlContent);
}
function getXmlPlist(data: string | Buffer): string | null {
function getXmlPlist(data: string | Buffer | Uint8Array | ArrayBuffer): string | null {
if (typeof data === 'string' && data.startsWith(PLIST_IDENTIFIER.TEXT)) {
return data;
}
const binaryData = toBufferIfBinaryLike(data);
if (
Buffer.isBuffer(data) &&
PLIST_IDENTIFIER.BUFFER.compare(data, 0, PLIST_IDENTIFIER.BUFFER.length) === 0
binaryData &&
PLIST_IDENTIFIER.BUFFER.compare(binaryData, 0, PLIST_IDENTIFIER.BUFFER.length) === 0
) {
return data.toString();
return binaryData.toString();
}
return null;
}
function getBinaryPlist(data: string | Buffer): Buffer | null {
function getBinaryPlist(data: string | Buffer | Uint8Array | ArrayBuffer): Buffer | null {
if (typeof data === 'string' && data.startsWith(BPLIST_IDENTIFIER.TEXT)) {
return Buffer.from(data);
}
const binaryData = toBufferIfBinaryLike(data);
if (
Buffer.isBuffer(data) &&
BPLIST_IDENTIFIER.BUFFER.compare(data, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0
binaryData &&
BPLIST_IDENTIFIER.BUFFER.compare(binaryData, 0, BPLIST_IDENTIFIER.BUFFER.length) === 0
) {
return binaryData;
}
return null;
}
function toBufferIfBinaryLike(data: unknown): Buffer | null {
if (Buffer.isBuffer(data)) {
return data;
}
if (data instanceof Uint8Array) {
return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
}
if (data instanceof ArrayBuffer) {
return Buffer.from(data);
}
return null;
}
+5 -4
View File
@@ -346,10 +346,11 @@ export function jsonStringify(
* @returns The element ID string
*/
export function unwrapElement(el: Element | string): string {
const elObj = el as unknown as Record<string, string>;
for (const propName of [W3C_WEB_ELEMENT_IDENTIFIER, 'ELEMENT']) {
if (Object.hasOwn(elObj, propName)) {
return elObj[propName];
if (isPlainObject(el)) {
for (const propName of [W3C_WEB_ELEMENT_IDENTIFIER, 'ELEMENT']) {
if (Object.hasOwn(el, propName)) {
return el[propName] as string;
}
}
}
return el as string;
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/support",
"version": "7.2.0",
"version": "7.2.2",
"description": "Support libs used across Appium packages",
"keywords": [
"automation",
@@ -53,7 +53,7 @@
"bplist-parser": "0.3.2",
"form-data": "4.0.5",
"get-stream": "9.0.1",
"glob": "13.0.6",
"glob": "13.0.5",
"jsftp": "2.1.3",
"klaw": "4.1.0",
"lockfile": "1.0.4",
+33
View File
@@ -53,4 +53,37 @@ describe('plist', function () {
'com.apple.locationd.bundle-/System/Library/PrivateFrameworks/Parsec.framework'
);
});
it('should read text plist from Uint8Array', async function () {
const content = await fs.readFile(textPlistPath);
const object = plist.parsePlist(new Uint8Array(content));
expect(object).to.have.property(
'com.apple.locationd.bundle-/System/Library/PrivateFrameworks/Parsec.framework'
);
});
it('should read binary plist from Uint8Array', async function () {
const content = await fs.readFile(binaryPlistPath);
const object = plist.parsePlist(new Uint8Array(content));
expect(object).to.have.property(
'com.apple.locationd.bundle-/System/Library/PrivateFrameworks/Parsec.framework'
);
});
it('should read binary plist from ArrayBuffer', async function () {
const content = await fs.readFile(binaryPlistPath);
const object = plist.parsePlist(content.buffer.slice(content.byteOffset, content.byteOffset + content.byteLength));
expect(object).to.have.property(
'com.apple.locationd.bundle-/System/Library/PrivateFrameworks/Parsec.framework'
);
});
it('should parse nested data payload returned from plist parser', function () {
const innerPayload = plist.createBinaryPlist({answer: 42});
const outer = plist.createPlist({payload: innerPayload});
const outerParsed = plist.parsePlist(outer as string);
const nestedPayload = (outerParsed as {payload: Uint8Array | Buffer | ArrayBuffer}).payload;
const nestedParsed = plist.parsePlist(nestedPayload);
expect(nestedParsed).to.deep.equal({answer: 42});
});
});
+3
View File
@@ -299,6 +299,9 @@ describe('util', function () {
const el = 4;
expect(util.unwrapElement(el as any)).to.equal(el);
});
it('should not throw for null element input', function () {
expect(util.unwrapElement(null as any)).to.equal(null);
});
it('should pass through an element that is an object', function () {
const el = {RANDOM: 4};
expect(util.unwrapElement(el as any)).to.equal(el);
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [4.1.4](https://github.com/appium/appium/compare/@appium/test-support@4.1.3...@appium/test-support@4.1.4) (2026-05-07)
**Note:** Version bump only for package @appium/test-support
## [4.1.3](https://github.com/appium/appium/compare/@appium/test-support@4.1.2...@appium/test-support@4.1.3) (2026-05-06)
**Note:** Version bump only for package @appium/test-support
## [4.1.2](https://github.com/appium/appium/compare/@appium/test-support@4.1.1...@appium/test-support@4.1.2) (2026-05-06)
**Note:** Version bump only for package @appium/test-support
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/test-support",
"version": "4.1.2",
"version": "4.1.4",
"description": "A collection of test utilities used across Appium packages",
"deprecated": "This module is deprecated. Use sinon directly instead (e.g., sinon.createSandbox() with Mocha hooks).",
"keywords": [
@@ -47,7 +47,7 @@
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
},
"dependencies": {
"@appium/support": "7.2.0",
"@appium/support": "7.2.2",
"@colors/colors": "1.6.0",
"bluebird": "3.7.2",
"lodash": "4.18.1",