Compare commits

..
Author SHA1 Message Date
Jonathan Lipps 8daf5e123a chore: publish
- appium@2.13.0
 - @appium/base-driver@9.13.0
 - @appium/base-plugin@2.2.49
 - @appium/doctor@2.1.15
 - @appium/docutils@1.0.25
 - @appium/driver-test-support@0.7.0
 - @appium/fake-plugin@3.1.53
 - @appium/images-plugin@3.0.23
 - @appium/plugin-test-support@0.3.45
 - @appium/support@5.1.8
 - @appium/test-support@3.0.53
 - @appium/types@0.22.2
2024-12-02 15:12:18 -08:00
Kazuaki Matsuo 3108a162ff fix{support}: keep backward compatibility for https://github.com/appium/appium/pull/2078 (#20797) 2024-12-02 14:52:40 -08:00
Mykola Mokhnach 942057d26c feat(base-driver): Allow to prefix feature names with automation names (#20793) 2024-12-02 10:51:41 +01:00
renovate[bot] 6ba31fe576 fix(types): update dependency type-fest to v4.29.1 (#20795)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-02 08:40:08 +02:00
renovate[bot] 7abf277ea3 chore(docutils): update dependency mkdocs-material to v9.5.47 (#20794)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-01 12:29:15 +00:00
Mykola Mokhnach 9aa9807b90 chore(driver-test-support): Remove stoppable utils (#20791) 2024-11-29 21:30:34 +01:00
36 changed files with 384 additions and 308 deletions
+96 -127
View File
@@ -3121,14 +3121,6 @@
"source-map": "^0.6.0"
}
},
"node_modules/@types/stoppable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@types/stoppable/-/stoppable-1.1.3.tgz",
"integrity": "sha512-7wGKIBJGE4ZxFjk9NkjAxZMLlIXroETqP1FJCdoSvKmEznwmBxQFmTB1dsCkAvVcNemuSZM5qkkd9HE/NL2JTw==",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/supports-color": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz",
@@ -16309,14 +16301,6 @@
"node": ">= 0.8"
}
},
"node_modules/stoppable": {
"version": "1.1.0",
"license": "MIT",
"engines": {
"node": ">=4",
"npm": ">=6"
}
},
"node_modules/stream-browserify": {
"version": "2.0.2",
"dev": true,
@@ -18965,17 +18949,17 @@
}
},
"packages/appium": {
"version": "2.12.2",
"version": "2.13.0",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@appium/base-driver": "^9.12.2",
"@appium/base-plugin": "^2.2.48",
"@appium/docutils": "^1.0.24",
"@appium/base-driver": "^9.13.0",
"@appium/base-plugin": "^2.2.49",
"@appium/docutils": "^1.0.25",
"@appium/logger": "^1.6.1",
"@appium/schema": "^0.7.0",
"@appium/support": "^5.1.7",
"@appium/types": "^0.22.1",
"@appium/support": "^5.1.8",
"@appium/types": "^0.22.2",
"@sidvind/better-ajv-errors": "3.0.1",
"@types/argparse": "2.0.17",
"@types/bluebird": "3.5.42",
@@ -18999,7 +18983,7 @@
"semver": "7.6.3",
"source-map-support": "0.5.21",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"winston": "3.17.0",
"wrap-ansi": "7.0.0",
"ws": "8.18.0",
@@ -19041,9 +19025,9 @@
"license": "ISC"
},
"packages/appium/node_modules/type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ==",
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -19074,11 +19058,11 @@
},
"packages/base-driver": {
"name": "@appium/base-driver",
"version": "9.12.2",
"version": "9.13.0",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/types": "^0.22.1",
"@appium/support": "^5.1.8",
"@appium/types": "^0.22.2",
"@colors/colors": "1.6.0",
"@types/async-lock": "1.4.2",
"@types/bluebird": "3.5.42",
@@ -19100,7 +19084,7 @@
"path-to-regexp": "8.2.0",
"serve-favicon": "2.5.0",
"source-map-support": "0.5.21",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"validate.js": "0.13.1"
},
"engines": {
@@ -19127,9 +19111,9 @@
"license": "ISC"
},
"packages/base-driver/node_modules/type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ==",
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -19140,11 +19124,11 @@
},
"packages/base-plugin": {
"name": "@appium/base-plugin",
"version": "2.2.48",
"version": "2.2.49",
"license": "Apache-2.0",
"dependencies": {
"@appium/base-driver": "^9.12.2",
"@appium/support": "^5.1.7"
"@appium/base-driver": "^9.13.0",
"@appium/support": "^5.1.8"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
@@ -19153,10 +19137,10 @@
},
"packages/doctor": {
"name": "@appium/doctor",
"version": "2.1.14",
"version": "2.1.15",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@colors/colors": "1.6.0",
"@types/bluebird": "3.5.42",
"@types/teen_process": "2.0.4",
@@ -19356,10 +19340,10 @@
},
"packages/docutils": {
"name": "@appium/docutils",
"version": "1.0.24",
"version": "1.0.25",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@appium/tsconfig": "^0.3.3",
"@sliphua/lilconfig-ts-loader": "3.2.2",
"@types/which": "3.0.4",
@@ -19374,7 +19358,7 @@
"semver": "7.6.3",
"source-map-support": "0.5.21",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"typescript": "5.7.2",
"yaml": "2.6.1",
"yargs": "17.7.2",
@@ -19475,9 +19459,9 @@
}
},
"packages/docutils/node_modules/type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ==",
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -19500,12 +19484,11 @@
},
"packages/driver-test-support": {
"name": "@appium/driver-test-support",
"version": "0.6.12",
"version": "0.7.0",
"license": "Apache-2.0",
"dependencies": {
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"@types/lodash": "4.17.13",
"@types/stoppable": "1.1.3",
"axios": "1.7.8",
"bluebird": "3.7.2",
"chai": "5.1.2",
@@ -19514,8 +19497,7 @@
"lodash": "4.17.21",
"sinon": "19.0.2",
"source-map-support": "0.5.21",
"stoppable": "1.1.0",
"type-fest": "4.29.0"
"type-fest": "4.29.1"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
@@ -19536,9 +19518,9 @@
}
},
"packages/driver-test-support/node_modules/type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ==",
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -19625,11 +19607,11 @@
},
"packages/fake-plugin": {
"name": "@appium/fake-plugin",
"version": "3.1.52",
"version": "3.1.53",
"license": "Apache-2.0",
"dependencies": {
"@appium/base-plugin": "^2.2.48",
"@appium/support": "^5.1.7",
"@appium/base-plugin": "^2.2.49",
"@appium/support": "^5.1.8",
"@types/bluebird": "3.5.42",
"bluebird": "3.7.2",
"lodash": "4.17.21",
@@ -19645,11 +19627,11 @@
},
"packages/images-plugin": {
"name": "@appium/images-plugin",
"version": "3.0.22",
"version": "3.0.23",
"license": "Apache-2.0",
"dependencies": {
"@appium/opencv": "^3.0.6",
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"lodash": "4.17.21",
"lru-cache": "10.4.3",
"sharp": "0.33.5",
@@ -19843,10 +19825,10 @@
},
"packages/plugin-test-support": {
"name": "@appium/plugin-test-support",
"version": "0.3.44",
"version": "0.3.45",
"license": "Apache-2.0",
"dependencies": {
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"get-port": "5.1.1",
"log-symbols": "4.1.0",
"source-map-support": "0.5.21",
@@ -19906,12 +19888,12 @@
},
"packages/support": {
"name": "@appium/support",
"version": "5.1.7",
"version": "5.1.8",
"license": "Apache-2.0",
"dependencies": {
"@appium/logger": "^1.6.1",
"@appium/tsconfig": "^0.3.3",
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"@colors/colors": "1.6.0",
"@types/archiver": "6.0.3",
"@types/base64-stream": "1.0.5",
@@ -19957,7 +19939,7 @@
"source-map-support": "0.5.21",
"supports-color": "8.1.1",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"uuid": "11.0.3",
"which": "4.0.0",
"yauzl": "3.2.0"
@@ -20136,9 +20118,9 @@
}
},
"packages/support/node_modules/type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ==",
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -20189,10 +20171,10 @@
},
"packages/test-support": {
"name": "@appium/test-support",
"version": "3.0.52",
"version": "3.0.53",
"license": "Apache-2.0",
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@colors/colors": "1.6.0",
"bluebird": "3.7.2",
"lodash": "4.17.21",
@@ -20223,7 +20205,7 @@
},
"packages/types": {
"name": "@appium/types",
"version": "0.22.1",
"version": "0.22.2",
"license": "Apache-2.0",
"dependencies": {
"@appium/logger": "^1.6.1",
@@ -20231,7 +20213,7 @@
"@appium/tsconfig": "^0.3.3",
"@types/express": "5.0.0",
"@types/ws": "8.5.13",
"type-fest": "4.29.0"
"type-fest": "4.29.1"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
@@ -20239,9 +20221,9 @@
}
},
"packages/types/node_modules/type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ==",
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -20291,8 +20273,8 @@
"@appium/base-driver": {
"version": "file:packages/base-driver",
"requires": {
"@appium/support": "^5.1.7",
"@appium/types": "^0.22.1",
"@appium/support": "^5.1.8",
"@appium/types": "^0.22.2",
"@colors/colors": "1.6.0",
"@types/async-lock": "1.4.2",
"@types/bluebird": "3.5.42",
@@ -20315,7 +20297,7 @@
"serve-favicon": "2.5.0",
"source-map-support": "0.5.21",
"spdy": "4.0.2",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"validate.js": "0.13.1"
},
"dependencies": {
@@ -20333,23 +20315,23 @@
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
},
"type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ=="
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A=="
}
}
},
"@appium/base-plugin": {
"version": "file:packages/base-plugin",
"requires": {
"@appium/base-driver": "^9.12.2",
"@appium/support": "^5.1.7"
"@appium/base-driver": "^9.13.0",
"@appium/support": "^5.1.8"
}
},
"@appium/doctor": {
"version": "file:packages/doctor",
"requires": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@colors/colors": "1.6.0",
"@types/bluebird": "3.5.42",
"@types/teen_process": "2.0.4",
@@ -20489,7 +20471,7 @@
"@appium/docutils": {
"version": "file:packages/docutils",
"requires": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@appium/tsconfig": "^0.3.3",
"@sliphua/lilconfig-ts-loader": "3.2.2",
"@types/which": "3.0.4",
@@ -20504,7 +20486,7 @@
"semver": "7.6.3",
"source-map-support": "0.5.21",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"typescript": "5.7.2",
"yaml": "2.6.1",
"yargs": "17.7.2",
@@ -20560,9 +20542,9 @@
}
},
"type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ=="
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A=="
},
"typescript": {
"version": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
@@ -20573,9 +20555,8 @@
"@appium/driver-test-support": {
"version": "file:packages/driver-test-support",
"requires": {
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"@types/lodash": "4.17.13",
"@types/stoppable": "1.1.3",
"axios": "1.7.8",
"bluebird": "3.7.2",
"chai": "5.1.2",
@@ -20584,8 +20565,7 @@
"lodash": "4.17.21",
"sinon": "19.0.2",
"source-map-support": "0.5.21",
"stoppable": "1.1.0",
"type-fest": "4.29.0"
"type-fest": "4.29.1"
},
"dependencies": {
"axios": {
@@ -20597,9 +20577,9 @@
}
},
"type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ=="
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A=="
}
}
},
@@ -20636,8 +20616,8 @@
"@appium/fake-plugin": {
"version": "file:packages/fake-plugin",
"requires": {
"@appium/base-plugin": "^2.2.48",
"@appium/support": "^5.1.7",
"@appium/base-plugin": "^2.2.49",
"@appium/support": "^5.1.8",
"@types/bluebird": "3.5.42",
"bluebird": "3.7.2",
"lodash": "4.17.21",
@@ -20648,7 +20628,7 @@
"version": "file:packages/images-plugin",
"requires": {
"@appium/opencv": "^3.0.6",
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"lodash": "4.17.21",
"lru-cache": "10.4.3",
"sharp": "0.33.5",
@@ -20794,7 +20774,7 @@
"@appium/plugin-test-support": {
"version": "file:packages/plugin-test-support",
"requires": {
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"get-port": "5.1.1",
"log-symbols": "4.1.0",
"source-map-support": "0.5.21",
@@ -20828,7 +20808,7 @@
"requires": {
"@appium/logger": "^1.6.1",
"@appium/tsconfig": "^0.3.3",
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"@colors/colors": "1.6.0",
"@types/archiver": "6.0.3",
"@types/base64-stream": "1.0.5",
@@ -20875,7 +20855,7 @@
"source-map-support": "0.5.21",
"supports-color": "8.1.1",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"uuid": "11.0.3",
"which": "4.0.0",
"yauzl": "3.2.0"
@@ -20997,9 +20977,9 @@
}
},
"type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ=="
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A=="
},
"uuid": {
"version": "11.0.3",
@@ -21028,7 +21008,7 @@
"@appium/test-support": {
"version": "file:packages/test-support",
"requires": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@colors/colors": "1.6.0",
"bluebird": "3.7.2",
"lodash": "4.17.21",
@@ -21051,13 +21031,13 @@
"@appium/tsconfig": "^0.3.3",
"@types/express": "5.0.0",
"@types/ws": "8.5.13",
"type-fest": "4.29.0"
"type-fest": "4.29.1"
},
"dependencies": {
"type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ=="
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A=="
}
}
},
@@ -23043,14 +23023,6 @@
"source-map": "^0.6.0"
}
},
"@types/stoppable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@types/stoppable/-/stoppable-1.1.3.tgz",
"integrity": "sha512-7wGKIBJGE4ZxFjk9NkjAxZMLlIXroETqP1FJCdoSvKmEznwmBxQFmTB1dsCkAvVcNemuSZM5qkkd9HE/NL2JTw==",
"requires": {
"@types/node": "*"
}
},
"@types/supports-color": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz",
@@ -23726,13 +23698,13 @@
"appium": {
"version": "file:packages/appium",
"requires": {
"@appium/base-driver": "^9.12.2",
"@appium/base-plugin": "^2.2.48",
"@appium/docutils": "^1.0.24",
"@appium/base-driver": "^9.13.0",
"@appium/base-plugin": "^2.2.49",
"@appium/docutils": "^1.0.25",
"@appium/logger": "^1.6.1",
"@appium/schema": "^0.7.0",
"@appium/support": "^5.1.7",
"@appium/types": "^0.22.1",
"@appium/support": "^5.1.8",
"@appium/types": "^0.22.2",
"@sidvind/better-ajv-errors": "3.0.1",
"@types/argparse": "2.0.17",
"@types/bluebird": "3.5.42",
@@ -23756,7 +23728,7 @@
"semver": "7.6.3",
"source-map-support": "0.5.21",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"winston": "3.17.0",
"wrap-ansi": "7.0.0",
"ws": "8.18.0",
@@ -23782,9 +23754,9 @@
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
},
"type-fest": {
"version": "4.29.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
"integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ=="
"version": "4.29.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
"integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A=="
},
"ws": {
"version": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
@@ -32016,9 +31988,6 @@
"statuses": {
"version": "2.0.1"
},
"stoppable": {
"version": "1.1.0"
},
"stream-browserify": {
"version": "2.0.2",
"dev": true,
+14
View File
@@ -3,6 +3,20 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.13.0](https://github.com/appium/appium/compare/appium@2.12.2...appium@2.13.0) (2024-12-02)
### Features
* **base-driver:** Allow to prefix feature names with automation names ([#20793](https://github.com/appium/appium/issues/20793)) ([942057d](https://github.com/appium/appium/commit/942057d26cbf51539f34b6b7ff8a3c1d07821687))
### Bug Fixes
* **types:** update dependency type-fest to v4.29.1 ([#20795](https://github.com/appium/appium/issues/20795)) ([6ba31fe](https://github.com/appium/appium/commit/6ba31fe5766f69cb010a4cac81233f4c3cbcf80f))
## [2.12.2](https://github.com/appium/appium/compare/appium@2.12.1...appium@2.12.2) (2024-11-29)
@@ -44,6 +44,14 @@ might use. Here is an incomplete list of examples from some of Appium's official
|`record_audio`|Allow recording of host machine audio inputs|XCUITest|
|`execute_driver_script`| Allows to send a request which has multiple Appium commands.|Execute Driver Plugin|
## Driver-scope security
Since Appium server version 2.12.3 there is a possibility to prefix each feature name with the corresponding automationName where it is going to be applied. For example, if you provide the following features to allow:
`uiautomator2:adb_shell,xcuitest:get_server_logs,*:record_audio`, then the `adb_shell` would only be allowed
for the UiAutomator2 driver, `get_server` - for the XCUITest driver and the `record_audio` one - for
all installed drivers. Feature names provided without explicit automation name prefix are equivalent to
these having the `*:` prefix. The same feature naming rule applies to the list of denied features.
## Examples
To turn on the `get_server_logs` feature for my Appium server, I could start it like this:
+3 -2
View File
@@ -22,6 +22,7 @@ import {
isBroadcastIp,
fetchInterfaces,
V4_BROADCAST_IP,
validateFeatures,
} from './utils';
import {util, node, logger} from '@appium/support';
import {getDefaultsForExtension} from './schema';
@@ -697,13 +698,13 @@ class AppiumDriver extends DriverCore {
if (!_.isEmpty(this.args.denyInsecure)) {
this.log.info('Explicitly preventing use of insecure features:');
this.args.denyInsecure.map((a) => this.log.info(` ${a}`));
driverInstance.denyInsecure = this.args.denyInsecure;
driverInstance.denyInsecure = validateFeatures(this.args.denyInsecure);
}
if (!_.isEmpty(this.args.allowInsecure)) {
this.log.info('Explicitly enabling use of insecure features:');
this.args.allowInsecure.map((a) => this.log.info(` ${a}`));
driverInstance.allowInsecure = this.args.allowInsecure;
driverInstance.allowInsecure = validateFeatures(this.args.allowInsecure);
}
// Likewise, any driver-specific CLI args that were passed in should be assigned directly to
+39 -2
View File
@@ -1,6 +1,11 @@
import _ from 'lodash';
import logger from './logger';
import {processCapabilities, PROTOCOLS, STANDARD_CAPS, errors} from '@appium/base-driver';
import {
processCapabilities,
PROTOCOLS,
STANDARD_CAPS,
errors,
} from '@appium/base-driver';
import {inspect as dump} from 'util';
import {node, fs} from '@appium/support';
import path from 'path';
@@ -12,7 +17,8 @@ const STANDARD_CAPS_LOWERCASE = new Set([...STANDARD_CAPS].map((cap) => cap.toLo
export const V4_BROADCAST_IP = '0.0.0.0';
export const V6_BROADCAST_IP = '::';
export const npmPackage = fs.readPackageJsonFrom(__dirname);
const ALL_DRIVERS_MATCH = '*';
const FEATURE_NAME_SEPARATOR = ':';
/**
*
@@ -457,6 +463,37 @@ export function isBroadcastIp(address) {
return [V4_BROADCAST_IP, V6_BROADCAST_IP, `[${V6_BROADCAST_IP}]`].includes(address);
}
/**
* Validates the list of allowed/denied server features
*
* @param {string[]} features
* @returns {string[]}
*/
export function validateFeatures(features) {
const validator = (/** @type {string} */ fullName) => {
const separatorPos = fullName.indexOf(FEATURE_NAME_SEPARATOR);
// TODO: This is for the backward compatibility with Appium2
// TODO: In Appium3 the separator will be mandatory
if (separatorPos < 0) {
return `${ALL_DRIVERS_MATCH}${FEATURE_NAME_SEPARATOR}${fullName}`;
}
const [automationName, featureName] = [
fullName.substring(0, separatorPos),
fullName.substring(separatorPos + 1)
];
if (!automationName || !featureName) {
throw new Error(
`The full feature name must include both the destination automation name or the ` +
`'${ALL_DRIVERS_MATCH}' wildcard to apply the feature to all installed drivers, and ` +
`the feature name split by a colon, got '${fullName}' instead`
);
}
return fullName;
};
return features.map(validator);
}
/**
* @typedef {import('@appium/types').StringRecord} StringRecord
* @typedef {import('@appium/types').BaseDriverCapConstraints} BaseDriverCapConstraints
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "appium",
"version": "2.12.2",
"version": "2.13.0",
"description": "Automation for Apps.",
"keywords": [
"automation",
@@ -60,13 +60,13 @@
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
},
"dependencies": {
"@appium/base-driver": "^9.12.2",
"@appium/base-plugin": "^2.2.48",
"@appium/docutils": "^1.0.24",
"@appium/base-driver": "^9.13.0",
"@appium/base-plugin": "^2.2.49",
"@appium/docutils": "^1.0.25",
"@appium/logger": "^1.6.1",
"@appium/schema": "^0.7.0",
"@appium/support": "^5.1.7",
"@appium/types": "^0.22.1",
"@appium/support": "^5.1.8",
"@appium/types": "^0.22.2",
"@sidvind/better-ajv-errors": "3.0.1",
"@types/argparse": "2.0.17",
"@types/bluebird": "3.5.42",
@@ -90,7 +90,7 @@
"semver": "7.6.3",
"source-map-support": "0.5.21",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"winston": "3.17.0",
"wrap-ansi": "7.0.0",
"ws": "8.18.0",
+14
View File
@@ -3,6 +3,20 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [9.13.0](https://github.com/appium/appium/compare/@appium/base-driver@9.12.2...@appium/base-driver@9.13.0) (2024-12-02)
### Features
* **base-driver:** Allow to prefix feature names with automation names ([#20793](https://github.com/appium/appium/issues/20793)) ([942057d](https://github.com/appium/appium/commit/942057d26cbf51539f34b6b7ff8a3c1d07821687))
### Bug Fixes
* **types:** update dependency type-fest to v4.29.1 ([#20795](https://github.com/appium/appium/issues/20795)) ([6ba31fe](https://github.com/appium/appium/commit/6ba31fe5766f69cb010a4cac81233f4c3cbcf80f))
## [9.12.2](https://github.com/appium/appium/compare/@appium/base-driver@9.12.1...@appium/base-driver@9.12.2) (2024-11-29)
+33 -4
View File
@@ -20,7 +20,11 @@ import AsyncLock from 'async-lock';
import _ from 'lodash';
import {EventEmitter} from 'node:events';
import os from 'node:os';
import {DEFAULT_BASE_PATH, PROTOCOLS, MAX_LOG_BODY_LENGTH} from '../constants';
import {
DEFAULT_BASE_PATH,
PROTOCOLS,
MAX_LOG_BODY_LENGTH,
} from '../constants';
import {errors} from '../protocol';
import DeviceSettings from './device-settings';
import helpers, {BASEDRIVER_VER} from './helpers';
@@ -30,6 +34,9 @@ const NEW_COMMAND_TIMEOUT_MS = 60 * 1000;
const ON_UNEXPECTED_SHUTDOWN_EVENT = 'onUnexpectedShutdown';
const ALL_DRIVERS_MATCH = '*';
const FEATURE_NAME_SEPARATOR = ':';
export class DriverCore<const C extends Constraints, Settings extends StringRecord = StringRecord>
implements Core<C, Settings>
{
@@ -258,13 +265,35 @@ export class DriverCore<const C extends Constraints, Settings extends StringReco
* @param name - name of feature/command
*/
isFeatureEnabled(name: string): boolean {
// automationName comparison is case-insensitive,
// while feature name is case-sensitive
const currentAutomationName = _.toLower(this.opts.automationName);
const parseFullName = (fullName: string) => {
const separatorPos = fullName.indexOf(FEATURE_NAME_SEPARATOR);
if (separatorPos < 0) {
// This should not happen as we preprocess corresponding server arguments in advance
throw new Error(
`The full feature name must include both the driver name/wildcard and the feature ` +
`name split by a colon, got '${fullName}' instead`
);
}
return [
_.toLower(fullName.substring(0, separatorPos)),
fullName.substring(separatorPos + 1)
];
};
const parseFullNames = (fullNames: string[]) => fullNames.map(parseFullName);
const matches = ([automationName, featureName]: [string, string]) =>
[currentAutomationName, ALL_DRIVERS_MATCH].includes(automationName) && featureName === name;
// if we have explicitly denied this feature, return false immediately
if (this.denyInsecure && _.includes(this.denyInsecure, name)) {
if (!_.isEmpty(this.denyInsecure) && parseFullNames(this.denyInsecure).some(matches)) {
return false;
}
// if we specifically have allowed the feature, return true
if (this.allowInsecure && _.includes(this.allowInsecure, name)) {
if (!_.isEmpty(this.allowInsecure) && parseFullNames(this.allowInsecure).some(matches)) {
return true;
}
@@ -283,7 +312,7 @@ export class DriverCore<const C extends Constraints, Settings extends StringReco
* not
*
* @param name - name of feature/command
* @deprecated
* @deprecated Use {@link assertFeatureEnabled} instead
*/
ensureFeatureEnabled(name: string) {
this.assertFeatureEnabled(name);
+5 -7
View File
@@ -7,15 +7,13 @@ import {Protocol} from '@appium/types';
// server feature. Example rule:
// {"pattern": "(.{1,150}).*", "flags": "s", "replacer": "$1"}
// ^ cuts all log records to maximum 150 chars
const MAX_LOG_BODY_LENGTH = 1024;
const MJSONWP_ELEMENT_KEY = 'ELEMENT';
const W3C_ELEMENT_KEY = util.W3C_WEB_ELEMENT_IDENTIFIER;
const PROTOCOLS = {
export const MAX_LOG_BODY_LENGTH = 1024;
export const MJSONWP_ELEMENT_KEY = 'ELEMENT';
export const W3C_ELEMENT_KEY = util.W3C_WEB_ELEMENT_IDENTIFIER;
export const PROTOCOLS = {
W3C: 'W3C',
MJSONWP: 'MJSONWP',
} as const satisfies Record<Protocol, Protocol>;
// Before Appium 2.0, this default value was '/wd/hub' by historical reasons.
const DEFAULT_BASE_PATH = '';
export {MAX_LOG_BODY_LENGTH, MJSONWP_ELEMENT_KEY, W3C_ELEMENT_KEY, PROTOCOLS, DEFAULT_BASE_PATH};
export const DEFAULT_BASE_PATH = '';
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/base-driver",
"version": "9.12.2",
"version": "9.13.0",
"description": "Base driver class for Appium drivers",
"keywords": [
"automation",
@@ -44,8 +44,8 @@
"test:types": "tsd"
},
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/types": "^0.22.1",
"@appium/support": "^5.1.8",
"@appium/types": "^0.22.2",
"@colors/colors": "1.6.0",
"@types/async-lock": "1.4.2",
"@types/bluebird": "3.5.42",
@@ -67,7 +67,7 @@
"path-to-regexp": "8.2.0",
"serve-favicon": "2.5.0",
"source-map-support": "0.5.21",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"validate.js": "0.13.1"
},
"optionalDependencies": {
+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.2.49](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.48...@appium/base-plugin@2.2.49) (2024-12-02)
**Note:** Version bump only for package @appium/base-plugin
## [2.2.48](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.47...@appium/base-plugin@2.2.48) (2024-11-29)
**Note:** Version bump only for package @appium/base-plugin
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/base-plugin",
"version": "2.2.48",
"version": "2.2.49",
"description": "The base plugin used to create Appium 2.0 plugins",
"keywords": [
"automation",
@@ -40,8 +40,8 @@
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
},
"dependencies": {
"@appium/base-driver": "^9.12.2",
"@appium/support": "^5.1.7"
"@appium/base-driver": "^9.13.0",
"@appium/support": "^5.1.8"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.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.
## [2.1.15](https://github.com/appium/appium/compare/@appium/doctor@2.1.14...@appium/doctor@2.1.15) (2024-12-02)
**Note:** Version bump only for package @appium/doctor
## [2.1.14](https://github.com/appium/appium/compare/@appium/doctor@2.1.13...@appium/doctor@2.1.14) (2024-11-29)
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/doctor",
"version": "2.1.14",
"version": "2.1.15",
"description": "Test environment for fitness to run Appium",
"keywords": [
"automation",
@@ -44,7 +44,7 @@
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
},
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@colors/colors": "1.6.0",
"@types/bluebird": "3.5.42",
"@types/teen_process": "2.0.4",
+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.
## [1.0.25](https://github.com/appium/appium/compare/@appium/docutils@1.0.24...@appium/docutils@1.0.25) (2024-12-02)
### Bug Fixes
* **types:** update dependency type-fest to v4.29.1 ([#20795](https://github.com/appium/appium/issues/20795)) ([6ba31fe](https://github.com/appium/appium/commit/6ba31fe5766f69cb010a4cac81233f4c3cbcf80f))
## [1.0.24](https://github.com/appium/appium/compare/@appium/docutils@1.0.23...@appium/docutils@1.0.24) (2024-11-29)
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/docutils",
"version": "1.0.24",
"version": "1.0.25",
"description": "Documentation generation utilities for Appium and related projects",
"keywords": [
"automation",
@@ -48,7 +48,7 @@
"start": "node ./build/lib/cli/index.js"
},
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@appium/tsconfig": "^0.3.3",
"@sliphua/lilconfig-ts-loader": "3.2.2",
"@types/which": "3.0.4",
@@ -63,7 +63,7 @@
"semver": "7.6.3",
"source-map-support": "0.5.21",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"typescript": "5.7.2",
"yaml": "2.6.1",
"yargs": "17.7.2",
+1 -1
View File
@@ -1,5 +1,5 @@
mkdocs==1.6.1
mkdocs-git-revision-date-localized-plugin==1.3.0
mkdocs-material==9.5.46
mkdocs-material==9.5.47
mkdocs-redirects==1.2.2
mike==2.1.3
+14
View File
@@ -3,6 +3,20 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.7.0](https://github.com/appium/appium/compare/@appium/driver-test-support@0.6.12...@appium/driver-test-support@0.7.0) (2024-12-02)
### Features
* **base-driver:** Allow to prefix feature names with automation names ([#20793](https://github.com/appium/appium/issues/20793)) ([942057d](https://github.com/appium/appium/commit/942057d26cbf51539f34b6b7ff8a3c1d07821687))
### Bug Fixes
* **types:** update dependency type-fest to v4.29.1 ([#20795](https://github.com/appium/appium/issues/20795)) ([6ba31fe](https://github.com/appium/appium/commit/6ba31fe5766f69cb010a4cac81233f4c3cbcf80f))
## [0.6.12](https://github.com/appium/appium/compare/@appium/driver-test-support@0.6.11...@appium/driver-test-support@0.6.12) (2024-11-29)
@@ -2,9 +2,6 @@ export {createSessionHelpers, driverE2ETestSuite} from './e2e-suite';
export * from './unit-suite';
export * from './helpers';
// eslint-disable-next-line import/no-unresolved
export * from './stoppable';
/**
* @typedef {import('@appium/types').DriverClass} DriverClass
* @typedef {import('@appium/types').BaseNSCapabilities} BaseNSCapabilities
@@ -1,57 +0,0 @@
import type {AppiumServer} from '@appium/types';
import {main as startAppium} from 'appium';
import type {Args, CliCommandServer} from 'appium/types';
import B from 'bluebird';
import type {Server} from 'node:http';
import stoppable from 'stoppable';
import type {Asyncify} from 'type-fest';
/**
* Options for {@linkcode startStoppableAppium}
*/
export type AppiumServerOpts = Args<CliCommandServer>;
/**
* An {@linkcode AppiumServer} with a method `stop() => Promise<void>`, which closes all sockets and fully stops the server.
*
* Returned by {@linkcode startStoppableAppium}
*/
export type TestAppiumServer = Omit<NormativeAppiumServer, 'close'> & {
stop: Asyncify<stoppable.WithStop['stop']>;
close: (callback: (err?: Error) => void) => Promise<void>;
};
/**
* The {@linkcode AppiumServer} type, but with the `close` method normalized to a callback-style function.
*/
export type NormativeAppiumServer = Omit<AppiumServer, 'close'> & {
close: Server['close'];
};
/**
* Coerces {@linkcode AppiumServer} into a {@linkcode TestAppiumServer}.
* @param opts Options for {@linkcode startAppium}
* @todo This should be moved into `@appium/driver-test-support` or something
* @returns A stoppable Appium server
*/
export async function startStoppableAppium(opts: AppiumServerOpts): Promise<TestAppiumServer> {
const appiumServer = (await startAppium(opts)) as AppiumServer;
const stoppableServer = stoppable(appiumServer as unknown as NormativeAppiumServer, 0);
const originalAsyncClose = appiumServer.close;
(stoppableServer as unknown as TestAppiumServer).close = async function (
callback?: (err?: Error) => void
) {
if (callback) {
try {
await originalAsyncClose.call(this);
callback();
} catch (err) {
callback(err);
}
} else {
await originalAsyncClose.call(this);
}
};
stoppableServer.stop = B.promisify(stoppableServer.stop, {context: stoppableServer});
return stoppableServer as unknown as TestAppiumServer;
}
+31 -19
View File
@@ -580,24 +580,11 @@ export function driverUnitTestSuite(
d = new DriverClass();
});
it('should say a feature is enabled when it is explicitly allowed', function () {
d.allowInsecure = ['foo', 'bar'];
d.isFeatureEnabled('foo').should.be.true;
d.isFeatureEnabled('bar').should.be.true;
d.isFeatureEnabled('baz').should.be.false;
});
it('should say a feature is not enabled if it is not enabled', function () {
d.allowInsecure = [];
d.isFeatureEnabled('foo').should.be.false;
});
it('should prefer denyInsecure to allowInsecure', function () {
d.allowInsecure = ['foo', 'bar'];
d.denyInsecure = ['foo'];
d.isFeatureEnabled('foo').should.be.false;
d.isFeatureEnabled('bar').should.be.true;
d.isFeatureEnabled('baz').should.be.false;
it('should throw an error if feature name is invalid', function () {
d.allowInsecure = ['foo'];
(() => {
d.isFeatureEnabled('foo');
}).should.throw();
});
it('should allow global setting for insecurity', function () {
@@ -609,11 +596,36 @@ export function driverUnitTestSuite(
it('global setting should be overrideable', function () {
d.relaxedSecurityEnabled = true;
d.denyInsecure = ['foo', 'bar'];
d.denyInsecure = ['*:foo', '*:bar'];
d.isFeatureEnabled('foo').should.be.false;
d.isFeatureEnabled('bar').should.be.false;
d.isFeatureEnabled('baz').should.be.true;
});
it('should say a feature is enabled if it is for this driver', function () {
d.opts.automationName = 'bar';
d.allowInsecure = ['bar:foo'];
d.isFeatureEnabled('foo').should.be.true;
});
it('should say a feature is enabled if it is for all drivers', function () {
d.opts.automationName = 'bar';
d.allowInsecure = ['*:foo'];
d.isFeatureEnabled('foo').should.be.true;
});
it('should say a feature is not enabled if it is not for this driver', function () {
d.opts.automationName = 'bar';
d.allowInsecure = ['baz:foo'];
d.isFeatureEnabled('foo').should.be.false;
});
it('should say a feature is not enabled if it is enabled and then disabled', function () {
d.opts.automationName = 'bar';
d.allowInsecure = ['bar:foo'];
d.denyInsecure = ['*:foo'];
d.isFeatureEnabled('foo').should.be.false;
});
});
}
+3 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/driver-test-support",
"version": "0.6.12",
"version": "0.7.0",
"description": "Test utilities for Appium drivers",
"keywords": [
"automation",
@@ -41,9 +41,8 @@
},
"types": "./build/lib/index.d.ts",
"dependencies": {
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"@types/lodash": "4.17.13",
"@types/stoppable": "1.1.3",
"axios": "1.7.8",
"bluebird": "3.7.2",
"chai": "5.1.2",
@@ -52,8 +51,7 @@
"lodash": "4.17.21",
"sinon": "19.0.2",
"source-map-support": "0.5.21",
"stoppable": "1.1.0",
"type-fest": "4.29.0"
"type-fest": "4.29.1"
},
"peerDependencies": {
"appium": "^2.0.0-beta.43",
@@ -1,45 +0,0 @@
import axios from 'axios';
import B from 'bluebird';
import {Agent} from 'node:http';
import {startStoppableAppium, TestAppiumServer} from '../../lib';
import getPort from 'get-port';
describe('startStoppableAppium()', function () {
let expect: any;
before(async function () {
const chai = await import('chai');
const chaiAsPromised = await import('chai-as-promised');
chai.use(chaiAsPromised.default);
chai.should();
expect = chai.expect;
});
it('should start an Appium server', async function () {
let server: TestAppiumServer | undefined;
try {
server = await startStoppableAppium({port: await getPort()});
expect(server, 'to be an object');
} finally {
if (server) {
await expect(server.stop()).to.be.fulfilled;
}
}
});
describe('when the server has connections', function () {
it('should stop the server and resolve with a boolean', async function () {
const port = await getPort();
const server = await startStoppableAppium({port});
const getConnections = B.promisify(server.getConnections, {context: server});
await axios.get(`http://127.0.0.1:${port}/status`, {
httpAgent: new Agent({keepAlive: true}),
});
try {
await expect(getConnections()).to.eventually.be.greaterThan(0);
} finally {
await expect(server.stop()).to.eventually.be.a('boolean');
}
});
});
});
+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.1.53](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.52...@appium/fake-plugin@3.1.53) (2024-12-02)
**Note:** Version bump only for package @appium/fake-plugin
## [3.1.52](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.51...@appium/fake-plugin@3.1.52) (2024-11-29)
**Note:** Version bump only for package @appium/fake-plugin
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/fake-plugin",
"version": "3.1.52",
"version": "3.1.53",
"description": "A fake Appium 2.0 plugin",
"keywords": [
"automation",
@@ -39,8 +39,8 @@
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
},
"dependencies": {
"@appium/base-plugin": "^2.2.48",
"@appium/support": "^5.1.7",
"@appium/base-plugin": "^2.2.49",
"@appium/support": "^5.1.8",
"@types/bluebird": "3.5.42",
"bluebird": "3.7.2",
"lodash": "4.17.21",
+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.0.23](https://github.com/appium/appium/compare/@appium/images-plugin@3.0.22...@appium/images-plugin@3.0.23) (2024-12-02)
**Note:** Version bump only for package @appium/images-plugin
## [3.0.22](https://github.com/appium/appium/compare/@appium/images-plugin@3.0.21...@appium/images-plugin@3.0.22) (2024-11-29)
**Note:** Version bump only for package @appium/images-plugin
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/images-plugin",
"version": "3.0.22",
"version": "3.0.23",
"description": "Plugin for working with images and image elements in Appium",
"keywords": [
"automation",
@@ -40,7 +40,7 @@
},
"dependencies": {
"@appium/opencv": "^3.0.6",
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"lodash": "4.17.21",
"lru-cache": "10.4.3",
"sharp": "0.33.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.
## [0.3.45](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.44...@appium/plugin-test-support@0.3.45) (2024-12-02)
**Note:** Version bump only for package @appium/plugin-test-support
## [0.3.44](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.43...@appium/plugin-test-support@0.3.44) (2024-11-29)
**Note:** Version bump only for package @appium/plugin-test-support
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/plugin-test-support",
"version": "0.3.44",
"version": "0.3.45",
"description": "Testing utilities for Appium plugins",
"keywords": [
"automation",
@@ -41,7 +41,7 @@
"test:unit": "exit 0"
},
"dependencies": {
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"get-port": "5.1.1",
"log-symbols": "4.1.0",
"source-map-support": "0.5.21",
+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.
## [5.1.8](https://github.com/appium/appium/compare/@appium/support@5.1.7...@appium/support@5.1.8) (2024-12-02)
### Bug Fixes
* **types:** update dependency type-fest to v4.29.1 ([#20795](https://github.com/appium/appium/issues/20795)) ([6ba31fe](https://github.com/appium/appium/commit/6ba31fe5766f69cb010a4cac81233f4c3cbcf80f))
## [5.1.7](https://github.com/appium/appium/compare/@appium/support@5.1.6...@appium/support@5.1.7) (2024-11-29)
+15 -3
View File
@@ -201,7 +201,17 @@ export class NPM {
* @param {InstallPackageOpts} opts
* @returns {Promise<NpmInstallReceipt>}
*/
async installPackage(cwd, installStr, {pkgName, installType}) {
async installPackage(cwd, installStr, {pkgName, pkgVer, installType} = {}) {
let _installStr = installStr;
// FIXME: Please remove this '!pkgName' case after bumping major version of this support package.
// This is a temporary workaround for backward compatibility related to https://github.com/appium/appium/pull/20788
if (!pkgName) {
// Old appium package passes an empty 'pkgName' as part of the option. Then,
// we could consider it is for old argument case.
pkgName = installStr;
_installStr = pkgVer ? `${pkgName}@${pkgVer}` : pkgName;
}
/** @type {any} */
let dummyPkgJson;
const dummyPkgPath = path.join(cwd, 'package.json');
@@ -225,7 +235,7 @@ export class NPM {
}
const cmd = installType === 'local' ? 'link' : 'install';
const res = await this.exec(cmd, [...installOpts, installStr], {
const res = await this.exec(cmd, [...installOpts, _installStr], {
cwd,
json: true,
lockFile: this._getInstallLockfilePath(cwd),
@@ -287,8 +297,10 @@ export const npm = new NPM();
/**
* Options for {@link NPM.installPackage}
* @typedef InstallPackageOpts
* @property {string} pkgName - the name of the package to install
* @property {string} [pkgName] - the name of the package to install. Used by appium package 2.12.2 and newer versions.
* @property {import('type-fest').LiteralUnion<'local', string>} [installType] - whether to install from a local path or from npm
* @property {string} [pkgVer] - The version of the package to install.
* This is used for backward compatibility for this support package v5 with appium package 2.12.1 and lower versions.
*/
/**
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/support",
"version": "5.1.7",
"version": "5.1.8",
"description": "Support libs used across appium packages",
"keywords": [
"automation",
@@ -43,7 +43,7 @@
"dependencies": {
"@appium/logger": "^1.6.1",
"@appium/tsconfig": "^0.3.3",
"@appium/types": "^0.22.1",
"@appium/types": "^0.22.2",
"@colors/colors": "1.6.0",
"@types/archiver": "6.0.3",
"@types/base64-stream": "1.0.5",
@@ -89,7 +89,7 @@
"source-map-support": "0.5.21",
"supports-color": "8.1.1",
"teen_process": "2.2.0",
"type-fest": "4.29.0",
"type-fest": "4.29.1",
"uuid": "11.0.3",
"which": "4.0.0",
"yauzl": "3.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.
## [3.0.53](https://github.com/appium/appium/compare/@appium/test-support@3.0.52...@appium/test-support@3.0.53) (2024-12-02)
**Note:** Version bump only for package @appium/test-support
## [3.0.52](https://github.com/appium/appium/compare/@appium/test-support@3.0.51...@appium/test-support@3.0.52) (2024-11-29)
**Note:** Version bump only for package @appium/test-support
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/test-support",
"version": "3.0.52",
"version": "3.0.53",
"description": "A collection of test utilities used across Appium packages",
"keywords": [
"automation",
@@ -45,7 +45,7 @@
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
},
"dependencies": {
"@appium/support": "^5.1.7",
"@appium/support": "^5.1.8",
"@colors/colors": "1.6.0",
"bluebird": "3.7.2",
"lodash": "4.17.21",
+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.
## [0.22.2](https://github.com/appium/appium/compare/@appium/types@0.22.1...@appium/types@0.22.2) (2024-12-02)
### Bug Fixes
* **types:** update dependency type-fest to v4.29.1 ([#20795](https://github.com/appium/appium/issues/20795)) ([6ba31fe](https://github.com/appium/appium/commit/6ba31fe5766f69cb010a4cac81233f4c3cbcf80f))
## [0.22.1](https://github.com/appium/appium/compare/@appium/types@0.22.0...@appium/types@0.22.1) (2024-11-29)
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@appium/types",
"version": "0.22.1",
"version": "0.22.2",
"description": "Various type declarations used across Appium",
"keywords": [
"automation",
@@ -43,7 +43,7 @@
"@appium/tsconfig": "^0.3.3",
"@types/express": "5.0.0",
"@types/ws": "8.5.13",
"type-fest": "4.29.0"
"type-fest": "4.29.1"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",