mirror of
https://github.com/appium/appium.git
synced 2026-10-31 22:32:24 +08:00
Compare commits
18
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
58b71869d1 | ||
|
|
08a1f1be94 | ||
|
|
b7cecfffb5 | ||
|
|
52a755a913 | ||
|
|
35e0012d8a | ||
|
|
ed20e00754 | ||
|
|
9e60e80b13 | ||
|
|
1a5b8cca2d | ||
|
|
ced560206b | ||
|
|
7dbf6f2cd3 | ||
|
|
84c49b1529 | ||
|
|
81bc527be6 | ||
|
|
2e909478e9 | ||
|
|
00ae1625d7 | ||
|
|
88293f8039 | ||
|
|
54a4a8da03 | ||
|
|
598b255e8d | ||
|
|
63a5c22127 |
@@ -6,6 +6,20 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: ':stop_sign: _For support questions, please visit [http://discuss.appium.io](http://discuss.appium.io) instead._'
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: 'Do I have the most recent component updates?'
|
||||
description: 'Appium 1-related issues are going to be ignored as this version has reached its end of life.'
|
||||
options:
|
||||
- label: 'I use the most recent available driver/plugin and server versions'
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: 'Is the component officially supported by the Appium team?'
|
||||
description: 'Make sure you report an issue for a component which is officially supported/maintained by the Appium team.'
|
||||
options:
|
||||
- label: 'I have verified the component repository is present under the Appium organization in GitHub'
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: 'Is there an existing issue for this?'
|
||||
@@ -34,7 +48,7 @@ body:
|
||||
An easy way to get started is to copy [sample code](https://github.com/appium/appium/tree/master/packages/appium/sample-code) and modify it accordingly.
|
||||
|
||||
If the result is more than a screenful of text _or_ requires multiple files, please:
|
||||
|
||||
|
||||
- _Attach_ (do not paste) it to this textarea, _or_
|
||||
- Put it in a [Gist](https://gist.github.com) and paste the link, _or_
|
||||
- Provide a link to a new or existing public repository exhibiting the issue
|
||||
@@ -46,14 +60,12 @@ body:
|
||||
description: 'Please provide the following information about your environment; feel free to remove any items which are not relevant.'
|
||||
value: |
|
||||
- Operating system:
|
||||
- If running via `appium` CLI...
|
||||
- Appium CLI version (output of `appium --version`):
|
||||
- Node.js version (output of `node --version`):
|
||||
- `npm` version (output of `npm --version`):
|
||||
- Last `appium` version which did _not_ exhibit the problem:
|
||||
- If running Appium Desktop, its version:
|
||||
- Appium server version (output of `appium --version`):
|
||||
- Appium driver(s) and their version(s):
|
||||
- Appium plugin(s) and their version(s):
|
||||
- Node.js version (output of `node --version`):
|
||||
- `npm` version (output of `npm --version`):
|
||||
- Last component(s) version which did _not_ exhibit the problem:
|
||||
- Platform and version under test:
|
||||
- Real device or emulator/simulator:
|
||||
validations:
|
||||
@@ -63,9 +75,9 @@ body:
|
||||
label: 'Link to Appium Logs'
|
||||
description: |
|
||||
Create a [Gist](https://gist.github.com)—which contains your _full_ Appium logs—and link it here. Alternatively, you can attach a logfile to this issue (drag it into the "Further Information" field below).
|
||||
|
||||
|
||||
:warning: _Remember to redact or remove any sensitive information!_
|
||||
placeholder: 'https://gist.github.com/...'
|
||||
placeholder: 'https://gist.github.com/...'
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Futher Information
|
||||
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
# - macos-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
@@ -82,7 +82,7 @@ jobs:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- name: Install dependencies
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
|
||||
@@ -12,7 +12,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
|
||||
- name: Cleanup
|
||||
run: |
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
name: Docs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- name: Install dependencies (Node.js)
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
|
||||
@@ -11,7 +11,7 @@ jobs:
|
||||
name: Run FOSSA Analysis
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
with:
|
||||
ref: master
|
||||
- name: Install dependencies
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
name: Check Renovate Configs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- name: Validate Renovate Config
|
||||
uses: rinchsan/renovate-config-validator@1ea1e8514f6a33fdd71c40b0a5fa3512b9e7b936 # tag=v0
|
||||
with:
|
||||
|
||||
Generated
+70
-64
@@ -20,13 +20,13 @@
|
||||
"@types/chai-as-promised": "7.1.5",
|
||||
"@types/diff": "5.0.3",
|
||||
"@types/mocha": "10.0.1",
|
||||
"@types/node": "18.16.16",
|
||||
"@types/node": "18.16.18",
|
||||
"@types/semver": "7.5.0",
|
||||
"@types/sinon": "10.0.15",
|
||||
"@types/sinon-chai": "3.2.9",
|
||||
"@types/source-map-support": "0.5.6",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/ws": "8.5.4",
|
||||
"@types/ws": "8.5.5",
|
||||
"@types/yargs": "17.0.24",
|
||||
"@typescript-eslint/eslint-plugin": "5.59.8",
|
||||
"@typescript-eslint/parser": "5.59.8",
|
||||
@@ -4404,9 +4404,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.16.16",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz",
|
||||
"integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g=="
|
||||
"version": "18.16.18",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.18.tgz",
|
||||
"integrity": "sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw=="
|
||||
},
|
||||
"node_modules/@types/normalize-package-data": {
|
||||
"version": "2.4.1",
|
||||
@@ -4536,8 +4536,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/uuid": {
|
||||
"version": "9.0.1",
|
||||
"license": "MIT"
|
||||
"version": "9.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz",
|
||||
"integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ=="
|
||||
},
|
||||
"node_modules/@types/which": {
|
||||
"version": "1.3.2",
|
||||
@@ -4548,8 +4549,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/ws": {
|
||||
"version": "8.5.4",
|
||||
"license": "MIT",
|
||||
"version": "8.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
|
||||
"integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
@@ -21540,16 +21542,16 @@
|
||||
}
|
||||
},
|
||||
"packages/appium": {
|
||||
"version": "2.0.0-rc.2",
|
||||
"version": "2.0.0-rc.4",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.12",
|
||||
"@appium/base-plugin": "^2.2.12",
|
||||
"@appium/docutils": "^0.4.1",
|
||||
"@appium/base-driver": "^9.3.14",
|
||||
"@appium/base-plugin": "^2.2.14",
|
||||
"@appium/docutils": "^0.4.3",
|
||||
"@appium/schema": "^0.3.0",
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@sidvind/better-ajv-errors": "2.1.0",
|
||||
"@types/argparse": "2.0.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -21752,11 +21754,11 @@
|
||||
},
|
||||
"packages/base-driver": {
|
||||
"name": "@appium/base-driver",
|
||||
"version": "9.3.12",
|
||||
"version": "9.3.14",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/async-lock": "1.4.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -21804,11 +21806,11 @@
|
||||
},
|
||||
"packages/base-plugin": {
|
||||
"name": "@appium/base-plugin",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.14",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.12",
|
||||
"@appium/support": "^4.0.3"
|
||||
"@appium/base-driver": "^9.3.14",
|
||||
"@appium/support": "^4.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
@@ -21817,10 +21819,10 @@
|
||||
},
|
||||
"packages/doctor": {
|
||||
"name": "@appium/doctor",
|
||||
"version": "2.0.18",
|
||||
"version": "2.0.20",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/teen_process": "2.0.0",
|
||||
@@ -21842,10 +21844,10 @@
|
||||
},
|
||||
"packages/docutils": {
|
||||
"name": "@appium/docutils",
|
||||
"version": "0.4.1",
|
||||
"version": "0.4.3",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/typedoc-plugin-appium": "^0.6.5",
|
||||
"@sliphua/lilconfig-ts-loader": "3.2.2",
|
||||
@@ -21969,10 +21971,10 @@
|
||||
},
|
||||
"packages/driver-test-support": {
|
||||
"name": "@appium/driver-test-support",
|
||||
"version": "0.4.7",
|
||||
"version": "0.4.9",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/stoppable": "1.1.1",
|
||||
"axios": "1.4.0",
|
||||
@@ -22061,7 +22063,7 @@
|
||||
},
|
||||
"packages/fake-driver": {
|
||||
"name": "@appium/fake-driver",
|
||||
"version": "5.2.4",
|
||||
"version": "5.2.5",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -22085,11 +22087,11 @@
|
||||
},
|
||||
"packages/fake-plugin": {
|
||||
"name": "@appium/fake-plugin",
|
||||
"version": "3.1.16",
|
||||
"version": "3.1.18",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/base-plugin": "^2.2.12",
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/base-plugin": "^2.2.14",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -22148,10 +22150,10 @@
|
||||
},
|
||||
"packages/plugin-test-support": {
|
||||
"name": "@appium/plugin-test-support",
|
||||
"version": "0.3.15",
|
||||
"version": "0.3.17",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"get-port": "5.1.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"source-map-support": "0.5.21",
|
||||
@@ -22211,11 +22213,11 @@
|
||||
},
|
||||
"packages/support": {
|
||||
"name": "@appium/support",
|
||||
"version": "4.0.3",
|
||||
"version": "4.1.1",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/archiver": "5.3.2",
|
||||
"@types/base64-stream": "1.0.2",
|
||||
@@ -22232,7 +22234,7 @@
|
||||
"@types/shell-quote": "1.7.1",
|
||||
"@types/supports-color": "8.1.1",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/uuid": "9.0.1",
|
||||
"@types/uuid": "9.0.2",
|
||||
"@types/which": "3.0.0",
|
||||
"archiver": "5.3.1",
|
||||
"axios": "1.4.0",
|
||||
@@ -22458,10 +22460,10 @@
|
||||
},
|
||||
"packages/test-support": {
|
||||
"name": "@appium/test-support",
|
||||
"version": "3.0.17",
|
||||
"version": "3.0.19",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -22514,14 +22516,14 @@
|
||||
},
|
||||
"packages/types": {
|
||||
"name": "@appium/types",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.1",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@appium/schema": "^0.3.0",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/npmlog": "4.1.4",
|
||||
"@types/ws": "8.5.4",
|
||||
"@types/ws": "8.5.5",
|
||||
"type-fest": "3.11.1"
|
||||
},
|
||||
"engines": {
|
||||
@@ -22562,8 +22564,8 @@
|
||||
"@appium/base-driver": {
|
||||
"version": "file:packages/base-driver",
|
||||
"requires": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/async-lock": "1.4.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
@@ -22605,14 +22607,14 @@
|
||||
"@appium/base-plugin": {
|
||||
"version": "file:packages/base-plugin",
|
||||
"requires": {
|
||||
"@appium/base-driver": "^9.3.12",
|
||||
"@appium/support": "^4.0.3"
|
||||
"@appium/base-driver": "^9.3.14",
|
||||
"@appium/support": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"@appium/doctor": {
|
||||
"version": "file:packages/doctor",
|
||||
"requires": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/teen_process": "2.0.0",
|
||||
@@ -22628,7 +22630,7 @@
|
||||
"@appium/docutils": {
|
||||
"version": "file:packages/docutils",
|
||||
"requires": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/typedoc-plugin-appium": "^0.6.5",
|
||||
"@sliphua/lilconfig-ts-loader": "3.2.2",
|
||||
@@ -22710,7 +22712,7 @@
|
||||
"@appium/driver-test-support": {
|
||||
"version": "file:packages/driver-test-support",
|
||||
"requires": {
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/stoppable": "1.1.1",
|
||||
"axios": "1.4.0",
|
||||
@@ -22768,8 +22770,8 @@
|
||||
"@appium/fake-plugin": {
|
||||
"version": "file:packages/fake-plugin",
|
||||
"requires": {
|
||||
"@appium/base-plugin": "^2.2.12",
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/base-plugin": "^2.2.14",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -22805,7 +22807,7 @@
|
||||
"@appium/plugin-test-support": {
|
||||
"version": "file:packages/plugin-test-support",
|
||||
"requires": {
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"get-port": "5.1.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"source-map-support": "0.5.21",
|
||||
@@ -22838,7 +22840,7 @@
|
||||
"version": "file:packages/support",
|
||||
"requires": {
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/archiver": "5.3.2",
|
||||
"@types/base64-stream": "1.0.2",
|
||||
@@ -22855,7 +22857,7 @@
|
||||
"@types/shell-quote": "1.7.1",
|
||||
"@types/supports-color": "8.1.1",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/uuid": "9.0.1",
|
||||
"@types/uuid": "9.0.2",
|
||||
"@types/which": "3.0.0",
|
||||
"archiver": "5.3.1",
|
||||
"axios": "1.4.0",
|
||||
@@ -23008,7 +23010,7 @@
|
||||
"@appium/test-support": {
|
||||
"version": "file:packages/test-support",
|
||||
"requires": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
@@ -23039,7 +23041,7 @@
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/npmlog": "4.1.4",
|
||||
"@types/ws": "8.5.4",
|
||||
"@types/ws": "8.5.5",
|
||||
"type-fest": "3.11.1"
|
||||
}
|
||||
},
|
||||
@@ -25952,9 +25954,9 @@
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.16.16",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz",
|
||||
"integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g=="
|
||||
"version": "18.16.18",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.18.tgz",
|
||||
"integrity": "sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw=="
|
||||
},
|
||||
"@types/normalize-package-data": {
|
||||
"version": "2.4.1"
|
||||
@@ -26065,7 +26067,9 @@
|
||||
"version": "0.7.36"
|
||||
},
|
||||
"@types/uuid": {
|
||||
"version": "9.0.1"
|
||||
"version": "9.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz",
|
||||
"integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ=="
|
||||
},
|
||||
"@types/which": {
|
||||
"version": "1.3.2"
|
||||
@@ -26074,7 +26078,9 @@
|
||||
"version": "3.0.0"
|
||||
},
|
||||
"@types/ws": {
|
||||
"version": "8.5.4",
|
||||
"version": "8.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
|
||||
"integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
@@ -26477,12 +26483,12 @@
|
||||
"appium": {
|
||||
"version": "file:packages/appium",
|
||||
"requires": {
|
||||
"@appium/base-driver": "^9.3.12",
|
||||
"@appium/base-plugin": "^2.2.12",
|
||||
"@appium/docutils": "^0.4.1",
|
||||
"@appium/base-driver": "^9.3.14",
|
||||
"@appium/base-plugin": "^2.2.14",
|
||||
"@appium/docutils": "^0.4.3",
|
||||
"@appium/schema": "^0.3.0",
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@sidvind/better-ajv-errors": "2.1.0",
|
||||
"@types/argparse": "2.0.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
|
||||
+2
-2
@@ -92,13 +92,13 @@
|
||||
"@types/chai-as-promised": "7.1.5",
|
||||
"@types/diff": "5.0.3",
|
||||
"@types/mocha": "10.0.1",
|
||||
"@types/node": "18.16.16",
|
||||
"@types/node": "18.16.18",
|
||||
"@types/semver": "7.5.0",
|
||||
"@types/sinon": "10.0.15",
|
||||
"@types/sinon-chai": "3.2.9",
|
||||
"@types/source-map-support": "0.5.6",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/ws": "8.5.4",
|
||||
"@types/ws": "8.5.5",
|
||||
"@types/yargs": "17.0.24",
|
||||
"@typescript-eslint/eslint-plugin": "5.59.8",
|
||||
"@typescript-eslint/parser": "5.59.8",
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.0.0-rc.4](https://github.com/appium/appium/compare/appium@2.0.0-rc.3...appium@2.0.0-rc.4) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.0-rc.3](https://github.com/appium/appium/compare/appium@2.0.0-rc.2...appium@2.0.0-rc.3) (2023-06-15)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.0-rc.2](https://github.com/appium/appium/compare/appium@2.0.0-rc.1...appium@2.0.0-rc.2) (2023-06-14)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
|
||||
import {init as logsinkInit} from './logsink'; // this import needs to come first since it sets up global npmlog
|
||||
import logger from './logger'; // logger needs to remain second
|
||||
import {routeConfiguringFunction as makeRouter, server as baseServer} from '@appium/base-driver';
|
||||
import {
|
||||
routeConfiguringFunction as makeRouter,
|
||||
server as baseServer,
|
||||
normalizeBasePath,
|
||||
} from '@appium/base-driver';
|
||||
import {logger as logFactory, util, env, fs} from '@appium/support';
|
||||
import {asyncify} from 'asyncbox';
|
||||
import _ from 'lodash';
|
||||
@@ -32,11 +36,12 @@ import {
|
||||
isExtensionCommandArgs,
|
||||
isPluginCommandArgs,
|
||||
isServerCommandArgs,
|
||||
fetchIpAddresses,
|
||||
fetchInterfaces,
|
||||
V4_BROADCAST_IP,
|
||||
V6_BROADCAST_IP,
|
||||
} from './utils';
|
||||
import os from 'node:os';
|
||||
import net from 'node:net';
|
||||
|
||||
const {resolveAppiumHome} = env;
|
||||
|
||||
@@ -328,17 +333,23 @@ async function init(args) {
|
||||
* @param {string} url The URL the server is listening on
|
||||
*/
|
||||
function logServerAddress(url) {
|
||||
logger.info(`Appium REST http interface listener started on ${url}`);
|
||||
const urlObj = new URL(url);
|
||||
if (![V4_BROADCAST_IP, V6_BROADCAST_IP].includes(urlObj.hostname)) {
|
||||
logger.info(`Appium REST http interface listener started on ${url}`);
|
||||
if (![V4_BROADCAST_IP, V6_BROADCAST_IP, `[${V6_BROADCAST_IP}]`].includes(urlObj.hostname)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const ips = fetchIpAddresses(urlObj.hostname === V4_BROADCAST_IP ? 4 : 6);
|
||||
const interfaces = fetchInterfaces(urlObj.hostname === V4_BROADCAST_IP ? 4 : 6);
|
||||
const toLabel = (/** @type {os.NetworkInterfaceInfo} */ iface) => {
|
||||
const href = urlObj.href.replace(urlObj.hostname, iface.address);
|
||||
return iface.internal
|
||||
? `${href} (only accessible from the same host)`
|
||||
: href;
|
||||
};
|
||||
logger.info(
|
||||
`You can provide the following ${util.pluralize('URL', ips.length, false)} ` +
|
||||
`in your client code to connect to this server:\n` +
|
||||
ips.map((x) => `\t${urlObj.href.replace(urlObj.hostname, x)}`).join('\n')
|
||||
`You can provide the following ${util.pluralize('URL', interfaces.length, false)} ` +
|
||||
`in your client code to connect to this server:\n` +
|
||||
interfaces.map((iface) => `\t${toLabel(iface)}`).join('\n')
|
||||
);
|
||||
}
|
||||
|
||||
@@ -442,7 +453,8 @@ async function main(args) {
|
||||
});
|
||||
}
|
||||
|
||||
logServerAddress(`http://${parsedArgs.address}:${parsedArgs.port}${parsedArgs.basePath}`);
|
||||
const address = net.isIPv6(parsedArgs.address) ? `[${parsedArgs.address}]` : parsedArgs.address;
|
||||
logServerAddress(`http://${address}:${parsedArgs.port}${normalizeBasePath(parsedArgs.basePath)}`);
|
||||
|
||||
driverConfig.print();
|
||||
pluginConfig.print([...pluginClasses.values()]);
|
||||
|
||||
@@ -336,13 +336,13 @@ export function isPluginCommandArgs(args) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the list of IP addresses of the current host.
|
||||
* Fetches the list of matched network interfaces of the current host.
|
||||
*
|
||||
* @param {4|6|null} family Either 4 to include ipv4 addresses only,
|
||||
* 6 to include ipv6 addresses only, or null to include all of them
|
||||
* @returns {string[]} The list of matched IP addresses
|
||||
* @returns {os.NetworkInterfaceInfo[]} The list of matched interfcaes
|
||||
*/
|
||||
export function fetchIpAddresses (family = null) {
|
||||
export function fetchInterfaces (family = null) {
|
||||
let familyValue = null;
|
||||
// 'IPv4' is in Node <= 17, from 18 it's a number 4 or 6
|
||||
if (family === 4) {
|
||||
@@ -350,11 +350,10 @@ export function fetchIpAddresses (family = null) {
|
||||
} else if (family === 6) {
|
||||
familyValue = [6, 'IPv6'];
|
||||
}
|
||||
// @ts-ignore The linter does not understand the below filter
|
||||
return _.flatMap(_.values(os.networkInterfaces()).filter(Boolean))
|
||||
// @ts-ignore The linter does not understand the above filter
|
||||
.filter(({family}) => !familyValue || familyValue && familyValue.includes(family))
|
||||
// @ts-ignore The linter does not understand the above filter
|
||||
.map(({address}) => address);
|
||||
.filter(({family}) => !familyValue || familyValue && familyValue.includes(family));
|
||||
}
|
||||
|
||||
export {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "appium",
|
||||
"version": "2.0.0-rc.2",
|
||||
"version": "2.0.0-rc.4",
|
||||
"description": "Automation for Apps.",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -60,12 +60,12 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.12",
|
||||
"@appium/base-plugin": "^2.2.12",
|
||||
"@appium/docutils": "^0.4.1",
|
||||
"@appium/base-driver": "^9.3.14",
|
||||
"@appium/base-plugin": "^2.2.14",
|
||||
"@appium/docutils": "^0.4.3",
|
||||
"@appium/schema": "^0.3.0",
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@sidvind/better-ajv-errors": "2.1.0",
|
||||
"@types/argparse": "2.0.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
removeAppiumPrefixes,
|
||||
inspect,
|
||||
adjustNodePath,
|
||||
fetchIpAddresses,
|
||||
fetchInterfaces,
|
||||
} from '../../lib/utils';
|
||||
import {BASE_CAPS, W3C_CAPS} from '../helpers';
|
||||
import _ from 'lodash';
|
||||
@@ -277,17 +277,17 @@ describe('utils', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('fetchIpAddresses()', function () {
|
||||
it('should fetch addresses for ipv4 only', async function () {
|
||||
fetchIpAddresses(4).length.should.be.greaterThan(0);
|
||||
describe('fetchInterfaces()', function () {
|
||||
it('should fetch interfaces for ipv4 only', async function () {
|
||||
fetchInterfaces(4).length.should.be.greaterThan(0);
|
||||
});
|
||||
|
||||
it('should fetch addresses for ipv6 only', async function () {
|
||||
fetchIpAddresses(6).length.should.be.greaterThan(0);
|
||||
it('should fetch interfaces for ipv6 only', async function () {
|
||||
fetchInterfaces(6).length.should.be.greaterThan(0);
|
||||
});
|
||||
|
||||
it('should fetch addresses for ipv4 and ipv6', async function () {
|
||||
fetchIpAddresses().length.should.be.greaterThan(0);
|
||||
it('should fetch interfaces for ipv4 and ipv6', async function () {
|
||||
fetchInterfaces().length.should.be.greaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -3,6 +3,24 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [9.3.14](https://github.com/appium/appium/compare/@appium/base-driver@9.3.13...@appium/base-driver@9.3.14) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-driver
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [9.3.13](https://github.com/appium/appium/compare/@appium/base-driver@9.3.12...@appium/base-driver@9.3.13) (2023-06-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **base-driver:** update def of findElOrEls and findElOrElsWithProcessing ([54a4a8d](https://github.com/appium/appium/commit/54a4a8da030dbecde783168bb92634df837d5a41))
|
||||
* **types:** various fixes for reality ([81bc527](https://github.com/appium/appium/commit/81bc527be6aa54dd30a012156b5752b8b821ac0c))
|
||||
|
||||
|
||||
|
||||
## [9.3.12](https://github.com/appium/appium/compare/@appium/base-driver@9.3.11...@appium/base-driver@9.3.12) (2023-06-14)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-driver
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {Constraints, IFindCommands} from '@appium/types';
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
import {Constraints, Element, IFindCommands} from '@appium/types';
|
||||
import {errors} from '../../protocol';
|
||||
import {BaseDriver} from '../driver';
|
||||
import {mixin} from './mixin';
|
||||
@@ -8,6 +9,67 @@ declare module '../driver' {
|
||||
interface BaseDriver<C extends Constraints> extends IFindCommands {}
|
||||
}
|
||||
|
||||
async function findElOrEls<C extends Constraints>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: true,
|
||||
context?: any
|
||||
): Promise<Element[]>;
|
||||
async function findElOrEls<C extends Constraints>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: false,
|
||||
context?: any
|
||||
): Promise<Element>;
|
||||
async function findElOrEls<C extends Constraints>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: boolean,
|
||||
context?: any
|
||||
): Promise<Element[] | Element> {
|
||||
throw new errors.NotImplementedError('Not implemented yet for find.');
|
||||
}
|
||||
|
||||
async function findElOrElsWithProcessing<C extends Constraints>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: true,
|
||||
context?: any
|
||||
): Promise<Element[]>;
|
||||
async function findElOrElsWithProcessing<C extends Constraints>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: false,
|
||||
context?: any
|
||||
): Promise<Element>;
|
||||
async function findElOrElsWithProcessing<C extends Constraints>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: boolean,
|
||||
context?: any
|
||||
): Promise<Element[] | Element> {
|
||||
this.validateLocatorStrategy(strategy);
|
||||
try {
|
||||
// @ts-expect-error TS does not understand how to deal with the overload here
|
||||
return await this.findElOrEls(strategy, selector, mult, context);
|
||||
} catch (err) {
|
||||
if (this.opts.printPageSourceOnFindFailure) {
|
||||
const src = await this.getPageSource();
|
||||
this.log.debug(`Error finding element${mult ? 's' : ''}: ${err.message}`);
|
||||
this.log.debug(`Page source requested through 'printPageSourceOnFindFailure':`);
|
||||
this.log.debug(src);
|
||||
}
|
||||
// still want the error to occur
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
const FindCommands: IFindCommands = {
|
||||
async findElement<C extends Constraints>(this: BaseDriver<C>, strategy, selector) {
|
||||
return await this.findElOrElsWithProcessing(strategy, selector, false);
|
||||
@@ -35,46 +97,13 @@ const FindCommands: IFindCommands = {
|
||||
return await this.findElOrElsWithProcessing(strategy, selector, true, elementId);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns an object which adheres to the way the JSON Wire Protocol represents elements:
|
||||
*
|
||||
* Override this for your own driver!
|
||||
*/
|
||||
async findElOrEls<C extends Constraints, Mult extends boolean, Ctx = any>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: Mult,
|
||||
context: Ctx
|
||||
) {
|
||||
throw new errors.NotImplementedError('Not implemented yet for find.');
|
||||
},
|
||||
findElOrEls,
|
||||
|
||||
async getPageSource<C extends Constraints>(this: BaseDriver<C>) {
|
||||
throw new errors.NotImplementedError('Not implemented yet for find.');
|
||||
},
|
||||
|
||||
async findElOrElsWithProcessing<C extends Constraints, Mult extends boolean, Ctx = any>(
|
||||
this: BaseDriver<C>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: Mult,
|
||||
context?: Ctx
|
||||
) {
|
||||
this.validateLocatorStrategy(strategy);
|
||||
try {
|
||||
return await this.findElOrEls(strategy, selector, mult, context);
|
||||
} catch (err) {
|
||||
if (this.opts.printPageSourceOnFindFailure) {
|
||||
const src = await this.getPageSource();
|
||||
this.log.debug(`Error finding element${mult ? 's' : ''}: ${err.message}`);
|
||||
this.log.debug(`Page source requested through 'printPageSourceOnFindFailure':`);
|
||||
this.log.debug(src);
|
||||
}
|
||||
// still want the error to occur
|
||||
throw err;
|
||||
}
|
||||
},
|
||||
findElOrElsWithProcessing,
|
||||
};
|
||||
|
||||
mixin(FindCommands);
|
||||
|
||||
@@ -320,6 +320,12 @@ class JWProxy {
|
||||
return commandName;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} url
|
||||
* @param {import('@appium/types').HTTPMethod} method
|
||||
* @param {any?} body
|
||||
*/
|
||||
async proxyCommand(url, method, body = null) {
|
||||
const commandName = this.requestToCommandName(url, method);
|
||||
if (!commandName) {
|
||||
@@ -330,6 +336,12 @@ class JWProxy {
|
||||
return await this.protocolConverter.convertAndProxy(commandName, url, method, body);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} url
|
||||
* @param {import('@appium/types').HTTPMethod} method
|
||||
* @param {any?} body
|
||||
*/
|
||||
async command(url, method, body = null) {
|
||||
let response;
|
||||
let resBodyObj;
|
||||
|
||||
@@ -982,7 +982,13 @@ function isUnknownError(err) {
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Type guard to check if an Error is of a specific type
|
||||
* @template {Error} T
|
||||
* @param {any} err
|
||||
* @param {import('@appium/types').Class<T>} type
|
||||
* @returns {err is T}
|
||||
*/
|
||||
function isErrorType(err, type) {
|
||||
// `name` property is the constructor name
|
||||
if (type.name === ProtocolError.name) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-driver",
|
||||
"version": "9.3.12",
|
||||
"version": "9.3.14",
|
||||
"description": "Base driver class for Appium drivers",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -44,8 +44,8 @@
|
||||
"test:types": "tsd"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/async-lock": "1.4.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.2.14](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.13...@appium/base-plugin@2.2.14) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.13](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.12...@appium/base-plugin@2.2.13) (2023-06-15)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.12](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.11...@appium/base-plugin@2.2.12) (2023-06-14)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-plugin",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.14",
|
||||
"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.3.12",
|
||||
"@appium/support": "^4.0.3"
|
||||
"@appium/base-driver": "^9.3.14",
|
||||
"@appium/support": "^4.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.0.20](https://github.com/appium/appium/compare/@appium/doctor@2.0.19...@appium/doctor@2.0.20) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/doctor
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.19](https://github.com/appium/appium/compare/@appium/doctor@2.0.18...@appium/doctor@2.0.19) (2023-06-15)
|
||||
|
||||
**Note:** Version bump only for package @appium/doctor
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.18](https://github.com/appium/appium/compare/@appium/doctor@2.0.17...@appium/doctor@2.0.18) (2023-06-14)
|
||||
|
||||
**Note:** Version bump only for package @appium/doctor
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/doctor",
|
||||
"version": "2.0.18",
|
||||
"version": "2.0.20",
|
||||
"description": "Test environment for fitness to run Appium",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -44,7 +44,7 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/teen_process": "2.0.0",
|
||||
|
||||
@@ -3,6 +3,24 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.4.3](https://github.com/appium/appium/compare/@appium/docutils@0.4.2...@appium/docutils@0.4.3) (2023-06-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **docutils:** docs versioning and update latest ([#18804](https://github.com/appium/appium/issues/18804)) ([52a755a](https://github.com/appium/appium/commit/52a755a9135e06ad676cc422e37b5cab019c5b85))
|
||||
|
||||
|
||||
|
||||
## [0.4.2](https://github.com/appium/appium/compare/@appium/docutils@0.4.1...@appium/docutils@0.4.2) (2023-06-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **docutils:** set mike version to major.minor by default ([#18770](https://github.com/appium/appium/issues/18770)) ([1a5b8cc](https://github.com/appium/appium/commit/1a5b8cca2d22b0be0150fe87be963973c4cc04e5))
|
||||
|
||||
|
||||
|
||||
## [0.4.1](https://github.com/appium/appium/compare/@appium/docutils@0.4.0...@appium/docutils@0.4.1) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -45,11 +45,7 @@ async function doServe(
|
||||
* @param args Extra args to `mike build`
|
||||
* @param opts Extra options to `teen_process.exec`
|
||||
*/
|
||||
async function doDeploy(
|
||||
mikePath: string,
|
||||
args: string[] = [],
|
||||
opts: TeenProcessExecOptions = {}
|
||||
) {
|
||||
async function doDeploy(mikePath: string, args: string[] = [], opts: TeenProcessExecOptions = {}) {
|
||||
const finalArgs = ['deploy', ...args];
|
||||
log.debug('Executing %s via: %s %O', NAME_MIKE, mikePath, finalArgs);
|
||||
return await exec(mikePath, finalArgs, opts);
|
||||
@@ -68,7 +64,14 @@ async function findDeployVersion(packageJsonPath?: string, cwd = process.cwd()):
|
||||
'No "version" field found in package.json; please add one or specify a version to deploy'
|
||||
);
|
||||
}
|
||||
return version;
|
||||
|
||||
// return MAJOR.MINOR as the version by default, if that is a thing we can extract, otherwise
|
||||
// just return the version as is
|
||||
const versionParts = version.split('.');
|
||||
if (versionParts.length === 1) {
|
||||
return version;
|
||||
}
|
||||
return `${versionParts[0]}.${versionParts[1]}`;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,15 +131,18 @@ export async function deploy({
|
||||
|
||||
const mikePath = await findMike();
|
||||
if (!mikePath) {
|
||||
throw new DocutilsError(`Could not find ${NAME_MIKE} executable; please run "${NAME_BIN} init"`);
|
||||
throw new DocutilsError(
|
||||
`Could not find ${NAME_MIKE} executable; please run "${NAME_BIN} init"`
|
||||
);
|
||||
}
|
||||
if (serve) {
|
||||
const mikeArgs = [
|
||||
...argify(_.pickBy(mikeOpts, (value) => _.isNumber(value) || Boolean(value))),
|
||||
version,
|
||||
...argify(_.pickBy(mikeOpts, (value) => _.isNumber(value) || Boolean(value)))
|
||||
];
|
||||
if (alias) {
|
||||
mikeArgs.push(alias);
|
||||
mikeArgs.push('--update-aliases', version, alias);
|
||||
} else {
|
||||
mikeArgs.push(version);
|
||||
}
|
||||
stop(); // discard
|
||||
// unsure about how SIGHUP is handled here
|
||||
@@ -150,10 +156,11 @@ export async function deploy({
|
||||
(value, key) => _.includes(['port', 'host'], key) || (!_.isNumber(value) && !value)
|
||||
)
|
||||
),
|
||||
version,
|
||||
];
|
||||
if (alias) {
|
||||
mikeArgs.push(alias);
|
||||
mikeArgs.push('--update-aliases', version, alias);
|
||||
} else {
|
||||
mikeArgs.push(version);
|
||||
}
|
||||
await doDeploy(mikePath, mikeArgs, execOpts);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/docutils",
|
||||
"version": "0.4.1",
|
||||
"version": "0.4.3",
|
||||
"description": "Documentation generation utilities for Appium and related projects",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -49,7 +49,7 @@
|
||||
"start": "node ./build/lib/cli/index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/typedoc-plugin-appium": "^0.6.5",
|
||||
"@sliphua/lilconfig-ts-loader": "3.2.2",
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.4.9](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.8...@appium/driver-test-support@0.4.9) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/driver-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.8](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.7...@appium/driver-test-support@0.4.8) (2023-06-15)
|
||||
|
||||
**Note:** Version bump only for package @appium/driver-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.7](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.6...@appium/driver-test-support@0.4.7) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/driver-test-support",
|
||||
"version": "0.4.7",
|
||||
"version": "0.4.9",
|
||||
"description": "Test utilities for Appium drivers",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,7 +41,7 @@
|
||||
},
|
||||
"types": "./build/lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/stoppable": "1.1.1",
|
||||
"axios": "1.4.0",
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [5.2.5](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.4...@appium/fake-driver@5.2.5) (2023-06-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **fake-driver:** update definition of findElOrEls ([598b255](https://github.com/appium/appium/commit/598b255e8d4a2b41cca0ec0c02a54c46946eadb5))
|
||||
* **types,fake-driver:** getLog doesn't necessarily return an array ([00ae162](https://github.com/appium/appium/commit/00ae1625d73305b8840d45a0dc98ac3cc628ac37))
|
||||
* **types:** various fixes for reality ([81bc527](https://github.com/appium/appium/commit/81bc527be6aa54dd30a012156b5752b8b821ac0c))
|
||||
|
||||
|
||||
|
||||
## [5.2.4](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.3...@appium/fake-driver@5.2.4) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -7,17 +7,82 @@ import {util} from '@appium/support';
|
||||
import {mixin} from './mixin';
|
||||
|
||||
const {W3C_WEB_ELEMENT_IDENTIFIER} = util;
|
||||
|
||||
async function findElOrEls<Ctx = any>(
|
||||
this: FakeDriver<any>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: true,
|
||||
context?: Ctx
|
||||
): Promise<Element[]>;
|
||||
async function findElOrEls<Ctx = any>(
|
||||
this: FakeDriver<any>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: false,
|
||||
context?: Ctx
|
||||
): Promise<Element>;
|
||||
async function findElOrEls<Ctx = any>(
|
||||
this: FakeDriver<any>,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: boolean,
|
||||
context?: Ctx
|
||||
): Promise<Element | Element[]> {
|
||||
const qMap = {
|
||||
xpath: 'xpathQuery',
|
||||
id: 'idQuery',
|
||||
'accessibility id': 'idQuery',
|
||||
'class name': 'classQuery',
|
||||
'tag name': 'classQuery',
|
||||
'css selector': 'cssQuery',
|
||||
} as Record<string, keyof FakeDriver['appModel']>;
|
||||
// TODO this error checking should probably be part of MJSONWP?
|
||||
if (!_.includes(_.keys(qMap), strategy)) {
|
||||
throw new errors.UnknownCommandError();
|
||||
}
|
||||
if (selector === 'badsel') {
|
||||
throw new errors.InvalidSelectorError();
|
||||
}
|
||||
const els = this.appModel[qMap[strategy]](selector, context);
|
||||
|
||||
let retval: Element | Element[];
|
||||
if (els.length) {
|
||||
if (mult) {
|
||||
const allEls: Element[] = [];
|
||||
for (const el of els) {
|
||||
allEls.push(this.wrapNewEl(el));
|
||||
}
|
||||
retval = allEls;
|
||||
} else {
|
||||
retval = this.wrapNewEl(els[0]);
|
||||
}
|
||||
} else if (mult) {
|
||||
retval = [];
|
||||
} else {
|
||||
throw new errors.NoSuchElementError();
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
interface FakeDriverFindMixin {
|
||||
getExistingElementForNode(node: FakeElement): string | null;
|
||||
wrapNewEl(obj: FakeElement): Element;
|
||||
|
||||
findElOrEls<Many extends boolean, Ctx = any>(
|
||||
findElOrEls(
|
||||
this: FakeDriver,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
many: Many,
|
||||
context?: Ctx
|
||||
): Promise<Many extends true ? Element[] : Element>;
|
||||
mult: true,
|
||||
context?: any
|
||||
): Promise<Element[]>;
|
||||
findElOrEls(
|
||||
this: FakeDriver,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: false,
|
||||
context?: any
|
||||
): Promise<Element>;
|
||||
findElement(strategy: string, selector: string): Promise<Element>;
|
||||
findElements(strategy: string, selector: string): Promise<Element[]>;
|
||||
findElementFromElement(elementId: string, strategy: string, selector: string): Promise<Element>;
|
||||
@@ -56,48 +121,7 @@ const FindMixin: FakeDriverFindMixin = {
|
||||
return {ELEMENT: maxElId, [W3C_WEB_ELEMENT_IDENTIFIER]: maxElId};
|
||||
},
|
||||
|
||||
async findElOrEls<Many extends boolean, Ctx = any>(
|
||||
this: FakeDriver,
|
||||
strategy: string,
|
||||
selector: string,
|
||||
many: Many,
|
||||
context: Ctx
|
||||
): Promise<Many extends true ? Element[] : Element> {
|
||||
const qMap = {
|
||||
xpath: 'xpathQuery',
|
||||
id: 'idQuery',
|
||||
'accessibility id': 'idQuery',
|
||||
'class name': 'classQuery',
|
||||
'tag name': 'classQuery',
|
||||
'css selector': 'cssQuery',
|
||||
} as Record<string, keyof FakeDriver['appModel']>;
|
||||
// TODO this error checking should probably be part of MJSONWP?
|
||||
if (!_.includes(_.keys(qMap), strategy)) {
|
||||
throw new errors.UnknownCommandError();
|
||||
}
|
||||
if (selector === 'badsel') {
|
||||
throw new errors.InvalidSelectorError();
|
||||
}
|
||||
const els = this.appModel[qMap[strategy]](selector, context);
|
||||
|
||||
let retval: Element | Element[];
|
||||
if (els.length) {
|
||||
if (many) {
|
||||
const allEls: Element[] = [];
|
||||
for (const el of els) {
|
||||
allEls.push(this.wrapNewEl(el));
|
||||
}
|
||||
retval = allEls;
|
||||
} else {
|
||||
retval = this.wrapNewEl(els[0]);
|
||||
}
|
||||
} else if (many) {
|
||||
retval = [];
|
||||
} else {
|
||||
throw new errors.NoSuchElementError();
|
||||
}
|
||||
return retval as Many extends true ? Element[] : Element;
|
||||
},
|
||||
findElOrEls,
|
||||
|
||||
/**
|
||||
* This should override whatever's in ExternalDriver
|
||||
|
||||
@@ -8,7 +8,7 @@ const ORIENTATIONS = new Set(['LANDSCAPE', 'PORTRAIT']);
|
||||
interface FakeDriverGeneralMixin {
|
||||
title(): Promise<string>;
|
||||
keys(value: string | string[]): Promise<void>;
|
||||
setGeoLocation(location: Location): Promise<void>;
|
||||
setGeoLocation(location: Location): Promise<Location>;
|
||||
getGeoLocation(): Promise<Location>;
|
||||
getPageSource(): Promise<string>;
|
||||
getOrientation(): Promise<string>;
|
||||
@@ -22,7 +22,7 @@ interface FakeDriverGeneralMixin {
|
||||
doubleClick(): Promise<void>;
|
||||
execute(script: string, args: any[]): Promise<any>;
|
||||
fakeAddition(a: number, b: number, c?: number): Promise<number>;
|
||||
getLog(type: string): Promise<unknown[]>;
|
||||
getLog(type: string): Promise<any>;
|
||||
}
|
||||
|
||||
declare module '../driver' {
|
||||
@@ -46,6 +46,7 @@ const GeneralMixin: FakeDriverGeneralMixin = {
|
||||
// TODO test this adequately once WD bug is fixed
|
||||
this.appModel.lat = location.latitude;
|
||||
this.appModel.long = location.longitude;
|
||||
return location;
|
||||
},
|
||||
|
||||
async getGeoLocation(this: FakeDriver) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/fake-driver",
|
||||
"version": "5.2.4",
|
||||
"version": "5.2.5",
|
||||
"description": "Mock driver used internally by Appium for testing. Ignore",
|
||||
"keywords": [
|
||||
"automation",
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.1.18](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.17...@appium/fake-plugin@3.1.18) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.17](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.16...@appium/fake-plugin@3.1.17) (2023-06-15)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.16](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.15...@appium/fake-plugin@3.1.16) (2023-06-14)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/fake-plugin",
|
||||
"version": "3.1.16",
|
||||
"version": "3.1.18",
|
||||
"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.12",
|
||||
"@appium/support": "^4.0.3",
|
||||
"@appium/base-plugin": "^2.2.14",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.3.17](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.16...@appium/plugin-test-support@0.3.17) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.16](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.15...@appium/plugin-test-support@0.3.16) (2023-06-15)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.15](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.14...@appium/plugin-test-support@0.3.15) (2023-06-14)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/plugin-test-support",
|
||||
"version": "0.3.15",
|
||||
"version": "0.3.17",
|
||||
"description": "Testing utilities for Appium plugins",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,7 +41,7 @@
|
||||
"test:unit": "exit 0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"get-port": "5.1.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"source-map-support": "0.5.21",
|
||||
|
||||
@@ -3,6 +3,23 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [4.1.1](https://github.com/appium/appium/compare/@appium/support@4.1.0...@appium/support@4.1.1) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [4.1.0](https://github.com/appium/appium/compare/@appium/support@4.0.3...@appium/support@4.1.0) (2023-06-15)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **support:** export a bunch of types that weren't properly exported ([88293f8](https://github.com/appium/appium/commit/88293f803933ecf7d258b02afd08d636b310a24b))
|
||||
|
||||
|
||||
|
||||
## [4.0.3](https://github.com/appium/appium/compare/@appium/support@4.0.2...@appium/support@4.0.3) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -57,3 +57,24 @@ export default {
|
||||
env,
|
||||
console,
|
||||
};
|
||||
|
||||
export type {ConsoleOpts} from './console';
|
||||
export type {ReadFn, WalkDirCallback} from './fs';
|
||||
export type {
|
||||
NetOptions,
|
||||
DownloadOptions,
|
||||
AuthCredentials,
|
||||
NotHttpUploadOptions,
|
||||
HttpUploadOptions,
|
||||
} from './net';
|
||||
export type {InstallPackageOpts, ExecOpts, NpmInstallReceipt} from './npm';
|
||||
export type {Affixes, OpenedAffixes} from './tempdir';
|
||||
export type {PluralizeOptions, EncodingOptions, LockFileOptions, NonEmptyString} from './util';
|
||||
export type {
|
||||
ExtractAllOptions,
|
||||
ZipEntry,
|
||||
ZipOptions,
|
||||
ZipCompressionOptions,
|
||||
ZipSourceOptions,
|
||||
} from './zip';
|
||||
export type {SecureValuePreprocessingRule} from './log-internal';
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/support",
|
||||
"version": "4.0.3",
|
||||
"version": "4.1.1",
|
||||
"description": "Support libs used across appium packages",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -42,7 +42,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/types": "^0.12.0",
|
||||
"@appium/types": "^0.13.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/archiver": "5.3.2",
|
||||
"@types/base64-stream": "1.0.2",
|
||||
@@ -59,7 +59,7 @@
|
||||
"@types/shell-quote": "1.7.1",
|
||||
"@types/supports-color": "8.1.1",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/uuid": "9.0.1",
|
||||
"@types/uuid": "9.0.2",
|
||||
"@types/which": "3.0.0",
|
||||
"archiver": "5.3.1",
|
||||
"axios": "1.4.0",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import AppiumSupport from '../../lib/index.js';
|
||||
import AppiumSupport from '../../lib/';
|
||||
|
||||
let {system, tempDir, util} = AppiumSupport;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import path from 'path';
|
||||
import {plist, tempDir, fs} from '../../lib/index.js';
|
||||
import {plist, tempDir, fs} from '../../lib';
|
||||
|
||||
const binaryPlistPath = path.join(__dirname, 'assets', 'sample_binary.plist');
|
||||
const textPlistPath = path.join(__dirname, 'assets', 'sample_text.plist');
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {system} from '../../lib/index.js';
|
||||
import {system} from '../../lib';
|
||||
import os from 'os';
|
||||
import {createSandbox} from 'sinon';
|
||||
import * as teen_process from 'teen_process';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {tempDir, fs} from '../../lib/index.js';
|
||||
import {tempDir, fs} from '../../lib';
|
||||
|
||||
describe('tempdir', function () {
|
||||
afterEach(function () {
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.0.19](https://github.com/appium/appium/compare/@appium/test-support@3.0.18...@appium/test-support@3.0.19) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.18](https://github.com/appium/appium/compare/@appium/test-support@3.0.17...@appium/test-support@3.0.18) (2023-06-15)
|
||||
|
||||
**Note:** Version bump only for package @appium/test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.17](https://github.com/appium/appium/compare/@appium/test-support@3.0.16...@appium/test-support@3.0.17) (2023-06-14)
|
||||
|
||||
**Note:** Version bump only for package @appium/test-support
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/test-support",
|
||||
"version": "3.0.17",
|
||||
"version": "3.0.19",
|
||||
"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": "^4.0.3",
|
||||
"@appium/support": "^4.1.1",
|
||||
"@colors/colors": "1.5.0",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
|
||||
@@ -264,7 +264,7 @@ Get the log for a given log type.
|
||||
|
||||
#### Response
|
||||
|
||||
\`unknown\`[]
|
||||
\`any\`
|
||||
|
||||
### \`getLog\`
|
||||
|
||||
@@ -282,7 +282,7 @@ Get the log for a given log type.
|
||||
|
||||
#### Response
|
||||
|
||||
\`unknown\`[]
|
||||
\`any\`
|
||||
|
||||
### \`getLogEvents\`
|
||||
|
||||
@@ -852,7 +852,7 @@ Get the log for a given log type.
|
||||
|
||||
#### Response
|
||||
|
||||
\`unknown\`[]
|
||||
\`any\`
|
||||
|
||||
### \`getLog\`
|
||||
|
||||
@@ -870,7 +870,7 @@ Get the log for a given log type.
|
||||
|
||||
#### Response
|
||||
|
||||
\`unknown\`[]
|
||||
\`any\`
|
||||
|
||||
### \`getLogEvents\`
|
||||
|
||||
|
||||
@@ -3,6 +3,33 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.13.1](https://github.com/appium/appium/compare/@appium/types@0.13.0...@appium/types@0.13.1) (2023-06-29)
|
||||
|
||||
**Note:** Version bump only for package @appium/types
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.13.0](https://github.com/appium/appium/compare/@appium/types@0.12.0...@appium/types@0.13.0) (2023-06-15)
|
||||
|
||||
|
||||
### ⚠ BREAKING CHANGES
|
||||
|
||||
* **types:** This changes the def of `findElOrEls` and `findElOrElsWithProcessing` in `ExternalDriver` in a breaking manner.
|
||||
|
||||
So conditional types don't work like how I was using them. They work in capital-T-types (`type`), but they don't work as return values. Instead, what we should have is an overload. in this case, the function can be called one of two ways, and it returns a different thing depending on those values. _unfortunately_ this is a little hinky to implement, given that overloads are unsupported in _object literals_. they are supported in function statements or expressions, and they are supported in class definitions, but not object literals. you'll see what needs to happen to make this work in `FakeDriver` and `BaseDriver` in subsequent changesets; essentially the function must be defined outside of the object literal and then stuffed in there.
|
||||
|
||||
The other change here changes an `object` type (which does not allow arbitrary properties) to a `StringRecord` type within the type which converts `Constraints` to `Capabilities`. This affects caps for some drivers such as `chromedriverArgs` in `appium-android-driver`; anywhere where the constraint has `isObject: true`.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types,fake-driver:** getLog doesn't necessarily return an array ([00ae162](https://github.com/appium/appium/commit/00ae1625d73305b8840d45a0dc98ac3cc628ac37))
|
||||
* **types:** use overload instead of broken conditional type in findElOrEls ([63a5c22](https://github.com/appium/appium/commit/63a5c22127ab22acfde8d36e9b96bdd35614fe17))
|
||||
* **types:** various fixes for reality ([81bc527](https://github.com/appium/appium/commit/81bc527be6aa54dd30a012156b5752b8b821ac0c))
|
||||
|
||||
|
||||
|
||||
## [0.12.0](https://github.com/appium/appium/compare/@appium/types@0.11.1...@appium/types@0.12.0) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ export type ConstraintToCapKind<C extends Constraint> = C['isString'] extends tr
|
||||
: C['isArray'] extends true
|
||||
? string[]
|
||||
: C['isObject'] extends true
|
||||
? object
|
||||
? StringRecord
|
||||
: unknown;
|
||||
|
||||
/**
|
||||
|
||||
@@ -291,15 +291,11 @@ export interface IFindCommands {
|
||||
*
|
||||
* @returns A single element or list of elements
|
||||
*/
|
||||
findElOrEls<Mult extends boolean, Ctx = any>(
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: Mult,
|
||||
context?: Ctx
|
||||
): Promise<Mult extends true ? Element[] : Element>;
|
||||
findElOrEls(strategy: string, selector: string, mult: true, context?: any): Promise<Element[]>;
|
||||
findElOrEls(strategy: string, selector: string, mult: false, context?: any): Promise<Element>;
|
||||
|
||||
/**
|
||||
* This is a wrapper for {@linkcode IFindCommands.findElOrEls} that validates locator strategies
|
||||
* This is a wrapper for {@linkcode findElOrEls} that validates locator strategies
|
||||
* and implements the `appium:printPageSourceOnFindFailure` capability
|
||||
*
|
||||
* @param strategy - the locator strategy
|
||||
@@ -309,12 +305,18 @@ export interface IFindCommands {
|
||||
*
|
||||
* @returns A single element or list of elements
|
||||
*/
|
||||
findElOrElsWithProcessing<Mult extends boolean, Ctx = any>(
|
||||
findElOrElsWithProcessing(
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: Mult,
|
||||
context?: Ctx
|
||||
): Promise<Mult extends true ? Element[] : Element>;
|
||||
mult: true,
|
||||
context?: any
|
||||
): Promise<Element[]>;
|
||||
findElOrElsWithProcessing(
|
||||
strategy: string,
|
||||
selector: string,
|
||||
mult: false,
|
||||
context?: any
|
||||
): Promise<Element>;
|
||||
|
||||
/**
|
||||
* Get the current page/app source as HTML/XML
|
||||
@@ -341,7 +343,7 @@ export interface ILogCommands {
|
||||
*
|
||||
* @param logType - Name/key of log type as defined in {@linkcode ILogCommands.supportedLogTypes}.
|
||||
*/
|
||||
getLog(logType: string): Promise<unknown[]>;
|
||||
getLog(logType: string): Promise<any>;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -366,7 +368,7 @@ export interface LogDef {
|
||||
*
|
||||
* This implementation *should* drain, truncate or otherwise reset the log buffer.
|
||||
*/
|
||||
getter: (driver: any) => Promise<unknown[]> | unknown[];
|
||||
getter: (driver: any) => Promise<unknown> | unknown;
|
||||
}
|
||||
|
||||
export interface ISettingsCommands<T extends StringRecord = StringRecord> {
|
||||
@@ -524,36 +526,7 @@ export interface Cookie {
|
||||
sameSite?: 'Lax' | 'Strict';
|
||||
}
|
||||
|
||||
// Appium W3C WebDriver Extension
|
||||
|
||||
export interface StartScreenRecordOptions {
|
||||
remotePath?: string;
|
||||
username?: string;
|
||||
password?: string;
|
||||
method?: string;
|
||||
forceRestart?: boolean;
|
||||
timeLimit?: string;
|
||||
videoType?: string;
|
||||
videoQuality?: string;
|
||||
videoFps?: string;
|
||||
videoScale?: string;
|
||||
bitRate?: string;
|
||||
videoSize?: string;
|
||||
bugReport?: string;
|
||||
}
|
||||
|
||||
export interface StopScreenRecordOptions {
|
||||
remotePath?: string;
|
||||
user?: string;
|
||||
pass?: string;
|
||||
method?: string;
|
||||
headers?: Record<string, string>;
|
||||
fileFieldName?: string;
|
||||
formFields: Record<string, string> | Entries<Record<string, string>>;
|
||||
}
|
||||
|
||||
// JSONWP
|
||||
|
||||
export type Size = Pick<Rect, 'width' | 'height'>;
|
||||
|
||||
export type Position = Pick<Rect, 'x' | 'y'>;
|
||||
@@ -1247,7 +1220,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @returns The list of types
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
getPerformanceDataTypes?(): Promise<string[]>;
|
||||
|
||||
@@ -1262,13 +1234,12 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @returns A list of performance data strings
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
getPerformanceData?(
|
||||
packageName: string,
|
||||
dataType: string,
|
||||
dataReadTimeout?: number
|
||||
): Promise<string[]>;
|
||||
): Promise<any>;
|
||||
|
||||
/**
|
||||
* Press a device hardware key by its code for the default duration
|
||||
@@ -1278,7 +1249,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param flags - the code denoting the combination of extra flags
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
pressKeyCode?(keycode: number, metastate?: number, flags?: number): Promise<void>;
|
||||
|
||||
@@ -1290,7 +1260,7 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param flags - the code denoting the combination of extra flags
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*
|
||||
*/
|
||||
longPressKeyCode?(keycode: number, metastate?: number, flags?: number): Promise<void>;
|
||||
|
||||
@@ -1300,7 +1270,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param fingerprintId - the numeric ID of the fingerprint to use
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
fingerprint?(fingerprintId: number): Promise<void>;
|
||||
|
||||
@@ -1311,7 +1280,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param message - the SMS text
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
sendSMS?(phoneNumber: string, message: string): Promise<void>;
|
||||
|
||||
@@ -1323,7 +1291,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param action - the action to take in response (accept, reject, etc...)
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
gsmCall?(phoneNumber: string, action: string): Promise<void>;
|
||||
|
||||
@@ -1333,9 +1300,8 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param singalStrength - the strength in a driver-appropriate string
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
gsmSignal?(signalStrength: string): Promise<void>;
|
||||
gsmSignal?(signalStrength: string | number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Do something with GSM voice (unclear; this should not be implemented anywhere)
|
||||
@@ -1353,7 +1319,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param percent - how full the battery should become
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
powerCapacity?(percent: number): Promise<void>;
|
||||
|
||||
@@ -1363,7 +1328,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param state - whether the device is connected to power or not
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
powerAC?(state: string): Promise<void>;
|
||||
|
||||
@@ -1373,7 +1337,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param netspeed - the speed as a string, like '3G'
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
networkSpeed?(netspeed: string): Promise<void>;
|
||||
|
||||
@@ -1384,9 +1347,8 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param metastate - the combination of meta startUnexpectedShutdown
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
keyevent?(keycode: string, metastate?: string): Promise<void>;
|
||||
keyevent?(keycode: string | number, metastate?: string | number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Construct a rotation gesture? Unclear what this command does and it does not appear to be used
|
||||
@@ -1452,8 +1414,10 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
*
|
||||
* @param appId - the package or bundle ID of the application
|
||||
* @param options - driver-specific launch options
|
||||
*
|
||||
* @returns `true` if successful
|
||||
*/
|
||||
removeApp?(appId: string, options?: unknown): Promise<void>;
|
||||
removeApp?(appId: string, options?: unknown): Promise<boolean>;
|
||||
|
||||
/**
|
||||
* Quit / terminate / stop a running application
|
||||
@@ -1461,7 +1425,7 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param appId - the package or bundle ID of the application
|
||||
* @param options - driver-specific launch options
|
||||
*/
|
||||
terminateApp?(appId: string, options?: unknown): Promise<void>;
|
||||
terminateApp?(appId: string, options?: unknown): Promise<boolean>;
|
||||
|
||||
/**
|
||||
* Determine whether an app is installed
|
||||
@@ -1488,8 +1452,15 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param key - the text of a key to use to hide the keyboard
|
||||
* @param keyCode - a key code to trigger to hide the keyboard
|
||||
* @param keyName - the name of a key to use to hide the keyboard
|
||||
*
|
||||
* @returns Whether the keyboard was successfully hidden. May never return `false` on some platforms
|
||||
*/
|
||||
hideKeyboard?(strategy?: string, key?: string, keyCode?: string, keyName?: string): Promise<void>;
|
||||
hideKeyboard?(
|
||||
strategy?: string,
|
||||
key?: string,
|
||||
keyCode?: string,
|
||||
keyName?: string
|
||||
): Promise<boolean>;
|
||||
|
||||
/**
|
||||
* Determine whether the keyboard is shown
|
||||
@@ -1600,9 +1571,8 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @returns An array of information objects of driver-specific shape
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
getSystemBars?(): Promise<unknown[]>;
|
||||
getSystemBars?(): Promise<unknown>;
|
||||
|
||||
/**
|
||||
* Get the display's pixel density
|
||||
@@ -1665,7 +1635,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @returns The name of the active engine
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
getActiveIMEEngine?(): Promise<string>;
|
||||
|
||||
@@ -1675,7 +1644,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @returns True if the IME is activated
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
isIMEActivated?(): Promise<boolean>;
|
||||
|
||||
@@ -1683,7 +1651,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* Deactivate an IME engine
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
deactivateIMEEngine?(): Promise<void>;
|
||||
|
||||
@@ -1693,7 +1660,6 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param engine - the name of the engine
|
||||
*
|
||||
* @deprecated
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
activateIMEEngine?(engine: string): Promise<void>;
|
||||
|
||||
@@ -1756,9 +1722,8 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param y - the y coordinate
|
||||
*
|
||||
* @deprecated Use the Actions API instead
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
touchDown?(x: number, y: number): Promise<void>;
|
||||
touchDown?(element: string, x: number, y: number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Perform a touch up event at the location specified
|
||||
@@ -1767,9 +1732,8 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param y - the y coordinate
|
||||
*
|
||||
* @deprecated Use the Actions API instead
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
touchUp?(x: number, y: number): Promise<void>;
|
||||
touchUp?(element: string, x: number, y: number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Perform a touch move event at the location specified
|
||||
@@ -1778,9 +1742,8 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param y - the y coordinate
|
||||
*
|
||||
* @deprecated Use the Actions API instead
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
touchMove?(x: number, y: number): Promise<void>;
|
||||
touchMove?(element: string, x: number, y: number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Perform a long touch down event at the location specified
|
||||
@@ -1788,9 +1751,8 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @param elementId - the id of the element to long touch
|
||||
*
|
||||
* @deprecated Use the Actions API instead
|
||||
* @privateRemarks Not implemented in `appium-xcuitest-driver`
|
||||
*/
|
||||
touchLongClick?(elementId: string): Promise<void>;
|
||||
touchLongClick?(element: string, x: number, y: number, duration: number): Promise<void>;
|
||||
|
||||
/**
|
||||
* Perform a flick event at the location specified
|
||||
@@ -1825,8 +1787,9 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* Set the virtual geographical location of a device
|
||||
*
|
||||
* @param location - the location including latitude and longitude
|
||||
* @returns The complete location
|
||||
*/
|
||||
setGeoLocation?(location: Partial<Location>): Promise<void>;
|
||||
setGeoLocation?(location: Partial<Location>): Promise<Location>;
|
||||
|
||||
// MJSONWIRE
|
||||
|
||||
@@ -1880,8 +1843,10 @@ export interface ExternalDriver<C extends Constraints = Constraints, Ctx = strin
|
||||
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-modes}
|
||||
*
|
||||
* @param type - the bitmask representing network state
|
||||
* @returns A number which is a bitmask representing categories like Data, Wifi, and Airplane
|
||||
* mode status
|
||||
*/
|
||||
setNetworkConnection?(type: number): Promise<void>;
|
||||
setNetworkConnection?(type: number): Promise<number>;
|
||||
|
||||
/**
|
||||
* Get the current rotation state of the device
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/types",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.1",
|
||||
"description": "Various type declarations used across Appium",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -42,7 +42,7 @@
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/npmlog": "4.1.4",
|
||||
"@types/ws": "8.5.4",
|
||||
"@types/ws": "8.5.5",
|
||||
"type-fest": "3.11.1"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
"figures",
|
||||
"find-up",
|
||||
"get-port",
|
||||
"get-stream",
|
||||
"globby",
|
||||
"got",
|
||||
"inquirer",
|
||||
|
||||
Reference in New Issue
Block a user