Compare commits

...
Author SHA1 Message Date
github-actions e6b583a209 chore: publish
- appium@3.5.2
 - @appium/base-driver@10.7.1
 - @appium/base-plugin@3.3.2
 - @appium/docutils@2.5.1
 - @appium/driver-test-support@1.2.5
 - @appium/execute-driver-plugin@6.0.6
 - @appium/fake-plugin@4.3.2
 - @appium/images-plugin@4.2.7
 - @appium/storage-plugin@1.1.7
 - @appium/support@7.2.5
 - @appium/universal-xml-plugin@2.1.6
2026-06-18 21:21:35 +00:00
renovate[bot] 3016201f2a chore(universal-xml-plugin): update dependency fast-xml-parser to v5.9.0 (#22397)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 23:15:13 +02:00
renovate[bot] e0d5c4dfd6 chore(support): update dependency axios to v1.18.0 (#22396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 23:14:50 +02:00
Mykola Mokhnach 779a3a048f fix(support): uploadFile overload (#22400) 2026-06-18 23:14:27 +02:00
renovate[bot] 07302ab3e9 chore(workflows): update egmacke/action-check-label action to v5 (#22399)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 17:12:45 +03:00
Edgars Eglītis 609db021f4 docs: adjust plugin READMEs for consistency (#22395) 2026-06-18 11:02:19 +03:00
31 changed files with 273 additions and 111 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check for "On Hold" label
uses: egmacke/action-check-label@v4
uses: egmacke/action-check-label@v5
with:
label: On Hold
state: absent
+73 -45
View File
@@ -1698,9 +1698,9 @@
}
},
"node_modules/@nodable/entities": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz",
"integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==",
"funding": [
{
"type": "github",
@@ -4900,6 +4900,18 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/anynum": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/anynum/-/anynum-1.0.0.tgz",
"integrity": "sha512-xjR9/zBVnUOP6ztMIIgShjsxui80nQUQH+5xJnvrYLs+90bF25/KJqaAi8mk+B4RDtX1Nspi6fmp4YTEts8SfA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT"
},
"node_modules/appium": {
"resolved": "packages/appium",
"link": true
@@ -5307,9 +5319,9 @@
}
},
"node_modules/axios": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz",
"integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==",
"version": "1.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.18.0.tgz",
"integrity": "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.16.0",
@@ -9178,9 +9190,9 @@
}
},
"node_modules/fast-xml-parser": {
"version": "5.8.0",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz",
"integrity": "sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==",
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.9.0.tgz",
"integrity": "sha512-duBuXbyIhEeNO4GjFuVqr0nF047oNwr18aum+zJyqo0MUG/n7Afgs3Qv3D6VN3ONedUKxiuFlPiMGIa0Z11chA==",
"funding": [
{
"type": "github",
@@ -9189,10 +9201,11 @@
],
"license": "MIT",
"dependencies": {
"@nodable/entities": "^2.1.0",
"@nodable/entities": "^2.2.0",
"fast-xml-builder": "^1.2.0",
"is-unsafe": "^1.0.1",
"path-expression-matcher": "^1.5.0",
"strnum": "^2.3.0",
"strnum": "^2.4.0",
"xml-naming": "^0.1.0"
},
"bin": {
@@ -11050,6 +11063,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-unsafe": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-1.0.1.tgz",
"integrity": "sha512-CLK2+VdgERgD96EYm5lUQssZYlRg2tkZnbsxZoacmSiRxiFJ4Nk4SzjCl+Ur+v3kXIY9dTIdb3IH22y1mZ56LA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT"
},
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -16995,16 +17020,19 @@
}
},
"node_modules/strnum": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz",
"integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==",
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.0.tgz",
"integrity": "sha512-sHrVyWWdq28RbhjuJdZsA1SnGRJV6NiXbk6AXBxDOsgAcA+lmpUZCYjOdLBxkXMwis6RRe7dlZt4VlIWFVzkmg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT"
"license": "MIT",
"dependencies": {
"anynum": "^1.0.0"
}
},
"node_modules/supports-color": {
"version": "8.1.1",
@@ -18844,23 +18872,23 @@
}
},
"packages/appium": {
"version": "3.5.1",
"version": "3.5.2",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@appium/base-driver": "10.7.0",
"@appium/base-plugin": "3.3.1",
"@appium/docutils": "2.5.0",
"@appium/base-driver": "10.7.1",
"@appium/base-plugin": "3.3.2",
"@appium/docutils": "2.5.1",
"@appium/logger": "2.0.9",
"@appium/schema": "1.2.1",
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"@appium/types": "1.5.1",
"@sidvind/better-ajv-errors": "5.0.0",
"ajv": "8.20.0",
"ajv-formats": "3.0.1",
"argparse": "2.0.1",
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"lilconfig": "3.1.3",
"lru-cache": "11.5.1",
"ora": "5.4.1",
@@ -18917,14 +18945,14 @@
},
"packages/base-driver": {
"name": "@appium/base-driver",
"version": "10.7.0",
"version": "10.7.1",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"@appium/types": "1.5.1",
"async-lock": "1.4.1",
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"body-parser": "2.2.2",
"express": "5.2.1",
"fastest-levenshtein": "1.0.16",
@@ -18970,11 +18998,11 @@
},
"packages/base-plugin": {
"name": "@appium/base-plugin",
"version": "3.3.1",
"version": "3.3.2",
"license": "Apache-2.0",
"dependencies": {
"@appium/base-driver": "10.7.0",
"@appium/support": "7.2.4",
"@appium/base-driver": "10.7.1",
"@appium/support": "7.2.5",
"@appium/types": "1.5.1"
},
"engines": {
@@ -18984,10 +19012,10 @@
},
"packages/docutils": {
"name": "@appium/docutils",
"version": "2.5.0",
"version": "2.5.1",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"consola": "3.4.2",
"diff": "9.0.0",
"lilconfig": "3.1.3",
@@ -19186,11 +19214,11 @@
},
"packages/driver-test-support": {
"name": "@appium/driver-test-support",
"version": "1.2.4",
"version": "1.2.5",
"license": "Apache-2.0",
"dependencies": {
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"chai": "6.2.2",
"chai-as-promised": "8.0.2",
"sinon": "22.0.0",
@@ -19252,10 +19280,10 @@
},
"packages/execute-driver-plugin": {
"name": "@appium/execute-driver-plugin",
"version": "6.0.5",
"version": "6.0.6",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"webdriverio": "9.28.0"
},
"engines": {
@@ -19285,11 +19313,11 @@
},
"packages/fake-plugin": {
"name": "@appium/fake-plugin",
"version": "4.3.1",
"version": "4.3.2",
"license": "Apache-2.0",
"dependencies": {
"@appium/base-plugin": "3.3.1",
"@appium/support": "7.2.4",
"@appium/base-plugin": "3.3.2",
"@appium/support": "7.2.5",
"asyncbox": "6.3.0"
},
"devDependencies": {
@@ -19306,11 +19334,11 @@
},
"packages/images-plugin": {
"name": "@appium/images-plugin",
"version": "4.2.6",
"version": "4.2.7",
"license": "Apache-2.0",
"dependencies": {
"@appium/opencv": "4.1.6",
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"lru-cache": "11.5.1",
"sharp": "0.35.1"
},
@@ -19413,10 +19441,10 @@
},
"packages/storage-plugin": {
"name": "@appium/storage-plugin",
"version": "1.1.6",
"version": "1.1.7",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"async-lock": "1.4.1",
"asyncbox": "6.3.0",
"lru-cache": "11.5.1",
@@ -19468,14 +19496,14 @@
},
"packages/support": {
"name": "@appium/support",
"version": "7.2.4",
"version": "7.2.5",
"license": "Apache-2.0",
"dependencies": {
"@appium/logger": "2.0.9",
"@appium/types": "1.5.1",
"archiver": "8.0.0",
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"bluebird": "3.7.2",
"bplist-creator": "0.1.1",
"bplist-parser": "0.3.2",
@@ -19857,12 +19885,12 @@
},
"packages/universal-xml-plugin": {
"name": "@appium/universal-xml-plugin",
"version": "2.1.5",
"version": "2.1.6",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"@xmldom/xmldom": "0.9.10",
"fast-xml-parser": "5.8.0",
"fast-xml-parser": "5.9.0",
"xpath": "0.0.34"
},
"engines": {
+8
View File
@@ -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.5.2](https://github.com/appium/appium/compare/appium@3.5.1...appium@3.5.2) (2026-06-18)
**Note:** Version bump only for package appium
## [3.5.1](https://github.com/appium/appium/compare/appium@3.5.0...appium@3.5.1) (2026-06-18)
+6 -6
View File
@@ -1,6 +1,6 @@
{
"name": "appium",
"version": "3.5.1",
"version": "3.5.2",
"description": "Automation for Apps.",
"keywords": [
"automation",
@@ -60,19 +60,19 @@
"test:unit": "mocha \"./test/unit/**/*.spec.ts\""
},
"dependencies": {
"@appium/base-driver": "10.7.0",
"@appium/base-plugin": "3.3.1",
"@appium/docutils": "2.5.0",
"@appium/base-driver": "10.7.1",
"@appium/base-plugin": "3.3.2",
"@appium/docutils": "2.5.1",
"@appium/logger": "2.0.9",
"@appium/schema": "1.2.1",
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"@appium/types": "1.5.1",
"@sidvind/better-ajv-errors": "5.0.0",
"ajv": "8.20.0",
"ajv-formats": "3.0.1",
"argparse": "2.0.1",
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"lilconfig": "3.1.3",
"lru-cache": "11.5.1",
"ora": "5.4.1",
+8
View File
@@ -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.7.1](https://github.com/appium/appium/compare/@appium/base-driver@10.7.0...@appium/base-driver@10.7.1) (2026-06-18)
**Note:** Version bump only for package @appium/base-driver
## [10.7.0](https://github.com/appium/appium/compare/@appium/base-driver@10.6.0...@appium/base-driver@10.7.0) (2026-06-18)
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/base-driver",
"version": "10.7.0",
"version": "10.7.1",
"description": "Base driver class for Appium drivers",
"keywords": [
"automation",
@@ -45,11 +45,11 @@
"test:types": "tsd"
},
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"@appium/types": "1.5.1",
"async-lock": "1.4.1",
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"body-parser": "2.2.2",
"express": "5.2.1",
"fastest-levenshtein": "1.0.16",
+8
View File
@@ -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.3.2](https://github.com/appium/appium/compare/@appium/base-plugin@3.3.1...@appium/base-plugin@3.3.2) (2026-06-18)
**Note:** Version bump only for package @appium/base-plugin
## [3.3.1](https://github.com/appium/appium/compare/@appium/base-plugin@3.3.0...@appium/base-plugin@3.3.1) (2026-06-18)
**Note:** Version bump only for package @appium/base-plugin
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/base-plugin",
"version": "3.3.1",
"version": "3.3.2",
"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.7.0",
"@appium/support": "7.2.4",
"@appium/base-driver": "10.7.1",
"@appium/support": "7.2.5",
"@appium/types": "1.5.1"
},
"engines": {
+8
View File
@@ -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.5.1](https://github.com/appium/appium/compare/@appium/docutils@2.5.0...@appium/docutils@2.5.1) (2026-06-18)
**Note:** Version bump only for package @appium/docutils
## [2.5.0](https://github.com/appium/appium/compare/@appium/docutils@2.4.3...@appium/docutils@2.5.0) (2026-06-18)
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/docutils",
"version": "2.5.0",
"version": "2.5.1",
"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.4",
"@appium/support": "7.2.5",
"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.
## [1.2.5](https://github.com/appium/appium/compare/@appium/driver-test-support@1.2.4...@appium/driver-test-support@1.2.5) (2026-06-18)
**Note:** Version bump only for package @appium/driver-test-support
## [1.2.4](https://github.com/appium/appium/compare/@appium/driver-test-support@1.2.3...@appium/driver-test-support@1.2.4) (2026-06-18)
**Note:** Version bump only for package @appium/driver-test-support
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/driver-test-support",
"version": "1.2.4",
"version": "1.2.5",
"description": "Test utilities for Appium drivers",
"keywords": [
"automation",
@@ -40,7 +40,7 @@
"types": "./build/lib/index.d.ts",
"dependencies": {
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"chai": "6.2.2",
"chai-as-promised": "8.0.2",
"sinon": "22.0.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.
## [6.0.6](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@6.0.5...@appium/execute-driver-plugin@6.0.6) (2026-06-18)
**Note:** Version bump only for package @appium/execute-driver-plugin
## [6.0.5](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@6.0.4...@appium/execute-driver-plugin@6.0.5) (2026-06-18)
**Note:** Version bump only for package @appium/execute-driver-plugin
+13 -7
View File
@@ -5,7 +5,7 @@
[![NPM version](http://img.shields.io/npm/v/@appium/execute-driver-plugin.svg)](https://npmjs.org/package/@appium/execute-driver-plugin)
[![Downloads](http://img.shields.io/npm/dm/@appium/execute-driver-plugin.svg)](https://npmjs.org/package/@appium/execute-driver-plugin)
This plugin adds a new driver command that allows executing scripts in a child process. Currently,
This plugin adds a new server endpoint that allows executing scripts in a child process. Currently,
the only supported driver type is `webdriverio`, therefore the script must also be written in JS.
## Motivation
@@ -14,7 +14,7 @@ Running a driver script in a child process adds a degree of parallelisation, whi
faster test execution.
> [!WARNING]
> This plugin enables execution of arbitrary JavaScript code. We recommend only using this plugin in a controlled environment. Scripts run in a Node.js `vm` context with a hardened view of the WebdriverIO driver (host-realm prototype metadata is not exposed), but `vm` is still not a full security boundary for untrusted code; treat `--allow-insecure=…:execute_driver_script` as highly privileged.
> This plugin enables execution of arbitrary JavaScript code. We recommend only using this plugin in a controlled environment. Scripts run in a Node.js `vm` context with a hardened view of the WebdriverIO driver (host-realm prototype metadata is not exposed), but `vm` is still not a full security boundary for untrusted code; treat this plugin as highly privileged.
## Installation
@@ -22,18 +22,20 @@ faster test execution.
appium plugin install execute-driver
```
The plugin must be explicitly activated when launching the Appium server. Since the input script
can be arbitrary JavaScript, this is an insecure feature, and must also be explicitly enabled:
## Usage
Like all plugins, this plugin must be explicitly activated when launching the Appium server. Since
the input script can be arbitrary JavaScript, this is [an insecure feature](https://appium.io/docs/en/latest/guides/security/),
and must also be explicitly enabled:
```
appium --use-plugins=execute-driver --allow-insecure=<driver>:execute_driver_script
```
`<driver>` is the name of the driver whose sessions will have access to the plugin.
## Usage
Once the plugin is running, you can call the new command:
```js
// JavaScript (WebdriverIO)
const script = `return await driver.getTimeouts();`;
const {result, logs} = await driver.executeDriverScript(script);
// 'result' contains the data returned by the script (in this case, the response to 'getTimeouts')
@@ -50,6 +52,10 @@ enabling the use of unconditional delays:
const script = `return await new Promise((resolve) => setTimeout(resolve, 1000));`;
```
## API
[Refer to the Appium documentation](https://appium.io/docs/en/latest/reference/api/plugins/#execute-driver-plugin).
## License
Apache-2.0
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/execute-driver-plugin",
"version": "6.0.5",
"version": "6.0.6",
"description": "Plugin for batching and executing Appium driver commands",
"keywords": [
"automation",
@@ -39,7 +39,7 @@
"test:unit": "mocha \"./test/unit/**/*.spec.ts\""
},
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"webdriverio": "9.28.0"
},
"peerDependencies": {
+8
View File
@@ -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.3.2](https://github.com/appium/appium/compare/@appium/fake-plugin@4.3.1...@appium/fake-plugin@4.3.2) (2026-06-18)
**Note:** Version bump only for package @appium/fake-plugin
## [4.3.1](https://github.com/appium/appium/compare/@appium/fake-plugin@4.3.0...@appium/fake-plugin@4.3.1) (2026-06-18)
**Note:** Version bump only for package @appium/fake-plugin
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/fake-plugin",
"version": "4.3.1",
"version": "4.3.2",
"description": "A fake Appium plugin",
"keywords": [
"automation",
@@ -39,8 +39,8 @@
"test:unit": "mocha \"./test/unit/**/*.spec.*ts\""
},
"dependencies": {
"@appium/base-plugin": "3.3.1",
"@appium/support": "7.2.4",
"@appium/base-plugin": "3.3.2",
"@appium/support": "7.2.5",
"asyncbox": "6.3.0"
},
"devDependencies": {
+8
View File
@@ -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.7](https://github.com/appium/appium/compare/@appium/images-plugin@4.2.6...@appium/images-plugin@4.2.7) (2026-06-18)
**Note:** Version bump only for package @appium/images-plugin
## [4.2.6](https://github.com/appium/appium/compare/@appium/images-plugin@4.2.5...@appium/images-plugin@4.2.6) (2026-06-18)
**Note:** Version bump only for package @appium/images-plugin
+13 -4
View File
@@ -5,10 +5,10 @@
[![NPM version](http://img.shields.io/npm/v/@appium/images-plugin.svg)](https://npmjs.org/package/@appium/images-plugin)
[![Downloads](http://img.shields.io/npm/dm/@appium/images-plugin.svg)](https://npmjs.org/package/@appium/images-plugin)
## Features
This plugin provides two features for image-based testing:
1. **Image Comparison** ([docs](./docs/image-comparison.md)) - A new Appium command and route that allows sending in two different images and comparing them in various ways.
2. **Finding Elements by Image** ([docs](./docs/find-by-image.md)) - Using a template image, find a matching screen region of an app and interact with it via standard Appium element semantics.
1. [**Image Comparison**](./docs/image-comparison.md) - A new Appium endpoint that allows accepts two images and allows comparing them in various ways
2. [**Finding Elements by Image**](./docs/find-by-image.md) - Using a template image, find a matching screen region of an app, and interact with it using standard Appium element commands
## Installation
@@ -16,12 +16,21 @@
appium plugin install images
```
The plugin must be explicitly activated when launching the Appium server:
## Usage
Like all plugins, this plugin must be explicitly activated when launching the Appium server:
```
appium --use-plugins=images
```
Once the plugin is running, you can use its new and modified endpoints as described in the
aforementioned guides.
## API
[Refer to the Appium documentation](https://appium.io/docs/en/latest/reference/api/plugins/#images-plugin).
## License
Apache-2.0
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/images-plugin",
"version": "4.2.6",
"version": "4.2.7",
"description": "Plugin for working with images and image elements in Appium",
"keywords": [
"automation",
@@ -41,7 +41,7 @@
},
"dependencies": {
"@appium/opencv": "4.1.6",
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"lru-cache": "11.5.1",
"sharp": "0.35.1"
},
+10 -1
View File
@@ -24,12 +24,21 @@ capability requirements since Appium 2.
appium plugin install relaxed-caps
```
The plugin must be explicitly activated when launching the Appium server:
## Usage
Like all plugins, this plugin must be explicitly activated when launching the Appium server:
```
appium --use-plugins=relaxed-caps
```
Once the plugin is running, all unprefixed non-standard capabilities provided in any new session
will automatically be prefixed with `appium:`.
## API
[Refer to the Appium documentation](https://appium.io/docs/en/latest/reference/api/plugins/#relaxed-caps-plugin).
## License
Apache-2.0
+8
View File
@@ -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.7](https://github.com/appium/appium/compare/@appium/storage-plugin@1.1.6...@appium/storage-plugin@1.1.7) (2026-06-18)
**Note:** Version bump only for package @appium/storage-plugin
## [1.1.6](https://github.com/appium/appium/compare/@appium/storage-plugin@1.1.5...@appium/storage-plugin@1.1.6) (2026-06-18)
+12 -20
View File
@@ -2,6 +2,9 @@
> Appium plugin for server-side file storage
[![NPM version](http://img.shields.io/npm/v/@appium/storage-plugin.svg)](https://npmjs.org/package/@appium/storage-plugin)
[![Downloads](http://img.shields.io/npm/dm/@appium/storage-plugin.svg)](https://npmjs.org/package/@appium/storage-plugin)
This plugin adds the ability to create a dedicated storage space on the server side,
which can be managed from the client side. This can be useful for files like application packages.
Only one storage may exist per server process, shared by all testing sessions.
@@ -13,21 +16,22 @@ Only one storage may exist per server process, shared by all testing sessions.
## Installation
```bash
```
appium plugin install storage
```
## Usage
Add the plugin name to the list of plugins to use upon server startup:
Like all plugins, this plugin must be explicitly activated when launching the Appium server:
```bash
```
appium --use-plugins=storage
```
By default, the plugin creates a new temporary folder where it manages uploaded files.
Once the plugin is running, you can call its endpoints (see API section) to manage the storage
space. These endpoints can be invoked even without an active Appium session.
[Refer to the Appium documentation for the endpoints supported by this plugin.](https://appium.io/docs/en/latest/reference/api/storage-plugin/)
By default, the plugin creates a new temporary folder where it manages uploaded files.
### Storing a File
@@ -55,23 +59,11 @@ Only flat files hierarchies are supported in the storage, no subfolders are allo
If a file with the same name already exists in the storage, it will be overridden with the new one.
If a folder with the same name already exists in the storage, an error will be thrown.
### Environment Variables
## API
#### APPIUM_STORAGE_ROOT
[Refer to the Appium documentation](https://appium.io/docs/en/latest/reference/api/plugins/#storage-plugin).
It is also possible to customize the repository root folder path by assigning a custom path to the
`APPIUM_STORAGE_ROOT` environment variable upon server startup. The plugin automatically deletes the
root folder recursively upon server process termination, unless the server is
killed forcefully. If `APPIUM_STORAGE_ROOT` points to an existing folder,
then all files there are going to be preserved by default unless a different behavior is
requested by [APPIUM_STORAGE_KEEP_ALL](#appium_storage_keep_all) environment variable value.
#### APPIUM_STORAGE_KEEP_ALL
If this environment variable is set to `true`, `1` or `yes` then the plugin will always keep
storage files after the server process is terminated. All other
values of this variable enforce the plugin to always delete all files
from the storage folder.
The plugin also supports [several environment variables](https://appium.io/docs/en/latest/reference/cli/env-vars/) for further customization.
## Examples
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/storage-plugin",
"version": "1.1.6",
"version": "1.1.7",
"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.4",
"@appium/support": "7.2.5",
"async-lock": "1.4.1",
"asyncbox": "6.3.0",
"lru-cache": "11.5.1",
+9
View File
@@ -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.5](https://github.com/appium/appium/compare/@appium/support@7.2.4...@appium/support@7.2.5) (2026-06-18)
### Bug Fixes
* **support:** uploadFile overload ([#22400](https://github.com/appium/appium/issues/22400)) ([779a3a0](https://github.com/appium/appium/commit/779a3a048f50d5c860402fca6023828c2ccdf1be))
## [7.2.4](https://github.com/appium/appium/compare/@appium/support@7.2.3...@appium/support@7.2.4) (2026-06-18)
**Note:** Version bump only for package @appium/support
+5
View File
@@ -85,6 +85,11 @@ export async function uploadFile(
remoteUri: FtpRemoteUri,
uploadOptions?: FtpUploadOptions,
): Promise<void>;
export async function uploadFile(
localPath: string,
remoteUri: string,
uploadOptions?: HttpUploadOptions,
): Promise<void>;
export async function uploadFile(
localPath: string,
remoteUri: string,
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/support",
"version": "7.2.4",
"version": "7.2.5",
"description": "Support libs used across Appium packages",
"keywords": [
"automation",
@@ -47,7 +47,7 @@
"@appium/types": "1.5.1",
"archiver": "8.0.0",
"asyncbox": "6.3.0",
"axios": "1.17.0",
"axios": "1.18.0",
"bluebird": "3.7.2",
"bplist-creator": "0.1.1",
"bplist-parser": "0.3.2",
+16
View File
@@ -0,0 +1,16 @@
import {expect} from 'chai';
import {uploadFile} from '../../lib/net';
describe('net', function () {
describe('uploadFile()', function () {
it('should accept remote URLs typed as strings', function () {
const upload = (remoteUri: string) =>
uploadFile('/path/to/local/file', remoteUri, {
method: 'PUT',
headers: {'content-type': 'video/mp4'},
});
expect(upload).to.be.a('function');
});
});
});
@@ -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.1.6](https://github.com/appium/appium/compare/@appium/universal-xml-plugin@2.1.5...@appium/universal-xml-plugin@2.1.6) (2026-06-18)
**Note:** Version bump only for package @appium/universal-xml-plugin
## [2.1.5](https://github.com/appium/appium/compare/@appium/universal-xml-plugin@2.1.4...@appium/universal-xml-plugin@2.1.5) (2026-06-18)
**Note:** Version bump only for package @appium/universal-xml-plugin
+11 -3
View File
@@ -6,8 +6,7 @@
[![Downloads](http://img.shields.io/npm/dm/@appium/universal-xml-plugin.svg)](https://npmjs.org/package/@appium/universal-xml-plugin)
This plugin takes the XML page source retrieved using an iOS or Android driver, and changes various
node and attribute names to use common terminology that can apply to both platforms. This is
achieved by altering the behavior of the `getPageSource` and `findElement` methods.
node and attribute names to use common terminology that can apply to both platforms.
## Motivation
@@ -19,12 +18,21 @@ Having compatibility between iOS and Android XML sources can simplify creation o
appium plugin install universal-xml
```
The plugin must be explicitly activated when launching the Appium server:
## Usage
Like all plugins, this plugin must be explicitly activated when launching the Appium server:
```
appium --use-plugins=universal-xml
```
Once the plugin is running, it will intercept and transform the app source retrieved by the Get Page
Source command, as well as element node/attribute names provided in Find Element-related commands.
## API
[Refer to the Appium documentation](https://appium.io/docs/en/latest/reference/api/plugins/#universal-xml-plugin).
## Examples
### Node names
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/universal-xml-plugin",
"version": "2.1.5",
"version": "2.1.6",
"description": "Appium plugin for making XML source and XPath queries the same across iOS and Android",
"keywords": [
"automation",
@@ -38,9 +38,9 @@
"test:unit": "mocha \"./test/unit/**/*.spec.*ts\""
},
"dependencies": {
"@appium/support": "7.2.4",
"@appium/support": "7.2.5",
"@xmldom/xmldom": "0.9.10",
"fast-xml-parser": "5.8.0",
"fast-xml-parser": "5.9.0",
"xpath": "0.0.34"
},
"peerDependencies": {