appium-desktop-driver 1.7.1 → 1.7.2-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +249 -0
- package/README.md +0 -2
- package/build/lib/commands/actions.d.ts +5 -3
- package/build/lib/commands/actions.d.ts.map +1 -1
- package/build/lib/commands/actions.js +83 -91
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/app.d.ts +53 -1
- package/build/lib/commands/app.d.ts.map +1 -1
- package/build/lib/commands/app.js +415 -142
- package/build/lib/commands/app.js.map +1 -1
- package/build/lib/commands/contexts.d.ts +64 -0
- package/build/lib/commands/contexts.d.ts.map +1 -0
- package/build/lib/commands/contexts.js +166 -0
- package/build/lib/commands/contexts.js.map +1 -0
- package/build/lib/commands/device.d.ts +0 -8
- package/build/lib/commands/device.d.ts.map +1 -1
- package/build/lib/commands/device.js +4 -229
- package/build/lib/commands/device.js.map +1 -1
- package/build/lib/commands/element.d.ts +0 -3
- package/build/lib/commands/element.d.ts.map +1 -1
- package/build/lib/commands/element.js +102 -53
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/extension.d.ts +2 -0
- package/build/lib/commands/extension.d.ts.map +1 -1
- package/build/lib/commands/extension.js +111 -184
- package/build/lib/commands/extension.js.map +1 -1
- package/build/lib/commands/index.d.ts +28 -17
- package/build/lib/commands/index.d.ts.map +1 -1
- package/build/lib/commands/index.js +4 -2
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/screen-recorder.d.ts +3 -3
- package/build/lib/commands/screen-recorder.d.ts.map +1 -1
- package/build/lib/commands/screen-recorder.js +33 -24
- package/build/lib/commands/screen-recorder.js.map +1 -1
- package/build/lib/commands/server-session.d.ts +9 -0
- package/build/lib/commands/server-session.d.ts.map +1 -0
- package/build/lib/commands/server-session.js +158 -0
- package/build/lib/commands/server-session.js.map +1 -0
- package/build/lib/constraints.d.ts +26 -7
- package/build/lib/constraints.d.ts.map +1 -1
- package/build/lib/constraints.js +25 -6
- package/build/lib/constraints.js.map +1 -1
- package/build/lib/driver.d.ts +22 -13
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +130 -49
- package/build/lib/driver.js.map +1 -1
- package/build/lib/log-file.d.ts +10 -0
- package/build/lib/log-file.d.ts.map +1 -0
- package/build/lib/log-file.js +86 -0
- package/build/lib/log-file.js.map +1 -0
- package/build/lib/mcp/tools/context.d.ts +4 -0
- package/build/lib/mcp/tools/context.d.ts.map +1 -0
- package/build/lib/mcp/tools/context.js +49 -0
- package/build/lib/mcp/tools/context.js.map +1 -0
- package/build/lib/mcp/tools/index.d.ts.map +1 -1
- package/build/lib/mcp/tools/index.js +2 -0
- package/build/lib/mcp/tools/index.js.map +1 -1
- package/build/lib/powershell/conditions.d.ts.map +1 -1
- package/build/lib/powershell/conditions.js +7 -0
- package/build/lib/powershell/conditions.js.map +1 -1
- package/build/lib/server/client.d.ts +15 -0
- package/build/lib/server/client.d.ts.map +1 -0
- package/build/lib/server/client.js +169 -0
- package/build/lib/server/client.js.map +1 -0
- package/build/lib/server/conditions.d.ts +13 -0
- package/build/lib/server/conditions.d.ts.map +1 -0
- package/build/lib/server/conditions.js +71 -0
- package/build/lib/server/conditions.js.map +1 -0
- package/build/lib/server/converter-bridge.d.ts +26 -0
- package/build/lib/server/converter-bridge.d.ts.map +1 -0
- package/build/lib/server/converter-bridge.js +171 -0
- package/build/lib/server/converter-bridge.js.map +1 -0
- package/build/lib/server/index.d.ts +5 -0
- package/build/lib/server/index.d.ts.map +1 -0
- package/build/lib/server/index.js +25 -0
- package/build/lib/server/index.js.map +1 -0
- package/build/lib/server/protocol.d.ts +40 -0
- package/build/lib/server/protocol.d.ts.map +1 -0
- package/build/lib/server/protocol.js +3 -0
- package/build/lib/server/protocol.js.map +1 -0
- package/build/lib/util.d.ts +11 -1
- package/build/lib/util.d.ts.map +1 -1
- package/build/lib/util.js +158 -7
- package/build/lib/util.js.map +1 -1
- package/build/lib/version.d.ts +2 -0
- package/build/lib/version.d.ts.map +1 -0
- package/build/lib/version.js +20 -0
- package/build/lib/version.js.map +1 -0
- package/build/lib/winapi/user32.d.ts +5 -6
- package/build/lib/winapi/user32.d.ts.map +1 -1
- package/build/lib/winapi/user32.js +131 -88
- package/build/lib/winapi/user32.js.map +1 -1
- package/build/lib/xpath/core.d.ts +10 -4
- package/build/lib/xpath/core.d.ts.map +1 -1
- package/build/lib/xpath/core.js +205 -224
- package/build/lib/xpath/core.js.map +1 -1
- package/build/lib/xpath/functions.d.ts +7 -2
- package/build/lib/xpath/functions.d.ts.map +1 -1
- package/build/lib/xpath/functions.js +49 -25
- package/build/lib/xpath/functions.js.map +1 -1
- package/package.json +18 -12
- package/scripts/postinstall.js +39 -0
- package/build/eslint.config.d.mts +0 -3
- package/build/eslint.config.d.mts.map +0 -1
- package/build/eslint.config.mjs +0 -22
- package/build/eslint.config.mjs.map +0 -1
- package/build/lib/commands/powershell.d.ts +0 -6
- package/build/lib/commands/powershell.d.ts.map +0 -1
- package/build/lib/commands/powershell.js +0 -202
- package/build/lib/commands/powershell.js.map +0 -1
- package/build/tsconfig.tsbuildinfo +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
## [1.7.2-preview.1](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.7.1...v1.7.2-preview.1) (2026-05-27)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **webview:** Chrome CDP context switching and window attachment bugs ([8fafd5b](https://github.com/verisoft-ai/appium-desktop-driver/commit/8fafd5b8de7265b7cdb0a9455926f1e8a2948898))
|
|
6
|
+
|
|
7
|
+
### Miscellaneous Chores
|
|
8
|
+
|
|
9
|
+
* trigger publish on develop ([2e0123f](https://github.com/verisoft-ai/appium-desktop-driver/commit/2e0123faf5de734874f62fe16280b4e86557d7ac))
|
|
10
|
+
|
|
11
|
+
## [1.7.1](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.7.0...v1.7.1) (2026-05-23)
|
|
12
|
+
|
|
13
|
+
### Miscellaneous Chores
|
|
14
|
+
|
|
15
|
+
* remove powershell insecure check - alway allow ([2225b79](https://github.com/verisoft-ai/appium-desktop-driver/commit/2225b79fc9972f0000ff6a3982b6f993506baca5))
|
|
16
|
+
|
|
17
|
+
## [1.7.0](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.6.1...v1.7.0) (2026-05-04)
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* add analyze_screen mcp tool ([5c6b998](https://github.com/verisoft-ai/appium-desktop-driver/commit/5c6b998ebde79caa9f05261f252be3fcba847edd))
|
|
22
|
+
* lazy load mcp server ([16a1533](https://github.com/verisoft-ai/appium-desktop-driver/commit/16a15337daacf2a2088f9eb4ee548a5cb03dce71))
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* remove last residuals of nova windows logs ([5b3627f](https://github.com/verisoft-ai/appium-desktop-driver/commit/5b3627fef8bb40d2cdb640f0956dfe5c254cfb57))
|
|
27
|
+
|
|
28
|
+
## [1.6.1](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.6.0...v1.6.1) (2026-04-23)
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* check amazon user and key ([4f45cf1](https://github.com/verisoft-ai/appium-desktop-driver/commit/4f45cf1ad1a16a6d2412902be1dcfd8a899b1493))
|
|
33
|
+
* **vision:** make model argument mandatory in find_by_vision and executeFindByVision ([2eee54c](https://github.com/verisoft-ai/appium-desktop-driver/commit/2eee54cfa7fec16975f7ad748fe3fa4462bc9709))
|
|
34
|
+
|
|
35
|
+
## [1.6.0](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.5.1...v1.6.0) (2026-04-15)
|
|
36
|
+
|
|
37
|
+
### Features
|
|
38
|
+
|
|
39
|
+
* **vision:** add extra llm support for vision command. ([4055904](https://github.com/verisoft-ai/appium-desktop-driver/commit/40559042ff5e730e84a155c925da71834c220dcd))
|
|
40
|
+
|
|
41
|
+
### Bug Fixes
|
|
42
|
+
|
|
43
|
+
* **vision:** address multi-provider review findings ([9c8a8ff](https://github.com/verisoft-ai/appium-desktop-driver/commit/9c8a8ff366bff7b3d9a047d3e09298f044d62aaf))
|
|
44
|
+
|
|
45
|
+
## [1.5.1](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.5.0...v1.5.1) (2026-04-13)
|
|
46
|
+
|
|
47
|
+
### Bug Fixes
|
|
48
|
+
|
|
49
|
+
* **actions:** Action execution according to W3C definition. ([8c9019d](https://github.com/verisoft-ai/appium-desktop-driver/commit/8c9019dc39841ec7f61d8770042db72355975d5f))
|
|
50
|
+
* fix json element rect unexpected end error ([8d1498f](https://github.com/verisoft-ai/appium-desktop-driver/commit/8d1498f3dc667e017e3f8ed4d409ec60e3fea72a))
|
|
51
|
+
* fix release actions tracking pressed mouse buttons ([0309ab0](https://github.com/verisoft-ai/appium-desktop-driver/commit/0309ab0a06c33591bb1d36b23e2dcbdf688d1772))
|
|
52
|
+
* **mouse move:** fix silent fail calculating mouse move after scroll into view. ([9e755eb](https://github.com/verisoft-ai/appium-desktop-driver/commit/9e755eb8c5d1ee475d85a8630bab6b583b2a5a8d))
|
|
53
|
+
* **release key:** fix handle null key action not iterating over pressed keys ([db18fd8](https://github.com/verisoft-ai/appium-desktop-driver/commit/db18fd8b8884883dc241b2ce5ef104cde2bccf11))
|
|
54
|
+
|
|
55
|
+
## [1.5.0](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.4.3...v1.5.0) (2026-04-04)
|
|
56
|
+
|
|
57
|
+
### Features
|
|
58
|
+
|
|
59
|
+
* add new command 'windows: findByVision' ([26c69aa](https://github.com/verisoft-ai/appium-desktop-driver/commit/26c69aaeed15ff94f9f469b1594bd640772fcf51))
|
|
60
|
+
* **mcp:** add analyze_screen tool via agent loop ([0bcbf09](https://github.com/verisoft-ai/appium-desktop-driver/commit/0bcbf0952fbe267e1c2cdc4176dbb722e51cb591))
|
|
61
|
+
|
|
62
|
+
### Bug Fixes
|
|
63
|
+
|
|
64
|
+
* account display scaling for precise pixel calculation in analyze_screenshot tool. ([611f345](https://github.com/verisoft-ai/appium-desktop-driver/commit/611f345c957de5361af0c06f0857352ab27ad5ed))
|
|
65
|
+
* coordinate mapping with offset calculation ([c68bb4e](https://github.com/verisoft-ai/appium-desktop-driver/commit/c68bb4e7c34b4d39b3472da5ec5f6b566f15cf57))
|
|
66
|
+
* correct stale error message in find_by_vision MCP tool ([c82e107](https://github.com/verisoft-ai/appium-desktop-driver/commit/c82e107f7e1b40297e84d34ca2f62ff7b117f669))
|
|
67
|
+
* fix mock path vision test ([39b9386](https://github.com/verisoft-ai/appium-desktop-driver/commit/39b9386c80ddcc7ab595317ace4b1f1b9384f519))
|
|
68
|
+
* ignore import/no-unresolved for @modelcontextprotocol/sdk subpaths ([688c68c](https://github.com/verisoft-ai/appium-desktop-driver/commit/688c68cdc6d7eb4bf3225dc29d01950b14f94e1d))
|
|
69
|
+
|
|
70
|
+
### Code Refactoring
|
|
71
|
+
|
|
72
|
+
* **vision:** unify find_by_vision MCP tool and findByVision command ([276d86f](https://github.com/verisoft-ai/appium-desktop-driver/commit/276d86f68be5e501f4510617442968abcac4db87))
|
|
73
|
+
|
|
74
|
+
## [1.4.3](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.4.2...v1.4.3) (2026-03-26)
|
|
75
|
+
|
|
76
|
+
### Miscellaneous Chores
|
|
77
|
+
|
|
78
|
+
* update website hero and footer attribution [skip ci] ([3a67147](https://github.com/verisoft-ai/appium-desktop-driver/commit/3a67147f89bc5f5400092ee7bc4083c55708dc4a))
|
|
79
|
+
|
|
80
|
+
### Code Refactoring
|
|
81
|
+
|
|
82
|
+
* rename driver class from NovaWindowsDriver to AppiumDesktopDriver ([8a1eb39](https://github.com/verisoft-ai/appium-desktop-driver/commit/8a1eb393f48c7ee2d9fc5a17d7f262fa7e8ae596))
|
|
83
|
+
|
|
84
|
+
## [1.4.2](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.4.1...v1.4.2) (2026-03-24)
|
|
85
|
+
|
|
86
|
+
### Bug Fixes
|
|
87
|
+
|
|
88
|
+
* lint ([9832a8e](https://github.com/verisoft-ai/appium-desktop-driver/commit/9832a8eaf025e96f619d4c1b342c3c0909dfb5fa))
|
|
89
|
+
|
|
90
|
+
### Miscellaneous Chores
|
|
91
|
+
|
|
92
|
+
* **website:** create website with mcp and driver demos ([5e8e910](https://github.com/verisoft-ai/appium-desktop-driver/commit/5e8e910fc1e69de8a81ec18898b7f0dd28135af6))
|
|
93
|
+
|
|
94
|
+
## [1.4.1](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.4.0...v1.4.1) (2026-03-23)
|
|
95
|
+
|
|
96
|
+
### Bug Fixes
|
|
97
|
+
|
|
98
|
+
* **mcp:** change mcp naming to match new Desktop Driver convention ([e77a7b0](https://github.com/verisoft-ai/appium-desktop-driver/commit/e77a7b02d4ed8769d61697c96c239bb03e3aef61))
|
|
99
|
+
|
|
100
|
+
## [1.4.0](https://github.com/verisoft-ai/appium-desktop-driver/compare/v1.3.1...v1.4.0) (2026-03-23)
|
|
101
|
+
|
|
102
|
+
### Features
|
|
103
|
+
|
|
104
|
+
* **capability:** Add capabilities windowSwitchRetries and windowSwitchInterval ([a831b3a](https://github.com/verisoft-ai/appium-desktop-driver/commit/a831b3af5d8d531a41483f36391d631cd787c371))
|
|
105
|
+
* custom env variables capabilities ([6a98b5c](https://github.com/verisoft-ai/appium-desktop-driver/commit/6a98b5c76bdfecf1ef6a893ea9c37abdd5e47c33))
|
|
106
|
+
* **display:** add support for multi monitor testing ([1029aec](https://github.com/verisoft-ai/appium-desktop-driver/commit/1029aec97adb420e9525e1f325c64870dc51585c))
|
|
107
|
+
* Implemented missing commands ([4434b99](https://github.com/verisoft-ai/appium-desktop-driver/commit/4434b996fa33cd0214c7cd44073f34806cd1c99f))
|
|
108
|
+
* **mcp:** add MCP server with 39 tools and unit test suite ([cf3d464](https://github.com/verisoft-ai/appium-desktop-driver/commit/cf3d464d1b74efbdddb04aa16ff3a19e19564934))
|
|
109
|
+
|
|
110
|
+
### Bug Fixes
|
|
111
|
+
|
|
112
|
+
* Add allowed tools to claude code reviewer ([c4c18e9](https://github.com/verisoft-ai/appium-desktop-driver/commit/c4c18e9f35915eb609e41572cb3c5ea15e3314a7))
|
|
113
|
+
* add tabbing ([c0cb0e8](https://github.com/verisoft-ai/appium-desktop-driver/commit/c0cb0e8bb4fb37c9f70b8e891c659c56142c1943))
|
|
114
|
+
* fix attaching to wrong application window ([8960843](https://github.com/verisoft-ai/appium-desktop-driver/commit/8960843d548c98728880c901b154215b6265b69e))
|
|
115
|
+
* fix code review comments ([d7bebd9](https://github.com/verisoft-ai/appium-desktop-driver/commit/d7bebd9ff1660fd065a92e7008344c3b1323bd27))
|
|
116
|
+
* **lint:** resolve lint errors ([5b72f12](https://github.com/verisoft-ai/appium-desktop-driver/commit/5b72f122472cdd4e563aa044b1baa2a52af7d10a))
|
|
117
|
+
* **mcp:** resolve bugs, add tool annotations, and new UIA tools ([fd73365](https://github.com/verisoft-ai/appium-desktop-driver/commit/fd7336552264a52ad2dda8c28bee2afcf44050a6))
|
|
118
|
+
* Remove claude code review workflow ([88f921d](https://github.com/verisoft-ai/appium-desktop-driver/commit/88f921d81ba9b81ff1578b2ac34c81d337670f30))
|
|
119
|
+
* Remove outerloops ([92eedfa](https://github.com/verisoft-ai/appium-desktop-driver/commit/92eedfa5decf6125c0f688da2d4c3bcf896491d5))
|
|
120
|
+
* replace NovaWindows automation name with DesktopDriver ([dd585b9](https://github.com/verisoft-ai/appium-desktop-driver/commit/dd585b9013fd5b128e10c42af86ca4e5f86f6934))
|
|
121
|
+
* **window:** narrow appProcessIds to the attached window's PID ([d281444](https://github.com/verisoft-ai/appium-desktop-driver/commit/d2814445ab5248483d451f1817fbff67d30d7654))
|
|
122
|
+
* **window:** track child processes spawned from launched apps. ([f1e6bff](https://github.com/verisoft-ai/appium-desktop-driver/commit/f1e6bfffe5bfcdebe884de207eabce8381c83a67))
|
|
123
|
+
* **window:** window handles access capability added ([eefb804](https://github.com/verisoft-ai/appium-desktop-driver/commit/eefb8040b2ec43795b4c985e42090dad2fa2e6ae))
|
|
124
|
+
|
|
125
|
+
### Miscellaneous Chores
|
|
126
|
+
|
|
127
|
+
* bump version to 1.1.0 ([393bdae](https://github.com/verisoft-ai/appium-desktop-driver/commit/393bdaeaa0070385a15a61affe88c059c8967c6a))
|
|
128
|
+
* bump version to 1.2.0 ([94a4f04](https://github.com/verisoft-ai/appium-desktop-driver/commit/94a4f046be53c3b804497ad4e1d2782860e25070))
|
|
129
|
+
* **claude:** Add constraints and context for claude code review ([e95c6b2](https://github.com/verisoft-ai/appium-desktop-driver/commit/e95c6b219f436dd030f4e7dd840713e651af9cb4))
|
|
130
|
+
* **claude:** change constraints for claude code review ([3acee1c](https://github.com/verisoft-ai/appium-desktop-driver/commit/3acee1c1565b575e84f3b087aff6085b6b524229))
|
|
131
|
+
* **npm:** Ignore build artifacts and local mcp/claude config ([c9d3529](https://github.com/verisoft-ai/appium-desktop-driver/commit/c9d3529cf1c259d36eaf82e64702fdd080463195))
|
|
132
|
+
* prepare package for verisoft npm distribution ([5b35ff7](https://github.com/verisoft-ai/appium-desktop-driver/commit/5b35ff722d8254f24fea2bfe5112f4e0bddfc1e7))
|
|
133
|
+
* **release:** bump version and re-added the auto release workflow ([8555903](https://github.com/verisoft-ai/appium-desktop-driver/commit/8555903c4b3038d11fe24c038ef83964f71a1710))
|
|
134
|
+
* remove auto publish on push to main ([e940fd1](https://github.com/verisoft-ai/appium-desktop-driver/commit/e940fd1e4f20a505ea81dd668b4240abd2053d7f))
|
|
135
|
+
|
|
136
|
+
### Code Refactoring
|
|
137
|
+
|
|
138
|
+
* **mcp:** remove auto-start, require Appium to be running externally ([8b76810](https://github.com/verisoft-ai/appium-desktop-driver/commit/8b76810041db68c960b3448173a8adca52679390))
|
|
139
|
+
|
|
140
|
+
## [1.3.1](https://github.com/AutomateThePlanet/appium-novawindows-driver/compare/v1.3.0...v1.3.1) (2026-03-09)
|
|
141
|
+
|
|
142
|
+
### Bug Fixes
|
|
143
|
+
|
|
144
|
+
* add stderr encoding for PowerShell session ([a233063](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/a233063b4509e41c047fcc3603b29b944c5ac374))
|
|
145
|
+
* fixed incorrect $pattern variable reference ([a0afceb](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/a0afceb7e682219b5e82759c52e20c59bff1225f))
|
|
146
|
+
* fixed not being able to attach to slow-starting classic apps on session creation ([f25b000](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/f25b000533be1ef2a7c0bc350bf62a3cd1b60a45))
|
|
147
|
+
|
|
148
|
+
## [1.3.0](https://github.com/AutomateThePlanet/appium-novawindows-driver/compare/v1.2.0...v1.3.0) (2026-03-06)
|
|
149
|
+
|
|
150
|
+
### Features
|
|
151
|
+
|
|
152
|
+
* **commands:** add extra W3C commands ([57c654a](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/57c654a1e1e43c8a5d31ed8103aba338883efaa9))
|
|
153
|
+
* **commands:** add support for close app and launch app ([26db919](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/26db919c17ce74ff3c5ef2776544affecb32e2fc))
|
|
154
|
+
* **commands:** implement waitForAppLaunch and forceQuit ([6cce956](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/6cce9565ce51b9f0e354b14819f41a6fc39ffc50))
|
|
155
|
+
* **tests:** add unit tests and missing commands - recording, deletion and click and drag ([a8989c0](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/a8989c06816b3f9b5b5de82d85895106ab062aca))
|
|
156
|
+
|
|
157
|
+
### Bug Fixes
|
|
158
|
+
|
|
159
|
+
* Bind commands to this instance (not prototype) so each driver instance uses its own powershell session ([#56](https://github.com/AutomateThePlanet/appium-novawindows-driver/issues/56)) [skip ci] ([6dc2125](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/6dc2125c505b392f100036d532326202c0a9c8d4))
|
|
160
|
+
* **capability:** fix post run script ([97b57af](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/97b57af2fe05803ecb66548b8a32202fbe9a45e6))
|
|
161
|
+
* **commands:** add allow-insecure check for fs operations ([4662035](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/466203585796fe08fdb4b119991363246cb00dab))
|
|
162
|
+
* **commands:** match closeApp and launchApp implementation with appium windows driver ([073c566](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/073c566edb3528380196640eb33ee803b4fe2029))
|
|
163
|
+
* fix bugs and implemented end to end tests ([47efa4c](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/47efa4cf00fbac2e15e07e572cdf3e4453ec1020))
|
|
164
|
+
* lint ([fb6ebc8](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/fb6ebc83b1ed5c0fd0c5230d2948d4f5cb156b17))
|
|
165
|
+
* **lint:** lint ([acf7271](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/acf727179dfe1380d42a33a6d38f5175b22cb90d))
|
|
166
|
+
* **recorder:** fix screen recording ([9da1025](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/9da1025c994cb0c3221119690f01a0584b3cf333))
|
|
167
|
+
* **recorder:** validate outputPath before rimraf ([8aa49dd](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/8aa49dd27b2b9bb54329efa0555bb5ef21dc36b5))
|
|
168
|
+
|
|
169
|
+
### Miscellaneous Chores
|
|
170
|
+
|
|
171
|
+
* **release:** 1.3.0 [skip ci] ([c29b822](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/c29b8223fc6f0435363d6207af0ab1185b811b60))
|
|
172
|
+
|
|
173
|
+
## [1.3.0](https://github.com/AutomateThePlanet/appium-novawindows-driver/compare/v1.2.0...v1.3.0) (2026-03-06)
|
|
174
|
+
|
|
175
|
+
### Features
|
|
176
|
+
|
|
177
|
+
* **commands:** add extra W3C commands ([57c654a](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/57c654a1e1e43c8a5d31ed8103aba338883efaa9))
|
|
178
|
+
* **commands:** add support for close app and launch app ([26db919](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/26db919c17ce74ff3c5ef2776544affecb32e2fc))
|
|
179
|
+
* **commands:** implement waitForAppLaunch and forceQuit ([6cce956](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/6cce9565ce51b9f0e354b14819f41a6fc39ffc50))
|
|
180
|
+
* **tests:** add unit tests and missing commands - recording, deletion and click and drag ([a8989c0](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/a8989c06816b3f9b5b5de82d85895106ab062aca))
|
|
181
|
+
|
|
182
|
+
### Bug Fixes
|
|
183
|
+
|
|
184
|
+
* Bind commands to this instance (not prototype) so each driver instance uses its own powershell session ([#56](https://github.com/AutomateThePlanet/appium-novawindows-driver/issues/56)) [skip ci] ([6dc2125](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/6dc2125c505b392f100036d532326202c0a9c8d4))
|
|
185
|
+
* **capability:** fix post run script ([97b57af](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/97b57af2fe05803ecb66548b8a32202fbe9a45e6))
|
|
186
|
+
* **commands:** add allow-insecure check for fs operations ([4662035](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/466203585796fe08fdb4b119991363246cb00dab))
|
|
187
|
+
* **commands:** match closeApp and launchApp implementation with appium windows driver ([073c566](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/073c566edb3528380196640eb33ee803b4fe2029))
|
|
188
|
+
* fix bugs and implemented end to end tests ([47efa4c](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/47efa4cf00fbac2e15e07e572cdf3e4453ec1020))
|
|
189
|
+
* lint ([fb6ebc8](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/fb6ebc83b1ed5c0fd0c5230d2948d4f5cb156b17))
|
|
190
|
+
* **lint:** lint ([acf7271](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/acf727179dfe1380d42a33a6d38f5175b22cb90d))
|
|
191
|
+
* **recorder:** fix screen recording ([9da1025](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/9da1025c994cb0c3221119690f01a0584b3cf333))
|
|
192
|
+
* **recorder:** validate outputPath before rimraf ([8aa49dd](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/8aa49dd27b2b9bb54329efa0555bb5ef21dc36b5))
|
|
193
|
+
|
|
194
|
+
## [1.2.0](https://github.com/AutomateThePlanet/appium-novawindows-driver/compare/v1.1.0...v1.2.0) (2026-01-09)
|
|
195
|
+
|
|
196
|
+
### Features
|
|
197
|
+
|
|
198
|
+
* add "none" session option to start without attaching to any element ([22586a2](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/22586a237f20e975adee25c13fba8c649420574d))
|
|
199
|
+
* add appWorkingDir, prerun, postrun, and isolatedScriptExecution capabilities ([5a581ae](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/5a581ae7ae1e1a013cb8e332454f70762f8749c7))
|
|
200
|
+
|
|
201
|
+
### Bug Fixes
|
|
202
|
+
|
|
203
|
+
* allow elementId with optional x/y offsets for click/hover ([2d01246](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/2d01246e009e2c7fd67165fc1d313446870021d3))
|
|
204
|
+
* **deps:** downgrade appium peer dependency to 3.0.0-rc.2 ([98262d2](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/98262d297268cf40259946e4a52038103618f3b4))
|
|
205
|
+
* make modifierKeys case-insensitive ([7a05300](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/7a05300ef4a0792a9c1160dfab55537c96967f08))
|
|
206
|
+
* update ESLint config ([2e08f8d](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/2e08f8d5a1df9bf277b2c521584dddb5b0935e72))
|
|
207
|
+
* version bump ([a872a23](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/a872a23fec5f10f692b9c61ba7f8d671f360211f))
|
|
208
|
+
|
|
209
|
+
### Miscellaneous Chores
|
|
210
|
+
|
|
211
|
+
* add extra logging ([5da452f](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/5da452fa71608d3f52a92c7ea6f82a78ff3139a6))
|
|
212
|
+
* bump peerDependency appium to ^3.1.0 ([cdee0ca](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/cdee0ca44a1423312351449b3227035976ba396f))
|
|
213
|
+
* configure semantic-release branches for stable and preview releases ([a4a1fa2](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/a4a1fa2b0b20c4494919699e8d307793cf18dc04))
|
|
214
|
+
* remove unnecessary ESLint ignore comments ([4c70038](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/4c7003809c6b6668315ed7e036b5ee6cf3595e51))
|
|
215
|
+
* upgrade dependencies and devDependencies to latest versions ([4fd016c](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/4fd016c5adc091305974b3a41c22423cadf6e3ab))
|
|
216
|
+
|
|
217
|
+
## [1.1.0](https://github.com/AutomateThePlanet/appium-novawindows-driver/compare/v1.0.1...v1.1.0) (2025-08-06)
|
|
218
|
+
|
|
219
|
+
### Features
|
|
220
|
+
|
|
221
|
+
* adding appArguments option ([#26](https://github.com/AutomateThePlanet/appium-novawindows-driver/issues/26)) ([ded917b](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/ded917bdf2f8d224cc9cf917958177ed0e97078b))
|
|
222
|
+
|
|
223
|
+
## [1.0.1](https://github.com/AutomateThePlanet/appium-novawindows-driver/compare/v1.0.0...v1.0.1) (2025-04-25)
|
|
224
|
+
|
|
225
|
+
### Bug Fixes
|
|
226
|
+
|
|
227
|
+
* fixed crash in Node 22+ by using Buffer instead of {} with EnumDisplaySettingsA ([#17](https://github.com/AutomateThePlanet/appium-novawindows-driver/issues/17)) ([08e4907](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/08e49070020f071f3983fcb00c30e9a3ae16b9dc))
|
|
228
|
+
* set shouldCloseApp's default value to true ([#18](https://github.com/AutomateThePlanet/appium-novawindows-driver/issues/18)) ([28dc1d4](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/28dc1d443d416e9a44f4ddcd2fb31828e0b92bcb))
|
|
229
|
+
|
|
230
|
+
### Code Refactoring
|
|
231
|
+
|
|
232
|
+
* remove unnecessary debug logging for name locator ([#19](https://github.com/AutomateThePlanet/appium-novawindows-driver/issues/19)) ([ad50be9](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/ad50be9f9b60145a2f203f294d326eb9499339fb))
|
|
233
|
+
|
|
234
|
+
## 1.0.0 (2025-04-23)
|
|
235
|
+
|
|
236
|
+
### Miscellaneous Chores
|
|
237
|
+
|
|
238
|
+
* add .gitignore ([631fa0a](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/631fa0a72f5cda861215ff4d98ccc41c44d357f6))
|
|
239
|
+
* adding eslint ([c05602d](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/c05602d1aaa7fa003394ec663302017a3027db82))
|
|
240
|
+
* **ci:** add semantic-release workflow ([a9c39fd](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/a9c39fdab2d361678445a523a2830ea9925c4f1f))
|
|
241
|
+
* **lint:** fix linting issue ([6c2cb42](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/6c2cb42388a7f51842a1a5bd11905a9fe0e86ce9))
|
|
242
|
+
* **npm:** disable package-lock generation ([5a648ac](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/5a648ac7f65fcfef66afd6bf76ce2188b10d4ce9))
|
|
243
|
+
* **package:** add keywords and repository info ([fa165d0](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/fa165d007f6a424c0f11340b59ac73e1185091d8))
|
|
244
|
+
* **release:** rollback version to 0.0.1 for testing ([#11](https://github.com/AutomateThePlanet/appium-novawindows-driver/issues/11)) ([c4dd2c2](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/c4dd2c21e3067f70a11d72206fbc7f5da79380b6))
|
|
245
|
+
* updated dependencies [skip ci] ([08528fb](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/08528fb06727df50c087940fe541730a2a13483f))
|
|
246
|
+
|
|
247
|
+
### Code Refactoring
|
|
248
|
+
|
|
249
|
+
* adding enums for click and updating ([89dcebf](https://github.com/AutomateThePlanet/appium-novawindows-driver/commit/89dcebfd026f7a68b4052f33fa2c928ba42162bf))
|
package/README.md
CHANGED
|
@@ -51,8 +51,6 @@ isolatedScriptExecution | Whether PowerShell scripts are executed in an isolated
|
|
|
51
51
|
appEnvironment | Optional object of custom environment variables to inject into the PowerShell session. The variables are only available for the lifetime of the session and do not affect the system environment. Example: `{"MY_VAR": "hello", "API_URL": "http://localhost:3000"}`.
|
|
52
52
|
returnAllWindowHandles | When `true`, `getWindowHandles()` returns all top-level windows on the desktop (UIA root children) instead of only the windows belonging to the launched app. Useful for switching to arbitrary system windows. Default is `false`.
|
|
53
53
|
ms:waitForAppLaunch | Time in seconds to wait for the app window to appear after launch. Default is `0` (falls back to 10 000 ms internal timeout).
|
|
54
|
-
ms:windowSwitchRetries | Maximum number of retry attempts in `setWindow()` when the target window is not yet visible. Must be a non-negative integer. Default is `20`.
|
|
55
|
-
ms:windowSwitchInterval | Sleep duration in milliseconds between each retry in `setWindow()`. Must be a non-negative integer. Default is `500`.
|
|
56
54
|
|
|
57
55
|
Please note that more capabilities will be added as the development of this driver progresses. Since it is still in its early stages, some features may be missing or subject to change. If you need a specific capability or encounter any issues, please feel free to open an issue.
|
|
58
56
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { ActionSequence, KeyAction, KeyActionSequence, PointerActionSequence, PointerMoveAction, ScrollAction, WheelActionSequence } from '@appium/types';
|
|
1
|
+
import { ActionSequence, KeyAction, KeyActionSequence, NullActionSequence, PointerActionSequence, PointerMoveAction, ScrollAction, WheelActionSequence } from '@appium/types';
|
|
2
2
|
import { AppiumDesktopDriver } from '../driver';
|
|
3
3
|
export declare function performActions(this: AppiumDesktopDriver, actionSequences: ActionSequence[]): Promise<void>;
|
|
4
4
|
export declare function handleKeyActionSequence(this: AppiumDesktopDriver, actionSequence: KeyActionSequence): Promise<void>;
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
5
|
+
export declare function handlePointerActionSequence(this: AppiumDesktopDriver, actionSequence: PointerActionSequence): Promise<void>;
|
|
6
|
+
export declare function handleMousePointerActionSequence(this: AppiumDesktopDriver, actionSequence: PointerActionSequence): Promise<void>;
|
|
7
|
+
export declare function handleWheelActionSequence(this: AppiumDesktopDriver, actionSequence: WheelActionSequence): Promise<void>;
|
|
8
|
+
export declare function handleNullActionSequence(this: AppiumDesktopDriver, actionSequence: NullActionSequence): Promise<void>;
|
|
7
9
|
export declare function handleMouseMoveAction(this: AppiumDesktopDriver, action: PointerMoveAction | ScrollAction): Promise<void>;
|
|
8
10
|
export declare function handleKeyAction(this: AppiumDesktopDriver, action: KeyAction): Promise<void>;
|
|
9
11
|
export declare function releaseActions(this: AppiumDesktopDriver): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../lib/commands/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,SAAS,EACT,iBAAiB,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../lib/commands/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACtB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAMhD,wBAAsB,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhH;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzH;AAED,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASjI;AAED,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBtI;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7H;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3H;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B9H;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFjG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7E"}
|
|
@@ -2,58 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.performActions = performActions;
|
|
4
4
|
exports.handleKeyActionSequence = handleKeyActionSequence;
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
5
|
+
exports.handlePointerActionSequence = handlePointerActionSequence;
|
|
6
|
+
exports.handleMousePointerActionSequence = handleMousePointerActionSequence;
|
|
7
|
+
exports.handleWheelActionSequence = handleWheelActionSequence;
|
|
8
|
+
exports.handleNullActionSequence = handleNullActionSequence;
|
|
7
9
|
exports.handleMouseMoveAction = handleMouseMoveAction;
|
|
8
10
|
exports.handleKeyAction = handleKeyAction;
|
|
9
11
|
exports.releaseActions = releaseActions;
|
|
10
12
|
const base_driver_1 = require("@appium/base-driver");
|
|
11
13
|
const user32_1 = require("../winapi/user32");
|
|
12
14
|
const util_1 = require("../util");
|
|
13
|
-
const powershell_1 = require("../powershell");
|
|
14
|
-
const element_1 = require("./element");
|
|
15
15
|
const enums_1 = require("../enums");
|
|
16
16
|
async function performActions(actionSequences) {
|
|
17
|
-
// Validate all sequences upfront before executing any actions
|
|
18
17
|
for (const actionSequence of actionSequences) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
;
|
|
36
|
-
switch (actionSequence.type) {
|
|
37
|
-
case 'key':
|
|
38
|
-
tickPromises.push(this.handleKeyAction(action));
|
|
39
|
-
break;
|
|
40
|
-
case 'pointer':
|
|
41
|
-
tickPromises.push(this.handleSingleMousePointerAction(action));
|
|
42
|
-
break;
|
|
43
|
-
case 'wheel':
|
|
44
|
-
tickPromises.push(this.handleSingleWheelAction(action));
|
|
45
|
-
break;
|
|
46
|
-
case 'none': {
|
|
47
|
-
const duration = action.duration;
|
|
48
|
-
if (duration) {
|
|
49
|
-
tickPromises.push((0, util_1.sleep)(duration));
|
|
50
|
-
}
|
|
51
|
-
;
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
18
|
+
switch (actionSequence.type) {
|
|
19
|
+
case 'key':
|
|
20
|
+
await this.handleKeyActionSequence(actionSequence);
|
|
21
|
+
break;
|
|
22
|
+
case 'wheel':
|
|
23
|
+
await this.handleWheelActionSequence(actionSequence);
|
|
24
|
+
break;
|
|
25
|
+
case 'pointer':
|
|
26
|
+
await this.handlePointerActionSequence(actionSequence);
|
|
27
|
+
break;
|
|
28
|
+
case 'none':
|
|
29
|
+
await this.handleNullActionSequence(actionSequence);
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
throw new base_driver_1.errors.InvalidArgumentError();
|
|
55
33
|
}
|
|
56
|
-
await Promise.all(tickPromises);
|
|
57
34
|
}
|
|
58
35
|
}
|
|
59
36
|
;
|
|
@@ -63,44 +40,63 @@ async function handleKeyActionSequence(actionSequence) {
|
|
|
63
40
|
await this.handleKeyAction(action);
|
|
64
41
|
}
|
|
65
42
|
}
|
|
66
|
-
async function
|
|
67
|
-
switch (
|
|
68
|
-
case '
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
case '
|
|
72
|
-
(0, user32_1.mouseDown)(action.button);
|
|
73
|
-
this.mouseButtonsDown.add(action.button);
|
|
74
|
-
break;
|
|
75
|
-
case 'pointerUp':
|
|
76
|
-
(0, user32_1.mouseUp)(action.button);
|
|
77
|
-
this.mouseButtonsDown.delete(action.button);
|
|
78
|
-
break;
|
|
79
|
-
case 'pause':
|
|
80
|
-
if (action.duration) {
|
|
81
|
-
await (0, util_1.sleep)(action.duration);
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
43
|
+
async function handlePointerActionSequence(actionSequence) {
|
|
44
|
+
switch (actionSequence.parameters?.pointerType) {
|
|
45
|
+
case 'touch':
|
|
46
|
+
case 'pen':
|
|
47
|
+
throw new base_driver_1.errors.NotImplementedError(`Pointer type ${actionSequence.parameters?.pointerType} not implemented yet.`);
|
|
48
|
+
case 'mouse':
|
|
84
49
|
default:
|
|
85
|
-
|
|
50
|
+
await this.handleMousePointerActionSequence(actionSequence);
|
|
86
51
|
}
|
|
87
52
|
}
|
|
88
|
-
async function
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
53
|
+
async function handleMousePointerActionSequence(actionSequence) {
|
|
54
|
+
const actions = actionSequence.actions;
|
|
55
|
+
for (const action of actions) {
|
|
56
|
+
switch (action.type) {
|
|
57
|
+
case 'pointerMove':
|
|
58
|
+
await this.handleMouseMoveAction(action);
|
|
59
|
+
break;
|
|
60
|
+
case 'pointerDown':
|
|
61
|
+
(0, user32_1.mouseDown)(action.button);
|
|
62
|
+
break;
|
|
63
|
+
case 'pointerUp':
|
|
64
|
+
(0, user32_1.mouseUp)(action.button);
|
|
65
|
+
break;
|
|
66
|
+
case 'pause':
|
|
67
|
+
if (action.duration) {
|
|
68
|
+
await (0, util_1.sleep)(action.duration);
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
default:
|
|
72
|
+
throw new base_driver_1.errors.InvalidArgumentError();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function handleWheelActionSequence(actionSequence) {
|
|
77
|
+
const actions = actionSequence.actions;
|
|
78
|
+
for (const action of actions) {
|
|
79
|
+
switch (action.type) {
|
|
80
|
+
case 'scroll':
|
|
81
|
+
await this.handleMouseMoveAction(action);
|
|
82
|
+
(0, user32_1.mouseScroll)(action.deltaX, action.deltaY);
|
|
83
|
+
break;
|
|
84
|
+
case 'pause':
|
|
85
|
+
if (action.duration) {
|
|
86
|
+
await (0, util_1.sleep)(action.duration);
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
throw new base_driver_1.errors.InvalidArgumentError();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async function handleNullActionSequence(actionSequence) {
|
|
95
|
+
const actions = actionSequence.actions;
|
|
96
|
+
for (const action of actions) {
|
|
97
|
+
if (action.duration) {
|
|
98
|
+
await (0, util_1.sleep)(action.duration);
|
|
99
|
+
}
|
|
104
100
|
}
|
|
105
101
|
}
|
|
106
102
|
async function handleMouseMoveAction(action) {
|
|
@@ -109,23 +105,20 @@ async function handleMouseMoveAction(action) {
|
|
|
109
105
|
case 'pointer':
|
|
110
106
|
await (0, user32_1.mouseMoveRelative)(action.x, action.y, action.duration, easingFunction);
|
|
111
107
|
break;
|
|
112
|
-
case undefined:
|
|
113
108
|
case 'viewport': {
|
|
114
|
-
const
|
|
115
|
-
const rootRect = JSON.parse(rootRectJson.replaceAll(/(?:infinity)/gi, 0x7FFFFFFF.toString()));
|
|
109
|
+
const rootRect = await this.sendCommand('getRootRect', {});
|
|
116
110
|
await (0, user32_1.mouseMoveAbsolute)(action.x + rootRect.x, action.y + rootRect.y, action.duration, easingFunction);
|
|
117
111
|
break;
|
|
118
112
|
}
|
|
119
113
|
default:
|
|
120
114
|
if (action.origin?.[base_driver_1.W3C_ELEMENT_KEY]) {
|
|
121
|
-
const
|
|
122
|
-
let rect = await
|
|
115
|
+
const elementId = action.origin[base_driver_1.W3C_ELEMENT_KEY];
|
|
116
|
+
let rect = await this.sendCommand('getRect', { elementId });
|
|
123
117
|
if (Object.values(rect).some((x) => x === 0x7FFFFFFF)) {
|
|
124
|
-
await this.
|
|
125
|
-
rect = await
|
|
118
|
+
await this.sendCommand('scrollElementIntoView', { elementId });
|
|
119
|
+
rect = await this.sendCommand('getRect', { elementId });
|
|
126
120
|
}
|
|
127
|
-
|
|
128
|
-
await (0, user32_1.mouseMoveAbsolute)(rect.x + rect.width / 2 + (action.x ?? 0), rect.y + rect.height / 2 + (action.y ?? 0), action.duration, easingFunction);
|
|
121
|
+
await (0, user32_1.mouseMoveAbsolute)(action.x === 0 ? rect.x + rect.width / 2 : action.x, action.y === 0 ? rect.y + rect.height / 2 : action.y, action.duration, easingFunction);
|
|
129
122
|
break;
|
|
130
123
|
}
|
|
131
124
|
throw new base_driver_1.errors.InvalidArgumentError();
|
|
@@ -197,7 +190,7 @@ async function handleKeyAction(action) {
|
|
|
197
190
|
if (this.keyboardState.alt) {
|
|
198
191
|
await this.handleKeyAction({ type: 'keyUp', value: enums_1.Key.ALT });
|
|
199
192
|
}
|
|
200
|
-
for (const key
|
|
193
|
+
for (const key in Array.of(this.keyboardState.pressed)) {
|
|
201
194
|
(0, user32_1.keyUp)(key);
|
|
202
195
|
this.keyboardState.pressed.delete(key);
|
|
203
196
|
}
|
|
@@ -239,9 +232,8 @@ async function releaseActions() {
|
|
|
239
232
|
(0, user32_1.keyUp)(key);
|
|
240
233
|
}
|
|
241
234
|
this.keyboardState.pressed.clear();
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
this.mouseButtonsDown.clear();
|
|
235
|
+
(0, user32_1.mouseUp)(0);
|
|
236
|
+
(0, user32_1.mouseUp)(1);
|
|
237
|
+
(0, user32_1.mouseUp)(2);
|
|
246
238
|
}
|
|
247
239
|
//# sourceMappingURL=actions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../lib/commands/actions.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../lib/commands/actions.ts"],"names":[],"mappings":"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"}
|