mirror of
https://github.com/appium/appium.git
synced 2026-11-10 11:54:49 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8daf5e123a | ||
|
|
3108a162ff | ||
|
|
942057d26c | ||
|
|
6ba31fe576 | ||
|
|
7abf277ea3 | ||
|
|
9aa9807b90 |
Generated
+96
-127
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 = '';
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user