mirror of
https://github.com/appium/appium.git
synced 2026-10-31 14:00:08 +08:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5369c65a8 | ||
|
|
8c6c19982e | ||
|
|
e39017feac |
@@ -50,5 +50,88 @@ jobs:
|
||||
printf "n\n" | npx lerna version --exact --no-git-tag-version --no-push
|
||||
else
|
||||
echo "Running lerna publish for real"
|
||||
npm run release -- --yes
|
||||
set +e
|
||||
release_output="$(npm run release -- --yes 2>&1)"
|
||||
release_exit_code=$?
|
||||
set -e
|
||||
printf '%s\n' "$release_output"
|
||||
|
||||
if [ $release_exit_code -eq 0 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ "$release_output" == *"fatal: tag '"*"' already exists"* ]]; then
|
||||
existing_tag="$(printf '%s\n' "$release_output" | sed -n "s/.*fatal: tag '\\([^']*\\)' already exists.*/\\1/p" | head -n 1)"
|
||||
if [ -z "$existing_tag" ]; then
|
||||
echo "Detected existing tag failure, but could not parse tag name"
|
||||
exit $release_exit_code
|
||||
fi
|
||||
|
||||
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
|
||||
echo "Tag ${existing_tag} was not found after fetching tags"
|
||||
exit $release_exit_code
|
||||
fi
|
||||
|
||||
git checkout "$tagged_commit"
|
||||
missing=()
|
||||
for pkg_json in packages/*/package.json; do
|
||||
if [ ! -f "$pkg_json" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$(jq -r '.private // false' "$pkg_json")" = "true" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
pkg_name="$(jq -r '.name // empty' "$pkg_json")"
|
||||
pkg_version="$(jq -r '.version // empty' "$pkg_json")"
|
||||
if [ -z "$pkg_name" ] || [ -z "$pkg_version" ]; then
|
||||
echo "Skipping malformed package manifest: $pkg_json"
|
||||
continue
|
||||
fi
|
||||
|
||||
pkg_spec="${pkg_name}@${pkg_version}"
|
||||
if ! npm view "$pkg_spec" version >/dev/null 2>&1; then
|
||||
missing+=("$pkg_spec")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#missing[@]} -gt 0 ]; then
|
||||
echo "Missing package versions on npm before scoped recovery:"
|
||||
printf ' - %s\n' "${missing[@]}"
|
||||
echo "Publishing missing packages one-by-one with scope"
|
||||
for pkg_spec in "${missing[@]}"; do
|
||||
pkg_name="${pkg_spec%@*}"
|
||||
echo "Publishing ${pkg_name}"
|
||||
set +e
|
||||
npx lerna publish from-package --yes --scope "$pkg_name"
|
||||
scoped_exit_code=$?
|
||||
set -e
|
||||
if [ $scoped_exit_code -ne 0 ]; then
|
||||
echo "Scoped publish exited non-zero for ${pkg_name}; will verify on npm"
|
||||
fi
|
||||
done
|
||||
|
||||
final_missing=()
|
||||
for pkg_spec in "${missing[@]}"; do
|
||||
if ! npm view "$pkg_spec" version >/dev/null 2>&1; then
|
||||
final_missing+=("$pkg_spec")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#final_missing[@]} -gt 0 ]; then
|
||||
echo "Recovery incomplete after scoped retries. Still missing:"
|
||||
printf ' - %s\n' "${final_missing[@]}"
|
||||
exit $release_exit_code
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "All publishable workspace package versions are present on npm; treating recovery as successful."
|
||||
else
|
||||
echo "Release failed and no known recovery condition matched"
|
||||
exit $release_exit_code
|
||||
fi
|
||||
fi
|
||||
|
||||
Generated
+22
-22
@@ -19337,16 +19337,16 @@
|
||||
}
|
||||
},
|
||||
"packages/appium": {
|
||||
"version": "3.4.1",
|
||||
"version": "3.4.2",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "10.5.1",
|
||||
"@appium/base-plugin": "3.2.3",
|
||||
"@appium/docutils": "2.4.1",
|
||||
"@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.1",
|
||||
"@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.1",
|
||||
"version": "10.5.2",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "7.2.1",
|
||||
"@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.3",
|
||||
"version": "3.2.4",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "10.5.1",
|
||||
"@appium/support": "7.2.1",
|
||||
"@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.1",
|
||||
"version": "2.4.2",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "7.2.1",
|
||||
"@appium/support": "7.2.2",
|
||||
"consola": "3.4.2",
|
||||
"diff": "9.0.0",
|
||||
"lilconfig": "3.1.3",
|
||||
@@ -19861,11 +19861,11 @@
|
||||
},
|
||||
"packages/fake-plugin": {
|
||||
"name": "@appium/fake-plugin",
|
||||
"version": "4.2.3",
|
||||
"version": "4.2.4",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-plugin": "3.2.3",
|
||||
"@appium/support": "7.2.1",
|
||||
"@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.3",
|
||||
"version": "4.2.4",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/opencv": "4.1.4",
|
||||
"@appium/support": "7.2.1",
|
||||
"@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.3",
|
||||
"version": "1.1.4",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "7.2.1",
|
||||
"@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.1",
|
||||
"version": "7.2.2",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/logger": "2.0.7",
|
||||
@@ -20369,11 +20369,11 @@
|
||||
},
|
||||
"packages/test-support": {
|
||||
"name": "@appium/test-support",
|
||||
"version": "4.1.3",
|
||||
"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.1",
|
||||
"@appium/support": "7.2.2",
|
||||
"@colors/colors": "1.6.0",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.18.1",
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "appium",
|
||||
"version": "3.4.1",
|
||||
"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.1",
|
||||
"@appium/base-plugin": "3.2.3",
|
||||
"@appium/docutils": "2.4.1",
|
||||
"@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.1",
|
||||
"@appium/support": "7.2.2",
|
||||
"@appium/types": "1.4.0",
|
||||
"@sidvind/better-ajv-errors": "5.0.0",
|
||||
"ajv": "8.20.0",
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-driver",
|
||||
"version": "10.5.1",
|
||||
"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.1",
|
||||
"@appium/support": "7.2.2",
|
||||
"@appium/types": "1.4.0",
|
||||
"@colors/colors": "1.6.0",
|
||||
"async-lock": "1.4.1",
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-plugin",
|
||||
"version": "3.2.3",
|
||||
"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.1",
|
||||
"@appium/support": "7.2.1",
|
||||
"@appium/base-driver": "10.5.2",
|
||||
"@appium/support": "7.2.2",
|
||||
"@appium/types": "1.4.0"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/docutils",
|
||||
"version": "2.4.1",
|
||||
"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.1",
|
||||
"@appium/support": "7.2.2",
|
||||
"consola": "3.4.2",
|
||||
"diff": "9.0.0",
|
||||
"lilconfig": "3.1.3",
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/fake-plugin",
|
||||
"version": "4.2.3",
|
||||
"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.3",
|
||||
"@appium/support": "7.2.1",
|
||||
"@appium/base-plugin": "3.2.4",
|
||||
"@appium/support": "7.2.2",
|
||||
"asyncbox": "6.2.0",
|
||||
"lodash": "4.18.1"
|
||||
},
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/images-plugin",
|
||||
"version": "4.2.3",
|
||||
"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.1",
|
||||
"@appium/support": "7.2.2",
|
||||
"lodash": "4.18.1",
|
||||
"lru-cache": "11.3.5",
|
||||
"sharp": "0.34.5"
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
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,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/storage-plugin",
|
||||
"version": "1.1.3",
|
||||
"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.1",
|
||||
"@appium/support": "7.2.2",
|
||||
"async-lock": "1.4.1",
|
||||
"asyncbox": "6.2.0",
|
||||
"lodash": "4.18.1",
|
||||
|
||||
@@ -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.
|
||||
|
||||
## [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)
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/support",
|
||||
"version": "7.2.1",
|
||||
"version": "7.2.2",
|
||||
"description": "Support libs used across Appium packages",
|
||||
"keywords": [
|
||||
"automation",
|
||||
|
||||
@@ -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,6 +3,14 @@
|
||||
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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/test-support",
|
||||
"version": "4.1.3",
|
||||
"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.1",
|
||||
"@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