mirror of
https://github.com/appium/appium.git
synced 2026-11-06 09:36:50 +08:00
Compare commits
241
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd6e3ac0b0 | ||
|
|
de39013ae5 | ||
|
|
408885a5b2 | ||
|
|
aaa7668ae6 | ||
|
|
a306ce741a | ||
|
|
475198e36b | ||
|
|
821b4c4ef4 | ||
|
|
e6da6b8dbc | ||
|
|
ef3165f572 | ||
|
|
a3fbbda5fb | ||
|
|
33156712b1 | ||
|
|
0d8ea1bbbb | ||
|
|
1a12f54fd8 | ||
|
|
98f21f1ebc | ||
|
|
932da4544e | ||
|
|
caf600bffd | ||
|
|
d884f086b3 | ||
|
|
ca3e5d90e4 | ||
|
|
6afaa0f9bc | ||
|
|
6e21ea79d4 | ||
|
|
96b0a44629 | ||
|
|
eebc651f31 | ||
|
|
4a9aedd32d | ||
|
|
f52a23c686 | ||
|
|
d2a9a99418 | ||
|
|
2b59c135d7 | ||
|
|
73746879ef | ||
|
|
0220a9f8e9 | ||
|
|
f697cda9af | ||
|
|
ea731bf117 | ||
|
|
20a10b3297 | ||
|
|
8c7225d4e9 | ||
|
|
fa332502c5 | ||
|
|
126daeca4e | ||
|
|
e2a670e1c4 | ||
|
|
51c3ebeaba | ||
|
|
1a34396339 | ||
|
|
11926d4d39 | ||
|
|
2837bcdeb1 | ||
|
|
c013d78572 | ||
|
|
45a9c52ece | ||
|
|
64ff478786 | ||
|
|
a7a4a29100 | ||
|
|
5d172a58bd | ||
|
|
009bbee47a | ||
|
|
a32dc11101 | ||
|
|
f3614adbde | ||
|
|
49c2f31885 | ||
|
|
1c808e9261 | ||
|
|
6d894bef6f | ||
|
|
7a06ec5041 | ||
|
|
2d7eed7d81 | ||
|
|
5e095893ee | ||
|
|
7445db2279 | ||
|
|
c28fcefa72 | ||
|
|
d336b51578 | ||
|
|
c6af787011 | ||
|
|
3df047d128 | ||
|
|
805f69de35 | ||
|
|
c0b6a5afe3 | ||
|
|
3b44c7d8f5 | ||
|
|
2281e11028 | ||
|
|
5770cc0d3e | ||
|
|
5ad76bdb2b | ||
|
|
7cdb1429a1 | ||
|
|
15a128d4dd | ||
|
|
52fb78411b | ||
|
|
05faca8045 | ||
|
|
a662b7d90e | ||
|
|
26a6c62512 | ||
|
|
03b2aa6b6e | ||
|
|
595d460ac8 | ||
|
|
34603c8852 | ||
|
|
57daa4114a | ||
|
|
2d3c1d797d | ||
|
|
78f33aee09 | ||
|
|
34d978e850 | ||
|
|
8c9cce09c8 | ||
|
|
331171dd8c | ||
|
|
19954c4b13 | ||
|
|
bc72c6676a | ||
|
|
cef37d3ee3 | ||
|
|
d3c7bfeb3a | ||
|
|
91e34d7153 | ||
|
|
1d8d2b0e1a | ||
|
|
23cba266f2 | ||
|
|
3f807e5585 | ||
|
|
5862a73fe5 | ||
|
|
8e5704625d | ||
|
|
1b0459edd6 | ||
|
|
b6a76ce91e | ||
|
|
48be0f83b0 | ||
|
|
de02ed87fc | ||
|
|
8dcdab323a | ||
|
|
49b3434c2b | ||
|
|
2ef40febdc | ||
|
|
396f671f99 | ||
|
|
c63a37b905 | ||
|
|
3e7360021d | ||
|
|
c81e99fd80 | ||
|
|
4b09c323d9 | ||
|
|
d2f19aab93 | ||
|
|
73aa01786d | ||
|
|
809b2daea5 | ||
|
|
ff404a09b7 | ||
|
|
5b063e4488 | ||
|
|
3fc87ac669 | ||
|
|
ffeebc74b7 | ||
|
|
a0c4b84fb7 | ||
|
|
7625218c22 | ||
|
|
8de343d37d | ||
|
|
49f16a0949 | ||
|
|
31408cc70a | ||
|
|
ee4dea6928 | ||
|
|
862225c1d8 | ||
|
|
5926919177 | ||
|
|
c87596bb64 | ||
|
|
84fefd214c | ||
|
|
5ec3199259 | ||
|
|
fea8f8537d | ||
|
|
4916bde811 | ||
|
|
2714ed0b69 | ||
|
|
263bb43086 | ||
|
|
d1a4932409 | ||
|
|
2d3c5cd0b7 | ||
|
|
a303378231 | ||
|
|
8d9ab88939 | ||
|
|
207700bc82 | ||
|
|
4950772846 | ||
|
|
d311efebfb | ||
|
|
3882ca9e92 | ||
|
|
e51d260395 | ||
|
|
3ec80856e7 | ||
|
|
65b3787912 | ||
|
|
7722767d80 | ||
|
|
6f51456da9 | ||
|
|
14631177cd | ||
|
|
faca49690a | ||
|
|
81b077fdc9 | ||
|
|
5a922ea716 | ||
|
|
c5d6df7a00 | ||
|
|
545576a740 | ||
|
|
1377c0290f | ||
|
|
737e5e9c38 | ||
|
|
a0f59d0594 | ||
|
|
1a3d408e23 | ||
|
|
8819d3ef92 | ||
|
|
9f700bfdf9 | ||
|
|
bc1b56a3c1 | ||
|
|
de68a1f388 | ||
|
|
66fb651a18 | ||
|
|
08913cddde | ||
|
|
b0b68334c5 | ||
|
|
427bc8eb0c | ||
|
|
7cc0c47679 | ||
|
|
fe7ed5d91f | ||
|
|
6c7f3ef670 | ||
|
|
b510fad303 | ||
|
|
89595c3915 | ||
|
|
827ec98a8a | ||
|
|
641da6ddd5 | ||
|
|
d85b2161b5 | ||
|
|
f8039a70ca | ||
|
|
ae59d0b218 | ||
|
|
8599c2a0b3 | ||
|
|
72a806bec7 | ||
|
|
a3245dcf2b | ||
|
|
73b092ba11 | ||
|
|
f1d1b7d6a0 | ||
|
|
d21b9e6a90 | ||
|
|
0830fd8257 | ||
|
|
a01a91d737 | ||
|
|
210b468a92 | ||
|
|
315a5e6cc7 | ||
|
|
4851721295 | ||
|
|
abcf0d451f | ||
|
|
5aae2190bf | ||
|
|
eabcbfbff7 | ||
|
|
524447ee05 | ||
|
|
b2560b5c1d | ||
|
|
b608db91a8 | ||
|
|
b900c60dac | ||
|
|
7e47adf59d | ||
|
|
4e4eaad6b6 | ||
|
|
bc8cd52693 | ||
|
|
820428b769 | ||
|
|
034a51b686 | ||
|
|
f2cff24685 | ||
|
|
53bfc68eee | ||
|
|
dce45bdf83 | ||
|
|
e73e47de18 | ||
|
|
a080b72920 | ||
|
|
c8e9059711 | ||
|
|
d5f3a288c2 | ||
|
|
998e2586a7 | ||
|
|
78a22b2a1c | ||
|
|
a5876c8f26 | ||
|
|
4ef0c49b24 | ||
|
|
c18b43f2bd | ||
|
|
2f69e6db2a | ||
|
|
ed8e83c76c | ||
|
|
d6204b6902 | ||
|
|
f0a01aea48 | ||
|
|
b64092dc8c | ||
|
|
6082cb1164 | ||
|
|
b88ac49577 | ||
|
|
c933732089 | ||
|
|
b71340a4ba | ||
|
|
5a2611137b | ||
|
|
aaf58c3de6 | ||
|
|
fb34ab9172 | ||
|
|
a21ae6ab2b | ||
|
|
1358937db2 | ||
|
|
f9ba31383a | ||
|
|
b85a92a912 | ||
|
|
544aeec149 | ||
|
|
97c5d9268a | ||
|
|
3e1eda0193 | ||
|
|
a9e86aabc6 | ||
|
|
a888e26331 | ||
|
|
12147d518f | ||
|
|
03ddcdfcaf | ||
|
|
fc01fb958a | ||
|
|
9a5c9ae55c | ||
|
|
2e187804b2 | ||
|
|
6c4189b400 | ||
|
|
95a34185d1 | ||
|
|
a8cc551210 | ||
|
|
9ad0dfc3c8 | ||
|
|
5f39ae1857 | ||
|
|
aaf31a577c | ||
|
|
97d8f0df44 | ||
|
|
de5b55ae90 | ||
|
|
5d32946a44 | ||
|
|
93b6a470cd | ||
|
|
ead861077a | ||
|
|
8ef51855e3 | ||
|
|
c320e8a1a6 | ||
|
|
f548a8bfed | ||
|
|
0ffafd034b | ||
|
|
39e6b234c4 |
@@ -80,7 +80,7 @@ body:
|
||||
placeholder: 'https://gist.github.com/...'
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Futher Information
|
||||
label: Further Information
|
||||
description: |
|
||||
Links? References? Anything that will give us more context about the issue you are encountering!
|
||||
|
||||
|
||||
+17
-15
@@ -42,34 +42,36 @@ permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
prepare_matrix:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
versions: ${{ steps.generate-matrix.outputs.versions }}
|
||||
steps:
|
||||
- name: Select 3 most recent LTS versions of Node.js
|
||||
id: generate-matrix
|
||||
run: echo "versions=$(curl -s https://endoflife.date/api/nodejs.json | jq -c '[[.[] | select(.lts != false)][:3] | .[].cycle | tonumber]')" >> "$GITHUB_OUTPUT"
|
||||
|
||||
test:
|
||||
needs:
|
||||
- prepare_matrix
|
||||
name: Tests
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [16.x, 18.x, 20.x]
|
||||
node-version: ${{ fromJSON(needs.prepare_matrix.outputs.versions) }}
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- windows-latest
|
||||
# TODO: Windows is not stable and slow to run
|
||||
# - windows-latest
|
||||
# TODO: Enable below envs after all tests have been verified green
|
||||
# - macos-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- name: Install latest npm (win)
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
# for some reason there's a bug in upgrading npm on win, have to install a specific version first
|
||||
# https://github.com/actions/setup-node/issues/623
|
||||
run: |
|
||||
npm install -g npm@8.3.1
|
||||
npm install -g npm@latest
|
||||
- name: Install latest npm (non-win)
|
||||
if: ${{ matrix.os != 'windows-latest' }}
|
||||
run: npm install -g npm
|
||||
- name: Install dependencies
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
@@ -82,7 +84,7 @@ jobs:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- 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@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
|
||||
- name: Cleanup
|
||||
run: |
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
steps:
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Install Appium
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
name: Docs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- 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@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
with:
|
||||
ref: master
|
||||
- name: Install dependencies
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
|
||||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
|
||||
|
||||
name: Run publish:doc
|
||||
name: Publish docs
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- run: |
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
@@ -25,8 +25,14 @@ jobs:
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Install dependencies (Node.js)
|
||||
uses: bahmutov/npm-install@1a235c31658a322a3b024444759650ee6345c26d # tag=v1
|
||||
with:
|
||||
useRollingCache: true
|
||||
install-command: npm ci
|
||||
- name: Install dependencies (Python)
|
||||
run: pip install -r packages/docutils/requirements.txt
|
||||
- run: |
|
||||
- name: Publish docs
|
||||
run: |
|
||||
cd packages/appium
|
||||
npm run publish:docs
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
name: Check Renovate Configs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- name: Validate Renovate Config
|
||||
uses: rinchsan/renovate-config-validator@1ea1e8514f6a33fdd71c40b0a5fa3512b9e7b936 # tag=v0
|
||||
with:
|
||||
|
||||
@@ -38,7 +38,13 @@ To install Appium 2 server using Node Package Manager (npm) run the following co
|
||||
npm i --location=global appium
|
||||
```
|
||||
|
||||
:bangbang: Make sure Appium 1 is fully unistalled before upgrading it to Appium 2 (`npm uninstall --location=global appium`). Unexpected errors might appear if this has not been done.
|
||||
To update Appium 2 server using Node Package Manager (npm) run the following command:
|
||||
|
||||
```bash
|
||||
npm install --location=global appium@latest
|
||||
```
|
||||
|
||||
:bangbang: Make sure Appium 1 is fully uninstalled before upgrading it to Appium 2 (`npm uninstall --location=global appium`). Unexpected errors might appear if this has not been done.
|
||||
|
||||
### Drivers
|
||||
|
||||
@@ -188,10 +194,6 @@ Repo](https://github.com/appium/appium/tree/master/packages/appium/docs) as well
|
||||
Please take a look at our [contribution documentation](CONTRIBUTING.md)
|
||||
for instructions on how to build, test, and run Appium from the source.
|
||||
|
||||
### Roadmap
|
||||
|
||||
Interested in where Appium is heading in the future? Check out the [Roadmap](ROADMAP.md)
|
||||
|
||||
### Project History, Credits & Inspiration
|
||||
|
||||
* [History](https://appium.io/docs/en/latest/intro/history/)
|
||||
|
||||
+1
-4
@@ -14,13 +14,10 @@
|
||||
"version": {
|
||||
"conventionalCommits": true,
|
||||
"createRelease": "github",
|
||||
"version": {
|
||||
"allowBranch": "master"
|
||||
}
|
||||
"allowBranch": "master"
|
||||
}
|
||||
},
|
||||
"ignoreChanges": ["**/test/**", "**/*.md"],
|
||||
"useNx": false,
|
||||
"useWorkspaces": true,
|
||||
"version": "independent"
|
||||
}
|
||||
|
||||
Generated
+11208
-8768
File diff suppressed because it is too large
Load Diff
+37
-37
@@ -84,69 +84,69 @@
|
||||
"singleQuote": true
|
||||
},
|
||||
"devDependencies": {
|
||||
"@colors/colors": "1.5.0",
|
||||
"@commitlint/cli": "17.6.6",
|
||||
"@commitlint/config-conventional": "17.6.6",
|
||||
"@tsconfig/node14": "1.0.3",
|
||||
"@types/chai": "4.3.5",
|
||||
"@types/chai-as-promised": "7.1.5",
|
||||
"@types/diff": "5.0.3",
|
||||
"@types/mocha": "10.0.1",
|
||||
"@types/node": "18.16.19",
|
||||
"@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.5",
|
||||
"@types/yargs": "17.0.24",
|
||||
"@typescript-eslint/eslint-plugin": "5.61.0",
|
||||
"@typescript-eslint/parser": "5.61.0",
|
||||
"@colors/colors": "1.6.0",
|
||||
"@commitlint/cli": "17.8.0",
|
||||
"@commitlint/config-conventional": "17.8.0",
|
||||
"@tsconfig/node14": "14.1.0",
|
||||
"@types/chai": "4.3.9",
|
||||
"@types/chai-as-promised": "7.1.7",
|
||||
"@types/diff": "5.0.7",
|
||||
"@types/mocha": "10.0.3",
|
||||
"@types/node": "18.18.6",
|
||||
"@types/semver": "7.5.4",
|
||||
"@types/sinon": "10.0.20",
|
||||
"@types/sinon-chai": "3.2.11",
|
||||
"@types/source-map-support": "0.5.9",
|
||||
"@types/teen_process": "2.0.1",
|
||||
"@types/ws": "8.5.8",
|
||||
"@types/yargs": "17.0.29",
|
||||
"@typescript-eslint/eslint-plugin": "6.8.0",
|
||||
"@typescript-eslint/parser": "6.8.0",
|
||||
"asyncbox": "2.9.4",
|
||||
"chai": "4.3.7",
|
||||
"chai": "4.3.10",
|
||||
"chai-as-promised": "7.1.1",
|
||||
"chai-webdriverio-async": "2.7.0",
|
||||
"conventional-changelog-conventionalcommits": "5.0.0",
|
||||
"cpy-cli": "4.2.0",
|
||||
"eslint": "8.44.0",
|
||||
"eslint-config-prettier": "8.8.0",
|
||||
"conventional-changelog-conventionalcommits": "6.1.0",
|
||||
"cpy-cli": "5.0.0",
|
||||
"eslint": "8.51.0",
|
||||
"eslint-config-prettier": "9.0.0",
|
||||
"eslint-find-rules": "4.1.0",
|
||||
"eslint-import-resolver-typescript": "3.5.5",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-mocha": "10.1.0",
|
||||
"eslint-import-resolver-typescript": "3.6.1",
|
||||
"eslint-plugin-import": "2.28.1",
|
||||
"eslint-plugin-mocha": "10.2.0",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
"fancy-log": "2.0.0",
|
||||
"finalhandler": "1.2.0",
|
||||
"get-port": "5.1.1",
|
||||
"handlebars": "4.7.7",
|
||||
"handlebars": "4.7.8",
|
||||
"husky": "8.0.3",
|
||||
"json-schema-to-typescript": "13.0.2",
|
||||
"lerna": "6.6.2",
|
||||
"lint-staged": "13.2.3",
|
||||
"json-schema-to-typescript": "13.1.1",
|
||||
"lerna": "7.4.1",
|
||||
"lint-staged": "15.0.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"midnight-smoker": "2.0.4",
|
||||
"midnight-smoker": "7.0.4",
|
||||
"mjpeg-consumer": "2.0.0",
|
||||
"mjpeg-server": "0.3.1",
|
||||
"mocha": "10.2.0",
|
||||
"mocha-chai-jest-snapshot": "1.1.4",
|
||||
"npm-run-all": "4.1.5",
|
||||
"prettier": "2.8.8",
|
||||
"prettier": "3.0.3",
|
||||
"rewiremock": "3.14.5",
|
||||
"rimraf": "5.0.1",
|
||||
"rimraf": "5.0.5",
|
||||
"serve-static": "1.15.0",
|
||||
"sinon": "15.1.2",
|
||||
"sinon": "16.1.3",
|
||||
"sinon-chai": "3.7.0",
|
||||
"sync-monorepo-packages": "1.0.2",
|
||||
"through2": "4.0.2",
|
||||
"ts-node": "10.9.1",
|
||||
"tsd": "0.28.1",
|
||||
"tsd": "0.29.0",
|
||||
"typedoc": "0.23.28",
|
||||
"typedoc-plugin-markdown": "3.14.0",
|
||||
"typedoc-plugin-resolve-crossmodule-references": "0.3.3",
|
||||
"typescript": "5.0.4",
|
||||
"validate.js": "0.13.1",
|
||||
"webdriverio": "7.32.0",
|
||||
"ws": "8.13.0",
|
||||
"webdriverio": "8.17.0",
|
||||
"ws": "8.14.2",
|
||||
"yaml-js": "0.3.1"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -3,6 +3,105 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.2.1](https://github.com/appium/appium/compare/appium@2.2.0...appium@2.2.1) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Make sure type definitions are always in sync across modules ([#19323](https://github.com/appium/appium/issues/19323)) ([de39013](https://github.com/appium/appium/commit/de39013ae501d4fc11988435737efb862cc1d820))
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [2.2.0](https://github.com/appium/appium/compare/appium@2.1.3...appium@2.2.0) (2023-10-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **base-driver:** Add server support of TLS and SPDY protocols ([#19105](https://github.com/appium/appium/issues/19105)) ([5926919](https://github.com/appium/appium/commit/5926919177e3df675723c80d800f933fdbda5824))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Fix creation of logging prefixes ([#19212](https://github.com/appium/appium/issues/19212)) ([805f69d](https://github.com/appium/appium/commit/805f69de354ebf0b1e8ffeb64c85833b5d533b4c))
|
||||
* **appium:** update dependency winston to v3.11.0 ([f697cda](https://github.com/appium/appium/commit/f697cda9af2b61344b55b5af0f2bfc1fd034334b))
|
||||
* **docutils:** update dependency yaml to v2.3.2 ([1a3d408](https://github.com/appium/appium/commit/1a3d408e239e4a9a7070923a90aca70df1dda908))
|
||||
* **docutils:** update dependency yaml to v2.3.3 ([caf600b](https://github.com/appium/appium/commit/caf600bffd5f25971d0270e9990b2640a671e366))
|
||||
* **images-plugin:** update dependency lru-cache to v10 ([#19050](https://github.com/appium/appium/issues/19050)) ([72a806b](https://github.com/appium/appium/commit/72a806bec7c3a80747192d24dfd9d8286a751810))
|
||||
* **opencv:** update definitelytyped ([d2a9a99](https://github.com/appium/appium/commit/d2a9a99418af9ce9b569bb9b98ee396faab932bb))
|
||||
* **support:** update definitelytyped ([3b44c7d](https://github.com/appium/appium/commit/3b44c7d8f5b89f9357dfe6bb56b54799bbe0a921))
|
||||
* **support:** update definitelytyped ([595d460](https://github.com/appium/appium/commit/595d460ac8dc41d310f9e4f653acbad3c7fd50b9))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
* **support:** update definitelytyped ([3e73600](https://github.com/appium/appium/commit/3e7360021dba0f8e8967094476fe92646ba5e35b))
|
||||
* **support:** update dependency @types/semver to v7.5.1 ([a0f59d0](https://github.com/appium/appium/commit/a0f59d05945e627602407d1d42e7a3a58861b11f))
|
||||
* **support:** update dependency @types/teen_process to v2.0.1 ([d2f19aa](https://github.com/appium/appium/commit/d2f19aab935cc6ec00a51f042b5f02674a772198))
|
||||
* **support:** update dependency axios to v1.5.0 ([08913cd](https://github.com/appium/appium/commit/08913cddde295f616f0fb376cc2cb71a9409a253))
|
||||
* **support:** update dependency axios to v1.5.1 ([#19217](https://github.com/appium/appium/issues/19217)) ([3df047d](https://github.com/appium/appium/commit/3df047d128d5d032826c8f5fb605b019078b717d))
|
||||
* **support:** update dependency teen_process to v2.0.10 ([bc1b56a](https://github.com/appium/appium/commit/bc1b56a3c162ed8686d3d7956c30eb1f7682b1a7))
|
||||
* **support:** update dependency teen_process to v2.0.12 ([c5d6df7](https://github.com/appium/appium/commit/c5d6df7a000d64e8591a56ce5ef65baa2071a36b))
|
||||
* **support:** update dependency teen_process to v2.0.13 ([a0c4b84](https://github.com/appium/appium/commit/a0c4b84fb7d3977b7a4ca0a07fadd49ee355791a))
|
||||
* **support:** update dependency teen_process to v2.0.18 ([ffeebc7](https://github.com/appium/appium/commit/ffeebc74b72e5eadf658325e67708ae6ed5b8346))
|
||||
* **support:** update dependency teen_process to v2.0.19 ([2ef40fe](https://github.com/appium/appium/commit/2ef40febdc717f54ea618ecfe1058b858fe2daf9))
|
||||
* **support:** update dependency teen_process to v2.0.23 ([1b0459e](https://github.com/appium/appium/commit/1b0459edd656514d8706aab8e21cd4d40de2ec5d))
|
||||
* **support:** update dependency teen_process to v2.0.24 ([bc72c66](https://github.com/appium/appium/commit/bc72c6676a5412b60e74bb143a223738ce059977))
|
||||
* **support:** update dependency teen_process to v2.0.27 ([03b2aa6](https://github.com/appium/appium/commit/03b2aa6b6e45fa0ea24c4691b039255bc4399733))
|
||||
* **support:** update dependency teen_process to v2.0.30 ([7cdb142](https://github.com/appium/appium/commit/7cdb1429a1104ad3699547f2a2dd9b237135891a))
|
||||
* **support:** update dependency teen_process to v2.0.34 ([#19218](https://github.com/appium/appium/issues/19218)) ([c28fcef](https://github.com/appium/appium/commit/c28fcefa725fbce5a0464e57946051e3cb023d85))
|
||||
* **support:** update dependency teen_process to v2.0.37 ([6d894be](https://github.com/appium/appium/commit/6d894bef6f377ebfdffdeb1adde7a72624844414))
|
||||
* **support:** update dependency teen_process to v2.0.38 ([a32dc11](https://github.com/appium/appium/commit/a32dc1110125d0f1fac9c66c17f1309145a634c7))
|
||||
* **support:** update dependency teen_process to v2.0.40 ([2837bcd](https://github.com/appium/appium/commit/2837bcdeb19532fe973a2902db5c8d730252d962))
|
||||
* **support:** update dependency teen_process to v2.0.41 ([1a34396](https://github.com/appium/appium/commit/1a34396339f71d40353d323feaf78afcf2269fc9))
|
||||
* **support:** update dependency teen_process to v2.0.42 ([e2a670e](https://github.com/appium/appium/commit/e2a670e1c4a0f061b0bfb08a6b534d9deb7bdd9c))
|
||||
* **support:** update dependency teen_process to v2.0.45 ([ea731bf](https://github.com/appium/appium/commit/ea731bf117d680496fce453ac42cfee7f05ada60))
|
||||
* **support:** update dependency teen_process to v2.0.48 ([eebc651](https://github.com/appium/appium/commit/eebc651f31c282baa7e77a6384d3ee8efc0072d6))
|
||||
* **support:** update dependency teen_process to v2.0.50 ([ca3e5d9](https://github.com/appium/appium/commit/ca3e5d90e4c51fc1dda32154e1d77e65cb44fb54))
|
||||
* **support:** update dependency teen_process to v2.0.9 ([6c7f3ef](https://github.com/appium/appium/commit/6c7f3ef670d441bdc4b693948a19dcbdc54e4764))
|
||||
|
||||
|
||||
|
||||
## [2.1.3](https://github.com/appium/appium/compare/appium@2.1.2...appium@2.1.3) (2023-08-23)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.2](https://github.com/appium/appium/compare/appium@2.1.1...appium@2.1.2) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.1](https://github.com/appium/appium/compare/appium@2.1.0...appium@2.1.1) (2023-08-21)
|
||||
|
||||
**Note:** Version bump only for package appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.0](https://github.com/appium/appium/compare/appium@2.0.1...appium@2.1.0) (2023-08-17)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **base-driver:** Make it possible to provide settings as a map in session capabilities ([#18970](https://github.com/appium/appium/issues/18970)) ([aaf58c3](https://github.com/appium/appium/commit/aaf58c3de66fee2eb10225d05e156e7416a4ac79))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Fix the plural form ([97d8f0d](https://github.com/appium/appium/commit/97d8f0df44d915b346a6ecd0d052369dd80a9569))
|
||||
* **appium:** update dependency winston to v3.10.0 ([b85a92a](https://github.com/appium/appium/commit/b85a92a912b3d2854e8102b41119fc780e1a6cc2))
|
||||
* **appium:** Update the GET /status response to be in sync with the standard ([#18972](https://github.com/appium/appium/issues/18972)) ([5a26111](https://github.com/appium/appium/commit/5a2611137b2a7428bb2e593fc945e21874c4cdae))
|
||||
* **support:** update dependency glob to v10 ([#18490](https://github.com/appium/appium/issues/18490)) ([aaf31a5](https://github.com/appium/appium/commit/aaf31a577cb0b9cbe22646dcd888dc393a03aa11))
|
||||
* **support:** update dependency semver to v7.5.4 ([03ddcdf](https://github.com/appium/appium/commit/03ddcdfcafbccf6698868a272e499cbdac41d791))
|
||||
* **types:** update dependency type-fest to v3.13.1 ([fb34ab9](https://github.com/appium/appium/commit/fb34ab917216121d2b554677a12f07a03393d218))
|
||||
|
||||
|
||||
|
||||
## [2.0.1](https://github.com/appium/appium/compare/appium@2.0.0...appium@2.0.1) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,13 @@ To install Appium 2 server using Node Package Manager (npm) run the following co
|
||||
npm i --location=global appium
|
||||
```
|
||||
|
||||
:bangbang: Make sure Appium 1 is fully unistalled before upgrading it to Appium 2 (`npm uninstall --location=global appium`). Unexpected errors might appear if this has not been done.
|
||||
To update Appium 2 server using Node Package Manager (npm) run the following command:
|
||||
|
||||
```bash
|
||||
npm install --location=global appium@latest
|
||||
```
|
||||
|
||||
:bangbang: Make sure Appium 1 is fully uninstalled before upgrading it to Appium 2 (`npm uninstall --location=global appium`). Unexpected errors might appear if this has not been done.
|
||||
|
||||
### Drivers
|
||||
|
||||
@@ -188,10 +194,6 @@ Repo](https://github.com/appium/appium/tree/master/packages/appium/docs) as well
|
||||
Please take a look at our [contribution documentation](CONTRIBUTING.md)
|
||||
for instructions on how to build, test, and run Appium from the source.
|
||||
|
||||
### Roadmap
|
||||
|
||||
Interested in where Appium is heading in the future? Check out the [Roadmap](ROADMAP.md)
|
||||
|
||||
### Project History, Credits & Inspiration
|
||||
|
||||
* [History](https://appium.io/docs/en/latest/intro/history/)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: Server Environment Variables
|
||||
---
|
||||
|
||||
The primary way of configuring the Appium server is via [CLI Args](./args.md). However, some more
|
||||
advanced features are toggled or configured via environment variables. To set environment
|
||||
variables, refer to the documentation for your operating system and terminal. These are the
|
||||
environment variables that the Appium server understands:
|
||||
|
||||
|Variable |Description|
|
||||
|--------|-----------|
|
||||
|`APPIUM_HOME`|By default, Appium creates a directory called `.appium` in the home directory for your system user. You can adjust the directory with this variable, as detailed in the [Managing Extensions](../guides/managing-exts.md) guide.|
|
||||
|`APPIUM_TMP_DIR`|By default, Appium uses a random temporary directory for many of its operations. If you wish to use a specific directory, you may do so by including an absolute path as the value of this variable. The behaviour is equivalent to using the `--tmp` CLI arg.|
|
||||
|`APPIUM_PREFER_SYSTEM_UNZIP`|Set to `0` or `false` to request that Appium not use the `unzip` binary included on your system for unzipping downloaded apps or other artifacts. Instead it will use a JS-based unzip library. This could help on some systems with non-existent or non-standard `unzip` commands. Note that if unzipping fails using the system library, the fallback library will be attempted in any case, so setting this env var merely saves time in the event you know the system unzip will fail.|
|
||||
|`APPIUM_HOST`|Same as the `--address` CLI arg|
|
||||
|`APPIUM_PORT`|Same as the `--port` CLI arg|
|
||||
|`APPIUM_RELOAD_EXTENSIONS`|Set to `1` to cause Appium to re-require extensions when new sessions are created. This is mostly useful for [building extensions](../ecosystem/build-drivers.md)|
|
||||
|`APPIUM_OMIT_PEER_DEPS`|Adds `--omit=peer` to all the NPM commands run internally by Appium. Mostly an internal feature.|
|
||||
@@ -152,6 +152,16 @@ your driver locally:
|
||||
appium driver install --source=local /path/to/your/driver/dev/dir
|
||||
```
|
||||
|
||||
### Refreshing your driver during development
|
||||
|
||||
When the Appium server starts, it loads your driver into memory. Changes to your driver code will
|
||||
not take effect until the next time the Appium server starts. Simply starting a new session is not
|
||||
sufficient to cause your driver's code to be reloaded.
|
||||
|
||||
However, you can set the `APPIUM_RELOAD_EXTENSIONS` environment variable to `1` to request that
|
||||
Appium clear its module cache and reload extensions whenever a new session is requested. This may
|
||||
obviate the need to restart the server when you make code changes to your driver.
|
||||
|
||||
## Standard driver implementation ideas
|
||||
|
||||
These are things you will probably find yourself wanting to do when creating a driver.
|
||||
|
||||
@@ -141,7 +141,9 @@ Appium's start server methods to handle starting and stopping the Appium server
|
||||
Of course, you can always install it locally as described above as well.
|
||||
|
||||
Anytime you make changes to your plugin code, you'll need to restart the Appium server to make sure
|
||||
it picks up the latest code.
|
||||
it picks up the latest code. As with drivers, you can set the `APPIUM_RELOAD_EXTENSIONS`
|
||||
environment variable if you wish Appium to try to re-require your plugin module when a new session
|
||||
starts.
|
||||
|
||||
## Standard plugin implementation ideas
|
||||
|
||||
|
||||
@@ -41,6 +41,18 @@ would construct a set of capabilities that includes the following in its JSON re
|
||||
}
|
||||
```
|
||||
|
||||
Also, since base-driver version 9.4.0, there is a possibility to provide multiple settings
|
||||
in a single `appium:settings` capability value:
|
||||
|
||||
```json
|
||||
{
|
||||
"appium:settings": {
|
||||
"ignoreUnimportantViews": true,
|
||||
"allowInvisibleElements": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Of course, initializing a setting via capabilities doesn't prevent you from changing it later on
|
||||
via the Settings API. To learn more about how to use the Settings API in the context of your
|
||||
specific client library, visit the documentation for that library.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Starting the Server with SSL/TLS/SPDY support
|
||||
---
|
||||
|
||||
## Command Line Arguments
|
||||
|
||||
Since version 2.2 of the server there is a possibility to start it with SSL/TLS support. In order to enable secure connections to the server you need to provide the following command line arguments:
|
||||
|
||||
```bashs
|
||||
appium server --ssl-cert-path=/path/to/cert.pem --ssl-key-path=/path/to/key.pem
|
||||
```
|
||||
|
||||
Both arguments must be provided and should contain paths to a valid [X509 PEM](https://www.ssl.com/guide/pem-der-crt-and-cer-x-509-encodings-and-conversions/) certificate and its corresponding private key.
|
||||
|
||||
After the server is started use the `https` protocol and a client supporting SSL/TLS or [SPDY](https://en.wikipedia.org/wiki/SPDY) to communicate to it.
|
||||
|
||||
### Supported Features
|
||||
|
||||
Once a secure server socket is established it supports the following protocols: `['h2', 'spdy/3.1', 'spdy/3', 'spdy/2', 'http/1.1', 'http/1.0']`. See [the SPDY node module documentation](https://www.npmjs.com/package/spdy) to get more details about its features. All insecure client connections will be rejected by the server.
|
||||
|
||||
### Self-Signed Certificates
|
||||
|
||||
Use the following command in order to generate a self-signed certificate/key pair:
|
||||
|
||||
```bash
|
||||
openssl req -nodes -new -x509 -keyout key.pem -out cert.pem -subj "/C=US/ST=State/L=City/O=company/OU=Com/CN=www.testserver.local"
|
||||
```
|
||||
|
||||
Feel free to change the value of `-subj` in the command above with your matching details. The server should work just fine with a self-signed certificate, although you need to take care about a proper client setup, e.g. make sure it does not reject unauthorized certificates.
|
||||
@@ -28,6 +28,7 @@ nav:
|
||||
- CLI Reference:
|
||||
- cli/index.md
|
||||
- cli/args.md
|
||||
- cli/env-vars.md
|
||||
- cli/extensions.md
|
||||
- Guides:
|
||||
- guides/migrating-1-to-2.md
|
||||
|
||||
@@ -114,6 +114,7 @@ class AppiumDriver extends DriverCore {
|
||||
this.sessionPlugins = {};
|
||||
this.sessionlessPlugins = [];
|
||||
this.desiredCapConstraints = desiredCapabilityConstraints;
|
||||
this._isShuttingDown = false;
|
||||
|
||||
// allow this to happen in the background, so no `await`
|
||||
(async () => {
|
||||
@@ -155,11 +156,32 @@ class AppiumDriver extends DriverCore {
|
||||
|
||||
// eslint-disable-next-line require-await
|
||||
async getStatus() {
|
||||
// https://www.w3.org/TR/webdriver/#dfn-status
|
||||
const statusObj = this._isShuttingDown
|
||||
? {
|
||||
ready: false,
|
||||
message: 'The server is shutting down',
|
||||
} : {
|
||||
ready: true,
|
||||
message: 'The server is ready to accept new connections',
|
||||
};
|
||||
return {
|
||||
...statusObj,
|
||||
build: _.clone(getBuildInfo()),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string|null} reason An optional shutdown reason
|
||||
*/
|
||||
async shutdown(reason = null) {
|
||||
this._isShuttingDown = true;
|
||||
await this.deleteAllSessions({
|
||||
force: true,
|
||||
reason,
|
||||
});
|
||||
}
|
||||
|
||||
async getSessions() {
|
||||
return _.toPairs(this.sessions).map(([id, driver]) => ({
|
||||
id,
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
*/
|
||||
|
||||
import B from 'bluebird';
|
||||
import glob from 'glob';
|
||||
import {env, fs} from '@appium/support';
|
||||
import _ from 'lodash';
|
||||
import path from 'path';
|
||||
@@ -212,23 +211,13 @@ export class Manifest {
|
||||
];
|
||||
|
||||
// add dependencies to the queue
|
||||
await new B((resolve, reject) => {
|
||||
glob(
|
||||
'node_modules/{*,@*/*}/package.json',
|
||||
{cwd: this.#appiumHome, silent: true, absolute: true},
|
||||
// eslint-disable-next-line promise/prefer-await-to-callbacks
|
||||
(err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve();
|
||||
}
|
||||
)
|
||||
.on('error', reject)
|
||||
.on('match', (filepath) => {
|
||||
queue.push(onMatch(filepath));
|
||||
});
|
||||
const filepaths = await fs.glob('node_modules/{*,@*/*}/package.json', {
|
||||
cwd: this.#appiumHome,
|
||||
absolute: true,
|
||||
});
|
||||
for (const filepath of filepaths) {
|
||||
queue.push(onMatch(filepath));
|
||||
}
|
||||
|
||||
// wait for everything to finish
|
||||
await B.all(queue);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import {logger} from '@appium/support';
|
||||
|
||||
let log = logger.getLogger('Appium');
|
||||
export const APPIUM_LOGGER_NAME = 'Appium';
|
||||
let log = logger.getLogger(APPIUM_LOGGER_NAME);
|
||||
|
||||
export default log;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import npmlog from 'npmlog';
|
||||
import {createLogger, format, transports} from 'winston';
|
||||
import {fs, logger} from '@appium/support';
|
||||
import { APPIUM_LOGGER_NAME } from './logger';
|
||||
import _ from 'lodash';
|
||||
|
||||
// set up distributed logging before everything else
|
||||
@@ -64,8 +65,7 @@ const stripColorFormat = format(function stripColor(info) {
|
||||
|
||||
function createConsoleTransport(args, logLvl) {
|
||||
return new transports.Console({
|
||||
// `name` is unsupported per winston's type declarations
|
||||
// @ts-expect-error
|
||||
// @ts-expect-error The 'name' property should exist
|
||||
name: 'console',
|
||||
handleExceptions: true,
|
||||
exitOnError: false,
|
||||
@@ -73,14 +73,6 @@ function createConsoleTransport(args, logLvl) {
|
||||
level: logLvl,
|
||||
stderrLevels: ['error'],
|
||||
format: format.combine(
|
||||
format(function adjustDebug(info) {
|
||||
// prepend debug marker, and shift to `info` log level
|
||||
if (info.level === 'debug') {
|
||||
info.level = 'info';
|
||||
info.message = `[debug] ${info.message}`;
|
||||
}
|
||||
return info;
|
||||
})(),
|
||||
timestampFormat,
|
||||
args.logNoColors ? stripColorFormat : colorizeFormat,
|
||||
format.printf(function printInfo(info) {
|
||||
@@ -92,7 +84,7 @@ function createConsoleTransport(args, logLvl) {
|
||||
|
||||
function createFileTransport(args, logLvl) {
|
||||
return new transports.File({
|
||||
// @ts-expect-error
|
||||
// @ts-expect-error The 'name' property should exist
|
||||
name: 'file',
|
||||
filename: args.logFile,
|
||||
maxFiles: 1,
|
||||
@@ -121,7 +113,7 @@ function createHttpTransport(args, logLvl) {
|
||||
}
|
||||
|
||||
return new transports.Http({
|
||||
// @ts-expect-error
|
||||
// @ts-expect-error The 'name' property should exist
|
||||
name: 'http',
|
||||
host,
|
||||
port,
|
||||
@@ -215,22 +207,19 @@ async function init(args) {
|
||||
});
|
||||
|
||||
// Capture logs emitted via npmlog and pass them through winston
|
||||
npmlog.on('log', (logObj) => {
|
||||
const winstonLevel = npmToWinstonLevels[logObj.level] || 'info';
|
||||
let msg = logObj.message;
|
||||
if (logObj.prefix) {
|
||||
const prefix = `[${logObj.prefix}]`;
|
||||
if (args.logNoColors) {
|
||||
msg = `${prefix} ${msg}`;
|
||||
} if (prefix === '[Appium]') {
|
||||
msg = `${prefix.magenta} ${msg}`;
|
||||
} else {
|
||||
msg = `${getColorizedPrefix(prefix)} ${msg}`;
|
||||
}
|
||||
log[winstonLevel](msg);
|
||||
if (args.logHandler && _.isFunction(args.logHandler)) {
|
||||
args.logHandler(logObj.level, msg);
|
||||
}
|
||||
npmlog.on('log', ({level, message, prefix}) => {
|
||||
const winstonLevel = npmToWinstonLevels[level] || 'info';
|
||||
let msg = message;
|
||||
if (prefix) {
|
||||
const decoratedPrefix = `[${prefix}]`;
|
||||
const toColorizedDecoratedPrefix = () => prefix === APPIUM_LOGGER_NAME
|
||||
? decoratedPrefix.magenta
|
||||
: getColorizedPrefix(decoratedPrefix);
|
||||
msg = `${args.logNoColors ? decoratedPrefix : toColorizedDecoratedPrefix()} ${msg}`;
|
||||
}
|
||||
log[winstonLevel](msg);
|
||||
if (args.logHandler && _.isFunction(args.logHandler)) {
|
||||
args.logHandler(level, msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -347,7 +347,7 @@ function logServerAddress(url) {
|
||||
: href;
|
||||
};
|
||||
logger.info(
|
||||
`You can provide the following ${util.pluralize('URL', interfaces.length, false)} ` +
|
||||
`You can provide the following ${interfaces.length === 1 ? 'URL' : 'URLs'} ` +
|
||||
`in your client code to connect to this server:\n` +
|
||||
interfaces.map((iface) => `\t${toLabel(iface)}`).join('\n')
|
||||
);
|
||||
@@ -440,10 +440,7 @@ async function main(args) {
|
||||
process.once(signal, async function onSignal() {
|
||||
logger.info(`Received ${signal} - shutting down`);
|
||||
try {
|
||||
await appiumDriver.deleteAllSessions({
|
||||
force: true,
|
||||
reason: `The process has received ${signal} signal`,
|
||||
});
|
||||
await appiumDriver.shutdown(`The process has received ${signal} signal`);
|
||||
await server.close();
|
||||
process.exit(0);
|
||||
} catch (e) {
|
||||
@@ -453,8 +450,9 @@ async function main(args) {
|
||||
});
|
||||
}
|
||||
|
||||
const protocol = 'secure' in server && server.secure ? 'https' : 'http';
|
||||
const address = net.isIPv6(parsedArgs.address) ? `[${parsedArgs.address}]` : parsedArgs.address;
|
||||
logServerAddress(`http://${address}:${parsedArgs.port}${normalizeBasePath(parsedArgs.basePath)}`);
|
||||
logServerAddress(`${protocol}://${address}:${parsedArgs.port}${normalizeBasePath(parsedArgs.basePath)}`);
|
||||
|
||||
driverConfig.print();
|
||||
pluginConfig.print([...pluginClasses.values()]);
|
||||
|
||||
@@ -276,11 +276,18 @@ function adjustNodePath() {
|
||||
/**
|
||||
* Pulls the initial values of Appium settings from the given capabilities argument.
|
||||
* Each setting item must satisfy the following format:
|
||||
* `setting[setting_name]: setting_value`
|
||||
* `settings[setting_name]: setting_value`
|
||||
* or
|
||||
* ```
|
||||
* settings = {
|
||||
* setting_name1: 'setting_value1',
|
||||
* setting_name2: 'setting_value2',
|
||||
* }
|
||||
* ```
|
||||
* The capabilities argument itself gets mutated, so it does not contain parsed
|
||||
* settings anymore to avoid further parsing issues.
|
||||
* Check
|
||||
* https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/settings.md
|
||||
* https://appium.io/docs/en/latest/guides/settings/
|
||||
* for more details on the available settings.
|
||||
*
|
||||
* @param {?Object} caps - Capabilities dictionary. It is mutated if
|
||||
@@ -295,14 +302,19 @@ function pullSettings(caps) {
|
||||
}
|
||||
|
||||
const result = {};
|
||||
const singleSettings = {};
|
||||
for (const [key, value] of _.toPairs(caps)) {
|
||||
const match = /\bsettings\[(\S+)\]$/.exec(key);
|
||||
if (!match) {
|
||||
continue;
|
||||
let match;
|
||||
if (/^(s|appium:s)ettings$/.test(key) && _.isPlainObject(value)) {
|
||||
Object.assign(result, value);
|
||||
delete caps[key];
|
||||
} else if ((match = /^(s|appium:s)ettings\[(\S+)\]$/.exec(key))) {
|
||||
singleSettings[match[2]] = value;
|
||||
delete caps[key];
|
||||
}
|
||||
|
||||
result[match[1]] = value;
|
||||
delete caps[key];
|
||||
}
|
||||
if (!_.isEmpty(singleSettings)) {
|
||||
Object.assign(result, singleSettings);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "appium",
|
||||
"version": "2.0.1",
|
||||
"version": "2.2.1",
|
||||
"description": "Automation for Apps.",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -60,42 +60,41 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/base-driver": "^9.3.16",
|
||||
"@appium/base-plugin": "^2.2.16",
|
||||
"@appium/docutils": "^0.4.5",
|
||||
"@appium/schema": "^0.3.1",
|
||||
"@appium/support": "^4.1.3",
|
||||
"@appium/types": "^0.13.2",
|
||||
"@appium/base-driver": "^9.4.1",
|
||||
"@appium/base-plugin": "^2.2.22",
|
||||
"@appium/docutils": "^0.4.11",
|
||||
"@appium/schema": "^0.4.1",
|
||||
"@appium/support": "^4.1.8",
|
||||
"@appium/types": "^0.14.1",
|
||||
"@sidvind/better-ajv-errors": "2.1.0",
|
||||
"@types/argparse": "2.0.10",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/fancy-log": "2.0.0",
|
||||
"@types/semver": "7.5.0",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/argparse": "2.0.12",
|
||||
"@types/bluebird": "3.5.41",
|
||||
"@types/fancy-log": "2.0.1",
|
||||
"@types/semver": "7.5.4",
|
||||
"@types/teen_process": "2.0.1",
|
||||
"@types/wrap-ansi": "3.0.0",
|
||||
"ajv": "8.12.0",
|
||||
"ajv-formats": "2.1.1",
|
||||
"argparse": "2.0.1",
|
||||
"async-lock": "1.4.0",
|
||||
"asyncbox": "2.9.4",
|
||||
"axios": "1.4.0",
|
||||
"axios": "1.5.1",
|
||||
"bluebird": "3.7.2",
|
||||
"cross-env": "7.0.3",
|
||||
"find-up": "5.0.0",
|
||||
"glob": "8.1.0",
|
||||
"lilconfig": "2.1.0",
|
||||
"lodash": "4.17.21",
|
||||
"npmlog": "7.0.1",
|
||||
"ora": "5.4.1",
|
||||
"package-changed": "3.0.0",
|
||||
"resolve-from": "5.0.0",
|
||||
"semver": "7.5.3",
|
||||
"semver": "7.5.4",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.4",
|
||||
"type-fest": "3.11.1",
|
||||
"winston": "3.9.0",
|
||||
"teen_process": "2.0.50",
|
||||
"type-fest": "3.13.1",
|
||||
"winston": "3.11.0",
|
||||
"wrap-ansi": "7.0.0",
|
||||
"yaml": "2.3.1"
|
||||
"yaml": "2.3.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import unittest
|
||||
from appium import webdriver
|
||||
from appium.options.android import UiAutomator2Options
|
||||
from appium.webdriver.common.appiumby import AppiumBy
|
||||
|
||||
capabilities = dict(
|
||||
@@ -16,7 +17,7 @@ appium_server_url = 'http://localhost:4723'
|
||||
|
||||
class TestAppium(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.driver = webdriver.Remote(appium_server_url, capabilities)
|
||||
self.driver = webdriver.Remote(appium_server_url, options=UiAutomator2Options().load_capabilities(capabilities))
|
||||
|
||||
def tearDown(self) -> None:
|
||||
if self.driver:
|
||||
|
||||
@@ -244,6 +244,26 @@ describe('FakeDriver via HTTP', function () {
|
||||
await driver.getSessions().should.eventually.be.empty;
|
||||
});
|
||||
|
||||
it('should not allow umbrella commands to prevent newCommandTimeout on inner driver', async function () {
|
||||
let localCaps = Object.assign(
|
||||
{
|
||||
'appium:newCommandTimeout': 0.25,
|
||||
},
|
||||
caps
|
||||
);
|
||||
let driver = await wdio({...wdOpts, capabilities: localCaps});
|
||||
should.exist(driver.sessionId);
|
||||
|
||||
// get the session list 6 times over 300ms. each request will be below the new command
|
||||
// timeout but since they are not received by the driver the session should still time out
|
||||
for (let i = 0; i < 6; i++) {
|
||||
await driver.getSessions();
|
||||
await B.delay(50);
|
||||
}
|
||||
await driver.getPageSource().should.eventually.be.rejectedWith(/terminated/);
|
||||
await driver.getSessions().should.eventually.be.empty;
|
||||
});
|
||||
|
||||
it('should accept valid W3C capabilities and start a W3C session', async function () {
|
||||
// Try with valid capabilities and check that it returns a session ID
|
||||
const w3cCaps = {
|
||||
@@ -476,7 +496,7 @@ describe('FakeDriver via HTTP', function () {
|
||||
}
|
||||
});
|
||||
|
||||
it('should log a single deprecation warning if a deprecated method is used and not overridden by a newMethodMap', async function () {
|
||||
it.skip('should log a single deprecation warning if a deprecated method is used and not overridden by a newMethodMap', async function () {
|
||||
let driver = await wdio({...wdOpts, capabilities: caps});
|
||||
try {
|
||||
driver.addCommand(
|
||||
|
||||
@@ -26,6 +26,7 @@ export function initMocks(sandbox = createSandbox()) {
|
||||
.returns({next: sandbox.stub().resolves({done: true})}),
|
||||
})
|
||||
),
|
||||
glob: /** @type {MockAppiumSupportFs['glob']} */ (sandbox.stub().resolves([])),
|
||||
mkdirp: /** @type {MockAppiumSupportFs['mkdirp']} */ (sandbox.stub().resolves()),
|
||||
readPackageJsonFrom: /** @type {MockAppiumSupportFs['readPackageJsonFrom']} */ (
|
||||
sandbox.stub().returns({version: APPIUM_VER, engines: {node: '>=12'}})
|
||||
@@ -166,6 +167,7 @@ export function initMocks(sandbox = createSandbox()) {
|
||||
* @property {SinonStubbedMember<SupportFs['readFile']>} readFile
|
||||
* @property {SinonStubbedMember<SupportFs['writeFile']>} writeFile
|
||||
* @property {SinonStubbedMember<SupportFs['walk']>} walk
|
||||
* @property {SinonStubbedMember<SupportFs['glob']>} glob
|
||||
* @property {SinonStubbedMember<SupportFs['mkdirp']>} mkdirp
|
||||
* @property {SinonStubbedMember<SupportFs['readPackageJsonFrom']>} readPackageJsonFrom
|
||||
* @property {SinonStubbedMember<SupportFs['findRoot']>} findRoot
|
||||
|
||||
@@ -303,7 +303,7 @@ describe('schema', function () {
|
||||
});
|
||||
|
||||
it('should flatten a schema', function () {
|
||||
expect(flattenSchema()).to.eql(flattenedSchemaFixture);
|
||||
expect(flattenSchema().length).to.be.greaterThanOrEqual(flattenedSchemaFixture.length);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -362,7 +362,7 @@ describe('schema', function () {
|
||||
});
|
||||
|
||||
it('should flatten a schema', function () {
|
||||
expect(flattenSchema()).to.eql(expected);
|
||||
expect(flattenSchema().length).to.be.greaterThanOrEqual(expected.length);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -232,6 +232,26 @@ describe('utils', function () {
|
||||
settings.should.eql({});
|
||||
caps.should.eql({});
|
||||
});
|
||||
it('should pull combined settings', function () {
|
||||
const caps = {
|
||||
platformName: 'foo',
|
||||
browserName: 'bar',
|
||||
'appium:settings[foo]': 'baz2',
|
||||
'appium:settings': {
|
||||
foo: 'baz',
|
||||
yolo: 'bar',
|
||||
},
|
||||
};
|
||||
const settings = pullSettings(caps);
|
||||
settings.should.eql({
|
||||
foo: 'baz2',
|
||||
yolo: 'bar',
|
||||
});
|
||||
caps.should.eql({
|
||||
platformName: 'foo',
|
||||
browserName: 'bar',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('inspect()', function () {
|
||||
|
||||
@@ -3,6 +3,83 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [9.4.1](https://github.com/appium/appium/compare/@appium/base-driver@9.4.0...@appium/base-driver@9.4.1) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Make sure type definitions are always in sync across modules ([#19323](https://github.com/appium/appium/issues/19323)) ([de39013](https://github.com/appium/appium/commit/de39013ae501d4fc11988435737efb862cc1d820))
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [9.4.0](https://github.com/appium/appium/compare/@appium/base-driver@9.3.20...@appium/base-driver@9.4.0) (2023-10-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **base-driver:** Add server support of TLS and SPDY protocols ([#19105](https://github.com/appium/appium/issues/19105)) ([5926919](https://github.com/appium/appium/commit/5926919177e3df675723c80d800f933fdbda5824))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **base-driver:** update definitelytyped ([5e09589](https://github.com/appium/appium/commit/5e095893ee8f65cb8744d2cd6c6abd70f402fa55))
|
||||
* **base-driver:** update dependency http-status-codes to v2.3.0 ([331171d](https://github.com/appium/appium/commit/331171dd8c511aba15e1b5b24329b30224e3e6ac))
|
||||
* **driver-test-support:** update dependency @types/lodash to v4.14.198 ([84fefd2](https://github.com/appium/appium/commit/84fefd214c40408cbbcd145723b5d8dbeec665af))
|
||||
* **images-plugin:** update dependency lru-cache to v10 ([#19050](https://github.com/appium/appium/issues/19050)) ([72a806b](https://github.com/appium/appium/commit/72a806bec7c3a80747192d24dfd9d8286a751810))
|
||||
* **opencv:** update definitelytyped ([d2a9a99](https://github.com/appium/appium/commit/d2a9a99418af9ce9b569bb9b98ee396faab932bb))
|
||||
* **support:** update definitelytyped ([3b44c7d](https://github.com/appium/appium/commit/3b44c7d8f5b89f9357dfe6bb56b54799bbe0a921))
|
||||
* **support:** update definitelytyped ([595d460](https://github.com/appium/appium/commit/595d460ac8dc41d310f9e4f653acbad3c7fd50b9))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
* **support:** update dependency axios to v1.5.0 ([08913cd](https://github.com/appium/appium/commit/08913cddde295f616f0fb376cc2cb71a9409a253))
|
||||
* **support:** update dependency axios to v1.5.1 ([#19217](https://github.com/appium/appium/issues/19217)) ([3df047d](https://github.com/appium/appium/commit/3df047d128d5d032826c8f5fb605b019078b717d))
|
||||
* **types:** update definitelytyped ([96b0a44](https://github.com/appium/appium/commit/96b0a44629c451102c44541a8d5b9e7be972f1ea))
|
||||
* Use pathToRegexp to match websocket endpoints ([#19162](https://github.com/appium/appium/issues/19162)) ([de02ed8](https://github.com/appium/appium/commit/de02ed87fc665ec9c6e563a634634307c3f21e44))
|
||||
|
||||
|
||||
|
||||
## [9.3.20](https://github.com/appium/appium/compare/@appium/base-driver@9.3.19...@appium/base-driver@9.3.20) (2023-08-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **base-driver:** Avoid RangeError while caching the response data ([#19043](https://github.com/appium/appium/issues/19043)) ([315a5e6](https://github.com/appium/appium/commit/315a5e6cc75d53d5fbbdae598dc4523ab85b7cb1))
|
||||
* **base-driver:** fix the LRUCache.dispose callback param order ([#19037](https://github.com/appium/appium/issues/19037)) ([abcf0d4](https://github.com/appium/appium/commit/abcf0d451f47f5c7c285f0988693c4bef9c29024))
|
||||
|
||||
|
||||
|
||||
## [9.3.19](https://github.com/appium/appium/compare/@appium/base-driver@9.3.18...@appium/base-driver@9.3.19) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-driver
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [9.3.18](https://github.com/appium/appium/compare/@appium/base-driver@9.3.17...@appium/base-driver@9.3.18) (2023-08-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **base-driver:** Fix possible NPE while cleaning up the state listener ([#19020](https://github.com/appium/appium/issues/19020)) ([53bfc68](https://github.com/appium/appium/commit/53bfc68eee5766ca8c6851c424c89d6b123d602e))
|
||||
* **base-driver:** Respect basic auth credentials if provided ([#19000](https://github.com/appium/appium/issues/19000)) ([ed8e83c](https://github.com/appium/appium/commit/ed8e83c76c5b660e619833515c2ea2ec29082e18))
|
||||
* **driver-test-support:** update dependency @types/lodash to v4.14.197 ([a080b72](https://github.com/appium/appium/commit/a080b729208b4e3c352456f0f230b63b0b7ee9ee))
|
||||
|
||||
|
||||
|
||||
## [9.3.17](https://github.com/appium/appium/compare/@appium/base-driver@9.3.16...@appium/base-driver@9.3.17) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **base-driver:** Tune responses caching logic ([#18922](https://github.com/appium/appium/issues/18922)) ([de5b55a](https://github.com/appium/appium/commit/de5b55ae90fefcce86962a48d5aceb73962e56b6))
|
||||
* **driver-test-support:** update definitelytyped ([c320e8a](https://github.com/appium/appium/commit/c320e8a1a61cb6d980d6d944ae47b60da97aa398))
|
||||
* **support:** update dependency glob to v10 ([#18490](https://github.com/appium/appium/issues/18490)) ([aaf31a5](https://github.com/appium/appium/commit/aaf31a577cb0b9cbe22646dcd888dc393a03aa11))
|
||||
* **test-support:** update dependency @colors/colors to v1.6.0 ([1358937](https://github.com/appium/appium/commit/1358937db2edf08ce1ebe3dff2f70ac6b07cd373))
|
||||
* **types:** update dependency type-fest to v3.13.1 ([fb34ab9](https://github.com/appium/appium/commit/fb34ab917216121d2b554677a12f07a03393d218))
|
||||
|
||||
|
||||
|
||||
## [9.3.16](https://github.com/appium/appium/compare/@appium/base-driver@9.3.15...@appium/base-driver@9.3.16) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -293,8 +293,7 @@ export class DriverCore<const C extends Constraints, Settings extends StringReco
|
||||
`Potentially insecure feature '${name}' has not been ` +
|
||||
`enabled. If you want to enable this feature and accept ` +
|
||||
`the security ramifications, please do so by following ` +
|
||||
`the documented instructions at https://github.com/appium` +
|
||||
`/appium/blob/master/docs/en/writing-running-appium/security.md`
|
||||
`the documented instructions at http://appium.io/docs/en/2.0/guides/security/`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,7 +355,7 @@ export class BaseDriver<
|
||||
const extraCaps = _.difference(_.keys(caps), _.keys(this._desiredCapConstraints));
|
||||
if (extraCaps.length) {
|
||||
this.log.warn(
|
||||
`The following capabilities were provided, but are not ` + `recognized by Appium:`
|
||||
`The following provided capabilities were not recognized by this driver:`
|
||||
);
|
||||
for (const cap of extraCaps) {
|
||||
this.log.warn(` ${cap}`);
|
||||
|
||||
@@ -3,7 +3,7 @@ import path from 'path';
|
||||
import url from 'url';
|
||||
import logger from './logger';
|
||||
import {tempDir, fs, util, zip, timing, node} from '@appium/support';
|
||||
import LRU from 'lru-cache';
|
||||
import { LRUCache } from 'lru-cache';
|
||||
import AsyncLock from 'async-lock';
|
||||
import axios from 'axios';
|
||||
import B from 'bluebird';
|
||||
@@ -20,11 +20,12 @@ const DEFAULT_REQ_HEADERS = Object.freeze({
|
||||
'user-agent': `Appium (BaseDriver v${BASEDRIVER_VER})`,
|
||||
});
|
||||
const AVG_DOWNLOAD_SPEED_MEASUREMENT_THRESHOLD_SEC = 2;
|
||||
const APPLICATIONS_CACHE = new LRU({
|
||||
const APPLICATIONS_CACHE = new LRUCache({
|
||||
max: MAX_CACHED_APPS,
|
||||
ttl: CACHED_APPS_MAX_AGE, // expire after 24 hours
|
||||
updateAgeOnGet: true,
|
||||
dispose: (app, {fullPath}) => {
|
||||
// @ts-ignore The fullPath property exists
|
||||
dispose: ({fullPath}, app) => {
|
||||
logger.info(
|
||||
`The application '${app}' cached at '${fullPath}' has ` +
|
||||
`expired after ${CACHED_APPS_MAX_AGE}ms`
|
||||
@@ -45,7 +46,9 @@ process.on('exit', () => {
|
||||
return;
|
||||
}
|
||||
|
||||
const appPaths = [...APPLICATIONS_CACHE.values()].map(({fullPath}) => fullPath);
|
||||
const appPaths = [...APPLICATIONS_CACHE.values()]
|
||||
// @ts-ignore The fullPath property exists
|
||||
.map(({fullPath}) => fullPath);
|
||||
logger.debug(
|
||||
`Performing cleanup of ${appPaths.length} cached ` +
|
||||
util.pluralize('application', appPaths.length)
|
||||
@@ -72,7 +75,7 @@ function verifyAppExtension(app, supportedAppExtensions) {
|
||||
}
|
||||
|
||||
async function calculateFolderIntegrity(folderPath) {
|
||||
return (await fs.glob('**/*', {cwd: folderPath, strict: false, nosort: true})).length;
|
||||
return (await fs.glob('**/*', {cwd: folderPath})).length;
|
||||
}
|
||||
|
||||
async function calculateFileIntegrity(filePath) {
|
||||
@@ -140,6 +143,8 @@ async function configureApp(
|
||||
const {protocol, pathname} = url.parse(newApp);
|
||||
const isUrl = protocol === null ? false : ['http:', 'https:'].includes(protocol);
|
||||
|
||||
/** @type {import('@appium/types').CachedAppInfo|undefined} */
|
||||
// @ts-ignore We know the returned type
|
||||
const cachedAppInfo = APPLICATIONS_CACHE.get(app);
|
||||
if (cachedAppInfo) {
|
||||
logger.debug(`Cached app data: ${JSON.stringify(cachedAppInfo, null, 2)}`);
|
||||
@@ -279,7 +284,7 @@ async function configureApp(
|
||||
if (isPackageAFile && shouldUnzipApp && !_.isFunction(onPostProcess)) {
|
||||
const archivePath = newApp;
|
||||
if (packageHash === cachedAppInfo?.packageHash) {
|
||||
const {fullPath} = cachedAppInfo;
|
||||
const fullPath = cachedAppInfo?.fullPath;
|
||||
if (await isAppIntegrityOk(fullPath, cachedAppInfo?.integrity)) {
|
||||
if (archivePath !== app) {
|
||||
await fs.rimraf(archivePath);
|
||||
@@ -362,12 +367,19 @@ async function configureApp(
|
||||
* @returns {Promise<RemoteAppData>}
|
||||
*/
|
||||
async function queryAppLink(appLink, reqHeaders) {
|
||||
const {href} = url.parse(appLink);
|
||||
const {href, auth} = url.parse(appLink);
|
||||
const axiosUrl = auth ? href.replace(`${auth}@`, '') : href;
|
||||
/** @type {import('axios').AxiosBasicCredentials|undefined} */
|
||||
const axiosAuth = auth ? {
|
||||
username: auth.substring(0, auth.indexOf(':')),
|
||||
password: auth.substring(auth.indexOf(':') + 1),
|
||||
} : undefined;
|
||||
/**
|
||||
* @type {import('axios').RawAxiosRequestConfig}
|
||||
*/
|
||||
const requestOpts = {
|
||||
url: href,
|
||||
url: axiosUrl,
|
||||
auth: axiosAuth,
|
||||
responseType: 'stream',
|
||||
timeout: APP_DOWNLOAD_TIMEOUT_MS,
|
||||
validateStatus: (status) =>
|
||||
@@ -382,7 +394,7 @@ async function queryAppLink(appLink, reqHeaders) {
|
||||
status,
|
||||
};
|
||||
} catch (err) {
|
||||
throw new Error(`Cannot download the app from ${href}: ${err.message}`);
|
||||
throw new Error(`Cannot download the app from ${axiosUrl}: ${err.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,7 +487,6 @@ async function unzipApp(zipPath, dstRoot, supportedAppExtensions) {
|
||||
const sortedBundleItems = (
|
||||
await fs.glob(globPattern, {
|
||||
cwd: tmpRoot,
|
||||
strict: false,
|
||||
// Get the top level match
|
||||
})
|
||||
).sort((a, b) => a.split(path.sep).length - b.split(path.sep).length);
|
||||
|
||||
@@ -1,34 +1,41 @@
|
||||
import log from './logger';
|
||||
import LRU from 'lru-cache';
|
||||
import {fs, util} from '@appium/support';
|
||||
import os from 'os';
|
||||
import path from 'path';
|
||||
import { LRUCache } from 'lru-cache';
|
||||
import _ from 'lodash';
|
||||
import {EventEmitter} from 'events';
|
||||
|
||||
const CACHE_SIZE = 1024;
|
||||
const IDEMPOTENT_RESPONSES = new LRU({
|
||||
max: CACHE_SIZE,
|
||||
const IDEMPOTENT_RESPONSES = new LRUCache({
|
||||
max: 64,
|
||||
ttl: 30 * 60 * 1000,
|
||||
updateAgeOnGet: true,
|
||||
dispose(key, {response}) {
|
||||
if (response) {
|
||||
fs.rimrafSync(response);
|
||||
}
|
||||
},
|
||||
updateAgeOnHas: true,
|
||||
// @ts-ignore The value must contain responseStateListener
|
||||
dispose: ({responseStateListener}) => {
|
||||
responseStateListener?.removeAllListeners();
|
||||
}
|
||||
});
|
||||
const MONITORED_METHODS = ['POST', 'PATCH'];
|
||||
const IDEMPOTENCY_KEY_HEADER = 'x-idempotency-key';
|
||||
const MAX_CACHED_PAYLOAD_SIZE_BYTES = 1 * 1024 * 1024; // 1 MiB
|
||||
|
||||
process.on('exit', () => {
|
||||
const resPaths = [...IDEMPOTENT_RESPONSES.values()].map(({response}) => response).filter(Boolean);
|
||||
for (const resPath of resPaths) {
|
||||
try {
|
||||
// Asynchronous calls are not supported in onExit handler
|
||||
fs.rimrafSync(resPath);
|
||||
} catch (ign) {}
|
||||
}
|
||||
});
|
||||
/**
|
||||
* @typedef {Object} CachedResponse
|
||||
* @property {string} method
|
||||
* @property {string} path
|
||||
* @property {Buffer?} response
|
||||
* @property {EventEmitter|null|undefined} responseStateListener
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} key
|
||||
* @param {import('express').Request} req
|
||||
* @param {import('express').Response} res
|
||||
*/
|
||||
function cacheResponse(key, req, res) {
|
||||
if (!res.socket) {
|
||||
return;
|
||||
}
|
||||
|
||||
const responseStateListener = new EventEmitter();
|
||||
IDEMPOTENT_RESPONSES.set(key, {
|
||||
method: req.method,
|
||||
@@ -36,69 +43,107 @@ function cacheResponse(key, req, res) {
|
||||
response: null,
|
||||
responseStateListener,
|
||||
});
|
||||
const tmpFile = path.resolve(os.tmpdir(), `${util.uuidV4()}.response`);
|
||||
const responseListener = fs.createWriteStream(tmpFile, {
|
||||
emitClose: true,
|
||||
});
|
||||
const originalSocketWriter = res.socket.write.bind(res.socket);
|
||||
const socket = res.socket;
|
||||
const originalSocketWriter = socket.write.bind(socket);
|
||||
const responseRef = new WeakRef(res);
|
||||
let responseChunks = [];
|
||||
let responseSize = 0;
|
||||
let errorMessage = null;
|
||||
const patchedWriter = (chunk, encoding, next) => {
|
||||
if (responseListener.writable) {
|
||||
responseListener.write(chunk);
|
||||
if (errorMessage || !responseRef.deref()) {
|
||||
responseChunks = [];
|
||||
responseSize = 0;
|
||||
return originalSocketWriter(chunk, encoding, next);
|
||||
}
|
||||
|
||||
const buf = Buffer.from(chunk, encoding);
|
||||
responseChunks.push(buf);
|
||||
responseSize += buf.length;
|
||||
if (responseSize > MAX_CACHED_PAYLOAD_SIZE_BYTES) {
|
||||
errorMessage = `The actual response size exceeds ` +
|
||||
`the maximum allowed limit of ${MAX_CACHED_PAYLOAD_SIZE_BYTES} bytes`;
|
||||
}
|
||||
return originalSocketWriter(chunk, encoding, next);
|
||||
};
|
||||
res.socket.write = patchedWriter;
|
||||
let writeError = null;
|
||||
let isResponseFullySent = false;
|
||||
responseListener.once('error', (e) => {
|
||||
writeError = e;
|
||||
});
|
||||
res.once('finish', () => {
|
||||
isResponseFullySent = true;
|
||||
responseListener.end();
|
||||
});
|
||||
res.once('close', () => {
|
||||
if (!isResponseFullySent) {
|
||||
responseListener.end();
|
||||
}
|
||||
});
|
||||
responseListener.once('close', () => {
|
||||
if (res.socket?.write === patchedWriter) {
|
||||
res.socket.write = originalSocketWriter;
|
||||
socket.write = patchedWriter;
|
||||
let didEmitReady = false;
|
||||
res.once('error', (e) => {
|
||||
errorMessage = e.message;
|
||||
if (socket.write === patchedWriter) {
|
||||
socket.write = originalSocketWriter;
|
||||
}
|
||||
|
||||
if (!IDEMPOTENT_RESPONSES.has(key)) {
|
||||
log.info(
|
||||
`Could not cache the response identified by '${key}'. ` +
|
||||
`Cache consistency has been damaged`
|
||||
`Cache consistency has been damaged`
|
||||
);
|
||||
return responseStateListener.emit('ready', null);
|
||||
}
|
||||
if (writeError) {
|
||||
log.info(`Could not cache the response identified by '${key}': ${writeError.message}`);
|
||||
} else {
|
||||
log.info(`Could not cache the response identified by '${key}': ${errorMessage}`);
|
||||
IDEMPOTENT_RESPONSES.delete(key);
|
||||
return responseStateListener.emit('ready', null);
|
||||
}
|
||||
if (!isResponseFullySent) {
|
||||
log.info(
|
||||
`Could not cache the response identified by '${key}', ` +
|
||||
`because it has not been completed`
|
||||
);
|
||||
log.info('Does the client terminate connections too early?');
|
||||
IDEMPOTENT_RESPONSES.delete(key);
|
||||
return responseStateListener.emit('ready', null);
|
||||
}
|
||||
|
||||
IDEMPOTENT_RESPONSES.get(key).response = tmpFile;
|
||||
responseStateListener.emit('ready', tmpFile);
|
||||
responseChunks = [];
|
||||
responseSize = 0;
|
||||
if (!didEmitReady) {
|
||||
responseStateListener.emit('ready', null);
|
||||
didEmitReady = true;
|
||||
}
|
||||
});
|
||||
res.once('finish', () => {
|
||||
if (socket.write === patchedWriter) {
|
||||
socket.write = originalSocketWriter;
|
||||
}
|
||||
|
||||
if (!IDEMPOTENT_RESPONSES.has(key)) {
|
||||
log.info(
|
||||
`Could not cache the response identified by '${key}'. ` +
|
||||
`Cache consistency has been damaged`
|
||||
);
|
||||
} else if (errorMessage) {
|
||||
log.info(`Could not cache the response identified by '${key}': ${errorMessage}`);
|
||||
IDEMPOTENT_RESPONSES.delete(key);
|
||||
}
|
||||
|
||||
/** @type {CachedResponse|undefined} */
|
||||
// @ts-ignore The returned type is ok
|
||||
const value = IDEMPOTENT_RESPONSES.get(key);
|
||||
if (value) {
|
||||
value.response = Buffer.concat(responseChunks);
|
||||
}
|
||||
responseChunks = [];
|
||||
responseSize = 0;
|
||||
if (!didEmitReady) {
|
||||
responseStateListener.emit('ready', value?.response ?? null);
|
||||
didEmitReady = true;
|
||||
}
|
||||
});
|
||||
res.once('close', () => {
|
||||
if (socket.write === patchedWriter) {
|
||||
socket.write = originalSocketWriter;
|
||||
}
|
||||
|
||||
if (!didEmitReady) {
|
||||
/** @type {CachedResponse|undefined} */
|
||||
// @ts-ignore The returned type is ok
|
||||
const value = IDEMPOTENT_RESPONSES.get(key);
|
||||
responseStateListener.emit('ready', value?.response ?? null);
|
||||
didEmitReady = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import('express').Request} req
|
||||
* @param {import('express').Response} res
|
||||
*/
|
||||
async function handleIdempotency(req, res, next) {
|
||||
const key = req.headers[IDEMPOTENCY_KEY_HEADER];
|
||||
if (!key) {
|
||||
const keyOrArr = req.headers[IDEMPOTENCY_KEY_HEADER];
|
||||
if (_.isEmpty(keyOrArr) || !keyOrArr) {
|
||||
return next();
|
||||
}
|
||||
|
||||
const key = _.isArray(keyOrArr) ? keyOrArr[0] : keyOrArr;
|
||||
if (!MONITORED_METHODS.includes(req.method)) {
|
||||
// GET, DELETE, etc. requests are idempotent by default
|
||||
// there is no need to cache them
|
||||
@@ -112,39 +157,30 @@ async function handleIdempotency(req, res, next) {
|
||||
}
|
||||
|
||||
const {
|
||||
method: storedMethod,
|
||||
path: storedPath,
|
||||
response,
|
||||
responseStateListener,
|
||||
// @ts-ignore We have asserted the presence of the key above
|
||||
method, path, response, responseStateListener,
|
||||
} = IDEMPOTENT_RESPONSES.get(key);
|
||||
if (req.method !== storedMethod || req.path !== storedPath) {
|
||||
if (req.method !== method || req.path !== path) {
|
||||
log.warn(`Got two different requests with the same idempotency key '${key}'`);
|
||||
log.warn('Is the client generating idempotency keys properly?');
|
||||
return next();
|
||||
}
|
||||
|
||||
const rerouteCachedResponse = async (cachedResPath) => {
|
||||
if (!(await fs.exists(cachedResPath))) {
|
||||
IDEMPOTENT_RESPONSES.delete(key);
|
||||
log.warn(`Could not read the cached response identified by key '${key}'`);
|
||||
log.warn('The temporary storage is not accessible anymore');
|
||||
return next();
|
||||
}
|
||||
fs.createReadStream(cachedResPath).pipe(res.socket);
|
||||
};
|
||||
|
||||
if (response) {
|
||||
log.info(`The same request with the idempotency key '${key}' has been already processed`);
|
||||
log.info(`Rerouting its response to the current request`);
|
||||
await rerouteCachedResponse(response);
|
||||
if (!res.socket?.writable) {
|
||||
return next();
|
||||
}
|
||||
res.socket.write(response.toString('utf8'));
|
||||
} else {
|
||||
log.info(`The same request with the idempotency key '${key}' is being processed`);
|
||||
log.info(`Waiting for the response to be rerouted to the current request`);
|
||||
responseStateListener.once('ready', async (cachedResponsePath) => {
|
||||
if (!cachedResponsePath) {
|
||||
responseStateListener.once('ready', async (/** @type {Buffer?} */ cachedResponse) => {
|
||||
if (!cachedResponse || !res.socket?.writable) {
|
||||
return next();
|
||||
}
|
||||
await rerouteCachedResponse(cachedResponsePath);
|
||||
res.socket.write(cachedResponse.toString('utf8'));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,9 +27,49 @@ import {
|
||||
import B from 'bluebird';
|
||||
import {DEFAULT_BASE_PATH} from '../constants';
|
||||
import {EventEmitter} from 'events';
|
||||
import {fs} from '@appium/support';
|
||||
|
||||
const KEEP_ALIVE_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {import('express').Express} app
|
||||
* @param {Partial<import('@appium/types').ServerArgs>} [cliArgs]
|
||||
* @returns {Promise<http.Server>}
|
||||
*/
|
||||
async function createServer (app, cliArgs) {
|
||||
const {sslCertificatePath, sslKeyPath} = cliArgs ?? {};
|
||||
if (!sslCertificatePath && !sslKeyPath) {
|
||||
return http.createServer(app);
|
||||
}
|
||||
if (!sslCertificatePath || !sslKeyPath) {
|
||||
throw new Error(`Both certificate path and key path must be provided to enable TLS`);
|
||||
}
|
||||
|
||||
const certKey = [sslCertificatePath, sslKeyPath];
|
||||
const zipped = _.zip(
|
||||
await B.all(certKey.map((p) => fs.exists(p))),
|
||||
['certificate', 'key'],
|
||||
certKey,
|
||||
);
|
||||
for (const [exists, desc, p] of zipped) {
|
||||
if (!exists) {
|
||||
throw new Error(`The provided SSL ${desc} at '${p}' does not exist or is not accessible`);
|
||||
}
|
||||
}
|
||||
const [cert, key] = await B.all(certKey.map((p) => fs.readFile(p, 'utf8')));
|
||||
log.debug('Enabling TLS/SPDY on the server using the provided certificate');
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
return require('spdy').createServer({
|
||||
cert,
|
||||
key,
|
||||
spdy: {
|
||||
plain: false,
|
||||
ssl: true,
|
||||
}
|
||||
}, app);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {ServerOpts} opts
|
||||
@@ -48,9 +88,9 @@ async function server(opts) {
|
||||
keepAliveTimeout = KEEP_ALIVE_TIMEOUT_MS,
|
||||
} = opts;
|
||||
|
||||
// create the actual http server
|
||||
const app = express();
|
||||
const httpServer = http.createServer(app);
|
||||
const httpServer = await createServer(app, cliArgs);
|
||||
|
||||
return await new B(async (resolve, reject) => {
|
||||
// we put an async function as the promise constructor because we want some things to happen in
|
||||
// serial (application of plugin updates, for example). But we still need to use a promise here
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import _ from 'lodash';
|
||||
import {URL} from 'url';
|
||||
import B from 'bluebird';
|
||||
import { pathToRegexp } from 'path-to-regexp';
|
||||
|
||||
const DEFAULT_WS_PATHNAME_PREFIX = '/ws';
|
||||
|
||||
@@ -16,12 +17,12 @@ async function addWebSocketHandler(handlerPathname, handlerServer) {
|
||||
this.on('upgrade', (request, socket, head) => {
|
||||
let currentPathname;
|
||||
try {
|
||||
currentPathname = new URL(/** @type {string} */ (request.url)).pathname;
|
||||
currentPathname = new URL(request.url ?? '').pathname;
|
||||
} catch {
|
||||
currentPathname = request.url;
|
||||
currentPathname = request.url ?? '';
|
||||
}
|
||||
for (const [pathname, wsServer] of _.toPairs(this.webSocketsMapping)) {
|
||||
if (currentPathname === pathname) {
|
||||
if (pathToRegexp(pathname).test(currentPathname)) {
|
||||
wsServer.handleUpgrade(request, socket, head, (ws) => {
|
||||
wsServer.emit('connection', ws, request);
|
||||
});
|
||||
|
||||
@@ -843,24 +843,43 @@ export class UnableToCaptureScreen extends ProtocolError {
|
||||
}
|
||||
}
|
||||
|
||||
function generateBadParametersMessage(requiredParams, actualParams) {
|
||||
const toArray = (/** @type {any} */ x) => _.isArray(x) ? x : [];
|
||||
|
||||
const requiredParamNames = toArray(requiredParams?.required);
|
||||
const actualParamNames = toArray(actualParams);
|
||||
const missingRequiredParamNames = _.difference(requiredParamNames, actualParamNames);
|
||||
/** @type {string[]} */
|
||||
const resultLines = [];
|
||||
resultLines.push(_.isEmpty(missingRequiredParamNames)
|
||||
// This should not happen
|
||||
? 'Some of the provided parameters are not known'
|
||||
: (`The following required parameter${missingRequiredParamNames.length === 1 ? ' is ' : 's are '}`
|
||||
+ `missing: ${JSON.stringify(missingRequiredParamNames)}`)
|
||||
);
|
||||
if (!_.isEmpty(requiredParamNames)) {
|
||||
resultLines.push(`Known required parameters are: ${JSON.stringify(requiredParamNames)}`);
|
||||
}
|
||||
const optionalParamNames = _.difference(toArray(requiredParams?.optional), ['sessionId', 'id']);
|
||||
if (!_.isEmpty(optionalParamNames)) {
|
||||
resultLines.push(`Known optional parameters are: ${JSON.stringify(optionalParamNames)}`);
|
||||
}
|
||||
resultLines.push(
|
||||
`You have provided${_.isEmpty(actualParamNames) ? ' none' : (': ' + JSON.stringify(actualParams))}`
|
||||
);
|
||||
return resultLines.join('\n');
|
||||
}
|
||||
|
||||
// Equivalent to W3C InvalidArgumentError
|
||||
export class BadParametersError extends ES6Error {
|
||||
static error() {
|
||||
return 'invalid argument';
|
||||
}
|
||||
constructor(requiredParams, actualParams, errMessage) {
|
||||
let message;
|
||||
if (!errMessage) {
|
||||
message =
|
||||
`Parameters were incorrect. We wanted ` +
|
||||
`${JSON.stringify(requiredParams)} and you ` +
|
||||
`sent ${JSON.stringify(actualParams)}`;
|
||||
} else {
|
||||
message = `Parameters were incorrect. You sent ${JSON.stringify(
|
||||
actualParams
|
||||
)}, ${errMessage}`;
|
||||
}
|
||||
super(message);
|
||||
super(errMessage
|
||||
? `Parameters were incorrect. You sent ${JSON.stringify(actualParams)}, ${errMessage}`
|
||||
: generateBadParametersMessage(requiredParams, actualParams)
|
||||
);
|
||||
this.w3cStatus = HTTPStatusCodes.BAD_REQUEST;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ const CREATE_SESSION_COMMAND = 'createSession';
|
||||
const DELETE_SESSION_COMMAND = 'deleteSession';
|
||||
const GET_STATUS_COMMAND = 'getStatus';
|
||||
|
||||
/** type {Set<string>} */
|
||||
/** @type {Set<string>} */
|
||||
const deprecatedCommandsLogged = new Set();
|
||||
|
||||
function determineProtocol(createSessionArgs) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-driver",
|
||||
"version": "9.3.16",
|
||||
"version": "9.4.1",
|
||||
"description": "Base driver class for Appium drivers",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -44,32 +44,36 @@
|
||||
"test:types": "tsd"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.1.3",
|
||||
"@appium/types": "^0.13.2",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/async-lock": "1.4.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/method-override": "0.0.32",
|
||||
"@types/serve-favicon": "2.5.4",
|
||||
"@appium/support": "^4.1.8",
|
||||
"@appium/types": "^0.14.1",
|
||||
"@colors/colors": "1.6.0",
|
||||
"@types/async-lock": "1.4.1",
|
||||
"@types/bluebird": "3.5.41",
|
||||
"@types/express": "4.17.20",
|
||||
"@types/lodash": "4.14.200",
|
||||
"@types/method-override": "0.0.34",
|
||||
"@types/serve-favicon": "2.5.6",
|
||||
"async-lock": "1.4.0",
|
||||
"asyncbox": "2.9.4",
|
||||
"axios": "1.4.0",
|
||||
"axios": "1.5.1",
|
||||
"bluebird": "3.7.2",
|
||||
"body-parser": "1.20.2",
|
||||
"es6-error": "4.1.1",
|
||||
"express": "4.18.2",
|
||||
"http-status-codes": "2.2.0",
|
||||
"http-status-codes": "2.3.0",
|
||||
"lodash": "4.17.21",
|
||||
"lru-cache": "7.18.3",
|
||||
"lru-cache": "10.0.1",
|
||||
"method-override": "3.0.0",
|
||||
"morgan": "1.10.0",
|
||||
"path-to-regexp": "6.2.1",
|
||||
"serve-favicon": "2.5.0",
|
||||
"source-map-support": "0.5.21",
|
||||
"type-fest": "3.11.1",
|
||||
"type-fest": "3.13.1",
|
||||
"validate.js": "0.13.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"spdy": "4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
"npm": ">=8"
|
||||
|
||||
@@ -3,8 +3,19 @@ import axios from 'axios';
|
||||
import {createSandbox} from 'sinon';
|
||||
import B from 'bluebird';
|
||||
import _ from 'lodash';
|
||||
import { exec } from 'teen_process';
|
||||
import https from 'node:https';
|
||||
import {TEST_HOST, getTestPort} from '@appium/driver-test-support';
|
||||
|
||||
async function generateCertificate (certPath, keyPath) {
|
||||
await exec('openssl', [
|
||||
'req', '-nodes', '-new', '-x509',
|
||||
'-keyout', keyPath,
|
||||
'-out', certPath,
|
||||
'-subj', '/C=US/ST=State/L=City/O=company/OU=Com/CN=www.testserver.local',
|
||||
]);
|
||||
}
|
||||
|
||||
describe('server', function () {
|
||||
let hwServer;
|
||||
let port;
|
||||
@@ -96,6 +107,61 @@ describe('server', function () {
|
||||
});
|
||||
});
|
||||
|
||||
describe('tls server', function () {
|
||||
let hwServer;
|
||||
let port;
|
||||
let certPath = 'certificate.cert';
|
||||
let keyPath = 'certificate.key';
|
||||
const looseClient = axios.create({
|
||||
httpsAgent: new https.Agent({
|
||||
rejectUnauthorized: false
|
||||
})
|
||||
});
|
||||
|
||||
before(async function () {
|
||||
try {
|
||||
await generateCertificate(certPath, keyPath);
|
||||
} catch (e) {
|
||||
if (process.env.CI) {
|
||||
throw e;
|
||||
}
|
||||
return this.skip();
|
||||
}
|
||||
|
||||
port = await getTestPort(true);
|
||||
|
||||
function configureRoutes(app) {
|
||||
app.get('/', (req, res) => {
|
||||
res.header['content-type'] = 'text/html';
|
||||
res.status(200).send('Hello World!');
|
||||
});
|
||||
}
|
||||
|
||||
hwServer = await server({
|
||||
routeConfiguringFunction: configureRoutes,
|
||||
cliArgs: {
|
||||
sslCertificatePath: certPath,
|
||||
sslKeyPath: keyPath,
|
||||
},
|
||||
port,
|
||||
});
|
||||
});
|
||||
after(async function () {
|
||||
await hwServer.close();
|
||||
});
|
||||
|
||||
it('should start up with our middleware', async function () {
|
||||
const {data} = await looseClient.get(`https://${TEST_HOST}:${port}/`);
|
||||
data.should.eql('Hello World!');
|
||||
});
|
||||
it('should throw if untrusted', async function () {
|
||||
await axios.get(`https://${TEST_HOST}:${port}/`).should.eventually.be.rejected;
|
||||
});
|
||||
it('should throw if not secure', async function () {
|
||||
await axios.get(`http://${TEST_HOST}:${port}/`).should.eventually.be.rejected;
|
||||
});
|
||||
});
|
||||
|
||||
describe('server plugins', function () {
|
||||
let hwServer;
|
||||
let port;
|
||||
|
||||
@@ -428,7 +428,7 @@ describe('Protocol', function () {
|
||||
status.should.equal(400);
|
||||
|
||||
const {error: w3cError, message, stacktrace} = data.value;
|
||||
message.should.match(/Parameters were incorrect/);
|
||||
message.should.match(/following required parameter/);
|
||||
stacktrace.should.match(/protocol.js/);
|
||||
w3cError.should.be.a.string;
|
||||
w3cError.should.equal(errors.InvalidArgumentError.error());
|
||||
|
||||
@@ -3,6 +3,54 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.2.22](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.21...@appium/base-plugin@2.2.22) (2023-10-19)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.21](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.20...@appium/base-plugin@2.2.21) (2023-10-18)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.20](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.19...@appium/base-plugin@2.2.20) (2023-08-23)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.19](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.18...@appium/base-plugin@2.2.19) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.18](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.17...@appium/base-plugin@2.2.18) (2023-08-21)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.17](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.16...@appium/base-plugin@2.2.17) (2023-08-17)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.2.16](https://github.com/appium/appium/compare/@appium/base-plugin@2.2.15...@appium/base-plugin@2.2.16) (2023-07-24)
|
||||
|
||||
**Note:** Version bump only for package @appium/base-plugin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/base-plugin",
|
||||
"version": "2.2.16",
|
||||
"version": "2.2.22",
|
||||
"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.16",
|
||||
"@appium/support": "^4.1.3"
|
||||
"@appium/base-driver": "^9.4.1",
|
||||
"@appium/support": "^4.1.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
|
||||
@@ -3,6 +3,80 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.0.27](https://github.com/appium/appium/compare/@appium/doctor@2.0.26...@appium/doctor@2.0.27) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **doctor:** update dependency appium-adb to v11 ([#19321](https://github.com/appium/appium/issues/19321)) ([408885a](https://github.com/appium/appium/commit/408885a5b28f8691dbbb3716f3c1a409d662275b))
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [2.0.26](https://github.com/appium/appium/compare/@appium/doctor@2.0.25...@appium/doctor@2.0.26) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **doctor:** update dependency appium-adb to v10 ([#19308](https://github.com/appium/appium/issues/19308)) ([3315671](https://github.com/appium/appium/commit/33156712b142b1cb2ffdcf1cfdf65f5b504e7751))
|
||||
* **doctor:** update dependency appium-adb to v9.14.10 ([809b2da](https://github.com/appium/appium/commit/809b2daea5304942c849b7015f0a74447fb7b57c))
|
||||
* **doctor:** update dependency appium-adb to v9.14.11 ([c81e99f](https://github.com/appium/appium/commit/c81e99fd80739d97b3dc2099a43cc66245035bc5))
|
||||
* **doctor:** update dependency appium-adb to v9.14.12 ([0220a9f](https://github.com/appium/appium/commit/0220a9f8e9a890f84031cfeaea026fceb0a303e9))
|
||||
* **doctor:** update dependency appium-adb to v9.14.7 ([#19058](https://github.com/appium/appium/issues/19058)) ([f8039a7](https://github.com/appium/appium/commit/f8039a70ca851dcc120a2b217e14e3e3b922ba21))
|
||||
* **doctor:** update dependency appium-adb to v9.14.9 ([9f700bf](https://github.com/appium/appium/commit/9f700bfdf9e09de3cea9f81029fadef84b8e956b))
|
||||
* **opencv:** update definitelytyped ([d2a9a99](https://github.com/appium/appium/commit/d2a9a99418af9ce9b569bb9b98ee396faab932bb))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
* **support:** update dependency @types/teen_process to v2.0.1 ([d2f19aa](https://github.com/appium/appium/commit/d2f19aab935cc6ec00a51f042b5f02674a772198))
|
||||
* **support:** update dependency teen_process to v2.0.10 ([bc1b56a](https://github.com/appium/appium/commit/bc1b56a3c162ed8686d3d7956c30eb1f7682b1a7))
|
||||
* **support:** update dependency teen_process to v2.0.12 ([c5d6df7](https://github.com/appium/appium/commit/c5d6df7a000d64e8591a56ce5ef65baa2071a36b))
|
||||
* **support:** update dependency teen_process to v2.0.13 ([a0c4b84](https://github.com/appium/appium/commit/a0c4b84fb7d3977b7a4ca0a07fadd49ee355791a))
|
||||
* **support:** update dependency teen_process to v2.0.18 ([ffeebc7](https://github.com/appium/appium/commit/ffeebc74b72e5eadf658325e67708ae6ed5b8346))
|
||||
* **support:** update dependency teen_process to v2.0.19 ([2ef40fe](https://github.com/appium/appium/commit/2ef40febdc717f54ea618ecfe1058b858fe2daf9))
|
||||
* **support:** update dependency teen_process to v2.0.23 ([1b0459e](https://github.com/appium/appium/commit/1b0459edd656514d8706aab8e21cd4d40de2ec5d))
|
||||
* **support:** update dependency teen_process to v2.0.24 ([bc72c66](https://github.com/appium/appium/commit/bc72c6676a5412b60e74bb143a223738ce059977))
|
||||
* **support:** update dependency teen_process to v2.0.27 ([03b2aa6](https://github.com/appium/appium/commit/03b2aa6b6e45fa0ea24c4691b039255bc4399733))
|
||||
* **support:** update dependency teen_process to v2.0.30 ([7cdb142](https://github.com/appium/appium/commit/7cdb1429a1104ad3699547f2a2dd9b237135891a))
|
||||
* **support:** update dependency teen_process to v2.0.34 ([#19218](https://github.com/appium/appium/issues/19218)) ([c28fcef](https://github.com/appium/appium/commit/c28fcefa725fbce5a0464e57946051e3cb023d85))
|
||||
* **support:** update dependency teen_process to v2.0.37 ([6d894be](https://github.com/appium/appium/commit/6d894bef6f377ebfdffdeb1adde7a72624844414))
|
||||
* **support:** update dependency teen_process to v2.0.38 ([a32dc11](https://github.com/appium/appium/commit/a32dc1110125d0f1fac9c66c17f1309145a634c7))
|
||||
* **support:** update dependency teen_process to v2.0.40 ([2837bcd](https://github.com/appium/appium/commit/2837bcdeb19532fe973a2902db5c8d730252d962))
|
||||
* **support:** update dependency teen_process to v2.0.41 ([1a34396](https://github.com/appium/appium/commit/1a34396339f71d40353d323feaf78afcf2269fc9))
|
||||
* **support:** update dependency teen_process to v2.0.42 ([e2a670e](https://github.com/appium/appium/commit/e2a670e1c4a0f061b0bfb08a6b534d9deb7bdd9c))
|
||||
* **support:** update dependency teen_process to v2.0.45 ([ea731bf](https://github.com/appium/appium/commit/ea731bf117d680496fce453ac42cfee7f05ada60))
|
||||
* **support:** update dependency teen_process to v2.0.48 ([eebc651](https://github.com/appium/appium/commit/eebc651f31c282baa7e77a6384d3ee8efc0072d6))
|
||||
* **support:** update dependency teen_process to v2.0.50 ([ca3e5d9](https://github.com/appium/appium/commit/ca3e5d90e4c51fc1dda32154e1d77e65cb44fb54))
|
||||
* **support:** update dependency teen_process to v2.0.9 ([6c7f3ef](https://github.com/appium/appium/commit/6c7f3ef670d441bdc4b693948a19dcbdc54e4764))
|
||||
|
||||
|
||||
|
||||
## [2.0.25](https://github.com/appium/appium/compare/@appium/doctor@2.0.24...@appium/doctor@2.0.25) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/doctor
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.0.24](https://github.com/appium/appium/compare/@appium/doctor@2.0.23...@appium/doctor@2.0.24) (2023-08-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **doctor:** update dependency appium-adb to v9.14.5 ([d5f3a28](https://github.com/appium/appium/commit/d5f3a288c2497d4020b7eabc667814744e69ac48))
|
||||
|
||||
|
||||
|
||||
## [2.0.23](https://github.com/appium/appium/compare/@appium/doctor@2.0.22...@appium/doctor@2.0.23) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **doctor:** update dependency appium-adb to v9.14.4 ([#18844](https://github.com/appium/appium/issues/18844)) ([a9e86aa](https://github.com/appium/appium/commit/a9e86aabc657bf22df8b1c5f67ab93acc0ced934))
|
||||
* **doctor:** update dependency inquirer to v8.2.6 ([#18940](https://github.com/appium/appium/issues/18940)) ([a8cc551](https://github.com/appium/appium/commit/a8cc551210c31b014025f7c56b091163f4d15df1))
|
||||
* **test-support:** update dependency @colors/colors to v1.6.0 ([1358937](https://github.com/appium/appium/commit/1358937db2edf08ce1ebe3dff2f70ac6b07cd373))
|
||||
|
||||
|
||||
|
||||
## [2.0.22](https://github.com/appium/appium/compare/@appium/doctor@2.0.21...@appium/doctor@2.0.22) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ import {exec} from 'teen_process';
|
||||
import {DoctorCheck} from './doctor';
|
||||
import NodeDetector from './node-detector';
|
||||
import {util, env} from '@appium/support';
|
||||
import {EOL} from 'os';
|
||||
import '@colors/colors';
|
||||
|
||||
/**
|
||||
|
||||
@@ -155,7 +155,7 @@ class OptionalApplesimutilsCommandCheck extends DoctorCheck {
|
||||
async fix() {
|
||||
return `Why ${
|
||||
'applesimutils'.bold
|
||||
} is needed and how to install it: http://appium.io/docs/en/drivers/ios-xcuitest/`;
|
||||
} is needed and how to install it: https://github.com/appium/appium-xcuitest-driver/blob/master/docs/execute-methods.md#mobile-setpermission`;
|
||||
}
|
||||
}
|
||||
checks.push(new OptionalApplesimutilsCommandCheck());
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/doctor",
|
||||
"version": "2.0.22",
|
||||
"version": "2.0.27",
|
||||
"description": "Test environment for fitness to run Appium",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -44,16 +44,16 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.1.3",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"appium-adb": "9.11.7",
|
||||
"@appium/support": "^4.1.8",
|
||||
"@colors/colors": "1.6.0",
|
||||
"@types/bluebird": "3.5.41",
|
||||
"@types/teen_process": "2.0.1",
|
||||
"appium-adb": "11.0.1",
|
||||
"bluebird": "3.7.2",
|
||||
"inquirer": "8.2.5",
|
||||
"inquirer": "8.2.6",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.4",
|
||||
"teen_process": "2.0.50",
|
||||
"yargs": "17.7.2"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -12,6 +12,7 @@ import * as tp from 'teen_process';
|
||||
import {withMocks, stubEnv} from '@appium/test-support';
|
||||
import B from 'bluebird';
|
||||
import {removeColors} from './helper';
|
||||
import {createSandbox} from 'sinon';
|
||||
|
||||
describe('android', function () {
|
||||
const apkAnalyzerFilename = system.isWindows() ? 'apkanalyzer.bat' : 'apkanalyzer';
|
||||
@@ -59,8 +60,17 @@ describe('android', function () {
|
||||
})
|
||||
);
|
||||
describe(
|
||||
'AndroidToolCheck',
|
||||
withMocks({adb}, (mocks) => {
|
||||
'AndroidToolCheck', function () {
|
||||
// withMocks won't work with ESM modules: https://github.com/sinonjs/sinon/issues/2530
|
||||
/** @type {sinon.SinonSandbox} */
|
||||
let sandbox;
|
||||
beforeEach(function () {
|
||||
sandbox = createSandbox();
|
||||
});
|
||||
afterEach(function () {
|
||||
sandbox.restore();
|
||||
});
|
||||
|
||||
stubEnv();
|
||||
const check = new AndroidToolCheck();
|
||||
it('autofix', function () {
|
||||
@@ -68,16 +78,13 @@ describe('android', function () {
|
||||
});
|
||||
it('diagnose - success', async function () {
|
||||
process.env.ANDROID_HOME = '/a/b/c/d';
|
||||
mocks.adb
|
||||
.expects('getAndroidBinaryPath')
|
||||
.exactly(check.tools.length)
|
||||
.returns(B.resolve('/path/to/binary'));
|
||||
sandbox.stub(adb, 'getAndroidBinaryPath')
|
||||
.get(() => sandbox.fake.resolves('/path/to/binary'));
|
||||
(await check.diagnose()).should.deep.equal({
|
||||
ok: true,
|
||||
optional: false,
|
||||
message: `adb, emulator, ${apkAnalyzerFilename} exist: /a/b/c/d`,
|
||||
});
|
||||
mocks.verify();
|
||||
});
|
||||
it('diagnose - failure - no ANDROID_HOME', async function () {
|
||||
delete process.env.ANDROID_HOME;
|
||||
@@ -87,17 +94,16 @@ describe('android', function () {
|
||||
optional: false,
|
||||
message: `adb, emulator, ${apkAnalyzerFilename} could not be found because ANDROID_HOME or ANDROID_SDK_ROOT is NOT set!`,
|
||||
});
|
||||
mocks.verify();
|
||||
});
|
||||
it('diagnose - failure - path not valid', async function () {
|
||||
process.env.ANDROID_HOME = '/a/b/c/d';
|
||||
mocks.adb.expects('getAndroidBinaryPath').exactly(check.tools.length).throws();
|
||||
sandbox.stub(adb, 'getAndroidBinaryPath')
|
||||
.get(() => sandbox.fake.throws());
|
||||
(await check.diagnose()).should.deep.equal({
|
||||
ok: false,
|
||||
optional: false,
|
||||
message: `adb, emulator, ${apkAnalyzerFilename} could NOT be found in /a/b/c/d!`,
|
||||
});
|
||||
mocks.verify();
|
||||
});
|
||||
it('fix - ANDROID_HOME', async function () {
|
||||
delete process.env.ANDROID_HOME;
|
||||
@@ -111,7 +117,7 @@ describe('android', function () {
|
||||
`Manually install adb, emulator, ${apkAnalyzerFilename} and add it to PATH. https://developer.android.com/studio#cmdline-tools and https://developer.android.com/studio/intro/update#sdk-manager may help to setup.`
|
||||
);
|
||||
});
|
||||
})
|
||||
}
|
||||
);
|
||||
|
||||
describe(
|
||||
|
||||
@@ -346,7 +346,7 @@ describe('ios', function () {
|
||||
});
|
||||
it('fix', async function () {
|
||||
removeColors(await check.fix()).should.equal(
|
||||
'Why applesimutils is needed and how to install it: http://appium.io/docs/en/drivers/ios-xcuitest/'
|
||||
'Why applesimutils is needed and how to install it: https://github.com/appium/appium-xcuitest-driver/blob/master/docs/execute-methods.md#mobile-setpermission'
|
||||
);
|
||||
});
|
||||
})
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.4.11](https://github.com/appium/appium/compare/@appium/docutils@0.4.10...@appium/docutils@0.4.11) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Make sure type definitions are always in sync across modules ([#19323](https://github.com/appium/appium/issues/19323)) ([de39013](https://github.com/appium/appium/commit/de39013ae501d4fc11988435737efb862cc1d820))
|
||||
|
||||
|
||||
|
||||
## [0.4.10](https://github.com/appium/appium/compare/@appium/docutils@0.4.9...@appium/docutils@0.4.10) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **docutils:** update dependency yaml to v2.3.2 ([1a3d408](https://github.com/appium/appium/commit/1a3d408e239e4a9a7070923a90aca70df1dda908))
|
||||
* **docutils:** update dependency yaml to v2.3.3 ([caf600b](https://github.com/appium/appium/commit/caf600bffd5f25971d0270e9990b2640a671e366))
|
||||
* **support:** update dependency teen_process to v2.0.10 ([bc1b56a](https://github.com/appium/appium/commit/bc1b56a3c162ed8686d3d7956c30eb1f7682b1a7))
|
||||
* **support:** update dependency teen_process to v2.0.12 ([c5d6df7](https://github.com/appium/appium/commit/c5d6df7a000d64e8591a56ce5ef65baa2071a36b))
|
||||
* **support:** update dependency teen_process to v2.0.13 ([a0c4b84](https://github.com/appium/appium/commit/a0c4b84fb7d3977b7a4ca0a07fadd49ee355791a))
|
||||
* **support:** update dependency teen_process to v2.0.18 ([ffeebc7](https://github.com/appium/appium/commit/ffeebc74b72e5eadf658325e67708ae6ed5b8346))
|
||||
* **support:** update dependency teen_process to v2.0.19 ([2ef40fe](https://github.com/appium/appium/commit/2ef40febdc717f54ea618ecfe1058b858fe2daf9))
|
||||
* **support:** update dependency teen_process to v2.0.23 ([1b0459e](https://github.com/appium/appium/commit/1b0459edd656514d8706aab8e21cd4d40de2ec5d))
|
||||
* **support:** update dependency teen_process to v2.0.24 ([bc72c66](https://github.com/appium/appium/commit/bc72c6676a5412b60e74bb143a223738ce059977))
|
||||
* **support:** update dependency teen_process to v2.0.27 ([03b2aa6](https://github.com/appium/appium/commit/03b2aa6b6e45fa0ea24c4691b039255bc4399733))
|
||||
* **support:** update dependency teen_process to v2.0.30 ([7cdb142](https://github.com/appium/appium/commit/7cdb1429a1104ad3699547f2a2dd9b237135891a))
|
||||
* **support:** update dependency teen_process to v2.0.34 ([#19218](https://github.com/appium/appium/issues/19218)) ([c28fcef](https://github.com/appium/appium/commit/c28fcefa725fbce5a0464e57946051e3cb023d85))
|
||||
* **support:** update dependency teen_process to v2.0.37 ([6d894be](https://github.com/appium/appium/commit/6d894bef6f377ebfdffdeb1adde7a72624844414))
|
||||
* **support:** update dependency teen_process to v2.0.38 ([a32dc11](https://github.com/appium/appium/commit/a32dc1110125d0f1fac9c66c17f1309145a634c7))
|
||||
* **support:** update dependency teen_process to v2.0.40 ([2837bcd](https://github.com/appium/appium/commit/2837bcdeb19532fe973a2902db5c8d730252d962))
|
||||
* **support:** update dependency teen_process to v2.0.41 ([1a34396](https://github.com/appium/appium/commit/1a34396339f71d40353d323feaf78afcf2269fc9))
|
||||
* **support:** update dependency teen_process to v2.0.42 ([e2a670e](https://github.com/appium/appium/commit/e2a670e1c4a0f061b0bfb08a6b534d9deb7bdd9c))
|
||||
* **support:** update dependency teen_process to v2.0.45 ([ea731bf](https://github.com/appium/appium/commit/ea731bf117d680496fce453ac42cfee7f05ada60))
|
||||
* **support:** update dependency teen_process to v2.0.48 ([eebc651](https://github.com/appium/appium/commit/eebc651f31c282baa7e77a6384d3ee8efc0072d6))
|
||||
* **support:** update dependency teen_process to v2.0.50 ([ca3e5d9](https://github.com/appium/appium/commit/ca3e5d90e4c51fc1dda32154e1d77e65cb44fb54))
|
||||
* **support:** update dependency teen_process to v2.0.9 ([6c7f3ef](https://github.com/appium/appium/commit/6c7f3ef670d441bdc4b693948a19dcbdc54e4764))
|
||||
|
||||
|
||||
|
||||
## [0.4.9](https://github.com/appium/appium/compare/@appium/docutils@0.4.8...@appium/docutils@0.4.9) (2023-08-23)
|
||||
|
||||
**Note:** Version bump only for package @appium/docutils
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.8](https://github.com/appium/appium/compare/@appium/docutils@0.4.7...@appium/docutils@0.4.8) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/docutils
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.7](https://github.com/appium/appium/compare/@appium/docutils@0.4.6...@appium/docutils@0.4.7) (2023-08-21)
|
||||
|
||||
**Note:** Version bump only for package @appium/docutils
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.6](https://github.com/appium/appium/compare/@appium/docutils@0.4.5...@appium/docutils@0.4.6) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update dependency semver to v7.5.4 ([03ddcdf](https://github.com/appium/appium/commit/03ddcdfcafbccf6698868a272e499cbdac41d791))
|
||||
* **types:** update dependency type-fest to v3.13.1 ([fb34ab9](https://github.com/appium/appium/commit/fb34ab917216121d2b554677a12f07a03393d218))
|
||||
|
||||
|
||||
|
||||
## [0.4.5](https://github.com/appium/appium/compare/@appium/docutils@0.4.4...@appium/docutils@0.4.5) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/docutils",
|
||||
"version": "0.4.5",
|
||||
"version": "0.4.11",
|
||||
"description": "Documentation generation utilities for Appium and related projects",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -49,9 +49,9 @@
|
||||
"start": "node ./build/lib/cli/index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.1.3",
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/typedoc-plugin-appium": "^0.6.5",
|
||||
"@appium/support": "^4.1.8",
|
||||
"@appium/tsconfig": "^0.x",
|
||||
"@appium/typedoc-plugin-appium": "^0.x",
|
||||
"@sliphua/lilconfig-ts-loader": "3.2.2",
|
||||
"@types/which": "3.0.0",
|
||||
"chalk": "4.1.2",
|
||||
@@ -65,15 +65,15 @@
|
||||
"log-symbols": "4.1.0",
|
||||
"pkg-dir": "5.0.0",
|
||||
"read-pkg": "5.2.0",
|
||||
"semver": "7.5.3",
|
||||
"semver": "7.5.4",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.4",
|
||||
"type-fest": "3.11.1",
|
||||
"teen_process": "2.0.50",
|
||||
"type-fest": "3.13.1",
|
||||
"typedoc": "0.23.28",
|
||||
"typedoc-plugin-markdown": "3.14.0",
|
||||
"typedoc-plugin-resolve-crossmodule-references": "0.3.3",
|
||||
"typescript": "4.9.5",
|
||||
"yaml": "2.3.1",
|
||||
"typescript": "5.0.4",
|
||||
"yaml": "2.3.3",
|
||||
"yargs": "17.7.2",
|
||||
"yargs-parser": "21.1.1"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
mkdocs==1.4.3
|
||||
mkdocs-material==9.1.18
|
||||
mkdocs-material-extensions==1.1.1
|
||||
mkdocs==1.5.3
|
||||
mkdocs-material==9.4.6
|
||||
mkdocs-material-extensions==1.3
|
||||
mike==1.1.2
|
||||
|
||||
@@ -3,6 +3,61 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.4.16](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.15...@appium/driver-test-support@0.4.16) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Make sure type definitions are always in sync across modules ([#19323](https://github.com/appium/appium/issues/19323)) ([de39013](https://github.com/appium/appium/commit/de39013ae501d4fc11988435737efb862cc1d820))
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
* **test-support:** update dependency sinon to v16.1.3 ([aaa7668](https://github.com/appium/appium/commit/aaa7668ae6d58f1ac6a5af957b9b214ee71c6a48))
|
||||
|
||||
|
||||
|
||||
## [0.4.15](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.14...@appium/driver-test-support@0.4.15) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **driver-test-support:** update dependency @types/lodash to v4.14.198 ([84fefd2](https://github.com/appium/appium/commit/84fefd214c40408cbbcd145723b5d8dbeec665af))
|
||||
* **driver-test-support:** update dependency chai to v4.3.10 ([7a06ec5](https://github.com/appium/appium/commit/7a06ec5041e0ca4f6bf1ed9c771cb722dd707dc4))
|
||||
* **driver-test-support:** update dependency chai to v4.3.8 ([#19059](https://github.com/appium/appium/issues/19059)) ([d85b216](https://github.com/appium/appium/commit/d85b2161b5b8ac8654e25c2f357de50a7068d8e1))
|
||||
* **support:** update definitelytyped ([595d460](https://github.com/appium/appium/commit/595d460ac8dc41d310f9e4f653acbad3c7fd50b9))
|
||||
* **support:** update dependency axios to v1.5.0 ([08913cd](https://github.com/appium/appium/commit/08913cddde295f616f0fb376cc2cb71a9409a253))
|
||||
* **support:** update dependency axios to v1.5.1 ([#19217](https://github.com/appium/appium/issues/19217)) ([3df047d](https://github.com/appium/appium/commit/3df047d128d5d032826c8f5fb605b019078b717d))
|
||||
* **test-support:** update dependency sinon to v16 ([#19161](https://github.com/appium/appium/issues/19161)) ([49b3434](https://github.com/appium/appium/commit/49b3434c2bc324b5dc9f8204242c12f04b5252af))
|
||||
* **test-support:** update dependency sinon to v16.1.0 ([126daec](https://github.com/appium/appium/commit/126daeca4e600b75cf37f9fc15a1b6e563058b3c))
|
||||
|
||||
|
||||
|
||||
## [0.4.14](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.13...@appium/driver-test-support@0.4.14) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/driver-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.4.13](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.12...@appium/driver-test-support@0.4.13) (2023-08-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **driver-test-support:** update dependency @types/lodash to v4.14.197 ([a080b72](https://github.com/appium/appium/commit/a080b729208b4e3c352456f0f230b63b0b7ee9ee))
|
||||
|
||||
|
||||
|
||||
## [0.4.12](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.11...@appium/driver-test-support@0.4.12) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **driver-test-support:** update definitelytyped ([c320e8a](https://github.com/appium/appium/commit/c320e8a1a61cb6d980d6d944ae47b60da97aa398))
|
||||
* **test-support:** update dependency sinon to v15.2.0 ([a21ae6a](https://github.com/appium/appium/commit/a21ae6ab2bcaba44ecdacae67076cf011b4e5ae8))
|
||||
* **types:** update dependency type-fest to v3.13.1 ([fb34ab9](https://github.com/appium/appium/commit/fb34ab917216121d2b554677a12f07a03393d218))
|
||||
|
||||
|
||||
|
||||
## [0.4.11](https://github.com/appium/appium/compare/@appium/driver-test-support@0.4.10...@appium/driver-test-support@0.4.11) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/driver-test-support",
|
||||
"version": "0.4.11",
|
||||
"version": "0.4.16",
|
||||
"description": "Test utilities for Appium drivers",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,18 +41,18 @@
|
||||
},
|
||||
"types": "./build/lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.13.2",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/stoppable": "1.1.1",
|
||||
"axios": "1.4.0",
|
||||
"@appium/types": "^0.14.1",
|
||||
"@types/lodash": "4.14.200",
|
||||
"@types/stoppable": "1.1.2",
|
||||
"axios": "1.5.1",
|
||||
"bluebird": "3.7.2",
|
||||
"chai": "4.3.7",
|
||||
"chai": "4.3.10",
|
||||
"get-port": "5.1.1",
|
||||
"lodash": "4.17.21",
|
||||
"sinon": "15.1.2",
|
||||
"sinon": "16.1.3",
|
||||
"source-map-support": "0.5.21",
|
||||
"stoppable": "1.1.0",
|
||||
"type-fest": "3.11.1"
|
||||
"type-fest": "3.13.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"appium": "^2.0.0-beta.43",
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.3.2](https://github.com/appium/appium/compare/@appium/eslint-config-appium-ts@0.3.1...@appium/eslint-config-appium-ts@0.3.2) (2023-10-18)
|
||||
|
||||
**Note:** Version bump only for package @appium/eslint-config-appium-ts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.1](https://github.com/appium/appium/compare/@appium/eslint-config-appium-ts@0.3.0...@appium/eslint-config-appium-ts@0.3.1) (2023-04-03)
|
||||
|
||||
**Note:** Version bump only for package @appium/eslint-config-appium-ts
|
||||
|
||||
@@ -58,7 +58,10 @@ module.exports = {
|
||||
* want to be replaced with `import()` (I am not sure if there's a rule about that?). **If this check fails**, disable the rule for the particular line.
|
||||
*/
|
||||
'@typescript-eslint/no-var-requires': 'error',
|
||||
// 'no-unused-vars': 'off',
|
||||
/**
|
||||
* Sometimes we want unused variables to be present in base class method declarations.
|
||||
*/
|
||||
'@typescript-eslint/no-unused-vars': 'warn',
|
||||
/**
|
||||
* Allow native `Promise`s. **This overrides `@appium/eslint-config-appium`.**
|
||||
* @remarks Originally, this was so that we could use [bluebird](https://npm.im/bluebird)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/eslint-config-appium-ts",
|
||||
"version": "0.3.1",
|
||||
"version": "0.3.2",
|
||||
"description": "Shared ESLint config for Appium projects (TypeScript version)",
|
||||
"keywords": [
|
||||
"eslint",
|
||||
@@ -29,10 +29,10 @@
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@appium/eslint-config-appium": "^8.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.5.0",
|
||||
"@typescript-eslint/parser": "^5.5.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.5.0 || ^6.0.0",
|
||||
"@typescript-eslint/parser": "^5.5.0 || ^6.0.0",
|
||||
"eslint": "^8.21.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-config-prettier": "^8.5.0 || ^9.0.0",
|
||||
"eslint-import-resolver-typescript": "^3.5.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-mocha": "^10.1.0",
|
||||
|
||||
@@ -3,6 +3,14 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [8.0.5](https://github.com/appium/appium/compare/@appium/eslint-config-appium@8.0.4...@appium/eslint-config-appium@8.0.5) (2023-10-18)
|
||||
|
||||
**Note:** Version bump only for package @appium/eslint-config-appium
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [8.0.4](https://github.com/appium/appium/compare/@appium/eslint-config-appium@8.0.3...@appium/eslint-config-appium@8.0.4) (2023-07-03)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/eslint-config-appium",
|
||||
"version": "8.0.4",
|
||||
"version": "8.0.5",
|
||||
"description": "Shared ESLint config for Appium projects",
|
||||
"keywords": [
|
||||
"eslint",
|
||||
@@ -31,7 +31,7 @@
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "^8.21.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-config-prettier": "^8.5.0 || ^9.0.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-mocha": "^10.1.0",
|
||||
"eslint-plugin-promise": "^6.0.0"
|
||||
|
||||
@@ -3,6 +3,65 @@
|
||||
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/execute-driver-plugin@3.0.18...@appium/execute-driver-plugin@3.0.19) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [3.0.18](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@3.0.17...@appium/execute-driver-plugin@3.0.18) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.15.10 ([545576a](https://github.com/appium/appium/commit/545576a740265284e154a9dcc82a225d3cd3481f))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.15.6 ([0830fd8](https://github.com/appium/appium/commit/0830fd8257b0d4674ea5af45689a7a5a2610ee74))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.15.8 ([b510fad](https://github.com/appium/appium/commit/b510fad303472e6de6a656f40b7d87bd64e62685))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.15.9 ([427bc8e](https://github.com/appium/appium/commit/427bc8eb0c374ecd4d53eb4fdad4b32c2bfffd00))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.0 ([207700b](https://github.com/appium/appium/commit/207700bc829b8aa19bc46b0952e7b2f890ea8c90))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.10 ([48be0f8](https://github.com/appium/appium/commit/48be0f83b05f465f9e422496dbac7e63767fa5f5))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.11 ([cef37d3](https://github.com/appium/appium/commit/cef37d3ee3aba2d93773d159f58d895e5fd6c17e))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.12 ([34d978e](https://github.com/appium/appium/commit/34d978e8504ac5e7f3b302641272676c7e0949ef))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.15 ([2281e11](https://github.com/appium/appium/commit/2281e1102826e4c03eb98f6d8b5b0630bd7ed795))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.17 ([f3614ad](https://github.com/appium/appium/commit/f3614adbde76c4ab98fd1dbfa9207fdfe84c7377))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.18 ([5d172a5](https://github.com/appium/appium/commit/5d172a58bd40a66f605ab3eaaf55d54dd895fb22))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.2 ([2d3c5cd](https://github.com/appium/appium/commit/2d3c5cd0b721074e6f7bbadc958bb8d27e9254ac))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.20 ([11926d4](https://github.com/appium/appium/commit/11926d4d39c521b88502f3fab770d8917f3f9144))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.22 ([8c7225d](https://github.com/appium/appium/commit/8c7225d4e94a0042ebf56ca9d758205c2f1a4083))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.3 ([d1a4932](https://github.com/appium/appium/commit/d1a493240973e41645a43a44f3cebe82d514b5b2))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.4 ([fea8f85](https://github.com/appium/appium/commit/fea8f8537defd16053fba5623dace4f27a8aaa1f))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.5 ([862225c](https://github.com/appium/appium/commit/862225c1d8473e175aa793bda943056359369338))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.6 ([7625218](https://github.com/appium/appium/commit/7625218c221c45b6179fc1dcf2103045e4c22718))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.16.7 ([4b09c32](https://github.com/appium/appium/commit/4b09c323d9da65f0631d150e2a402c791ec36f3d))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8.17.0 ([#19277](https://github.com/appium/appium/issues/19277)) ([f52a23c](https://github.com/appium/appium/commit/f52a23c6866b7352e1eb53ed6e737d22c81ccc34))
|
||||
* **opencv:** update definitelytyped ([d2a9a99](https://github.com/appium/appium/commit/d2a9a99418af9ce9b569bb9b98ee396faab932bb))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
* **tsconfig:** update dependency @tsconfig/node14 to v14 ([#19082](https://github.com/appium/appium/issues/19082)) ([65b3787](https://github.com/appium/appium/commit/65b3787912a4948fb1ed48e8095299bc9ba95844))
|
||||
|
||||
|
||||
|
||||
## [3.0.17](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@3.0.16...@appium/execute-driver-plugin@3.0.17) (2023-08-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v7.32.4 ([4e4eaad](https://github.com/appium/appium/commit/4e4eaad6b68386e900427aafd9afd19f43033bda))
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8 ([#18095](https://github.com/appium/appium/issues/18095)) ([b608db9](https://github.com/appium/appium/commit/b608db91a8ef0e3cad43ce3e14b625bf9234d383))
|
||||
|
||||
|
||||
|
||||
## [3.0.16](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@3.0.15...@appium/execute-driver-plugin@3.0.16) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v7.32.3 ([9a5c9ae](https://github.com/appium/appium/commit/9a5c9ae55c97ea3e5c604ecbc3f972480d091ba9))
|
||||
|
||||
|
||||
|
||||
## [3.0.15](https://github.com/appium/appium/compare/@appium/execute-driver-plugin@3.0.14...@appium/execute-driver-plugin@3.0.15) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ function coerceScriptResult(obj) {
|
||||
} catch (e) {
|
||||
log.warn(
|
||||
'Could not convert executeDriverScript to safe response!' +
|
||||
`Result was: ${JSON.stringify(obj)}. Will make it null`
|
||||
`Result was: ${JSON.stringify(obj)}. Will make it null`,
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -67,12 +67,14 @@ export default class ExecuteDriverPlugin extends BasePlugin {
|
||||
|
||||
const driverOpts = {
|
||||
sessionId: driver.sessionId,
|
||||
// Appium probably won't be behind ssl locally; if it ever is, might need to update this to
|
||||
// provide a user configurable parameter
|
||||
protocol: 'http',
|
||||
hostname: driver.serverHost,
|
||||
port: driver.serverPort,
|
||||
path: driver.serverPath,
|
||||
options: {
|
||||
// Appium probably won't be behind ssl locally; if it ever is, might need to update this to
|
||||
// provide a user configurable parameter
|
||||
protocol: 'http',
|
||||
hostname: driver.serverHost,
|
||||
port: driver.serverPort,
|
||||
path: driver.serverPath,
|
||||
},
|
||||
isW3C: true,
|
||||
isMobile: true,
|
||||
capabilities: driver.caps,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/execute-driver-plugin",
|
||||
"version": "3.0.15",
|
||||
"version": "3.0.19",
|
||||
"description": "Plugin for batching and executing driver commands with Appiums",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -38,12 +38,12 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/bluebird": "3.5.41",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21",
|
||||
"vm2": "3.9.19",
|
||||
"webdriverio": "7.32.0"
|
||||
"webdriverio": "8.17.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"appium": "^2.0.0-beta.35"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"outDir": "build",
|
||||
"checkJs": true
|
||||
"checkJs": true,
|
||||
"moduleResolution": "node10"
|
||||
},
|
||||
"extends": "@appium/tsconfig/tsconfig.plugin.json",
|
||||
"include": ["lib"]
|
||||
|
||||
@@ -3,6 +3,44 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [5.2.10](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.9...@appium/fake-driver@5.2.10) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [5.2.9](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.8...@appium/fake-driver@5.2.9) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **images-plugin:** update dependency lru-cache to v10 ([#19050](https://github.com/appium/appium/issues/19050)) ([72a806b](https://github.com/appium/appium/commit/72a806bec7c3a80747192d24dfd9d8286a751810))
|
||||
* **opencv:** update definitelytyped ([d2a9a99](https://github.com/appium/appium/commit/d2a9a99418af9ce9b569bb9b98ee396faab932bb))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
|
||||
|
||||
|
||||
## [5.2.8](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.7...@appium/fake-driver@5.2.8) (2023-08-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **universal-xml-plugin:** update dependency xpath to v0.0.33 ([#18952](https://github.com/appium/appium/issues/18952)) ([f2cff24](https://github.com/appium/appium/commit/f2cff24685e96578f17549454de7b7931c13df83))
|
||||
|
||||
|
||||
|
||||
## [5.2.7](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.6...@appium/fake-driver@5.2.7) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **universal-xml-plugin:** update dependency @xmldom/xmldom to v0.8.10 ([#18949](https://github.com/appium/appium/issues/18949)) ([12147d5](https://github.com/appium/appium/commit/12147d518fc3ac86b01c3401b9e462b5dca99ca4))
|
||||
|
||||
|
||||
|
||||
## [5.2.6](https://github.com/appium/appium/compare/@appium/fake-driver@5.2.5...@appium/fake-driver@5.2.6) (2023-07-03)
|
||||
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ const ContextsMixin: FakeDriverContextsMixin = {
|
||||
this.appModel.deactivateFrame();
|
||||
} else {
|
||||
const nodes = this.appModel.xpathQuery(`//iframe[@id="${frameId}"]`);
|
||||
if (!nodes.length) {
|
||||
if (!_.isArray(nodes) || _.isEmpty(nodes)) {
|
||||
throw new errors.NoSuchFrameError();
|
||||
}
|
||||
this.appModel.activateFrame(nodes[0]);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import B from 'bluebird';
|
||||
import {BaseDriver, errors} from 'appium/driver';
|
||||
import {deprecatedCommandsLogged} from '@appium/base-driver/build/lib/protocol/protocol';
|
||||
import {FakeApp} from './fake-app';
|
||||
|
||||
const FAKE_DRIVER_CONSTRAINTS = /** @type {const} */ ({
|
||||
@@ -167,7 +166,8 @@ export class FakeDriver extends BaseDriver {
|
||||
*/
|
||||
async getDeprecatedCommandsCalled() {
|
||||
await B.delay(1);
|
||||
return Array.from(deprecatedCommandsLogged);
|
||||
// TODO: Properly get deprecatedCommandsLogged list from the base-driver
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,7 @@ import path from 'path';
|
||||
import XMLDom from '@xmldom/xmldom';
|
||||
import xpath from 'xpath';
|
||||
import log from './logger';
|
||||
import _ from 'lodash';
|
||||
import {FakeElement} from './fake-element';
|
||||
|
||||
const SCREENSHOT = path.join(__dirname, 'screen.png');
|
||||
@@ -28,7 +29,7 @@ export class FakeApp {
|
||||
|
||||
get title() {
|
||||
let nodes = this.xpathQuery('//title');
|
||||
if (nodes.length < 1) {
|
||||
if (!_.isArray(nodes) || nodes.length < 1) {
|
||||
throw new Error('No title!');
|
||||
}
|
||||
const node = /** @type {Node} */ (nodes[0]);
|
||||
@@ -75,6 +76,11 @@ export class FakeApp {
|
||||
|
||||
setDims() {
|
||||
const nodes = this.xpathQuery('//app');
|
||||
if (!_.isArray(nodes)) {
|
||||
throw new Error(
|
||||
'Cannot fetch app dimensions because no corresponding node has benn found in the source'
|
||||
);
|
||||
}
|
||||
const app = new FakeElement(nodes[0], this);
|
||||
this._width = parseInt(app.nodeAttrs.width, 10);
|
||||
this._height = parseInt(app.nodeAttrs.height, 10);
|
||||
@@ -93,7 +99,8 @@ export class FakeApp {
|
||||
}
|
||||
|
||||
getWebviews() {
|
||||
return this.xpathQuery('//MockWebView/*[1]').map((n) => new FakeWebView(n));
|
||||
const nodes = this.xpathQuery('//MockWebView/*[1]');
|
||||
return _.isArray(nodes) ? nodes.map((n) => new FakeWebView(n)) : [];
|
||||
}
|
||||
|
||||
activateWebview(wv) {
|
||||
@@ -153,7 +160,7 @@ export class FakeApp {
|
||||
|
||||
showAlert(alertId) {
|
||||
let nodes = this.xpathQuery(`//alert[@id="${alertId}"]`);
|
||||
if (nodes.length < 1) {
|
||||
if (!_.isArray(nodes) || _.isEmpty(nodes)) {
|
||||
throw new Error(`Alert ${alertId} doesn't exist!`);
|
||||
}
|
||||
this.activeAlert = new FakeElement(nodes[0], this);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/fake-driver",
|
||||
"version": "5.2.6",
|
||||
"version": "5.2.10",
|
||||
"description": "Mock driver used internally by Appium for testing. Ignore",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -46,13 +46,13 @@
|
||||
"test:unit": "mocha --timeout 10s --slow 5s \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@xmldom/xmldom": "0.8.8",
|
||||
"@types/bluebird": "3.5.41",
|
||||
"@xmldom/xmldom": "0.8.10",
|
||||
"asyncbox": "2.9.4",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21",
|
||||
"xpath": "0.0.32"
|
||||
"xpath": "0.0.33"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"appium": "^2.0.0-beta.35"
|
||||
|
||||
@@ -131,7 +131,7 @@ function generalTests() {
|
||||
it('should throw an error if a required overload param is missing', async function () {
|
||||
await driver
|
||||
.executeScript('fake: addition', [{num3: 4}])
|
||||
.should.be.rejectedWith(/Parameters were incorrect/);
|
||||
.should.be.rejectedWith(/required parameters are missing/);
|
||||
});
|
||||
|
||||
it('should throw an error if sending in wrong types of params', async function () {
|
||||
|
||||
@@ -3,6 +3,57 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.1.26](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.25...@appium/fake-plugin@3.1.26) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [3.1.25](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.24...@appium/fake-plugin@3.1.25) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **opencv:** update definitelytyped ([d2a9a99](https://github.com/appium/appium/commit/d2a9a99418af9ce9b569bb9b98ee396faab932bb))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
|
||||
|
||||
|
||||
## [3.1.24](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.23...@appium/fake-plugin@3.1.24) (2023-08-23)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.23](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.22...@appium/fake-plugin@3.1.23) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.22](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.21...@appium/fake-plugin@3.1.22) (2023-08-21)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.21](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.20...@appium/fake-plugin@3.1.21) (2023-08-17)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.1.20](https://github.com/appium/appium/compare/@appium/fake-plugin@3.1.19...@appium/fake-plugin@3.1.20) (2023-07-24)
|
||||
|
||||
**Note:** Version bump only for package @appium/fake-plugin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/fake-plugin",
|
||||
"version": "3.1.20",
|
||||
"version": "3.1.26",
|
||||
"description": "A fake Appium 2.0 plugin",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -39,9 +39,9 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/base-plugin": "^2.2.16",
|
||||
"@appium/support": "^4.1.3",
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@appium/base-plugin": "^2.2.22",
|
||||
"@appium/support": "^4.1.8",
|
||||
"@types/bluebird": "3.5.41",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
"source-map-support": "0.5.21"
|
||||
|
||||
@@ -3,6 +3,39 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.1.6](https://github.com/appium/appium/compare/@appium/images-plugin@2.1.5...@appium/images-plugin@2.1.6) (2023-10-19)
|
||||
|
||||
**Note:** Version bump only for package @appium/images-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.5](https://github.com/appium/appium/compare/@appium/images-plugin@2.1.4...@appium/images-plugin@2.1.5) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **images-plugin:** update dependency lru-cache to v10 ([#19050](https://github.com/appium/appium/issues/19050)) ([72a806b](https://github.com/appium/appium/commit/72a806bec7c3a80747192d24dfd9d8286a751810))
|
||||
|
||||
|
||||
|
||||
## [2.1.4](https://github.com/appium/appium/compare/@appium/images-plugin@2.1.3...@appium/images-plugin@2.1.4) (2023-08-21)
|
||||
|
||||
**Note:** Version bump only for package @appium/images-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.3](https://github.com/appium/appium/compare/@appium/images-plugin@2.1.2...@appium/images-plugin@2.1.3) (2023-08-17)
|
||||
|
||||
**Note:** Version bump only for package @appium/images-plugin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.2](https://github.com/appium/appium/compare/@appium/images-plugin@2.1.1...@appium/images-plugin@2.1.2) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ assert File.size? 'find_result_visual.png'
|
||||
The image must have the same scale and look the same. However, you can add a scaling transformation beforehand.
|
||||
|
||||
official doc:
|
||||
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-comparison.md
|
||||
https://github.com/appium/appium/blob/master/packages/images-plugin/docs/image-comparison.md
|
||||
OpenCV algorithm doc:
|
||||
https://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html
|
||||
official sample code:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import _ from 'lodash';
|
||||
import LRU from 'lru-cache';
|
||||
import { LRUCache } from 'lru-cache';
|
||||
import {errors} from 'appium/driver';
|
||||
import {ImageElement} from './image-element';
|
||||
import {compareImages} from './compare';
|
||||
@@ -41,7 +41,7 @@ export default class ImageElementFinder {
|
||||
* @param {number} max
|
||||
*/
|
||||
constructor(max = MAX_CACHE_ITEMS) {
|
||||
this._imgElCache = new LRU({
|
||||
this._imgElCache = new LRUCache({
|
||||
ttl: MAX_CACHE_AGE_MS,
|
||||
updateAgeOnGet: true,
|
||||
max,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/images-plugin",
|
||||
"version": "2.1.2",
|
||||
"version": "2.1.6",
|
||||
"description": "Plugin for working with images and image elements in Appium",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -39,10 +39,10 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/opencv": "^2.1.1",
|
||||
"@appium/opencv": "^2.1.5",
|
||||
"lodash": "4.17.21",
|
||||
"lru-cache": "7.18.3",
|
||||
"sharp": "0.32.1",
|
||||
"lru-cache": "10.0.1",
|
||||
"sharp": "0.32.6",
|
||||
"source-map-support": "0.5.21"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
@@ -3,6 +3,41 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [2.1.5](https://github.com/appium/appium/compare/@appium/opencv@2.1.4...@appium/opencv@2.1.5) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [2.1.4](https://github.com/appium/appium/compare/@appium/opencv@2.1.3...@appium/opencv@2.1.4) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **opencv:** update definitelytyped ([d2a9a99](https://github.com/appium/appium/commit/d2a9a99418af9ce9b569bb9b98ee396faab932bb))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
|
||||
|
||||
|
||||
## [2.1.3](https://github.com/appium/appium/compare/@appium/opencv@2.1.2...@appium/opencv@2.1.3) (2023-08-21)
|
||||
|
||||
**Note:** Version bump only for package @appium/opencv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.2](https://github.com/appium/appium/compare/@appium/opencv@2.1.1...@appium/opencv@2.1.2) (2023-08-17)
|
||||
|
||||
**Note:** Version bump only for package @appium/opencv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [2.1.1](https://github.com/appium/appium/compare/@appium/opencv@2.1.0...@appium/opencv@2.1.1) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/opencv",
|
||||
"version": "2.1.1",
|
||||
"version": "2.1.5",
|
||||
"description": "OpenCV-related helper library",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,11 +41,11 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/bluebird": "3.5.38",
|
||||
"@types/bluebird": "3.5.41",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
"opencv-bindings": "4.5.5",
|
||||
"sharp": "0.32.1",
|
||||
"sharp": "0.32.6",
|
||||
"source-map-support": "0.5.21"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -3,6 +3,58 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.3.23](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.22...@appium/plugin-test-support@0.3.23) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Make sure type definitions are always in sync across modules ([#19323](https://github.com/appium/appium/issues/19323)) ([de39013](https://github.com/appium/appium/commit/de39013ae501d4fc11988435737efb862cc1d820))
|
||||
|
||||
|
||||
|
||||
## [0.3.22](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.21...@appium/plugin-test-support@0.3.22) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update dependency teen_process to v2.0.10 ([bc1b56a](https://github.com/appium/appium/commit/bc1b56a3c162ed8686d3d7956c30eb1f7682b1a7))
|
||||
* **support:** update dependency teen_process to v2.0.12 ([c5d6df7](https://github.com/appium/appium/commit/c5d6df7a000d64e8591a56ce5ef65baa2071a36b))
|
||||
* **support:** update dependency teen_process to v2.0.13 ([a0c4b84](https://github.com/appium/appium/commit/a0c4b84fb7d3977b7a4ca0a07fadd49ee355791a))
|
||||
* **support:** update dependency teen_process to v2.0.18 ([ffeebc7](https://github.com/appium/appium/commit/ffeebc74b72e5eadf658325e67708ae6ed5b8346))
|
||||
* **support:** update dependency teen_process to v2.0.19 ([2ef40fe](https://github.com/appium/appium/commit/2ef40febdc717f54ea618ecfe1058b858fe2daf9))
|
||||
* **support:** update dependency teen_process to v2.0.23 ([1b0459e](https://github.com/appium/appium/commit/1b0459edd656514d8706aab8e21cd4d40de2ec5d))
|
||||
* **support:** update dependency teen_process to v2.0.24 ([bc72c66](https://github.com/appium/appium/commit/bc72c6676a5412b60e74bb143a223738ce059977))
|
||||
* **support:** update dependency teen_process to v2.0.27 ([03b2aa6](https://github.com/appium/appium/commit/03b2aa6b6e45fa0ea24c4691b039255bc4399733))
|
||||
* **support:** update dependency teen_process to v2.0.30 ([7cdb142](https://github.com/appium/appium/commit/7cdb1429a1104ad3699547f2a2dd9b237135891a))
|
||||
* **support:** update dependency teen_process to v2.0.34 ([#19218](https://github.com/appium/appium/issues/19218)) ([c28fcef](https://github.com/appium/appium/commit/c28fcefa725fbce5a0464e57946051e3cb023d85))
|
||||
* **support:** update dependency teen_process to v2.0.37 ([6d894be](https://github.com/appium/appium/commit/6d894bef6f377ebfdffdeb1adde7a72624844414))
|
||||
* **support:** update dependency teen_process to v2.0.38 ([a32dc11](https://github.com/appium/appium/commit/a32dc1110125d0f1fac9c66c17f1309145a634c7))
|
||||
* **support:** update dependency teen_process to v2.0.40 ([2837bcd](https://github.com/appium/appium/commit/2837bcdeb19532fe973a2902db5c8d730252d962))
|
||||
* **support:** update dependency teen_process to v2.0.41 ([1a34396](https://github.com/appium/appium/commit/1a34396339f71d40353d323feaf78afcf2269fc9))
|
||||
* **support:** update dependency teen_process to v2.0.42 ([e2a670e](https://github.com/appium/appium/commit/e2a670e1c4a0f061b0bfb08a6b534d9deb7bdd9c))
|
||||
* **support:** update dependency teen_process to v2.0.45 ([ea731bf](https://github.com/appium/appium/commit/ea731bf117d680496fce453ac42cfee7f05ada60))
|
||||
* **support:** update dependency teen_process to v2.0.48 ([eebc651](https://github.com/appium/appium/commit/eebc651f31c282baa7e77a6384d3ee8efc0072d6))
|
||||
* **support:** update dependency teen_process to v2.0.50 ([ca3e5d9](https://github.com/appium/appium/commit/ca3e5d90e4c51fc1dda32154e1d77e65cb44fb54))
|
||||
* **support:** update dependency teen_process to v2.0.9 ([6c7f3ef](https://github.com/appium/appium/commit/6c7f3ef670d441bdc4b693948a19dcbdc54e4764))
|
||||
|
||||
|
||||
|
||||
## [0.3.21](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.20...@appium/plugin-test-support@0.3.21) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.20](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.19...@appium/plugin-test-support@0.3.20) (2023-08-17)
|
||||
|
||||
**Note:** Version bump only for package @appium/plugin-test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.3.19](https://github.com/appium/appium/compare/@appium/plugin-test-support@0.3.18...@appium/plugin-test-support@0.3.19) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/plugin-test-support",
|
||||
"version": "0.3.19",
|
||||
"version": "0.3.23",
|
||||
"description": "Testing utilities for Appium plugins",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,11 +41,11 @@
|
||||
"test:unit": "exit 0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/types": "^0.13.2",
|
||||
"@appium/types": "^0.14.1",
|
||||
"get-port": "5.1.1",
|
||||
"log-symbols": "4.1.0",
|
||||
"source-map-support": "0.5.21",
|
||||
"teen_process": "2.0.4"
|
||||
"teen_process": "2.0.50"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"appium": "^2.0.0-beta.43",
|
||||
|
||||
@@ -3,6 +3,29 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.4.1](https://github.com/appium/appium/compare/@appium/schema@0.4.0...@appium/schema@0.4.1) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [0.4.0](https://github.com/appium/appium/compare/@appium/schema@0.3.1...@appium/schema@0.4.0) (2023-10-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **base-driver:** Add server support of TLS and SPDY protocols ([#19105](https://github.com/appium/appium/issues/19105)) ([5926919](https://github.com/appium/appium/commit/5926919177e3df675723c80d800f933fdbda5824))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
|
||||
|
||||
|
||||
## [0.3.1](https://github.com/appium/appium/compare/@appium/schema@0.3.0...@appium/schema@0.3.1) (2023-07-03)
|
||||
|
||||
|
||||
|
||||
@@ -288,6 +288,18 @@ export const AppiumConfigJsonSchema = /** @type {const} */ ({
|
||||
title: 'webhook config',
|
||||
type: 'string',
|
||||
},
|
||||
'ssl-cert-path': {
|
||||
description: 'Full path to the .cert file if TLS is used. Must be provided together with "ssl-key-path"',
|
||||
title: '.cert file path',
|
||||
appiumCliDest: 'sslCertificatePath',
|
||||
type: 'string',
|
||||
},
|
||||
'ssl-key-path': {
|
||||
description: 'Full path to the .key file if TLS is used. Must be provided together with "ssl-cert-path"',
|
||||
title: '.key file path',
|
||||
appiumCliDest: 'sslKeyPath',
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
title: 'server config',
|
||||
type: 'object',
|
||||
|
||||
@@ -281,6 +281,18 @@
|
||||
"format": "uri",
|
||||
"title": "webhook config",
|
||||
"type": "string"
|
||||
},
|
||||
"ssl-cert-path": {
|
||||
"description": "Full path to the .cert file if TLS is used. Must be provided together with \"ssl-key-path\"",
|
||||
"title": ".cert file path",
|
||||
"appiumCliDest": "sslCertificatePath",
|
||||
"type": "string"
|
||||
},
|
||||
"ssl-key-path": {
|
||||
"description": "Full path to the .key file if TLS is used. Must be provided together with \"ssl-cert-path\"",
|
||||
"title": ".key file path",
|
||||
"appiumCliDest": "sslKeyPath",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"title": "server config",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/schema",
|
||||
"version": "0.3.1",
|
||||
"version": "0.4.1",
|
||||
"description": "Appium Configuration Schema",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -38,7 +38,7 @@
|
||||
"test": "exit 0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/json-schema": "7.0.12",
|
||||
"@types/json-schema": "7.0.14",
|
||||
"json-schema": "0.4.0",
|
||||
"source-map-support": "0.5.21"
|
||||
},
|
||||
|
||||
@@ -3,6 +3,91 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [4.1.8](https://github.com/appium/appium/compare/@appium/support@4.1.7...@appium/support@4.1.8) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Make sure type definitions are always in sync across modules ([#19323](https://github.com/appium/appium/issues/19323)) ([de39013](https://github.com/appium/appium/commit/de39013ae501d4fc11988435737efb862cc1d820))
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [4.1.7](https://github.com/appium/appium/compare/@appium/support@4.1.6...@appium/support@4.1.7) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **images-plugin:** update dependency lru-cache to v10 ([#19050](https://github.com/appium/appium/issues/19050)) ([72a806b](https://github.com/appium/appium/commit/72a806bec7c3a80747192d24dfd9d8286a751810))
|
||||
* **support:** update definitelytyped ([3b44c7d](https://github.com/appium/appium/commit/3b44c7d8f5b89f9357dfe6bb56b54799bbe0a921))
|
||||
* **support:** update definitelytyped ([595d460](https://github.com/appium/appium/commit/595d460ac8dc41d310f9e4f653acbad3c7fd50b9))
|
||||
* **support:** update definitelytyped ([b6a76ce](https://github.com/appium/appium/commit/b6a76ce91e2765c22f84e389b93f780e0b4490c0))
|
||||
* **support:** update definitelytyped ([3e73600](https://github.com/appium/appium/commit/3e7360021dba0f8e8967094476fe92646ba5e35b))
|
||||
* **support:** update definitelytyped ([81b077f](https://github.com/appium/appium/commit/81b077fdc9300d2dbcd6b6a6a49dc5a84982c84c))
|
||||
* **support:** update dependency @types/pluralize to v0.0.31 ([26a6c62](https://github.com/appium/appium/commit/26a6c62512afb5c1b39854173fdc34be6d7665f1))
|
||||
* **support:** update dependency @types/semver to v7.5.1 ([a0f59d0](https://github.com/appium/appium/commit/a0f59d05945e627602407d1d42e7a3a58861b11f))
|
||||
* **support:** update dependency @types/teen_process to v2.0.1 ([d2f19aa](https://github.com/appium/appium/commit/d2f19aab935cc6ec00a51f042b5f02674a772198))
|
||||
* **support:** update dependency archiver to v6 ([#19051](https://github.com/appium/appium/issues/19051)) ([a3245dc](https://github.com/appium/appium/commit/a3245dcf2b58d9c40e72e666ccd4a095b7cc984b))
|
||||
* **support:** update dependency archiver to v6.0.1 ([#19111](https://github.com/appium/appium/issues/19111)) ([263bb43](https://github.com/appium/appium/commit/263bb43086c5e753cf4170953cb282f85d59b5a8))
|
||||
* **support:** update dependency axios to v1.5.0 ([08913cd](https://github.com/appium/appium/commit/08913cddde295f616f0fb376cc2cb71a9409a253))
|
||||
* **support:** update dependency axios to v1.5.1 ([#19217](https://github.com/appium/appium/issues/19217)) ([3df047d](https://github.com/appium/appium/commit/3df047d128d5d032826c8f5fb605b019078b717d))
|
||||
* **support:** update dependency glob to v10 ([#19094](https://github.com/appium/appium/issues/19094)) ([faca496](https://github.com/appium/appium/commit/faca49690a327095362619ba5cc04a03b3e11993))
|
||||
* **support:** update dependency glob to v10 ([#19185](https://github.com/appium/appium/issues/19185)) ([d336b51](https://github.com/appium/appium/commit/d336b51578e449a110c002f9bc216e114c2dd5e0))
|
||||
* **support:** update dependency teen_process to v2.0.10 ([bc1b56a](https://github.com/appium/appium/commit/bc1b56a3c162ed8686d3d7956c30eb1f7682b1a7))
|
||||
* **support:** update dependency teen_process to v2.0.12 ([c5d6df7](https://github.com/appium/appium/commit/c5d6df7a000d64e8591a56ce5ef65baa2071a36b))
|
||||
* **support:** update dependency teen_process to v2.0.13 ([a0c4b84](https://github.com/appium/appium/commit/a0c4b84fb7d3977b7a4ca0a07fadd49ee355791a))
|
||||
* **support:** update dependency teen_process to v2.0.18 ([ffeebc7](https://github.com/appium/appium/commit/ffeebc74b72e5eadf658325e67708ae6ed5b8346))
|
||||
* **support:** update dependency teen_process to v2.0.19 ([2ef40fe](https://github.com/appium/appium/commit/2ef40febdc717f54ea618ecfe1058b858fe2daf9))
|
||||
* **support:** update dependency teen_process to v2.0.23 ([1b0459e](https://github.com/appium/appium/commit/1b0459edd656514d8706aab8e21cd4d40de2ec5d))
|
||||
* **support:** update dependency teen_process to v2.0.24 ([bc72c66](https://github.com/appium/appium/commit/bc72c6676a5412b60e74bb143a223738ce059977))
|
||||
* **support:** update dependency teen_process to v2.0.27 ([03b2aa6](https://github.com/appium/appium/commit/03b2aa6b6e45fa0ea24c4691b039255bc4399733))
|
||||
* **support:** update dependency teen_process to v2.0.30 ([7cdb142](https://github.com/appium/appium/commit/7cdb1429a1104ad3699547f2a2dd9b237135891a))
|
||||
* **support:** update dependency teen_process to v2.0.34 ([#19218](https://github.com/appium/appium/issues/19218)) ([c28fcef](https://github.com/appium/appium/commit/c28fcefa725fbce5a0464e57946051e3cb023d85))
|
||||
* **support:** update dependency teen_process to v2.0.37 ([6d894be](https://github.com/appium/appium/commit/6d894bef6f377ebfdffdeb1adde7a72624844414))
|
||||
* **support:** update dependency teen_process to v2.0.38 ([a32dc11](https://github.com/appium/appium/commit/a32dc1110125d0f1fac9c66c17f1309145a634c7))
|
||||
* **support:** update dependency teen_process to v2.0.40 ([2837bcd](https://github.com/appium/appium/commit/2837bcdeb19532fe973a2902db5c8d730252d962))
|
||||
* **support:** update dependency teen_process to v2.0.41 ([1a34396](https://github.com/appium/appium/commit/1a34396339f71d40353d323feaf78afcf2269fc9))
|
||||
* **support:** update dependency teen_process to v2.0.42 ([e2a670e](https://github.com/appium/appium/commit/e2a670e1c4a0f061b0bfb08a6b534d9deb7bdd9c))
|
||||
* **support:** update dependency teen_process to v2.0.45 ([ea731bf](https://github.com/appium/appium/commit/ea731bf117d680496fce453ac42cfee7f05ada60))
|
||||
* **support:** update dependency teen_process to v2.0.48 ([eebc651](https://github.com/appium/appium/commit/eebc651f31c282baa7e77a6384d3ee8efc0072d6))
|
||||
* **support:** update dependency teen_process to v2.0.50 ([ca3e5d9](https://github.com/appium/appium/commit/ca3e5d90e4c51fc1dda32154e1d77e65cb44fb54))
|
||||
* **support:** update dependency teen_process to v2.0.9 ([6c7f3ef](https://github.com/appium/appium/commit/6c7f3ef670d441bdc4b693948a19dcbdc54e4764))
|
||||
* **support:** update dependency uuid to v9.0.1 ([73aa017](https://github.com/appium/appium/commit/73aa01786d113a0a3c885c40f58ef9cef3c4e52b))
|
||||
* **support:** update dependency which to v4 ([#19095](https://github.com/appium/appium/issues/19095)) ([6f51456](https://github.com/appium/appium/commit/6f51456da948685f606bed7575b5a4cf98b99c74))
|
||||
|
||||
|
||||
|
||||
## [4.1.6](https://github.com/appium/appium/compare/@appium/support@4.1.5...@appium/support@4.1.6) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [4.1.5](https://github.com/appium/appium/compare/@appium/support@4.1.4...@appium/support@4.1.5) (2023-08-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **support:** update dependency archiver to v5.3.2 ([e73e47d](https://github.com/appium/appium/commit/e73e47de18ff7e327a06584121e85756506ab21d))
|
||||
|
||||
|
||||
|
||||
## [4.1.4](https://github.com/appium/appium/compare/@appium/support@4.1.3...@appium/support@4.1.4) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **driver-test-support:** update definitelytyped ([c320e8a](https://github.com/appium/appium/commit/c320e8a1a61cb6d980d6d944ae47b60da97aa398))
|
||||
* **support:** update dependency glob to v10 ([#18490](https://github.com/appium/appium/issues/18490)) ([aaf31a5](https://github.com/appium/appium/commit/aaf31a577cb0b9cbe22646dcd888dc393a03aa11))
|
||||
* **support:** update dependency plist to v3.1.0 ([f9ba313](https://github.com/appium/appium/commit/f9ba31383ad2c97f8dc5999c8a28e6bc6345b192))
|
||||
* **support:** update dependency semver to v7.5.4 ([03ddcdf](https://github.com/appium/appium/commit/03ddcdfcafbccf6698868a272e499cbdac41d791))
|
||||
* **test-support:** update dependency @colors/colors to v1.6.0 ([1358937](https://github.com/appium/appium/commit/1358937db2edf08ce1ebe3dff2f70ac6b07cd373))
|
||||
* **types:** update dependency type-fest to v3.13.1 ([fb34ab9](https://github.com/appium/appium/commit/fb34ab917216121d2b554677a12f07a03393d218))
|
||||
|
||||
|
||||
|
||||
## [4.1.3](https://github.com/appium/appium/compare/@appium/support@4.1.2...@appium/support@4.1.3) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
rmSync,
|
||||
open,
|
||||
} from 'fs';
|
||||
import glob from 'glob';
|
||||
import { glob } from 'glob';
|
||||
import klaw from 'klaw';
|
||||
import _ from 'lodash';
|
||||
import mv from 'mv';
|
||||
@@ -158,7 +158,9 @@ const fs = {
|
||||
* Given a glob pattern, resolve with list of files matching that pattern
|
||||
* @see https://github.com/isaacs/node-glob
|
||||
*/
|
||||
glob: /** @type {(pattern: string, opts?: glob.IOptions) => B<string[]>} */ (B.promisify(glob)),
|
||||
glob: /** @type {(pattern: string, opts?: import('glob').GlobOptions) => B<string[]>} */ (
|
||||
(pattern, options) => B.resolve(options ? glob(pattern, options) : glob(pattern))
|
||||
),
|
||||
|
||||
/**
|
||||
* Sanitize a filename
|
||||
|
||||
@@ -84,10 +84,8 @@ function localIp() {
|
||||
let ip = _.chain(os.networkInterfaces())
|
||||
.values()
|
||||
.flatten()
|
||||
// @ts-ignore
|
||||
.filter(function (val) {
|
||||
return val.family === 'IPv4' && val.internal === false;
|
||||
})
|
||||
// @ts-ignore this filter works fine
|
||||
.filter(({family, internal}) => family === 'IPv4' && internal === false)
|
||||
.map('address')
|
||||
.first()
|
||||
.value();
|
||||
@@ -136,23 +134,21 @@ function safeJsonParse(obj) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Stringifies the object passed in, converting Buffers into Strings for better
|
||||
* display. This mimics JSON.stringify (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)
|
||||
* except the `replacer` argument can only be a function.
|
||||
*
|
||||
* @param {object} obj - the object to be serialized
|
||||
* @param {?function} replacer - function to transform the properties added to the
|
||||
* @param {any} obj - the object to be serialized
|
||||
* @param {((key:any, value:any) => any)?} replacer - function to transform the properties added to the
|
||||
* serialized object
|
||||
* @param {?number|string} space - used to insert white space into the output JSON
|
||||
* @param {number|string|undefined} space - used to insert white space into the output JSON
|
||||
* string for readability purposes. Defaults to 2
|
||||
* returns {string} - the JSON object serialized as a string
|
||||
* @returns {string} - the JSON object serialized as a string
|
||||
*/
|
||||
function jsonStringify(obj, replacer, space = 2) {
|
||||
function jsonStringify(obj, replacer = null, space = 2) {
|
||||
// if no replacer is passed, or it is not a function, just use a pass-through
|
||||
if (!_.isFunction(replacer)) {
|
||||
replacer = (k, v) => v;
|
||||
}
|
||||
const replacerFunc = _.isFunction(replacer) ? replacer : (k, v) => v;
|
||||
|
||||
// Buffers cannot be serialized in a readable way
|
||||
const bufferToJSON = Buffer.prototype.toJSON;
|
||||
@@ -162,7 +158,7 @@ function jsonStringify(obj, replacer, space = 2) {
|
||||
obj,
|
||||
(key, value) => {
|
||||
const updatedValue = Buffer.isBuffer(value) ? value.toString('utf8') : value;
|
||||
return replacer(key, updatedValue);
|
||||
return replacerFunc(key, updatedValue);
|
||||
},
|
||||
space
|
||||
);
|
||||
|
||||
@@ -138,6 +138,7 @@ class ZipExtractor {
|
||||
const openReadStream = B.promisify(this.zipfile.openReadStream.bind(this.zipfile));
|
||||
const readStream = await openReadStream(entry);
|
||||
if (isSymlink) {
|
||||
// @ts-ignore This typecast is ok
|
||||
const link = await getStream(readStream);
|
||||
await fs.symlink(link, dest);
|
||||
} else {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/support",
|
||||
"version": "4.1.3",
|
||||
"version": "4.1.8",
|
||||
"description": "Support libs used across appium packages",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -41,35 +41,34 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/tsconfig": "^0.3.0",
|
||||
"@appium/types": "^0.13.2",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@types/archiver": "5.3.2",
|
||||
"@types/base64-stream": "1.0.2",
|
||||
"@types/find-root": "1.1.2",
|
||||
"@types/glob": "8.1.0",
|
||||
"@types/jsftp": "2.1.2",
|
||||
"@types/klaw": "3.0.3",
|
||||
"@types/lockfile": "1.0.2",
|
||||
"@types/mv": "2.1.2",
|
||||
"@types/ncp": "2.0.5",
|
||||
"@types/npmlog": "4.1.4",
|
||||
"@types/pluralize": "0.0.29",
|
||||
"@types/semver": "7.5.0",
|
||||
"@types/shell-quote": "1.7.1",
|
||||
"@types/supports-color": "8.1.1",
|
||||
"@types/teen_process": "2.0.0",
|
||||
"@types/uuid": "9.0.2",
|
||||
"@appium/tsconfig": "^0.x",
|
||||
"@appium/types": "^0.14.1",
|
||||
"@colors/colors": "1.6.0",
|
||||
"@types/archiver": "5.3.4",
|
||||
"@types/base64-stream": "1.0.4",
|
||||
"@types/find-root": "1.1.3",
|
||||
"@types/jsftp": "2.1.4",
|
||||
"@types/klaw": "3.0.5",
|
||||
"@types/lockfile": "1.0.3",
|
||||
"@types/mv": "2.1.3",
|
||||
"@types/ncp": "2.0.7",
|
||||
"@types/npmlog": "4.1.5",
|
||||
"@types/pluralize": "0.0.32",
|
||||
"@types/semver": "7.5.4",
|
||||
"@types/shell-quote": "1.7.3",
|
||||
"@types/supports-color": "8.1.2",
|
||||
"@types/teen_process": "2.0.1",
|
||||
"@types/uuid": "9.0.6",
|
||||
"@types/which": "3.0.0",
|
||||
"archiver": "5.3.1",
|
||||
"axios": "1.4.0",
|
||||
"archiver": "6.0.1",
|
||||
"axios": "1.5.1",
|
||||
"base64-stream": "1.0.0",
|
||||
"bluebird": "3.7.2",
|
||||
"bplist-creator": "0.1.1",
|
||||
"bplist-parser": "0.3.2",
|
||||
"form-data": "4.0.0",
|
||||
"get-stream": "6.0.1",
|
||||
"glob": "8.1.0",
|
||||
"glob": "10.3.10",
|
||||
"jsftp": "2.1.3",
|
||||
"klaw": "4.1.0",
|
||||
"lockfile": "1.0.4",
|
||||
@@ -81,23 +80,23 @@
|
||||
"npmlog": "7.0.1",
|
||||
"opencv-bindings": "4.5.5",
|
||||
"pkg-dir": "5.0.0",
|
||||
"plist": "3.0.6",
|
||||
"plist": "3.1.0",
|
||||
"pluralize": "8.0.0",
|
||||
"read-pkg": "5.2.0",
|
||||
"resolve-from": "5.0.0",
|
||||
"sanitize-filename": "1.6.3",
|
||||
"semver": "7.5.3",
|
||||
"semver": "7.5.4",
|
||||
"shell-quote": "1.8.1",
|
||||
"source-map-support": "0.5.21",
|
||||
"supports-color": "8.1.1",
|
||||
"teen_process": "2.0.4",
|
||||
"type-fest": "3.11.1",
|
||||
"uuid": "9.0.0",
|
||||
"which": "3.0.1",
|
||||
"teen_process": "2.0.50",
|
||||
"type-fest": "3.13.1",
|
||||
"uuid": "9.0.1",
|
||||
"which": "4.0.0",
|
||||
"yauzl": "2.10.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"sharp": "0.32.1"
|
||||
"sharp": "0.32.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
|
||||
|
||||
@@ -3,6 +3,51 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [3.0.26](https://github.com/appium/appium/compare/@appium/test-support@3.0.25...@appium/test-support@3.0.26) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **test-support:** update dependency sinon to v16.1.3 ([aaa7668](https://github.com/appium/appium/commit/aaa7668ae6d58f1ac6a5af957b9b214ee71c6a48))
|
||||
|
||||
|
||||
|
||||
## [3.0.25](https://github.com/appium/appium/compare/@appium/test-support@3.0.24...@appium/test-support@3.0.25) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **test-support:** update dependency sinon to v16 ([#19161](https://github.com/appium/appium/issues/19161)) ([49b3434](https://github.com/appium/appium/commit/49b3434c2bc324b5dc9f8204242c12f04b5252af))
|
||||
* **test-support:** update dependency sinon to v16.1.0 ([126daec](https://github.com/appium/appium/commit/126daeca4e600b75cf37f9fc15a1b6e563058b3c))
|
||||
|
||||
|
||||
|
||||
## [3.0.24](https://github.com/appium/appium/compare/@appium/test-support@3.0.23...@appium/test-support@3.0.24) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.23](https://github.com/appium/appium/compare/@appium/test-support@3.0.22...@appium/test-support@3.0.23) (2023-08-21)
|
||||
|
||||
**Note:** Version bump only for package @appium/test-support
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.0.22](https://github.com/appium/appium/compare/@appium/test-support@3.0.21...@appium/test-support@3.0.22) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **test-support:** update dependency @colors/colors to v1.6.0 ([1358937](https://github.com/appium/appium/commit/1358937db2edf08ce1ebe3dff2f70ac6b07cd373))
|
||||
* **test-support:** update dependency sinon to v15.2.0 ([a21ae6a](https://github.com/appium/appium/commit/a21ae6ab2bcaba44ecdacae67076cf011b4e5ae8))
|
||||
|
||||
|
||||
|
||||
## [3.0.21](https://github.com/appium/appium/compare/@appium/test-support@3.0.20...@appium/test-support@3.0.21) (2023-07-24)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/test-support",
|
||||
"version": "3.0.21",
|
||||
"version": "3.0.26",
|
||||
"description": "A collection of test utilities used across Appium packages",
|
||||
"keywords": [
|
||||
"automation",
|
||||
@@ -45,12 +45,12 @@
|
||||
"test:unit": "mocha \"./test/unit/**/*.spec.js\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@appium/support": "^4.1.3",
|
||||
"@colors/colors": "1.5.0",
|
||||
"@appium/support": "^4.1.8",
|
||||
"@colors/colors": "1.6.0",
|
||||
"bluebird": "3.7.2",
|
||||
"lodash": "4.17.21",
|
||||
"loud-rejection": "2.2.0",
|
||||
"sinon": "15.1.2",
|
||||
"sinon": "16.1.3",
|
||||
"source-map-support": "0.5.21"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -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.3.2](https://github.com/appium/appium/compare/@appium/tsconfig@0.3.1...@appium/tsconfig@0.3.2) (2023-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **tsconfig:** update dependency @tsconfig/node14 to v14 ([#19082](https://github.com/appium/appium/issues/19082)) ([65b3787](https://github.com/appium/appium/commit/65b3787912a4948fb1ed48e8095299bc9ba95844))
|
||||
|
||||
|
||||
|
||||
## [0.3.1](https://github.com/appium/appium/compare/@appium/tsconfig@0.3.0...@appium/tsconfig@0.3.1) (2023-08-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **execute-driver-plugin:** update dependency webdriverio to v8 ([#18095](https://github.com/appium/appium/issues/18095)) ([b608db9](https://github.com/appium/appium/commit/b608db91a8ef0e3cad43ce3e14b625bf9234d383))
|
||||
|
||||
|
||||
|
||||
# [0.3.0](https://github.com/appium/appium/compare/@appium/tsconfig@0.2.4...@appium/tsconfig@0.3.0) (2023-04-10)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/tsconfig",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.2",
|
||||
"description": "Shared TypeScript Config for Appium",
|
||||
"main": "tsconfig.json",
|
||||
"keywords": [
|
||||
@@ -27,7 +27,7 @@
|
||||
"npm": ">=8"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tsconfig/node14": "1.0.3"
|
||||
"@tsconfig/node14": "14.1.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test:smoke": "node tsconfig.json && node tsconfig.plugin.json"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"appium/plugin": ["../packages/appium/plugin"],
|
||||
"@appium/plugin-test-support": ["../packages/plugin-test-support"]
|
||||
},
|
||||
"types": ["webdriverio/async"]
|
||||
"types": ["webdriverio"]
|
||||
},
|
||||
"extends": "./tsconfig.json",
|
||||
"references": [
|
||||
|
||||
@@ -3,6 +3,16 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.6.6](https://github.com/appium/appium/compare/@appium/typedoc-plugin-appium@0.6.5...@appium/typedoc-plugin-appium@0.6.6) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **typedoc-plugin-appium:** update dependency handlebars to v4.7.8 ([#18947](https://github.com/appium/appium/issues/18947)) ([a888e26](https://github.com/appium/appium/commit/a888e263317839cecbc2cb42e183d190e136624d))
|
||||
* **types:** update dependency type-fest to v3.13.1 ([fb34ab9](https://github.com/appium/appium/commit/fb34ab917216121d2b554677a12f07a03393d218))
|
||||
|
||||
|
||||
|
||||
## [0.6.5](https://github.com/appium/appium/compare/@appium/typedoc-plugin-appium@0.6.4...@appium/typedoc-plugin-appium@0.6.5) (2023-06-14)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@appium/typedoc-plugin-appium",
|
||||
"version": "0.6.5",
|
||||
"version": "0.6.6",
|
||||
"description": "TypeDoc plugin for Appium & its extensions",
|
||||
"homepage": "https://appium.io",
|
||||
"license": "Apache-2.0",
|
||||
@@ -60,10 +60,10 @@
|
||||
"typescript": "^4.7.0 || ^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"handlebars": "4.7.7",
|
||||
"handlebars": "4.7.8",
|
||||
"lodash": "4.17.21",
|
||||
"pluralize": "8.0.0",
|
||||
"type-fest": "3.11.1"
|
||||
"type-fest": "3.13.1"
|
||||
},
|
||||
"gitHead": "8480a85ce2fa466360e0fb1a7f66628331907f02"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,50 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [0.14.1](https://github.com/appium/appium/compare/@appium/types@0.14.0...@appium/types@0.14.1) (2023-10-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **appium:** Make sure type definitions are always in sync across modules ([#19323](https://github.com/appium/appium/issues/19323)) ([de39013](https://github.com/appium/appium/commit/de39013ae501d4fc11988435737efb862cc1d820))
|
||||
* **support:** update definitelytyped ([a306ce7](https://github.com/appium/appium/commit/a306ce741a806d21bc44f3b979803b8af5da99aa))
|
||||
|
||||
|
||||
|
||||
## [0.14.0](https://github.com/appium/appium/compare/@appium/types@0.13.4...@appium/types@0.14.0) (2023-10-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **base-driver:** Add server support of TLS and SPDY protocols ([#19105](https://github.com/appium/appium/issues/19105)) ([5926919](https://github.com/appium/appium/commit/5926919177e3df675723c80d800f933fdbda5824))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **images-plugin:** update dependency lru-cache to v10 ([#19050](https://github.com/appium/appium/issues/19050)) ([72a806b](https://github.com/appium/appium/commit/72a806bec7c3a80747192d24dfd9d8286a751810))
|
||||
* **support:** update definitelytyped ([3b44c7d](https://github.com/appium/appium/commit/3b44c7d8f5b89f9357dfe6bb56b54799bbe0a921))
|
||||
* **support:** update definitelytyped ([595d460](https://github.com/appium/appium/commit/595d460ac8dc41d310f9e4f653acbad3c7fd50b9))
|
||||
* **types:** update definitelytyped ([96b0a44](https://github.com/appium/appium/commit/96b0a44629c451102c44541a8d5b9e7be972f1ea))
|
||||
|
||||
|
||||
|
||||
## [0.13.4](https://github.com/appium/appium/compare/@appium/types@0.13.3...@appium/types@0.13.4) (2023-08-22)
|
||||
|
||||
**Note:** Version bump only for package @appium/types
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.13.3](https://github.com/appium/appium/compare/@appium/types@0.13.2...@appium/types@0.13.3) (2023-08-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **types:** update dependency type-fest to v3.13.1 ([fb34ab9](https://github.com/appium/appium/commit/fb34ab917216121d2b554677a12f07a03393d218))
|
||||
|
||||
|
||||
|
||||
## [0.13.2](https://github.com/appium/appium/compare/@appium/types@0.13.1...@appium/types@0.13.2) (2023-07-03)
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user