donobu 2.15.1 → 2.16.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 (294) hide show
  1. package/dist/assets/control-panel.js +30 -3
  2. package/dist/assets/generated/parameter-schemas.json +33 -33
  3. package/dist/assets/generated/version +1 -1
  4. package/dist/assets/interactive-elements-tracker.js +351 -0
  5. package/dist/assets/page-interactions-tracker.js +39 -20
  6. package/dist/assets/smart-selector-generator.js +38 -15
  7. package/dist/bindings/FocusPage.d.ts +6 -1
  8. package/dist/bindings/FocusPage.d.ts.map +1 -1
  9. package/dist/bindings/FocusPage.js +2 -8
  10. package/dist/bindings/FocusPage.js.map +1 -1
  11. package/dist/bindings/PageInteractionTracker.d.ts +9 -2
  12. package/dist/bindings/PageInteractionTracker.d.ts.map +1 -1
  13. package/dist/bindings/PageInteractionTracker.js +27 -3
  14. package/dist/bindings/PageInteractionTracker.js.map +1 -1
  15. package/dist/bindings/ProposeToolCall.d.ts +20 -0
  16. package/dist/bindings/ProposeToolCall.d.ts.map +1 -0
  17. package/dist/bindings/ProposeToolCall.js +29 -0
  18. package/dist/bindings/ProposeToolCall.js.map +1 -0
  19. package/dist/bindings/ToggleDonobuAnnotations.d.ts +5 -2
  20. package/dist/bindings/ToggleDonobuAnnotations.d.ts.map +1 -1
  21. package/dist/bindings/ToggleDonobuAnnotations.js +12 -6
  22. package/dist/bindings/ToggleDonobuAnnotations.js.map +1 -1
  23. package/dist/esm/assets/control-panel.js +30 -3
  24. package/dist/esm/assets/generated/parameter-schemas.json +33 -33
  25. package/dist/esm/assets/generated/version +1 -1
  26. package/dist/esm/assets/interactive-elements-tracker.js +351 -0
  27. package/dist/esm/assets/page-interactions-tracker.js +39 -20
  28. package/dist/esm/assets/smart-selector-generator.js +38 -15
  29. package/dist/esm/bindings/FocusPage.d.ts +6 -1
  30. package/dist/esm/bindings/FocusPage.d.ts.map +1 -1
  31. package/dist/esm/bindings/FocusPage.js +2 -8
  32. package/dist/esm/bindings/FocusPage.js.map +1 -1
  33. package/dist/esm/bindings/PageInteractionTracker.d.ts +9 -2
  34. package/dist/esm/bindings/PageInteractionTracker.d.ts.map +1 -1
  35. package/dist/esm/bindings/PageInteractionTracker.js +27 -3
  36. package/dist/esm/bindings/PageInteractionTracker.js.map +1 -1
  37. package/dist/esm/bindings/ProposeToolCall.d.ts +20 -0
  38. package/dist/esm/bindings/ProposeToolCall.d.ts.map +1 -0
  39. package/dist/esm/bindings/ProposeToolCall.js +29 -0
  40. package/dist/esm/bindings/ProposeToolCall.js.map +1 -0
  41. package/dist/esm/bindings/ToggleDonobuAnnotations.d.ts +5 -2
  42. package/dist/esm/bindings/ToggleDonobuAnnotations.d.ts.map +1 -1
  43. package/dist/esm/bindings/ToggleDonobuAnnotations.js +12 -6
  44. package/dist/esm/bindings/ToggleDonobuAnnotations.js.map +1 -1
  45. package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
  46. package/dist/esm/managers/CodeGenerator.js +2 -1
  47. package/dist/esm/managers/CodeGenerator.js.map +1 -1
  48. package/dist/esm/managers/ControlPanel.d.ts +124 -0
  49. package/dist/esm/managers/ControlPanel.d.ts.map +1 -0
  50. package/dist/esm/managers/ControlPanel.js +282 -0
  51. package/dist/esm/managers/ControlPanel.js.map +1 -0
  52. package/dist/esm/managers/DonobuFlow.d.ts +4 -12
  53. package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
  54. package/dist/esm/managers/DonobuFlow.js +35 -140
  55. package/dist/esm/managers/DonobuFlow.js.map +1 -1
  56. package/dist/esm/managers/InteractionVisualizer.d.ts +9 -15
  57. package/dist/esm/managers/InteractionVisualizer.d.ts.map +1 -1
  58. package/dist/esm/managers/InteractionVisualizer.js +44 -44
  59. package/dist/esm/managers/InteractionVisualizer.js.map +1 -1
  60. package/dist/esm/managers/PageInspector.d.ts +242 -0
  61. package/dist/esm/managers/PageInspector.d.ts.map +1 -0
  62. package/dist/esm/managers/PageInspector.js +783 -0
  63. package/dist/esm/managers/PageInspector.js.map +1 -0
  64. package/dist/esm/managers/ToolManager.d.ts.map +1 -1
  65. package/dist/esm/managers/ToolManager.js +3 -5
  66. package/dist/esm/managers/ToolManager.js.map +1 -1
  67. package/dist/esm/models/InteractableElement.d.ts +2 -2
  68. package/dist/esm/models/ToolCallContext.d.ts +6 -2
  69. package/dist/esm/models/ToolCallContext.d.ts.map +1 -1
  70. package/dist/esm/playwrightTestExtensions.d.ts +5 -0
  71. package/dist/esm/playwrightTestExtensions.d.ts.map +1 -1
  72. package/dist/esm/playwrightTestExtensions.js +52 -13
  73. package/dist/esm/playwrightTestExtensions.js.map +1 -1
  74. package/dist/esm/tools/AnalyzePageTextTool.js +1 -1
  75. package/dist/esm/tools/AnalyzePageTextTool.js.map +1 -1
  76. package/dist/esm/tools/AssertPageTextTool.js +1 -1
  77. package/dist/esm/tools/AssertPageTextTool.js.map +1 -1
  78. package/dist/esm/tools/AssertTool.d.ts.map +1 -1
  79. package/dist/esm/tools/AssertTool.js +4 -4
  80. package/dist/esm/tools/AssertTool.js.map +1 -1
  81. package/dist/esm/tools/ChangeWebBrowserTabTool.d.ts.map +1 -1
  82. package/dist/esm/tools/ChangeWebBrowserTabTool.js +8 -7
  83. package/dist/esm/tools/ChangeWebBrowserTabTool.js.map +1 -1
  84. package/dist/esm/tools/ClickTool.js +1 -1
  85. package/dist/esm/tools/ClickTool.js.map +1 -1
  86. package/dist/esm/tools/CreateBrowserCookieReportTool.js +1 -1
  87. package/dist/esm/tools/CreateBrowserCookieReportTool.js.map +1 -1
  88. package/dist/esm/tools/CustomToolRunnerTool.d.ts.map +1 -1
  89. package/dist/esm/tools/CustomToolRunnerTool.js +1 -1
  90. package/dist/esm/tools/CustomToolRunnerTool.js.map +1 -1
  91. package/dist/esm/tools/DetectBrokenLinksTool.js +1 -1
  92. package/dist/esm/tools/DetectBrokenLinksTool.js.map +1 -1
  93. package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
  94. package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
  95. package/dist/esm/tools/ExtractPaymentProviderKeyTool.js +1 -1
  96. package/dist/esm/tools/ExtractPaymentProviderKeyTool.js.map +1 -1
  97. package/dist/esm/tools/ExtractPublicFacebookEntityDataTool.js +1 -1
  98. package/dist/esm/tools/ExtractPublicFacebookEntityDataTool.js.map +1 -1
  99. package/dist/esm/tools/GoForwardOrBackTool.js +1 -1
  100. package/dist/esm/tools/GoForwardOrBackTool.js.map +1 -1
  101. package/dist/esm/tools/GoToGoogleMapsStreetViewTool.js +1 -1
  102. package/dist/esm/tools/GoToGoogleMapsStreetViewTool.js.map +1 -1
  103. package/dist/esm/tools/GoToWebpageTool.js +1 -1
  104. package/dist/esm/tools/GoToWebpageTool.js.map +1 -1
  105. package/dist/esm/tools/HoverOverElementTool.d.ts.map +1 -1
  106. package/dist/esm/tools/HoverOverElementTool.js +1 -1
  107. package/dist/esm/tools/HoverOverElementTool.js.map +1 -1
  108. package/dist/esm/tools/NavigateWithinStreetView.js +1 -1
  109. package/dist/esm/tools/NavigateWithinStreetView.js.map +1 -1
  110. package/dist/esm/tools/PressKeyTool.js +1 -1
  111. package/dist/esm/tools/PressKeyTool.js.map +1 -1
  112. package/dist/esm/tools/ReloadPageTool.js +1 -1
  113. package/dist/esm/tools/ReloadPageTool.js.map +1 -1
  114. package/dist/esm/tools/ReplayableInteraction.d.ts +16 -1
  115. package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
  116. package/dist/esm/tools/ReplayableInteraction.js +169 -16
  117. package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
  118. package/dist/esm/tools/RunAccessibilityTestTool.d.ts +8 -0
  119. package/dist/esm/tools/RunAccessibilityTestTool.d.ts.map +1 -1
  120. package/dist/esm/tools/RunAccessibilityTestTool.js +15 -2
  121. package/dist/esm/tools/RunAccessibilityTestTool.js.map +1 -1
  122. package/dist/esm/tools/RunInlineJavaScriptCodeTool.d.ts.map +1 -1
  123. package/dist/esm/tools/RunInlineJavaScriptCodeTool.js +1 -1
  124. package/dist/esm/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
  125. package/dist/esm/tools/SaveWebpageAsPdfTool.js +1 -1
  126. package/dist/esm/tools/SaveWebpageAsPdfTool.js.map +1 -1
  127. package/dist/esm/tools/ScrollPageTool.d.ts +1 -1
  128. package/dist/esm/tools/ScrollPageTool.d.ts.map +1 -1
  129. package/dist/esm/tools/ScrollPageTool.js +47 -4
  130. package/dist/esm/tools/ScrollPageTool.js.map +1 -1
  131. package/dist/esm/tools/WaitTool.js +1 -1
  132. package/dist/esm/tools/WaitTool.js.map +1 -1
  133. package/dist/esm/utils/MiscUtils.d.ts +2 -2
  134. package/dist/esm/utils/MiscUtils.js +2 -2
  135. package/dist/esm/utils/PlaywrightUtils.d.ts +26 -127
  136. package/dist/esm/utils/PlaywrightUtils.d.ts.map +1 -1
  137. package/dist/esm/utils/PlaywrightUtils.js +133 -935
  138. package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
  139. package/dist/managers/CodeGenerator.d.ts.map +1 -1
  140. package/dist/managers/CodeGenerator.js +2 -1
  141. package/dist/managers/CodeGenerator.js.map +1 -1
  142. package/dist/managers/ControlPanel.d.ts +124 -0
  143. package/dist/managers/ControlPanel.d.ts.map +1 -0
  144. package/dist/managers/ControlPanel.js +282 -0
  145. package/dist/managers/ControlPanel.js.map +1 -0
  146. package/dist/managers/DonobuFlow.d.ts +4 -12
  147. package/dist/managers/DonobuFlow.d.ts.map +1 -1
  148. package/dist/managers/DonobuFlow.js +35 -140
  149. package/dist/managers/DonobuFlow.js.map +1 -1
  150. package/dist/managers/InteractionVisualizer.d.ts +9 -15
  151. package/dist/managers/InteractionVisualizer.d.ts.map +1 -1
  152. package/dist/managers/InteractionVisualizer.js +44 -44
  153. package/dist/managers/InteractionVisualizer.js.map +1 -1
  154. package/dist/managers/PageInspector.d.ts +242 -0
  155. package/dist/managers/PageInspector.d.ts.map +1 -0
  156. package/dist/managers/PageInspector.js +783 -0
  157. package/dist/managers/PageInspector.js.map +1 -0
  158. package/dist/managers/ToolManager.d.ts.map +1 -1
  159. package/dist/managers/ToolManager.js +3 -5
  160. package/dist/managers/ToolManager.js.map +1 -1
  161. package/dist/models/InteractableElement.d.ts +2 -2
  162. package/dist/models/ToolCallContext.d.ts +6 -2
  163. package/dist/models/ToolCallContext.d.ts.map +1 -1
  164. package/dist/playwrightTestExtensions.d.ts +5 -0
  165. package/dist/playwrightTestExtensions.d.ts.map +1 -1
  166. package/dist/playwrightTestExtensions.js +52 -13
  167. package/dist/playwrightTestExtensions.js.map +1 -1
  168. package/dist/tools/AnalyzePageTextTool.js +1 -1
  169. package/dist/tools/AnalyzePageTextTool.js.map +1 -1
  170. package/dist/tools/AssertPageTextTool.js +1 -1
  171. package/dist/tools/AssertPageTextTool.js.map +1 -1
  172. package/dist/tools/AssertTool.d.ts.map +1 -1
  173. package/dist/tools/AssertTool.js +4 -4
  174. package/dist/tools/AssertTool.js.map +1 -1
  175. package/dist/tools/ChangeWebBrowserTabTool.d.ts.map +1 -1
  176. package/dist/tools/ChangeWebBrowserTabTool.js +8 -7
  177. package/dist/tools/ChangeWebBrowserTabTool.js.map +1 -1
  178. package/dist/tools/ClickTool.js +1 -1
  179. package/dist/tools/ClickTool.js.map +1 -1
  180. package/dist/tools/CreateBrowserCookieReportTool.js +1 -1
  181. package/dist/tools/CreateBrowserCookieReportTool.js.map +1 -1
  182. package/dist/tools/CustomToolRunnerTool.d.ts.map +1 -1
  183. package/dist/tools/CustomToolRunnerTool.js +1 -1
  184. package/dist/tools/CustomToolRunnerTool.js.map +1 -1
  185. package/dist/tools/DetectBrokenLinksTool.js +1 -1
  186. package/dist/tools/DetectBrokenLinksTool.js.map +1 -1
  187. package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
  188. package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
  189. package/dist/tools/ExtractPaymentProviderKeyTool.js +1 -1
  190. package/dist/tools/ExtractPaymentProviderKeyTool.js.map +1 -1
  191. package/dist/tools/ExtractPublicFacebookEntityDataTool.js +1 -1
  192. package/dist/tools/ExtractPublicFacebookEntityDataTool.js.map +1 -1
  193. package/dist/tools/GoForwardOrBackTool.js +1 -1
  194. package/dist/tools/GoForwardOrBackTool.js.map +1 -1
  195. package/dist/tools/GoToGoogleMapsStreetViewTool.js +1 -1
  196. package/dist/tools/GoToGoogleMapsStreetViewTool.js.map +1 -1
  197. package/dist/tools/GoToWebpageTool.js +1 -1
  198. package/dist/tools/GoToWebpageTool.js.map +1 -1
  199. package/dist/tools/HoverOverElementTool.d.ts.map +1 -1
  200. package/dist/tools/HoverOverElementTool.js +1 -1
  201. package/dist/tools/HoverOverElementTool.js.map +1 -1
  202. package/dist/tools/NavigateWithinStreetView.js +1 -1
  203. package/dist/tools/NavigateWithinStreetView.js.map +1 -1
  204. package/dist/tools/PressKeyTool.js +1 -1
  205. package/dist/tools/PressKeyTool.js.map +1 -1
  206. package/dist/tools/ReloadPageTool.js +1 -1
  207. package/dist/tools/ReloadPageTool.js.map +1 -1
  208. package/dist/tools/ReplayableInteraction.d.ts +16 -1
  209. package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
  210. package/dist/tools/ReplayableInteraction.js +169 -16
  211. package/dist/tools/ReplayableInteraction.js.map +1 -1
  212. package/dist/tools/RunAccessibilityTestTool.d.ts +8 -0
  213. package/dist/tools/RunAccessibilityTestTool.d.ts.map +1 -1
  214. package/dist/tools/RunAccessibilityTestTool.js +15 -2
  215. package/dist/tools/RunAccessibilityTestTool.js.map +1 -1
  216. package/dist/tools/RunInlineJavaScriptCodeTool.d.ts.map +1 -1
  217. package/dist/tools/RunInlineJavaScriptCodeTool.js +1 -1
  218. package/dist/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
  219. package/dist/tools/SaveWebpageAsPdfTool.js +1 -1
  220. package/dist/tools/SaveWebpageAsPdfTool.js.map +1 -1
  221. package/dist/tools/ScrollPageTool.d.ts +1 -1
  222. package/dist/tools/ScrollPageTool.d.ts.map +1 -1
  223. package/dist/tools/ScrollPageTool.js +47 -4
  224. package/dist/tools/ScrollPageTool.js.map +1 -1
  225. package/dist/tools/WaitTool.js +1 -1
  226. package/dist/tools/WaitTool.js.map +1 -1
  227. package/dist/utils/MiscUtils.d.ts +2 -2
  228. package/dist/utils/MiscUtils.js +2 -2
  229. package/dist/utils/PlaywrightUtils.d.ts +26 -127
  230. package/dist/utils/PlaywrightUtils.d.ts.map +1 -1
  231. package/dist/utils/PlaywrightUtils.js +133 -935
  232. package/dist/utils/PlaywrightUtils.js.map +1 -1
  233. package/package.json +1 -1
  234. package/dist/assets/clickable-elements-tracker.js +0 -63
  235. package/dist/assets/zaru-eyes.html +0 -141
  236. package/dist/esm/assets/clickable-elements-tracker.js +0 -63
  237. package/dist/esm/assets/zaru-eyes.html +0 -141
  238. package/dist/esm/managers/TemplateInterpolator.d.ts +0 -19
  239. package/dist/esm/managers/TemplateInterpolator.d.ts.map +0 -1
  240. package/dist/esm/managers/TemplateInterpolator.js +0 -86
  241. package/dist/esm/managers/TemplateInterpolator.js.map +0 -1
  242. package/dist/esm/managers/ToolTipper.d.ts +0 -32
  243. package/dist/esm/managers/ToolTipper.d.ts.map +0 -1
  244. package/dist/esm/managers/ToolTipper.js +0 -229
  245. package/dist/esm/managers/ToolTipper.js.map +0 -1
  246. package/dist/esm/models/BrowserState.d.ts +0 -26
  247. package/dist/esm/models/BrowserState.d.ts.map +0 -1
  248. package/dist/esm/models/BrowserState.js +0 -3
  249. package/dist/esm/models/BrowserState.js.map +0 -1
  250. package/dist/esm/models/ResolverContext.d.ts +0 -7
  251. package/dist/esm/models/ResolverContext.d.ts.map +0 -1
  252. package/dist/esm/models/ResolverContext.js +0 -3
  253. package/dist/esm/models/ResolverContext.js.map +0 -1
  254. package/dist/esm/models/ToolTemplateDataSource.d.ts +0 -36
  255. package/dist/esm/models/ToolTemplateDataSource.d.ts.map +0 -1
  256. package/dist/esm/models/ToolTemplateDataSource.js +0 -3
  257. package/dist/esm/models/ToolTemplateDataSource.js.map +0 -1
  258. package/dist/esm/test.d.ts +0 -78
  259. package/dist/esm/test.d.ts.map +0 -1
  260. package/dist/esm/test.js +0 -423
  261. package/dist/esm/test.js.map +0 -1
  262. package/dist/esm/utils/TemplateInterpolator.d.ts +0 -29
  263. package/dist/esm/utils/TemplateInterpolator.d.ts.map +0 -1
  264. package/dist/esm/utils/TemplateInterpolator.js +0 -206
  265. package/dist/esm/utils/TemplateInterpolator.js.map +0 -1
  266. package/dist/managers/TemplateInterpolator.d.ts +0 -19
  267. package/dist/managers/TemplateInterpolator.d.ts.map +0 -1
  268. package/dist/managers/TemplateInterpolator.js +0 -86
  269. package/dist/managers/TemplateInterpolator.js.map +0 -1
  270. package/dist/managers/ToolTipper.d.ts +0 -32
  271. package/dist/managers/ToolTipper.d.ts.map +0 -1
  272. package/dist/managers/ToolTipper.js +0 -229
  273. package/dist/managers/ToolTipper.js.map +0 -1
  274. package/dist/models/BrowserState.d.ts +0 -26
  275. package/dist/models/BrowserState.d.ts.map +0 -1
  276. package/dist/models/BrowserState.js +0 -3
  277. package/dist/models/BrowserState.js.map +0 -1
  278. package/dist/models/ResolverContext.d.ts +0 -7
  279. package/dist/models/ResolverContext.d.ts.map +0 -1
  280. package/dist/models/ResolverContext.js +0 -3
  281. package/dist/models/ResolverContext.js.map +0 -1
  282. package/dist/models/ToolTemplateDataSource.d.ts +0 -36
  283. package/dist/models/ToolTemplateDataSource.d.ts.map +0 -1
  284. package/dist/models/ToolTemplateDataSource.js +0 -3
  285. package/dist/models/ToolTemplateDataSource.js.map +0 -1
  286. package/dist/test.d.ts +0 -78
  287. package/dist/test.d.ts.map +0 -1
  288. package/dist/test.js +0 -423
  289. package/dist/test.js.map +0 -1
  290. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  291. package/dist/utils/TemplateInterpolator.d.ts +0 -29
  292. package/dist/utils/TemplateInterpolator.d.ts.map +0 -1
  293. package/dist/utils/TemplateInterpolator.js +0 -211
  294. package/dist/utils/TemplateInterpolator.js.map +0 -1
@@ -1,7 +0,0 @@
1
- /**
2
- * This is supplied as context when doing string interpolation via the TemplateInterpolator.
3
- */
4
- export type ResolverContext = {
5
- donobu: Record<string, unknown>;
6
- };
7
- //# sourceMappingURL=ResolverContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolverContext.d.ts","sourceRoot":"","sources":["../../src/models/ResolverContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ResolverContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolverContext.js","sourceRoot":"","sources":["../../src/models/ResolverContext.ts"],"names":[],"mappings":""}
@@ -1,36 +0,0 @@
1
- /**
2
- * This type defines the structure of the data source used when interpolating
3
- * templates in the context of tool calls.
4
- *
5
- * Note that unlike the ToolCall type, the data here is itself interpolated
6
- * from historical tool calls. For example, a ToolCall 'parameters' field
7
- * might look like...
8
- * {
9
- * "foo": "Hello {{$.calls[0].name}}",
10
- * }
11
- * ...if it was referencing the data from a past tool call. However, the
12
- * data here is the result of that interpolation, so it would look like...
13
- * {
14
- * "foo": "Hello foo",
15
- * }
16
- */
17
- export type ToolTemplateDataSource = {
18
- /**
19
- * The historical tool calls for the current Donobu flow.
20
- */
21
- calls: {
22
- /**
23
- * The name of the tool that was called.
24
- */
25
- name: string;
26
- /**
27
- * The arguments that were passed to the tool.
28
- */
29
- args: any;
30
- /**
31
- * The result of the tool call.
32
- */
33
- result: string;
34
- }[];
35
- };
36
- //# sourceMappingURL=ToolTemplateDataSource.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolTemplateDataSource.d.ts","sourceRoot":"","sources":["../../src/models/ToolTemplateDataSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,KAAK,EAAE;QACL;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,IAAI,EAAE,GAAG,CAAC;QACV;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ToolTemplateDataSource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolTemplateDataSource.js","sourceRoot":"","sources":["../../src/models/ToolTemplateDataSource.ts"],"names":[],"mappings":""}
package/dist/test.d.ts DELETED
@@ -1,78 +0,0 @@
1
- import { TestFixture } from '@playwright/test';
2
- import type { Page } from '@playwright/test';
3
- import { FlowMetadata } from './models/FlowMetadata';
4
- import { BrowserStorageState } from './models/BrowserStorageState';
5
- import { BrowserStateReference } from './models/BrowserStateFlowReference';
6
- import { ToolCallResult } from './models/ToolCallResult';
7
- import { AnalyzePageTextToolCoreParameters } from './tools/AnalyzePageTextTool';
8
- import { AssertToolCoreParameters } from './tools/AssertTool';
9
- import { GptClient } from './clients/GptClient';
10
- import { SelectorBasedChooseSelectOptionToolParameters } from './tools/ChooseSelectOptionTool';
11
- import { SelectorBasedInputRandomizedEmailAddressToolParameters } from './tools/InputRandomizedEmailAddressTool';
12
- import { SelectorBasedInputTextToolParameters } from './tools/InputTextTool';
13
- import { SelectorBasedPressKeyToolParameters } from './tools/PressKeyTool';
14
- import { ScrollPageToolCoreParameters } from './tools/ScrollPageTool';
15
- import { SelectorBasedHoverOverElementToolParameters } from './tools/HoverOverElementTool';
16
- import { SelectorBasedClickToolParameters } from './tools/ClickTool';
17
- import { LanguageModel } from 'ai';
18
- import { AssertPageTextToolCoreParameters } from './tools/AssertPageTextTool';
19
- import { DonobuStack } from './managers/DonobuStack';
20
- /**
21
- * Extends the Page object with additional test-related methods.
22
- */
23
- interface DonobuExtendedPage extends Page {
24
- run(toolName: string, toolParams?: any): Promise<ToolCallResult>;
25
- analyzePageText(params: AnalyzePageTextToolCoreParameters): Promise<ToolCallResult>;
26
- assertPageText(params: AssertPageTextToolCoreParameters): Promise<ToolCallResult>;
27
- chooseSelectOption(params: SelectorBasedChooseSelectOptionToolParameters): Promise<ToolCallResult>;
28
- clickElement(params: SelectorBasedClickToolParameters): Promise<ToolCallResult>;
29
- createCookieReport(): Promise<ToolCallResult>;
30
- detectBrokenLinks(): Promise<ToolCallResult>;
31
- hoverOverElement(params: SelectorBasedHoverOverElementToolParameters): Promise<ToolCallResult>;
32
- inputRandomizedEmailAddress(params: SelectorBasedInputRandomizedEmailAddressToolParameters): Promise<ToolCallResult>;
33
- inputText(params: SelectorBasedInputTextToolParameters): Promise<ToolCallResult>;
34
- pressKey(params: SelectorBasedPressKeyToolParameters): Promise<ToolCallResult>;
35
- runAccessibilityTest(): Promise<ToolCallResult>;
36
- scroll(params: ScrollPageToolCoreParameters): Promise<ToolCallResult>;
37
- visuallyAssert(params: AssertToolCoreParameters): Promise<ToolCallResult>;
38
- _donobuFlowMetadata: FlowMetadata;
39
- }
40
- export declare function getOrCreateDonobuStack(): Promise<DonobuStack>;
41
- export declare function getBrowserStorageState(flowIdOrName: BrowserStateReference): Promise<BrowserStorageState>;
42
- export declare function getBrowserStorageStateFixture(flowIdOrName: BrowserStateReference): TestFixture<BrowserStorageState, any>;
43
- export declare function anthropicClient(modelName: string, apiKey?: string): Promise<GptClient>;
44
- export declare function anthropicClientFixture(modelName: string, apiKey?: string): TestFixture<GptClient, any>;
45
- export declare function anthropicAwsBedrockClient(modelName: string, region: string, accessKeyId?: string, secretAccessKey?: string): Promise<GptClient>;
46
- export declare function anthropicAwsBedrockClientFixture(modelName: string, region: string, accessKeyId?: string, secretAccessKey?: string): TestFixture<GptClient, any>;
47
- export declare function googleGeminiClient(modelName: string, apiKey?: string): Promise<GptClient>;
48
- export declare function googleGeminiClientFixture(modelName: string, apiKey?: string): TestFixture<GptClient, any>;
49
- export declare function openAiClient(modelName: string, apiKey?: string): Promise<GptClient>;
50
- export declare function openAiClientFixture(modelName: string, apiKey?: string): TestFixture<GptClient, any>;
51
- export declare function vercelAiClientFixture(model: LanguageModel): TestFixture<GptClient, any>;
52
- /**
53
- * This fixture resolves a GPT client based on environment variables.
54
- * Supplying different environment variables will result in different GPT
55
- * clients being created. Here is a mapping of client type to environment
56
- * variables for how to create the various types of clients...
57
- *
58
- * Anthropic GPT client requires:
59
- * - ANTHROPIC_API_KEY
60
- *
61
- * Google GPT client requires:
62
- * - GOOGLE_GENERATIVE_AI_API_KEY
63
- *
64
- * OpenAI GPT client requires:
65
- * - OPENAI_API_KEY
66
- *
67
- * If the modelName is not specified, it will be defaulted according to the
68
- * DEFAULT_GPT_MODEL_FOR_PLATFORM mapping.
69
- */
70
- export declare function gptClient(modelName?: string): Promise<GptClient>;
71
- export declare function gptClientFixture(modelName?: string): TestFixture<GptClient, any>;
72
- export * from 'playwright/test';
73
- export declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & {
74
- storageState?: BrowserStorageState | Promise<BrowserStorageState>;
75
- gptClient?: GptClient;
76
- page: DonobuExtendedPage;
77
- }, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
78
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
package/dist/test.js DELETED
@@ -1,423 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.test = void 0;
18
- exports.getOrCreateDonobuStack = getOrCreateDonobuStack;
19
- exports.getBrowserStorageState = getBrowserStorageState;
20
- exports.getBrowserStorageStateFixture = getBrowserStorageStateFixture;
21
- exports.anthropicClient = anthropicClient;
22
- exports.anthropicClientFixture = anthropicClientFixture;
23
- exports.anthropicAwsBedrockClient = anthropicAwsBedrockClient;
24
- exports.anthropicAwsBedrockClientFixture = anthropicAwsBedrockClientFixture;
25
- exports.googleGeminiClient = googleGeminiClient;
26
- exports.googleGeminiClientFixture = googleGeminiClientFixture;
27
- exports.openAiClient = openAiClient;
28
- exports.openAiClientFixture = openAiClientFixture;
29
- exports.vercelAiClientFixture = vercelAiClientFixture;
30
- exports.gptClient = gptClient;
31
- exports.gptClientFixture = gptClientFixture;
32
- /**
33
- * This code extends the Playwright Page object and test fixture with
34
- * test-related Donobu methods.
35
- */
36
- const uuid_1 = require("uuid");
37
- const test_1 = require("@playwright/test");
38
- const RequestContextHolder_1 = require("./managers/RequestContextHolder");
39
- const ToolManager_1 = require("./managers/ToolManager");
40
- const ToolTipper_1 = require("./managers/ToolTipper");
41
- const PlaywrightUtils_1 = require("./utils/PlaywrightUtils");
42
- const MiscUtils_1 = require("./utils/MiscUtils");
43
- const DonobuDeploymentEnvironment_1 = require("./models/DonobuDeploymentEnvironment");
44
- const GptClientFactory_1 = require("./clients/GptClientFactory");
45
- const VercelAiGptClient_1 = require("./clients/VercelAiGptClient");
46
- const DonobuStack_1 = require("./managers/DonobuStack");
47
- const DEFAULT_FLOW_URL = 'https://example.com';
48
- const DEFAULT_GPT_MODEL_FOR_PLATFORM = {
49
- ANTHROPIC: 'claude-3-5-sonnet-latest',
50
- GOOGLE_GEMINI: 'gemini-2.0-flash',
51
- OPENAI: 'gpt-4o',
52
- };
53
- let donobuStack = undefined;
54
- async function getOrCreateDonobuStack() {
55
- if (!donobuStack) {
56
- donobuStack = await (0, DonobuStack_1.setupDonobuStack)(DonobuDeploymentEnvironment_1.DonobuDeploymentEnvironment.LOCAL, new RequestContextHolder_1.RequestContextHolder());
57
- return donobuStack;
58
- }
59
- else {
60
- return donobuStack;
61
- }
62
- }
63
- async function getBrowserStorageState(flowIdOrName) {
64
- return (await getOrCreateDonobuStack()).flowsManager.getBrowserStorageState(flowIdOrName);
65
- }
66
- function getBrowserStorageStateFixture(flowIdOrName) {
67
- return async ({}, use) => {
68
- const storage = await (await getOrCreateDonobuStack()).flowsManager.getBrowserStorageState(flowIdOrName);
69
- await use(storage);
70
- };
71
- }
72
- async function anthropicClient(modelName, apiKey) {
73
- const divinedApiKey = apiKey || process.env.ANTHROPIC_API_KEY;
74
- if (!divinedApiKey) {
75
- throw new Error('An API key is required to use the Anthropic API. Please provide one as an argument or set it using the ANTHROPIC_API_KEY environment variable.');
76
- }
77
- return GptClientFactory_1.GptClientFactory.createFromGptConfig({
78
- type: 'ANTHROPIC',
79
- apiKey: divinedApiKey,
80
- modelName: modelName,
81
- });
82
- }
83
- function anthropicClientFixture(modelName, apiKey) {
84
- return async ({}, use) => {
85
- const client = await anthropicClient(modelName, apiKey);
86
- await use(client);
87
- };
88
- }
89
- async function anthropicAwsBedrockClient(modelName, region, accessKeyId, secretAccessKey) {
90
- const divinedAccessKeyId = accessKeyId || process.env.AWS_ACCESS_KEY_ID;
91
- const divinedSecretAccessKey = secretAccessKey || process.env.AWS_SECRET_ACCESS_KEY;
92
- if (!divinedAccessKeyId || !divinedSecretAccessKey) {
93
- throw new Error('AWS access key ID and secret access key are required to use the Anthropic AWS Bedrock API. Please provide them as arguments or set them using the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables.');
94
- }
95
- return GptClientFactory_1.GptClientFactory.createFromGptConfig({
96
- type: 'ANTHROPIC_AWS_BEDROCK',
97
- region: region,
98
- modelName: modelName,
99
- accessKeyId: divinedAccessKeyId,
100
- secretAccessKey: divinedSecretAccessKey,
101
- });
102
- }
103
- function anthropicAwsBedrockClientFixture(modelName, region, accessKeyId, secretAccessKey) {
104
- return async ({}, use) => {
105
- const client = await anthropicAwsBedrockClient(modelName, region, accessKeyId, secretAccessKey);
106
- await use(client);
107
- };
108
- }
109
- async function googleGeminiClient(modelName, apiKey) {
110
- const divinedApiKey = apiKey || process.env.GOOGLE_GENERATIVE_AI_API_KEY;
111
- if (!divinedApiKey) {
112
- throw new Error('An API key is required to use the Google Gemini API. Please provide one as an argument or set it using the GOOGLE_GENERATIVE_AI_API_KEY environment variable.');
113
- }
114
- return GptClientFactory_1.GptClientFactory.createFromGptConfig({
115
- type: 'GOOGLE_GEMINI',
116
- apiKey: divinedApiKey,
117
- modelName: modelName,
118
- });
119
- }
120
- function googleGeminiClientFixture(modelName, apiKey) {
121
- return async ({}, use) => {
122
- const client = await googleGeminiClient(modelName, apiKey);
123
- await use(client);
124
- };
125
- }
126
- async function openAiClient(modelName, apiKey) {
127
- const divinedApiKey = apiKey || process.env.OPENAI_API_KEY;
128
- if (!divinedApiKey) {
129
- throw new Error('An API key is required to use the OpenAI API. Please provide one as an argument or set it using the OPENAI_API_KEY environment variable.');
130
- }
131
- return GptClientFactory_1.GptClientFactory.createFromGptConfig({
132
- type: 'OPENAI',
133
- apiKey: divinedApiKey,
134
- modelName: modelName,
135
- });
136
- }
137
- function openAiClientFixture(modelName, apiKey) {
138
- return async ({}, use) => {
139
- const client = await openAiClient(modelName, apiKey);
140
- await use(client);
141
- };
142
- }
143
- function vercelAiClientFixture(model) {
144
- return async ({}, use) => {
145
- const client = new VercelAiGptClient_1.VercelAiGptClient(model);
146
- await use(client);
147
- };
148
- }
149
- /**
150
- * This fixture resolves a GPT client based on environment variables.
151
- * Supplying different environment variables will result in different GPT
152
- * clients being created. Here is a mapping of client type to environment
153
- * variables for how to create the various types of clients...
154
- *
155
- * Anthropic GPT client requires:
156
- * - ANTHROPIC_API_KEY
157
- *
158
- * Google GPT client requires:
159
- * - GOOGLE_GENERATIVE_AI_API_KEY
160
- *
161
- * OpenAI GPT client requires:
162
- * - OPENAI_API_KEY
163
- *
164
- * If the modelName is not specified, it will be defaulted according to the
165
- * DEFAULT_GPT_MODEL_FOR_PLATFORM mapping.
166
- */
167
- async function gptClient(modelName) {
168
- // Check which API keys are available
169
- const hasAnthropicKey = !!process.env.ANTHROPIC_API_KEY;
170
- const hasGoogleKey = !!process.env.GOOGLE_GENERATIVE_AI_API_KEY;
171
- const hasOpenAiKey = !!process.env.OPENAI_API_KEY;
172
- // Priority order: Anthropic, Google, OpenAI
173
- if (hasAnthropicKey) {
174
- const model = modelName || DEFAULT_GPT_MODEL_FOR_PLATFORM.ANTHROPIC;
175
- return anthropicClient(model);
176
- }
177
- else if (hasGoogleKey) {
178
- const model = modelName || DEFAULT_GPT_MODEL_FOR_PLATFORM.GOOGLE_GEMINI;
179
- return googleGeminiClient(model);
180
- }
181
- else if (hasOpenAiKey) {
182
- const model = modelName || DEFAULT_GPT_MODEL_FOR_PLATFORM.OPENAI;
183
- return openAiClient(model);
184
- }
185
- else {
186
- const donobu = await getOrCreateDonobuStack();
187
- const defaultClient = (await donobu.flowsManager.createGptClient(null))
188
- .gptClient;
189
- if (defaultClient) {
190
- return defaultClient;
191
- }
192
- else {
193
- // No API keys are available and there is not flow-runner set up, throw an error.
194
- throw new Error(`No API keys found for any supported GPT providers.
195
- Please set one of the following environment variables: ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, or OPENAI_API_KEY.
196
- Alternatively, set a flow-runner agent via POST /api/agents/flow-runner or via the Donobu app.`);
197
- }
198
- }
199
- }
200
- function gptClientFixture(modelName) {
201
- return async ({}, use) => {
202
- const client = await gptClient(modelName);
203
- await use(client);
204
- };
205
- }
206
- __exportStar(require("playwright/test"), exports);
207
- exports.test = test_1.test.extend({
208
- // 1) Declare `gptClient` as an "option" fixture with a default of `undefined`.
209
- gptClient: [
210
- undefined, // default
211
- { option: true }, // so that test.use({ gptClient: ... }) can override
212
- ],
213
- // Override the default page fixture
214
- page: async ({ page, gptClient }, use, testInfo) => {
215
- // Patch the page with "run", but do it lazily
216
- const donobu = await getOrCreateDonobuStack();
217
- await page
218
- .context()
219
- .addInitScript(PlaywrightUtils_1.PlaywrightUtils.accessibilityTestInitScript());
220
- await page
221
- .context()
222
- .addInitScript(PlaywrightUtils_1.PlaywrightUtils.clickableElementsTrackerInitScript());
223
- await page
224
- .context()
225
- .addInitScript(PlaywrightUtils_1.PlaywrightUtils.dialogPromptTrackerInitScript());
226
- await page
227
- .context()
228
- .addInitScript(PlaywrightUtils_1.PlaywrightUtils.smartSelectorGeneratorInitScript());
229
- let isInitialized = false;
230
- async function maybeInitDonobu() {
231
- if (isInitialized) {
232
- return;
233
- }
234
- const donobuTestFlowMetadata = {
235
- id: (0, uuid_1.v4)(),
236
- name: testInfo.title,
237
- createdWithDonobuVersion: MiscUtils_1.MiscUtils.DONOBU_VERSION,
238
- browser: {
239
- using: {
240
- type: 'device',
241
- deviceName: 'Desktop Chromium',
242
- headless: true,
243
- },
244
- },
245
- gptConfigName: null,
246
- hasGptConfigNameOverride: false,
247
- customTools: null,
248
- defaultToolTipDurationMilliseconds: 0,
249
- runMode: 'DETERMINISTIC',
250
- isControlPanelEnabled: false,
251
- callbackUrl: null,
252
- targetWebsite: DEFAULT_FLOW_URL,
253
- overallObjective: testInfo.annotations.find((v) => {
254
- return v.type === 'objective';
255
- })?.description ?? null,
256
- allowedTools: [],
257
- resultJsonSchema: null,
258
- result: null,
259
- inputTokensUsed: 0,
260
- completionTokensUsed: 0,
261
- iterations: 0,
262
- maxIterations: 0,
263
- startedAt: new Date().getTime(),
264
- completedAt: null,
265
- state: 'RUNNING_ACTION',
266
- nextState: null,
267
- };
268
- const persistenceLayer = await donobu.flowsPersistenceFactory.createPersistenceLayer();
269
- await persistenceLayer.saveMetadata(donobuTestFlowMetadata);
270
- page._donobuFlowMetadata = donobuTestFlowMetadata;
271
- isInitialized = true;
272
- }
273
- const originalGoto = page.goto;
274
- // Intercept 'page.goto' so that Donobu can later re-run it as a standard
275
- // Donobu action if necessary. This can happen if you run a Playwright
276
- // test using npx, but later decide to rerun that run using the Donobu UI.
277
- page.goto = async (url, options) => {
278
- await maybeInitDonobu();
279
- const startedAt = new Date().getTime();
280
- const flowId = page._donobuFlowMetadata.id;
281
- const persistenceLayer = await donobu.flowsPersistenceFactory.createPersistenceLayer();
282
- // Update the target website to whatever the first place we are
283
- // navigating to is.
284
- if (page._donobuFlowMetadata.targetWebsite === DEFAULT_FLOW_URL) {
285
- page._donobuFlowMetadata = {
286
- ...page._donobuFlowMetadata,
287
- targetWebsite: url,
288
- };
289
- await persistenceLayer.saveMetadata(page._donobuFlowMetadata);
290
- }
291
- try {
292
- const resp = await originalGoto.call(page, url, options);
293
- const postCallImage = await PlaywrightUtils_1.PlaywrightUtils.takePngScreenshot(page);
294
- const postCallImageId = await persistenceLayer.savePngScreenShot(flowId, postCallImage);
295
- const completedAt = new Date().getTime();
296
- await persistenceLayer.saveToolCall(flowId, {
297
- id: MiscUtils_1.MiscUtils.createAdHocToolCallId(),
298
- toolName: 'goToWebpage',
299
- parameters: {
300
- url: url,
301
- },
302
- outcome: {
303
- isSuccessful: true,
304
- forLlm: `Successfully navigated to ${url}`,
305
- metadata: null,
306
- },
307
- postCallImageId: postCallImageId,
308
- page: url,
309
- startedAt: startedAt,
310
- completedAt: completedAt,
311
- });
312
- return resp;
313
- }
314
- catch (error) {
315
- const postCallImage = await PlaywrightUtils_1.PlaywrightUtils.takePngScreenshot(page);
316
- const postCallImageId = await persistenceLayer.savePngScreenShot(flowId, postCallImage);
317
- const completedAt = new Date().getTime();
318
- await persistenceLayer.saveToolCall(flowId, {
319
- id: MiscUtils_1.MiscUtils.createAdHocToolCallId(),
320
- toolName: 'goToWebpage',
321
- parameters: {
322
- url: url,
323
- },
324
- outcome: {
325
- isSuccessful: false,
326
- forLlm: `FAILED! ${typeof error}: ${error.message}`,
327
- metadata: null,
328
- },
329
- postCallImageId: postCallImageId,
330
- page: url,
331
- startedAt: startedAt,
332
- completedAt: completedAt,
333
- });
334
- throw error;
335
- }
336
- };
337
- page.run = async (toolName, toolParams) => {
338
- await maybeInitDonobu();
339
- const persistenceLayer = await donobu.flowsPersistenceFactory.createPersistenceLayer();
340
- const clonedParams = toolParams
341
- ? JSON.parse(JSON.stringify(toolParams))
342
- : {};
343
- clonedParams.rationale || (clonedParams.rationale = '');
344
- const toolCallContext = {
345
- flowsManager: donobu.flowsManager,
346
- persistence: persistenceLayer,
347
- gptClient: gptClient ?? null,
348
- toolTipper: new ToolTipper_1.ToolTipper(0),
349
- proposedToolCalls: [],
350
- invokedToolCalls: [],
351
- page: page,
352
- metadata: page._donobuFlowMetadata,
353
- toolCallId: clonedParams.toolCallId ?? MiscUtils_1.MiscUtils.createAdHocToolCallId(),
354
- };
355
- return new ToolManager_1.ToolManager(ToolManager_1.ToolManager.ALL_TOOLS)
356
- .invokeTool(toolCallContext, toolName, clonedParams, false)
357
- .then(async (result) => {
358
- await persistenceLayer.saveMetadata(page._donobuFlowMetadata);
359
- await persistenceLayer.saveToolCall(page._donobuFlowMetadata.id, result);
360
- return result;
361
- })
362
- .then((result) => result.outcome);
363
- };
364
- page.analyzePageText = async (params) => {
365
- return page.run('analyzePageText', params);
366
- };
367
- page.assertPageText = async (params) => {
368
- return page.run('assertPageText', params);
369
- };
370
- page.chooseSelectOption = async (params) => {
371
- return page.run('chooseSelectOption', params);
372
- };
373
- page.clickElement = async (params) => {
374
- return page.run('click', params);
375
- };
376
- page.createCookieReport = async () => {
377
- return page.run('createCookieReport');
378
- };
379
- page.detectBrokenLinks = async () => {
380
- return page.run('detectBrokenLinks');
381
- };
382
- page.hoverOverElement = async (params) => {
383
- return page.run('hover', params);
384
- };
385
- page.inputRandomizedEmailAddress = async (params) => {
386
- return page.run('inputRandomizedEmailAddress', params);
387
- };
388
- page.inputText = async (params) => {
389
- return page.run('inputText', params);
390
- };
391
- page.pressKey = async (params) => {
392
- return page.run('pressKey', params);
393
- };
394
- page.runAccessibilityTest = async () => {
395
- return page.run('runAccessibilityTest');
396
- };
397
- page.scroll = async (params) => {
398
- return page.run('scrollPage', params);
399
- };
400
- page.visuallyAssert = async (params) => {
401
- return page.run('assert', params);
402
- };
403
- try {
404
- // Let Playwright continue and give tests the patched page.
405
- await use(page);
406
- }
407
- finally {
408
- try {
409
- const persistenceLayer = await donobu.flowsPersistenceFactory.createPersistenceLayer();
410
- if (page._donobuFlowMetadata) {
411
- page._donobuFlowMetadata.state = 'SUCCESS';
412
- page._donobuFlowMetadata.completedAt = new Date().getTime();
413
- await persistenceLayer.saveMetadata(page._donobuFlowMetadata);
414
- }
415
- }
416
- catch (error) {
417
- // Log but don't throw, to ensure cleanup continues.
418
- console.error('Error during test cleanup:', error);
419
- }
420
- }
421
- },
422
- });
423
- //# sourceMappingURL=test.js.map
package/dist/test.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}