doc-detective-common 3.6.1 → 4.0.0-beta.0

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.
Files changed (269) hide show
  1. package/.c8rc.json +8 -0
  2. package/.claude/settings.local.json +11 -0
  3. package/.claude/skills/tdd-coverage/SKILL.md +161 -0
  4. package/AGENTS.md +332 -285
  5. package/CLAUDE.md +38 -0
  6. package/LICENSE +661 -661
  7. package/README.md +78 -48
  8. package/coverage-thresholds.json +8 -0
  9. package/dist/detectTests.d.ts +106 -0
  10. package/dist/detectTests.d.ts.map +1 -0
  11. package/dist/detectTests.js +530 -0
  12. package/dist/detectTests.js.map +1 -0
  13. package/dist/files.d.ts +16 -0
  14. package/dist/files.d.ts.map +1 -0
  15. package/dist/files.js +123 -0
  16. package/dist/files.js.map +1 -0
  17. package/dist/index.cjs +122283 -0
  18. package/dist/index.d.cts +4 -0
  19. package/dist/index.d.ts +4 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +4 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/index.mjs +4 -0
  24. package/dist/resolvePaths.d.ts +28 -0
  25. package/dist/resolvePaths.d.ts.map +1 -0
  26. package/dist/resolvePaths.js +236 -0
  27. package/dist/resolvePaths.js.map +1 -0
  28. package/dist/schemas/index.d.ts +5 -0
  29. package/dist/schemas/index.d.ts.map +1 -0
  30. package/dist/schemas/index.js +3 -0
  31. package/dist/schemas/index.js.map +1 -0
  32. package/dist/schemas/schemas.json +121359 -0
  33. package/dist/types/generated/checkLink_v3.d.ts +27 -0
  34. package/dist/types/generated/checkLink_v3.d.ts.map +1 -0
  35. package/dist/types/generated/checkLink_v3.js +7 -0
  36. package/dist/types/generated/checkLink_v3.js.map +1 -0
  37. package/dist/types/generated/click_v3.d.ts +16 -0
  38. package/dist/types/generated/click_v3.d.ts.map +1 -0
  39. package/dist/types/generated/click_v3.js +7 -0
  40. package/dist/types/generated/click_v3.js.map +1 -0
  41. package/dist/types/generated/config_v3.d.ts +398 -0
  42. package/dist/types/generated/config_v3.d.ts.map +1 -0
  43. package/dist/types/generated/config_v3.js +7 -0
  44. package/dist/types/generated/config_v3.js.map +1 -0
  45. package/dist/types/generated/context_v3.d.ts +108 -0
  46. package/dist/types/generated/context_v3.d.ts.map +1 -0
  47. package/dist/types/generated/context_v3.js +7 -0
  48. package/dist/types/generated/context_v3.js.map +1 -0
  49. package/dist/types/generated/dragAndDrop_v3.d.ts +37 -0
  50. package/dist/types/generated/dragAndDrop_v3.d.ts.map +1 -0
  51. package/dist/types/generated/dragAndDrop_v3.js +7 -0
  52. package/dist/types/generated/dragAndDrop_v3.js.map +1 -0
  53. package/dist/types/generated/endRecord_v3.d.ts +9 -0
  54. package/dist/types/generated/endRecord_v3.d.ts.map +1 -0
  55. package/dist/types/generated/endRecord_v3.js +7 -0
  56. package/dist/types/generated/endRecord_v3.js.map +1 -0
  57. package/dist/types/generated/find_v3.d.ts +16 -0
  58. package/dist/types/generated/find_v3.d.ts.map +1 -0
  59. package/dist/types/generated/find_v3.js +7 -0
  60. package/dist/types/generated/find_v3.js.map +1 -0
  61. package/dist/types/generated/goTo_v3.d.ts +46 -0
  62. package/dist/types/generated/goTo_v3.d.ts.map +1 -0
  63. package/dist/types/generated/goTo_v3.js +7 -0
  64. package/dist/types/generated/goTo_v3.js.map +1 -0
  65. package/dist/types/generated/httpRequest_v3.d.ts +16 -0
  66. package/dist/types/generated/httpRequest_v3.d.ts.map +1 -0
  67. package/dist/types/generated/httpRequest_v3.js +7 -0
  68. package/dist/types/generated/httpRequest_v3.js.map +1 -0
  69. package/dist/types/generated/loadCookie_v3.d.ts +16 -0
  70. package/dist/types/generated/loadCookie_v3.d.ts.map +1 -0
  71. package/dist/types/generated/loadCookie_v3.js +7 -0
  72. package/dist/types/generated/loadCookie_v3.js.map +1 -0
  73. package/dist/types/generated/loadVariables_v3.d.ts +9 -0
  74. package/dist/types/generated/loadVariables_v3.d.ts.map +1 -0
  75. package/dist/types/generated/loadVariables_v3.js +7 -0
  76. package/dist/types/generated/loadVariables_v3.js.map +1 -0
  77. package/dist/types/generated/openApi_v3.d.ts +62 -0
  78. package/dist/types/generated/openApi_v3.d.ts.map +1 -0
  79. package/dist/types/generated/openApi_v3.js +7 -0
  80. package/dist/types/generated/openApi_v3.js.map +1 -0
  81. package/dist/types/generated/record_v3.d.ts +32 -0
  82. package/dist/types/generated/record_v3.d.ts.map +1 -0
  83. package/dist/types/generated/record_v3.js +7 -0
  84. package/dist/types/generated/record_v3.js.map +1 -0
  85. package/dist/types/generated/report_v3.d.ts +174 -0
  86. package/dist/types/generated/report_v3.d.ts.map +1 -0
  87. package/dist/types/generated/report_v3.js +7 -0
  88. package/dist/types/generated/report_v3.js.map +1 -0
  89. package/dist/types/generated/resolvedTests_v3.d.ts +571 -0
  90. package/dist/types/generated/resolvedTests_v3.d.ts.map +1 -0
  91. package/dist/types/generated/resolvedTests_v3.js +7 -0
  92. package/dist/types/generated/resolvedTests_v3.js.map +1 -0
  93. package/dist/types/generated/runCode_v3.d.ts +57 -0
  94. package/dist/types/generated/runCode_v3.d.ts.map +1 -0
  95. package/dist/types/generated/runCode_v3.js +7 -0
  96. package/dist/types/generated/runCode_v3.js.map +1 -0
  97. package/dist/types/generated/runShell_v3.d.ts +56 -0
  98. package/dist/types/generated/runShell_v3.d.ts.map +1 -0
  99. package/dist/types/generated/runShell_v3.js +7 -0
  100. package/dist/types/generated/runShell_v3.js.map +1 -0
  101. package/dist/types/generated/saveCookie_v3.d.ts +16 -0
  102. package/dist/types/generated/saveCookie_v3.d.ts.map +1 -0
  103. package/dist/types/generated/saveCookie_v3.js +7 -0
  104. package/dist/types/generated/saveCookie_v3.js.map +1 -0
  105. package/dist/types/generated/screenshot_v3.d.ts +74 -0
  106. package/dist/types/generated/screenshot_v3.d.ts.map +1 -0
  107. package/dist/types/generated/screenshot_v3.js +7 -0
  108. package/dist/types/generated/screenshot_v3.js.map +1 -0
  109. package/dist/types/generated/sourceIntegration_v3.d.ts +30 -0
  110. package/dist/types/generated/sourceIntegration_v3.d.ts.map +1 -0
  111. package/dist/types/generated/sourceIntegration_v3.js +7 -0
  112. package/dist/types/generated/sourceIntegration_v3.js.map +1 -0
  113. package/dist/types/generated/spec_v3.d.ts +159 -0
  114. package/dist/types/generated/spec_v3.d.ts.map +1 -0
  115. package/dist/types/generated/spec_v3.js +7 -0
  116. package/dist/types/generated/spec_v3.js.map +1 -0
  117. package/dist/types/generated/step_v3.d.ts +1270 -0
  118. package/dist/types/generated/step_v3.d.ts.map +1 -0
  119. package/dist/types/generated/step_v3.js +7 -0
  120. package/dist/types/generated/step_v3.js.map +1 -0
  121. package/dist/types/generated/stopRecord_v3.d.ts +9 -0
  122. package/dist/types/generated/stopRecord_v3.d.ts.map +1 -0
  123. package/dist/types/generated/stopRecord_v3.js +7 -0
  124. package/dist/types/generated/stopRecord_v3.js.map +1 -0
  125. package/dist/types/generated/test_v3.d.ts +2915 -0
  126. package/dist/types/generated/test_v3.d.ts.map +1 -0
  127. package/dist/types/generated/test_v3.js +7 -0
  128. package/dist/types/generated/test_v3.js.map +1 -0
  129. package/dist/types/generated/type_v3.d.ts +54 -0
  130. package/dist/types/generated/type_v3.d.ts.map +1 -0
  131. package/dist/types/generated/type_v3.js +7 -0
  132. package/dist/types/generated/type_v3.js.map +1 -0
  133. package/dist/types/generated/wait_v3.d.ts +12 -0
  134. package/dist/types/generated/wait_v3.d.ts.map +1 -0
  135. package/dist/types/generated/wait_v3.js +7 -0
  136. package/dist/types/generated/wait_v3.js.map +1 -0
  137. package/dist/validate.d.ts +41 -0
  138. package/dist/validate.d.ts.map +1 -0
  139. package/dist/validate.js +557 -0
  140. package/dist/validate.js.map +1 -0
  141. package/package.json +60 -36
  142. package/plans/plan-typescriptMigration.prompt.md +25 -0
  143. package/scripts/check-coverage-ratchet.cjs +118 -0
  144. package/scripts/createCjsWrapper.js +25 -0
  145. package/scripts/generateTypes.cjs +54 -0
  146. package/src/detectTests.ts +616 -0
  147. package/src/index.ts +3 -0
  148. package/src/schemas/build/arazzo_v2.schema.json +41 -0
  149. package/src/schemas/build/checkLink_v2.schema.json +1 -1
  150. package/src/schemas/build/checkLink_v3.schema.json +1 -1
  151. package/src/schemas/build/checkLink_v3.schema.yaml +83 -0
  152. package/src/schemas/build/click_v3.schema.json +1 -1
  153. package/src/schemas/build/config_v2.schema.json +14 -14
  154. package/src/schemas/build/config_v3.schema.json +6 -6
  155. package/src/schemas/build/context_v2.schema.json +1 -1
  156. package/src/schemas/build/context_v3.schema.json +1 -1
  157. package/src/schemas/build/dragAndDrop_v3.schema.json +1 -1
  158. package/src/schemas/build/find_v2.schema.json +3 -3
  159. package/src/schemas/build/find_v3.schema.json +4 -4
  160. package/src/schemas/build/goTo_v2.schema.json +1 -1
  161. package/src/schemas/build/goTo_v3.schema.json +1 -1
  162. package/src/schemas/build/httpRequest_v2.schema.json +2 -2
  163. package/src/schemas/build/httpRequest_v3.schema.json +3 -3
  164. package/src/schemas/build/loadCookie_v3.schema.json +1 -1
  165. package/src/schemas/build/loadVariables_v3.schema.json +1 -1
  166. package/src/schemas/build/moveTo_v2.schema.json +1 -1
  167. package/src/schemas/build/openApi_v2.schema.json +1 -1
  168. package/src/schemas/build/openApi_v3.schema.json +1 -1
  169. package/src/schemas/build/record_v3.schema.json +1 -1
  170. package/src/schemas/build/report_v3.schema.json +5 -5
  171. package/src/schemas/build/resolvedTests_v3.schema.json +3 -3
  172. package/src/schemas/build/runCode_v2.schema.json +1 -1
  173. package/src/schemas/build/runCode_v3.schema.json +1 -1
  174. package/src/schemas/build/runShell_v2.schema.json +1 -1
  175. package/src/schemas/build/runShell_v3.schema.json +1 -1
  176. package/src/schemas/build/saveCookie_v3.schema.json +1 -1
  177. package/src/schemas/build/saveScreenshot_v2.schema.json +1 -1
  178. package/src/schemas/build/screenshot_v3.schema.json +2 -2
  179. package/src/schemas/build/setVariables_v2.schema.json +1 -1
  180. package/src/schemas/build/sourceIntegration_v3.schema.json +1 -1
  181. package/src/schemas/build/spec_v2.schema.json +4 -4
  182. package/src/schemas/build/spec_v3.schema.json +4 -4
  183. package/src/schemas/build/startRecording_v2.schema.json +1 -1
  184. package/src/schemas/build/step_v3.schema.json +38 -38
  185. package/src/schemas/build/stopRecord_v3.schema.json +1 -1
  186. package/src/schemas/build/stopRecording_v2.schema.json +1 -1
  187. package/src/schemas/build/terminateScope_v3.schema.json +48 -0
  188. package/src/schemas/build/test_v2.schema.json +15 -15
  189. package/src/schemas/build/test_v3.schema.json +6 -6
  190. package/src/schemas/build/typeKeys_v2.schema.json +1 -1
  191. package/src/schemas/build/type_v3.schema.json +1 -1
  192. package/src/schemas/build/wait_v2.schema.json +1 -1
  193. package/src/schemas/build/wait_v3.schema.json +1 -1
  194. package/src/schemas/{dereferenceSchemas.js → dereferenceSchemas.cjs} +206 -206
  195. package/src/schemas/index.ts +6 -0
  196. package/src/schemas/output_schemas/endRecord_v3.schema.json +13 -13
  197. package/src/schemas/src_schemas/checkLink_v2.schema.json +65 -65
  198. package/src/schemas/src_schemas/checkLink_v3.schema.json +90 -90
  199. package/src/schemas/src_schemas/click_v3.schema.json +143 -143
  200. package/src/schemas/src_schemas/config_v2.schema.json +929 -929
  201. package/src/schemas/src_schemas/config_v3.schema.json +633 -633
  202. package/src/schemas/src_schemas/context_v2.schema.json +108 -108
  203. package/src/schemas/src_schemas/context_v3.schema.json +202 -202
  204. package/src/schemas/src_schemas/dragAndDrop_v3.schema.json +184 -184
  205. package/src/schemas/src_schemas/find_v2.schema.json +155 -155
  206. package/src/schemas/src_schemas/find_v3.schema.json +209 -209
  207. package/src/schemas/src_schemas/goTo_v2.schema.json +57 -57
  208. package/src/schemas/src_schemas/goTo_v3.schema.json +232 -232
  209. package/src/schemas/src_schemas/httpRequest_v2.schema.json +284 -284
  210. package/src/schemas/src_schemas/httpRequest_v3.schema.json +402 -402
  211. package/src/schemas/src_schemas/loadCookie_v3.schema.json +113 -113
  212. package/src/schemas/src_schemas/loadVariables_v3.schema.json +8 -8
  213. package/src/schemas/src_schemas/openApi_v2.schema.json +64 -64
  214. package/src/schemas/src_schemas/openApi_v3.schema.json +160 -160
  215. package/src/schemas/src_schemas/record_v3.schema.json +68 -68
  216. package/src/schemas/src_schemas/report_v3.schema.json +51 -51
  217. package/src/schemas/src_schemas/resolvedTests_v3.schema.json +236 -236
  218. package/src/schemas/src_schemas/runCode_v2.schema.json +181 -181
  219. package/src/schemas/src_schemas/runCode_v3.schema.json +136 -136
  220. package/src/schemas/src_schemas/runShell_v2.schema.json +166 -166
  221. package/src/schemas/src_schemas/runShell_v3.schema.json +154 -154
  222. package/src/schemas/src_schemas/saveCookie_v3.schema.json +124 -124
  223. package/src/schemas/src_schemas/saveScreenshot_v2.schema.json +129 -129
  224. package/src/schemas/src_schemas/screenshot_v3.schema.json +248 -248
  225. package/src/schemas/src_schemas/setVariables_v2.schema.json +37 -37
  226. package/src/schemas/src_schemas/sourceIntegration_v3.schema.json +45 -45
  227. package/src/schemas/src_schemas/spec_v2.schema.json +175 -175
  228. package/src/schemas/src_schemas/spec_v3.schema.json +211 -211
  229. package/src/schemas/src_schemas/startRecording_v2.schema.json +54 -54
  230. package/src/schemas/src_schemas/step_v3.schema.json +632 -632
  231. package/src/schemas/src_schemas/stopRecord_v3.schema.json +13 -13
  232. package/src/schemas/src_schemas/stopRecording_v2.schema.json +31 -31
  233. package/src/schemas/src_schemas/test_v2.schema.json +200 -200
  234. package/src/schemas/src_schemas/test_v3.schema.json +268 -268
  235. package/src/schemas/src_schemas/typeKeys_v2.schema.json +63 -63
  236. package/src/schemas/src_schemas/type_v3.schema.json +118 -118
  237. package/src/schemas/src_schemas/wait_v3.schema.json +35 -35
  238. package/src/types/generated/checkLink_v3.ts +29 -0
  239. package/src/types/generated/click_v3.ts +17 -0
  240. package/src/types/generated/config_v3.ts +405 -0
  241. package/src/types/generated/context_v3.ts +112 -0
  242. package/src/types/generated/dragAndDrop_v3.ts +39 -0
  243. package/src/types/generated/endRecord_v3.ts +10 -0
  244. package/src/types/generated/find_v3.ts +17 -0
  245. package/src/types/generated/goTo_v3.ts +48 -0
  246. package/src/types/generated/httpRequest_v3.ts +17 -0
  247. package/src/types/generated/loadCookie_v3.ts +17 -0
  248. package/src/types/generated/loadVariables_v3.ts +10 -0
  249. package/src/types/generated/openApi_v3.ts +64 -0
  250. package/src/types/generated/record_v3.ts +34 -0
  251. package/src/types/generated/report_v3.ts +183 -0
  252. package/src/types/generated/resolvedTests_v3.ts +585 -0
  253. package/src/types/generated/runCode_v3.ts +59 -0
  254. package/src/types/generated/runShell_v3.ts +58 -0
  255. package/src/types/generated/saveCookie_v3.ts +17 -0
  256. package/src/types/generated/screenshot_v3.ts +76 -0
  257. package/src/types/generated/sourceIntegration_v3.ts +31 -0
  258. package/src/types/generated/spec_v3.ts +166 -0
  259. package/src/types/generated/step_v3.ts +1288 -0
  260. package/src/types/generated/stopRecord_v3.ts +10 -0
  261. package/src/types/generated/test_v3.ts +3048 -0
  262. package/src/types/generated/type_v3.ts +56 -0
  263. package/src/types/generated/wait_v3.ts +13 -0
  264. package/src/{validate.js → validate.ts} +627 -587
  265. package/tsconfig.json +22 -0
  266. package/src/files.js +0 -84
  267. package/src/index.js +0 -12
  268. package/src/resolvePaths.js +0 -252
  269. package/src/schemas/index.js +0 -6
@@ -1,232 +1,232 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "goTo",
4
- "anyOf": [
5
- {
6
- "$ref": "#/components/schemas/string"
7
- },
8
- {
9
- "$ref": "#/components/schemas/object"
10
- }
11
- ],
12
- "components": {
13
- "schemas": {
14
- "string": {
15
- "title": "Go to URL (simple)",
16
- "description": "Navigate to an HTTP or HTTPS URL. Can be a full URL or a path. If a path is provided, navigates relative to the current URL, if any.",
17
- "type": "string",
18
- "pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
19
- "transform": ["trim"]
20
- },
21
- "object": {
22
- "description": "Navigate to an HTTP or HTTPS URL.",
23
- "type": "object",
24
- "additionalProperties": false,
25
- "required": ["url"],
26
- "properties": {
27
- "url": {
28
- "type": "string",
29
- "description": "URL to navigate to. Can be a full URL or a path. If a path is provided and `origin` is specified, prepends `origin` to `url`. If a path is provided but `origin` isn't specified, attempts to navigate relative to the current URL, if any.",
30
- "pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
31
- "transform": ["trim"]
32
- },
33
- "origin": {
34
- "type": "string",
35
- "description": "Protocol and domain to navigate to. Prepended to `url`.",
36
- "transform": ["trim"]
37
- },
38
- "timeout": {
39
- "type": "integer",
40
- "description": "Maximum time in milliseconds to wait for the page to be ready. If exceeded, the goTo action fails.",
41
- "default": 30000,
42
- "minimum": 0
43
- },
44
- "waitUntil": {
45
- "type": "object",
46
- "description": "Configuration for waiting conditions after navigation.",
47
- "additionalProperties": false,
48
- "properties": {
49
- "networkIdleTime": {
50
- "description": "Wait for network activity to be idle (no new requests) for this duration in milliseconds. Set to `null` to skip this check.",
51
- "anyOf": [
52
- {
53
- "type": "integer",
54
- "minimum": 0
55
- },
56
- {
57
- "type": "null"
58
- }
59
- ],
60
- "default": 500
61
- },
62
- "domIdleTime": {
63
- "description": "Wait for DOM mutations to stop for this duration in milliseconds. Set to `null` to skip this check.",
64
- "anyOf": [
65
- {
66
- "type": "integer",
67
- "minimum": 0
68
- },
69
- {
70
- "type": "null"
71
- }
72
- ],
73
- "default": 1000
74
- },
75
- "find": {
76
- "type": "object",
77
- "description": "Wait for a specific element to be present in the DOM. At least one of selector or elementText must be specified.",
78
- "additionalProperties": false,
79
- "anyOf": [
80
- {
81
- "required": ["selector"]
82
- },
83
- {
84
- "required": ["elementText"]
85
- },
86
- {
87
- "required": ["elementId"]
88
- },
89
- {
90
- "required": ["elementTestId"]
91
- },
92
- {
93
- "required": ["elementClass"]
94
- },
95
- {
96
- "required": ["elementAttribute"]
97
- },
98
- {
99
- "required": ["elementAria"]
100
- }
101
- ],
102
- "properties": {
103
- "selector": {
104
- "type": "string",
105
- "description": "CSS selector for the element to wait for."
106
- },
107
- "elementText": {
108
- "type": "string",
109
- "description": "Text content the element must contain. Supports exact match or regex pattern using /pattern/ syntax."
110
- },
111
- "elementId": {
112
- "type": "string",
113
- "description": "ID attribute of the element to find. Supports exact match or regex pattern using /pattern/ syntax."
114
- },
115
- "elementTestId": {
116
- "type": "string",
117
- "description": "data-testid attribute of the element to find. Supports exact match or regex pattern using /pattern/ syntax."
118
- },
119
- "elementClass": {
120
- "anyOf": [
121
- {
122
- "type": "string"
123
- },
124
- {
125
- "type": "array",
126
- "items": {
127
- "type": "string"
128
- }
129
- }
130
- ],
131
- "description": "Class or array of classes that the element must have. Each class supports exact match or regex pattern using /pattern/ syntax. Element must have all specified classes."
132
- },
133
- "elementAttribute": {
134
- "type": "object",
135
- "description": "Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.",
136
- "additionalProperties": {
137
- "anyOf": [
138
- {
139
- "type": "string"
140
- },
141
- {
142
- "type": "number"
143
- },
144
- {
145
- "type": "boolean"
146
- }
147
- ]
148
- }
149
- },
150
- "elementAria": {
151
- "type": "string",
152
- "description": "Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax."
153
- }
154
- }
155
- }
156
- }
157
- }
158
- },
159
- "title": "Go to URL (detailed)"
160
- }
161
- }
162
- },
163
- "examples": [
164
- "https://www.google.com",
165
- "/search",
166
- {
167
- "url": "https://www.google.com"
168
- },
169
- {
170
- "url": "/search",
171
- "origin": "https://www.google.com"
172
- },
173
- {
174
- "url": "https://www.example.com",
175
- "waitUntil": {
176
- "networkIdleTime": 500
177
- }
178
- },
179
- {
180
- "url": "https://www.example.com/dashboard",
181
- "waitUntil": {
182
- "find": {
183
- "selector": "[data-testid='dashboard-loaded']"
184
- }
185
- }
186
- },
187
- {
188
- "url": "https://www.example.com/app",
189
- "timeout": 60000,
190
- "waitUntil": {
191
- "networkIdleTime": 500,
192
- "domIdleTime": 1000,
193
- "find": {
194
- "selector": ".main-content",
195
- "elementText": "Dashboard"
196
- }
197
- }
198
- },
199
- {
200
- "url": "https://www.example.com/app",
201
- "timeout": 60000,
202
- "waitUntil": {
203
- "networkIdleTime": null
204
- }
205
- },
206
- {
207
- "url": "https://www.example.com/status",
208
- "waitUntil": {
209
- "find": {
210
- "elementText": "System operational"
211
- }
212
- }
213
- },
214
- {
215
- "url": "http://localhost:8092",
216
- "waitUntil": {
217
- "find": {
218
- "selector": "button",
219
- "elementText": "Standard Button",
220
- "elementTestId": "standard-btn",
221
- "elementAria": "Sample Standard Button",
222
- "elementId": "standard-btn",
223
- "elementClass": ["btn"],
224
- "elementAttribute": {
225
- "type": "button",
226
- "value": "Standard Button"
227
- }
228
- }
229
- }
230
- }
231
- ]
232
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "goTo",
4
+ "anyOf": [
5
+ {
6
+ "$ref": "#/components/schemas/string"
7
+ },
8
+ {
9
+ "$ref": "#/components/schemas/object"
10
+ }
11
+ ],
12
+ "components": {
13
+ "schemas": {
14
+ "string": {
15
+ "title": "Go to URL (simple)",
16
+ "description": "Navigate to an HTTP or HTTPS URL. Can be a full URL or a path. If a path is provided, navigates relative to the current URL, if any.",
17
+ "type": "string",
18
+ "pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
19
+ "transform": ["trim"]
20
+ },
21
+ "object": {
22
+ "description": "Navigate to an HTTP or HTTPS URL.",
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": ["url"],
26
+ "properties": {
27
+ "url": {
28
+ "type": "string",
29
+ "description": "URL to navigate to. Can be a full URL or a path. If a path is provided and `origin` is specified, prepends `origin` to `url`. If a path is provided but `origin` isn't specified, attempts to navigate relative to the current URL, if any.",
30
+ "pattern": "(^(http://|https://|/).*|\\$[A-Za-z0-9_]+)",
31
+ "transform": ["trim"]
32
+ },
33
+ "origin": {
34
+ "type": "string",
35
+ "description": "Protocol and domain to navigate to. Prepended to `url`.",
36
+ "transform": ["trim"]
37
+ },
38
+ "timeout": {
39
+ "type": "integer",
40
+ "description": "Maximum time in milliseconds to wait for the page to be ready. If exceeded, the goTo action fails.",
41
+ "default": 30000,
42
+ "minimum": 0
43
+ },
44
+ "waitUntil": {
45
+ "type": "object",
46
+ "description": "Configuration for waiting conditions after navigation.",
47
+ "additionalProperties": false,
48
+ "properties": {
49
+ "networkIdleTime": {
50
+ "description": "Wait for network activity to be idle (no new requests) for this duration in milliseconds. Set to `null` to skip this check.",
51
+ "anyOf": [
52
+ {
53
+ "type": "integer",
54
+ "minimum": 0
55
+ },
56
+ {
57
+ "type": "null"
58
+ }
59
+ ],
60
+ "default": 500
61
+ },
62
+ "domIdleTime": {
63
+ "description": "Wait for DOM mutations to stop for this duration in milliseconds. Set to `null` to skip this check.",
64
+ "anyOf": [
65
+ {
66
+ "type": "integer",
67
+ "minimum": 0
68
+ },
69
+ {
70
+ "type": "null"
71
+ }
72
+ ],
73
+ "default": 1000
74
+ },
75
+ "find": {
76
+ "type": "object",
77
+ "description": "Wait for a specific element to be present in the DOM. At least one of selector or elementText must be specified.",
78
+ "additionalProperties": false,
79
+ "anyOf": [
80
+ {
81
+ "required": ["selector"]
82
+ },
83
+ {
84
+ "required": ["elementText"]
85
+ },
86
+ {
87
+ "required": ["elementId"]
88
+ },
89
+ {
90
+ "required": ["elementTestId"]
91
+ },
92
+ {
93
+ "required": ["elementClass"]
94
+ },
95
+ {
96
+ "required": ["elementAttribute"]
97
+ },
98
+ {
99
+ "required": ["elementAria"]
100
+ }
101
+ ],
102
+ "properties": {
103
+ "selector": {
104
+ "type": "string",
105
+ "description": "CSS selector for the element to wait for."
106
+ },
107
+ "elementText": {
108
+ "type": "string",
109
+ "description": "Text content the element must contain. Supports exact match or regex pattern using /pattern/ syntax."
110
+ },
111
+ "elementId": {
112
+ "type": "string",
113
+ "description": "ID attribute of the element to find. Supports exact match or regex pattern using /pattern/ syntax."
114
+ },
115
+ "elementTestId": {
116
+ "type": "string",
117
+ "description": "data-testid attribute of the element to find. Supports exact match or regex pattern using /pattern/ syntax."
118
+ },
119
+ "elementClass": {
120
+ "anyOf": [
121
+ {
122
+ "type": "string"
123
+ },
124
+ {
125
+ "type": "array",
126
+ "items": {
127
+ "type": "string"
128
+ }
129
+ }
130
+ ],
131
+ "description": "Class or array of classes that the element must have. Each class supports exact match or regex pattern using /pattern/ syntax. Element must have all specified classes."
132
+ },
133
+ "elementAttribute": {
134
+ "type": "object",
135
+ "description": "Object of attribute key-value pairs that the element must have. Values can be strings (supporting /pattern/ regex), numbers, or booleans. Boolean true matches attribute presence, false matches absence.",
136
+ "additionalProperties": {
137
+ "anyOf": [
138
+ {
139
+ "type": "string"
140
+ },
141
+ {
142
+ "type": "number"
143
+ },
144
+ {
145
+ "type": "boolean"
146
+ }
147
+ ]
148
+ }
149
+ },
150
+ "elementAria": {
151
+ "type": "string",
152
+ "description": "Computed accessible name of the element per ARIA specification. Supports exact match or regex pattern using /pattern/ syntax."
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ },
159
+ "title": "Go to URL (detailed)"
160
+ }
161
+ }
162
+ },
163
+ "examples": [
164
+ "https://www.google.com",
165
+ "/search",
166
+ {
167
+ "url": "https://www.google.com"
168
+ },
169
+ {
170
+ "url": "/search",
171
+ "origin": "https://www.google.com"
172
+ },
173
+ {
174
+ "url": "https://www.example.com",
175
+ "waitUntil": {
176
+ "networkIdleTime": 500
177
+ }
178
+ },
179
+ {
180
+ "url": "https://www.example.com/dashboard",
181
+ "waitUntil": {
182
+ "find": {
183
+ "selector": "[data-testid='dashboard-loaded']"
184
+ }
185
+ }
186
+ },
187
+ {
188
+ "url": "https://www.example.com/app",
189
+ "timeout": 60000,
190
+ "waitUntil": {
191
+ "networkIdleTime": 500,
192
+ "domIdleTime": 1000,
193
+ "find": {
194
+ "selector": ".main-content",
195
+ "elementText": "Dashboard"
196
+ }
197
+ }
198
+ },
199
+ {
200
+ "url": "https://www.example.com/app",
201
+ "timeout": 60000,
202
+ "waitUntil": {
203
+ "networkIdleTime": null
204
+ }
205
+ },
206
+ {
207
+ "url": "https://www.example.com/status",
208
+ "waitUntil": {
209
+ "find": {
210
+ "elementText": "System operational"
211
+ }
212
+ }
213
+ },
214
+ {
215
+ "url": "http://localhost:8092",
216
+ "waitUntil": {
217
+ "find": {
218
+ "selector": "button",
219
+ "elementText": "Standard Button",
220
+ "elementTestId": "standard-btn",
221
+ "elementAria": "Sample Standard Button",
222
+ "elementId": "standard-btn",
223
+ "elementClass": ["btn"],
224
+ "elementAttribute": {
225
+ "type": "button",
226
+ "value": "Standard Button"
227
+ }
228
+ }
229
+ }
230
+ }
231
+ ]
232
+ }