prowl-tools 0.1.5 → 0.1.7
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/README.md +578 -185
- package/dist/{chunk-ITOSUJCN.js → chunk-O3OUTZ2P.js} +22 -2
- package/dist/chunk-O3OUTZ2P.js.map +1 -0
- package/dist/{chunk-2KD2XCTH.js → chunk-R7NUH44M.js} +1690 -298
- package/dist/chunk-R7NUH44M.js.map +1 -0
- package/dist/index.cjs +1839 -365
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +277 -19
- package/dist/index.js.map +1 -1
- package/dist/lib.cjs +1864 -403
- package/dist/lib.cjs.map +1 -1
- package/dist/lib.d.cts +702 -58
- package/dist/lib.d.ts +702 -58
- package/dist/lib.js +130 -8
- package/dist/{loader-FCXPARP7.js → loader-X37URHUV.js} +2 -2
- package/examples/hunts/hello.yml +1 -1
- package/examples/hunts/login-flow.yml +58 -0
- package/package.json +6 -3
- package/dist/chunk-2KD2XCTH.js.map +0 -1
- package/dist/chunk-ITOSUJCN.js.map +0 -1
- /package/dist/{loader-FCXPARP7.js.map → loader-X37URHUV.js.map} +0 -0
package/dist/lib.js
CHANGED
|
@@ -1,25 +1,41 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ANDROID_INTERACTIVE_CLASSES,
|
|
2
3
|
ANDROID_KEYCODES,
|
|
4
|
+
ANDROID_MATCH_DIALECT,
|
|
3
5
|
DEFAULT_AGENT_REQUEST_TIMEOUT_MS,
|
|
4
6
|
DEFAULT_ANALYZE_TREE_DEPTH,
|
|
5
7
|
DEFAULT_FLAKY_THRESHOLD,
|
|
6
8
|
DEFAULT_REQUEST_TIMEOUT_MS,
|
|
7
9
|
DEFAULT_SIMULATOR_LOCK_ROOT,
|
|
8
10
|
DEFAULT_WDA_REQUEST_TIMEOUT_MS,
|
|
11
|
+
HELPER_BINARY,
|
|
9
12
|
INTERACTIVE_ROLES,
|
|
13
|
+
IOS_INTERACTIVE_TYPES,
|
|
14
|
+
IOS_MATCH_DIALECT,
|
|
10
15
|
IOS_PRESS_KEYS,
|
|
16
|
+
IOS_WINDOW_TYPE,
|
|
17
|
+
MACDRIVER_REPO,
|
|
18
|
+
MACDRIVER_SIGNING_AUTHORITY_PREFIX,
|
|
19
|
+
MACDRIVER_SIGNING_IDENTIFIER,
|
|
20
|
+
MACDRIVER_VERSION,
|
|
21
|
+
MACDRIVER_VERSION_PATTERN,
|
|
22
|
+
MACOS_MATCH_DIALECT,
|
|
23
|
+
NATIVE_ATTRIBUTE_MAP,
|
|
11
24
|
SpawnMacHelperClient,
|
|
12
25
|
UIA2_REMOTE_PORT,
|
|
13
26
|
Uia2HttpError,
|
|
14
27
|
Uia2Transport,
|
|
15
|
-
WDA_RUNNER_APP_NAME,
|
|
16
28
|
WDA_RUNNER_BUNDLE_ID,
|
|
29
|
+
WDA_USE_PORT_ENV,
|
|
17
30
|
WEB_ONLY_STEP_TYPES,
|
|
18
31
|
WdaHttpError,
|
|
19
32
|
WdaTransport,
|
|
33
|
+
analyzeAndroidApp,
|
|
34
|
+
analyzeIosApp,
|
|
20
35
|
analyzeMacApp,
|
|
21
36
|
analyzePage,
|
|
22
37
|
androidAppAllowedIdentities,
|
|
38
|
+
androidNodeToNative,
|
|
23
39
|
androidQueryToLocator,
|
|
24
40
|
assertAndroidAppAllowed,
|
|
25
41
|
assertIosAppAllowed,
|
|
@@ -32,6 +48,8 @@ import {
|
|
|
32
48
|
closeIosSession,
|
|
33
49
|
closeMacSession,
|
|
34
50
|
clusterFailures,
|
|
51
|
+
codesignVerifier,
|
|
52
|
+
collectMacdriverStatus,
|
|
35
53
|
computeFlakeScore,
|
|
36
54
|
createAndroidDriver,
|
|
37
55
|
createIosDriver,
|
|
@@ -40,8 +58,12 @@ import {
|
|
|
40
58
|
createUia2Session,
|
|
41
59
|
createWdaAgentClient,
|
|
42
60
|
createWdaSession,
|
|
61
|
+
decodeXmlEntities,
|
|
43
62
|
defaultAgentConnector,
|
|
44
63
|
defaultIosAgentConnector,
|
|
64
|
+
defaultWdaTestRunPreparer,
|
|
65
|
+
dittoExtractor,
|
|
66
|
+
downloadAndVerify,
|
|
45
67
|
escapePredicateArg,
|
|
46
68
|
escapeUiSelectorArg,
|
|
47
69
|
extractElementId,
|
|
@@ -50,26 +72,54 @@ import {
|
|
|
50
72
|
findFreePort,
|
|
51
73
|
generateHunt,
|
|
52
74
|
healSelector,
|
|
75
|
+
injectUsePortIntoXctestrun,
|
|
76
|
+
installMacdriver,
|
|
53
77
|
interpolateHunt,
|
|
54
78
|
iosAppAllowedIdentities,
|
|
79
|
+
iosNodeToNative,
|
|
55
80
|
iosQueryToLocator,
|
|
81
|
+
isAndroidInteractive,
|
|
82
|
+
isIosInteractive,
|
|
56
83
|
launchAndroidSession,
|
|
57
84
|
launchIosSession,
|
|
58
85
|
launchMacSession,
|
|
59
86
|
listDevices,
|
|
60
87
|
listSimulators,
|
|
88
|
+
macdriverAssetName,
|
|
89
|
+
macdriverAssetUrl,
|
|
61
90
|
macdriverBuildInstructions,
|
|
91
|
+
macdriverChecksumName,
|
|
92
|
+
macdriverInstallRoot,
|
|
93
|
+
macdriverInstalledBinary,
|
|
94
|
+
macdriverReleaseTag,
|
|
95
|
+
macdriverVersionDir,
|
|
96
|
+
matchAndroidSelector,
|
|
97
|
+
matchIosSelector,
|
|
98
|
+
matchNativeTree,
|
|
99
|
+
nodeMatchesSelector,
|
|
62
100
|
normalizeXcuiClassName,
|
|
63
101
|
parseAaptPackage,
|
|
64
102
|
parseAdbDevices,
|
|
103
|
+
parseAndroidHierarchy,
|
|
65
104
|
parseAndroidSelector,
|
|
105
|
+
parseChecksumFile,
|
|
106
|
+
parseCodesignDetails,
|
|
66
107
|
parseForwardPort,
|
|
108
|
+
parseIosHierarchy,
|
|
67
109
|
parseIosSelector,
|
|
68
110
|
parseMacSelector,
|
|
111
|
+
parseNativeSelector,
|
|
69
112
|
parseSimctlDevices,
|
|
113
|
+
parseSnapshot,
|
|
70
114
|
parseXcodeVersion,
|
|
115
|
+
parseXml,
|
|
116
|
+
qualifyResourceId,
|
|
117
|
+
quoteSelectorValue,
|
|
118
|
+
rankAndroidSelectors,
|
|
71
119
|
rankFlaky,
|
|
120
|
+
rankIosSelectors,
|
|
72
121
|
rankMacSelectors,
|
|
122
|
+
rankNativeSelectors,
|
|
73
123
|
readHistory,
|
|
74
124
|
readHuntHistory,
|
|
75
125
|
readIosBundleIdentifier,
|
|
@@ -77,19 +127,30 @@ import {
|
|
|
77
127
|
resolveAgentApks,
|
|
78
128
|
resolveHelperBinary,
|
|
79
129
|
resolveWdaProject,
|
|
80
|
-
|
|
130
|
+
resolveWdaTestRun,
|
|
81
131
|
runHunt,
|
|
82
132
|
runSuite,
|
|
133
|
+
runVersionProbe,
|
|
83
134
|
selectDeviceSerial,
|
|
84
135
|
selectSimulatorUdid,
|
|
136
|
+
sha256Hex,
|
|
137
|
+
shortIosType,
|
|
138
|
+
tccGuidance,
|
|
139
|
+
unquoteSelectorValue,
|
|
85
140
|
unwrapAndroidTextSelector,
|
|
86
141
|
unwrapIosTextSelector,
|
|
142
|
+
unwrapNativeTextSelector,
|
|
87
143
|
updateBacklogFromSuite,
|
|
144
|
+
validateMacdriverArchiveEntries,
|
|
145
|
+
validateMacdriverVersion,
|
|
146
|
+
verifyMacdriverSignature,
|
|
88
147
|
waitForAgentReady,
|
|
89
148
|
waitForWdaReady,
|
|
90
149
|
wdaCacheDir,
|
|
91
|
-
|
|
92
|
-
|
|
150
|
+
wdaTestRunArgs,
|
|
151
|
+
webOnlyReason,
|
|
152
|
+
zipinfoArchiveLister
|
|
153
|
+
} from "./chunk-R7NUH44M.js";
|
|
93
154
|
import {
|
|
94
155
|
configSchema,
|
|
95
156
|
huntSchema,
|
|
@@ -99,29 +160,45 @@ import {
|
|
|
99
160
|
loadHuntMeta,
|
|
100
161
|
loadHuntTags,
|
|
101
162
|
stepSchema
|
|
102
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-O3OUTZ2P.js";
|
|
103
164
|
export {
|
|
165
|
+
ANDROID_INTERACTIVE_CLASSES,
|
|
104
166
|
ANDROID_KEYCODES,
|
|
167
|
+
ANDROID_MATCH_DIALECT,
|
|
105
168
|
DEFAULT_AGENT_REQUEST_TIMEOUT_MS,
|
|
106
169
|
DEFAULT_ANALYZE_TREE_DEPTH,
|
|
107
170
|
DEFAULT_FLAKY_THRESHOLD,
|
|
108
171
|
DEFAULT_REQUEST_TIMEOUT_MS,
|
|
109
172
|
DEFAULT_SIMULATOR_LOCK_ROOT,
|
|
110
173
|
DEFAULT_WDA_REQUEST_TIMEOUT_MS,
|
|
174
|
+
HELPER_BINARY,
|
|
111
175
|
INTERACTIVE_ROLES,
|
|
176
|
+
IOS_INTERACTIVE_TYPES,
|
|
177
|
+
IOS_MATCH_DIALECT,
|
|
112
178
|
IOS_PRESS_KEYS,
|
|
179
|
+
IOS_WINDOW_TYPE,
|
|
180
|
+
MACDRIVER_REPO,
|
|
181
|
+
MACDRIVER_SIGNING_AUTHORITY_PREFIX,
|
|
182
|
+
MACDRIVER_SIGNING_IDENTIFIER,
|
|
183
|
+
MACDRIVER_VERSION,
|
|
184
|
+
MACDRIVER_VERSION_PATTERN,
|
|
185
|
+
MACOS_MATCH_DIALECT,
|
|
186
|
+
NATIVE_ATTRIBUTE_MAP,
|
|
113
187
|
SpawnMacHelperClient,
|
|
114
188
|
UIA2_REMOTE_PORT,
|
|
115
189
|
Uia2HttpError,
|
|
116
190
|
Uia2Transport,
|
|
117
|
-
WDA_RUNNER_APP_NAME,
|
|
118
191
|
WDA_RUNNER_BUNDLE_ID,
|
|
192
|
+
WDA_USE_PORT_ENV,
|
|
119
193
|
WEB_ONLY_STEP_TYPES,
|
|
120
194
|
WdaHttpError,
|
|
121
195
|
WdaTransport,
|
|
196
|
+
analyzeAndroidApp,
|
|
197
|
+
analyzeIosApp,
|
|
122
198
|
analyzeMacApp,
|
|
123
199
|
analyzePage,
|
|
124
200
|
androidAppAllowedIdentities,
|
|
201
|
+
androidNodeToNative,
|
|
125
202
|
androidQueryToLocator,
|
|
126
203
|
assertAndroidAppAllowed,
|
|
127
204
|
assertIosAppAllowed,
|
|
@@ -134,6 +211,8 @@ export {
|
|
|
134
211
|
closeIosSession,
|
|
135
212
|
closeMacSession,
|
|
136
213
|
clusterFailures,
|
|
214
|
+
codesignVerifier,
|
|
215
|
+
collectMacdriverStatus,
|
|
137
216
|
computeFlakeScore,
|
|
138
217
|
configSchema,
|
|
139
218
|
createAndroidDriver,
|
|
@@ -143,8 +222,12 @@ export {
|
|
|
143
222
|
createUia2Session,
|
|
144
223
|
createWdaAgentClient,
|
|
145
224
|
createWdaSession,
|
|
225
|
+
decodeXmlEntities,
|
|
146
226
|
defaultAgentConnector,
|
|
147
227
|
defaultIosAgentConnector,
|
|
228
|
+
defaultWdaTestRunPreparer,
|
|
229
|
+
dittoExtractor,
|
|
230
|
+
downloadAndVerify,
|
|
148
231
|
escapePredicateArg,
|
|
149
232
|
escapeUiSelectorArg,
|
|
150
233
|
extractElementId,
|
|
@@ -154,9 +237,14 @@ export {
|
|
|
154
237
|
generateHunt,
|
|
155
238
|
healSelector,
|
|
156
239
|
huntSchema,
|
|
240
|
+
injectUsePortIntoXctestrun,
|
|
241
|
+
installMacdriver,
|
|
157
242
|
interpolateHunt,
|
|
158
243
|
iosAppAllowedIdentities,
|
|
244
|
+
iosNodeToNative,
|
|
159
245
|
iosQueryToLocator,
|
|
246
|
+
isAndroidInteractive,
|
|
247
|
+
isIosInteractive,
|
|
160
248
|
launchAndroidSession,
|
|
161
249
|
launchIosSession,
|
|
162
250
|
launchMacSession,
|
|
@@ -167,18 +255,41 @@ export {
|
|
|
167
255
|
loadHunt,
|
|
168
256
|
loadHuntMeta,
|
|
169
257
|
loadHuntTags,
|
|
258
|
+
macdriverAssetName,
|
|
259
|
+
macdriverAssetUrl,
|
|
170
260
|
macdriverBuildInstructions,
|
|
261
|
+
macdriverChecksumName,
|
|
262
|
+
macdriverInstallRoot,
|
|
263
|
+
macdriverInstalledBinary,
|
|
264
|
+
macdriverReleaseTag,
|
|
265
|
+
macdriverVersionDir,
|
|
266
|
+
matchAndroidSelector,
|
|
267
|
+
matchIosSelector,
|
|
268
|
+
matchNativeTree,
|
|
269
|
+
nodeMatchesSelector,
|
|
171
270
|
normalizeXcuiClassName,
|
|
172
271
|
parseAaptPackage,
|
|
173
272
|
parseAdbDevices,
|
|
273
|
+
parseAndroidHierarchy,
|
|
174
274
|
parseAndroidSelector,
|
|
275
|
+
parseChecksumFile,
|
|
276
|
+
parseCodesignDetails,
|
|
175
277
|
parseForwardPort,
|
|
278
|
+
parseIosHierarchy,
|
|
176
279
|
parseIosSelector,
|
|
177
280
|
parseMacSelector,
|
|
281
|
+
parseNativeSelector,
|
|
178
282
|
parseSimctlDevices,
|
|
283
|
+
parseSnapshot,
|
|
179
284
|
parseXcodeVersion,
|
|
285
|
+
parseXml,
|
|
286
|
+
qualifyResourceId,
|
|
287
|
+
quoteSelectorValue,
|
|
288
|
+
rankAndroidSelectors,
|
|
180
289
|
rankFlaky,
|
|
290
|
+
rankIosSelectors,
|
|
181
291
|
rankMacSelectors,
|
|
292
|
+
rankNativeSelectors,
|
|
182
293
|
readHistory,
|
|
183
294
|
readHuntHistory,
|
|
184
295
|
readIosBundleIdentifier,
|
|
@@ -186,18 +297,29 @@ export {
|
|
|
186
297
|
resolveAgentApks,
|
|
187
298
|
resolveHelperBinary,
|
|
188
299
|
resolveWdaProject,
|
|
189
|
-
|
|
300
|
+
resolveWdaTestRun,
|
|
190
301
|
runHunt,
|
|
191
302
|
runSuite,
|
|
303
|
+
runVersionProbe,
|
|
192
304
|
selectDeviceSerial,
|
|
193
305
|
selectSimulatorUdid,
|
|
306
|
+
sha256Hex,
|
|
307
|
+
shortIosType,
|
|
194
308
|
stepSchema,
|
|
309
|
+
tccGuidance,
|
|
310
|
+
unquoteSelectorValue,
|
|
195
311
|
unwrapAndroidTextSelector,
|
|
196
312
|
unwrapIosTextSelector,
|
|
313
|
+
unwrapNativeTextSelector,
|
|
197
314
|
updateBacklogFromSuite,
|
|
315
|
+
validateMacdriverArchiveEntries,
|
|
316
|
+
validateMacdriverVersion,
|
|
317
|
+
verifyMacdriverSignature,
|
|
198
318
|
waitForAgentReady,
|
|
199
319
|
waitForWdaReady,
|
|
200
320
|
wdaCacheDir,
|
|
201
|
-
|
|
321
|
+
wdaTestRunArgs,
|
|
322
|
+
webOnlyReason,
|
|
323
|
+
zipinfoArchiveLister
|
|
202
324
|
};
|
|
203
325
|
//# sourceMappingURL=lib.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
loadHuntTags,
|
|
11
11
|
resolveViewport,
|
|
12
12
|
warnLegacyConfigDir
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-O3OUTZ2P.js";
|
|
14
14
|
export {
|
|
15
15
|
CONFIG_DIR,
|
|
16
16
|
LEGACY_CONFIG_DIR,
|
|
@@ -24,4 +24,4 @@ export {
|
|
|
24
24
|
resolveViewport,
|
|
25
25
|
warnLegacyConfigDir
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=loader-
|
|
27
|
+
//# sourceMappingURL=loader-X37URHUV.js.map
|
package/examples/hunts/hello.yml
CHANGED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Login Flow
|
|
2
|
+
# ---
|
|
3
|
+
# Pattern: Authentication — email/password login with redirect verification
|
|
4
|
+
# What it tests: Fill credentials, submit, verify redirect to dashboard.
|
|
5
|
+
# Customize:
|
|
6
|
+
# - Update the selectors and URL paths to match your app's login page
|
|
7
|
+
# - Store credentials in .prowl/.env and reference them with {{VAR}}
|
|
8
|
+
#
|
|
9
|
+
# Tip: Use `prowl login` to capture auth state so other hunts can skip login.
|
|
10
|
+
|
|
11
|
+
name: login-flow
|
|
12
|
+
description: Log in with email and password, verify redirect to dashboard
|
|
13
|
+
|
|
14
|
+
tags:
|
|
15
|
+
- auth
|
|
16
|
+
- login
|
|
17
|
+
- credentials
|
|
18
|
+
|
|
19
|
+
# Store secrets in .prowl/.env — they'll be redacted in reports automatically.
|
|
20
|
+
# Example .env:
|
|
21
|
+
# TEST_EMAIL=user@example.com
|
|
22
|
+
# TEST_PASSWORD=secret123
|
|
23
|
+
vars:
|
|
24
|
+
EMAIL: "{{TEST_EMAIL}}"
|
|
25
|
+
PASSWORD: "{{TEST_PASSWORD}}"
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- navigate: "/login"
|
|
29
|
+
|
|
30
|
+
# Shorthand fill — Prowl finds the input by its label or placeholder text.
|
|
31
|
+
# Equivalent explicit form:
|
|
32
|
+
# fill:
|
|
33
|
+
# selector: "input[placeholder='Email']"
|
|
34
|
+
# value: "{{EMAIL}}"
|
|
35
|
+
- fill:
|
|
36
|
+
"Email": "{{EMAIL}}"
|
|
37
|
+
|
|
38
|
+
- fill:
|
|
39
|
+
"Password": "{{PASSWORD}}"
|
|
40
|
+
|
|
41
|
+
# Shorthand click — Prowl finds a button by its text content.
|
|
42
|
+
# Equivalent explicit form:
|
|
43
|
+
# click:
|
|
44
|
+
# selector: "button:has-text('Sign In')"
|
|
45
|
+
- click: "Sign In"
|
|
46
|
+
|
|
47
|
+
# Wait for navigation to complete after login
|
|
48
|
+
- waitForUrl:
|
|
49
|
+
value: "/dashboard"
|
|
50
|
+
timeout: 10000
|
|
51
|
+
|
|
52
|
+
# Mid-flow assertion — verify the dashboard loaded
|
|
53
|
+
- assert:
|
|
54
|
+
visible: "Dashboard"
|
|
55
|
+
|
|
56
|
+
assertions:
|
|
57
|
+
- urlIncludes: "/dashboard"
|
|
58
|
+
- noConsoleErrors: true
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prowl-tools",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.7",
|
|
4
|
+
"description": "E2E testing for native macOS apps and web apps from declarative YAML hunts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"author": "Prowl Tools",
|
|
@@ -16,9 +16,12 @@
|
|
|
16
16
|
"keywords": [
|
|
17
17
|
"testing",
|
|
18
18
|
"qa",
|
|
19
|
+
"e2e",
|
|
20
|
+
"macos",
|
|
21
|
+
"desktop-testing",
|
|
22
|
+
"accessibility",
|
|
19
23
|
"playwright",
|
|
20
24
|
"yaml",
|
|
21
|
-
"e2e",
|
|
22
25
|
"browser-testing",
|
|
23
26
|
"automation",
|
|
24
27
|
"web-testing",
|