Compare commits

...
Author SHA1 Message Date
Jonathan Lipps 58b71869d1 chore: publish
- appium@2.0.0-rc.4
 - @appium/base-driver@9.3.14
 - @appium/base-plugin@2.2.14
 - @appium/doctor@2.0.20
 - @appium/docutils@0.4.3
 - @appium/driver-test-support@0.4.9
 - @appium/fake-plugin@3.1.18
 - @appium/plugin-test-support@0.3.17
 - @appium/support@4.1.1
 - @appium/test-support@3.0.19
 - @appium/types@0.13.1
2023-06-29 11:17:15 -07:00
renovate[bot] 08a1f1be94 chore(deps): update definitelytyped 2023-06-28 10:12:12 +00:00
renovate[bot] b7cecfffb5 chore(workflows): update actions/checkout digest to c85c95e 2023-06-28 08:20:51 +00:00
Kazuaki Matsuo 52a755a913 fix(docutils): docs versioning and update latest (#18804)
* fix: docs versioning and update latest

* fix lint
2023-06-27 21:13:12 -07:00
Mykola Mokhnach 35e0012d8a chore(appium): Use the actual server address in the logged URL (#18809) 2023-06-27 12:59:55 +02:00
Jonathan Lipps ed20e00754 chore: publish
- appium@2.0.0-rc.3
 - @appium/base-driver@9.3.13
 - @appium/base-plugin@2.2.13
 - @appium/doctor@2.0.19
 - @appium/docutils@0.4.2
 - @appium/driver-test-support@0.4.8
 - @appium/fake-driver@5.2.5
 - @appium/fake-plugin@3.1.17
 - @appium/plugin-test-support@0.3.16
 - @appium/support@4.1.0
 - @appium/test-support@3.0.18
 - @appium/types@0.13.0
2023-06-15 13:57:59 -07:00
Christopher Hiller 9e60e80b13 chore(renovate): add get-stream to major upgrade ban list 2023-06-15 11:57:15 -07:00
Jonathan LippsandChristopher Hiller 1a5b8cca2d fix(docutils): set mike version to major.minor by default (#18770)
* fix(docutils): set mike version to major.minor by default

* Update packages/docutils/lib/builder/deploy.ts

Co-authored-by: Christopher Hiller <boneskull@boneskull.com>

---------

Co-authored-by: Christopher Hiller <boneskull@boneskull.com>
2023-06-15 10:19:05 -07:00
Mykola Mokhnach ced560206b ci: Update bug report template (#18766) 2023-06-15 06:30:23 +02:00
Christopher Hiller 7dbf6f2cd3 chore(typedoc-plugin-appium): update snapshots 2023-06-14 16:21:51 -07:00
Christopher Hiller 84c49b1529 chore(support): fix module paths in some tests 2023-06-14 16:21:51 -07:00
Christopher Hiller 81bc527be6 fix(types): various fixes for reality
- because BaseDriver implements `findElOrEls` (technically), any subclasses must not inherit an interface containing a non-identical `findElOrEls` -- not even narrowing.  so to avoid this, we will need to make it as broad as possible; no more generic `Ctx`
- likewise with `getLog`
- fix return type of `setGeoLocation`
- fix return type of `getPerformanceData`
- fix return type of `removeApp`
- fix return type of `hideKeyboard`
- fix return type of `getSystemBars`
- fix signature of various `touch*` methods
- fix return type of `setNetworkConnection`

alternatively, the deprecated methods mentioned here should be removed.
2023-06-14 16:21:51 -07:00
Christopher Hiller 2e909478e9 chore(types): remove unused interfaces
Both `StartScreenRecordOptions` and `StopScreenRecordOptions` are for deprecated core APIs and are defined individually by drivers
2023-06-14 16:21:51 -07:00
Christopher Hiller 00ae1625d7 fix(types,fake-driver): getLog doesn't necessarily return an array 2023-06-14 16:21:51 -07:00
Christopher Hiller 88293f8039 feat(support): export a bunch of types that weren't properly exported 2023-06-14 16:21:51 -07:00
Christopher Hiller 54a4a8da03 fix(base-driver): update def of findElOrEls and findElOrElsWithProcessing
- adds some types to the `Proxy` class
- make `isErrorType()` a proper type guard
2023-06-14 16:21:51 -07:00
Christopher Hiller 598b255e8d fix(fake-driver): update definition of findElOrEls 2023-06-14 16:21:51 -07:00
Christopher Hiller 63a5c22127 fix(types)!: use overload instead of broken conditional type in findElOrEls
BREAKING CHANGE: 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`.
2023-06-14 16:21:51 -07:00
50 changed files with 615 additions and 317 deletions
+21 -9
View File
@@ -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
+2 -2
View File
@@ -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:
+1 -1
View File
@@ -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: |
+1 -1
View File
@@ -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:
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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:
+70 -64
View File
@@ -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
View File
@@ -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",
+16
View File
@@ -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
+21 -9
View File
@@ -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()]);
+5 -6
View File
@@ -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 {
+6 -6
View File
@@ -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",
+8 -8
View File
@@ -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);
});
});
+18
View File
@@ -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;
+7 -1
View File
@@ -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) {
+3 -3
View File
@@ -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",
+16
View File
@@ -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
+3 -3
View File
@@ -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",
+16
View File
@@ -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
+2 -2
View File
@@ -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",
+18
View File
@@ -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)
+19 -12
View File
@@ -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);
+2 -2
View File
@@ -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",
+16
View File
@@ -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)
+2 -2
View File
@@ -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",
+11
View File
@@ -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)
+70 -46
View File
@@ -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
+3 -2
View File
@@ -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 -1
View File
@@ -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",
+16
View File
@@ -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
+3 -3
View File
@@ -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",
+16
View File
@@ -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
+2 -2
View File
@@ -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",
+17
View File
@@ -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';
+3 -3
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
import AppiumSupport from '../../lib/index.js';
import AppiumSupport from '../../lib/';
let {system, tempDir, util} = AppiumSupport;
+1 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
import {tempDir, fs} from '../../lib/index.js';
import {tempDir, fs} from '../../lib';
describe('tempdir', function () {
afterEach(function () {
+16
View File
@@ -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
+2 -2
View File
@@ -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\`
+27
View File
@@ -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)
+1 -1
View File
@@ -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;
/**
+41 -76
View File
@@ -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
+2 -2
View File
@@ -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": {
+1
View File
@@ -27,6 +27,7 @@
"figures",
"find-up",
"get-port",
"get-stream",
"globby",
"got",
"inquirer",