mirror of
https://github.com/appium/appium.git
synced 2026-10-31 22:32:24 +08:00
Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5369c65a8 | ||
|
|
8c6c19982e | ||
|
|
e39017feac | ||
|
|
fd6dbe9eff | ||
|
|
c18b535d42 | ||
|
|
9045dfcefa | ||
|
|
98a1735913 | ||
|
|
3229e74d3d |
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Generated
+27
-27
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user