donobu 2.49.1 → 2.51.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 (97) hide show
  1. package/dist/apis/FlowsFilesApi.d.ts +1 -0
  2. package/dist/apis/FlowsFilesApi.d.ts.map +1 -1
  3. package/dist/apis/FlowsFilesApi.js +22 -0
  4. package/dist/apis/FlowsFilesApi.js.map +1 -1
  5. package/dist/assets/generated/version +1 -1
  6. package/dist/cli/donobu-cli.js +0 -0
  7. package/dist/cli/install-donobu-plugin.js +0 -0
  8. package/dist/cli/playwright-json-to-markdown.js +0 -0
  9. package/dist/cli/playwright-json-to-slack-json.js +0 -0
  10. package/dist/clients/AnthropicGptClient.d.ts.map +1 -1
  11. package/dist/clients/AnthropicGptClient.js +2 -1
  12. package/dist/clients/AnthropicGptClient.js.map +1 -1
  13. package/dist/clients/DonobuGptClient.d.ts.map +1 -1
  14. package/dist/clients/DonobuGptClient.js +2 -3
  15. package/dist/clients/DonobuGptClient.js.map +1 -1
  16. package/dist/clients/GptClient.d.ts +1 -0
  17. package/dist/clients/GptClient.d.ts.map +1 -1
  18. package/dist/clients/GptClient.js +15 -0
  19. package/dist/clients/GptClient.js.map +1 -1
  20. package/dist/clients/OpenAiGptClient.d.ts.map +1 -1
  21. package/dist/clients/OpenAiGptClient.js +1 -1
  22. package/dist/clients/OpenAiGptClient.js.map +1 -1
  23. package/dist/esm/apis/FlowsFilesApi.d.ts +1 -0
  24. package/dist/esm/apis/FlowsFilesApi.d.ts.map +1 -1
  25. package/dist/esm/apis/FlowsFilesApi.js +22 -0
  26. package/dist/esm/apis/FlowsFilesApi.js.map +1 -1
  27. package/dist/esm/assets/generated/version +1 -1
  28. package/dist/esm/clients/AnthropicGptClient.d.ts.map +1 -1
  29. package/dist/esm/clients/AnthropicGptClient.js +2 -1
  30. package/dist/esm/clients/AnthropicGptClient.js.map +1 -1
  31. package/dist/esm/clients/DonobuGptClient.d.ts.map +1 -1
  32. package/dist/esm/clients/DonobuGptClient.js +2 -3
  33. package/dist/esm/clients/DonobuGptClient.js.map +1 -1
  34. package/dist/esm/clients/GptClient.d.ts +1 -0
  35. package/dist/esm/clients/GptClient.d.ts.map +1 -1
  36. package/dist/esm/clients/GptClient.js +15 -0
  37. package/dist/esm/clients/GptClient.js.map +1 -1
  38. package/dist/esm/clients/OpenAiGptClient.d.ts.map +1 -1
  39. package/dist/esm/clients/OpenAiGptClient.js +1 -1
  40. package/dist/esm/clients/OpenAiGptClient.js.map +1 -1
  41. package/dist/esm/lib/DonobuExtendedPage.d.ts +1 -1
  42. package/dist/esm/lib/DonobuExtendedPage.d.ts.map +1 -1
  43. package/dist/esm/lib/PageAi.d.ts +4 -6
  44. package/dist/esm/lib/PageAi.d.ts.map +1 -1
  45. package/dist/esm/lib/PageAi.js +11 -9
  46. package/dist/esm/lib/PageAi.js.map +1 -1
  47. package/dist/esm/lib/createDonobuExtendedPage.d.ts +10 -0
  48. package/dist/esm/lib/createDonobuExtendedPage.d.ts.map +1 -0
  49. package/dist/esm/lib/createDonobuExtendedPage.js +377 -0
  50. package/dist/esm/lib/createDonobuExtendedPage.js.map +1 -0
  51. package/dist/esm/lib/pageAi/cache.d.ts +13 -10
  52. package/dist/esm/lib/pageAi/cache.d.ts.map +1 -1
  53. package/dist/esm/lib/pageAi/cache.js +67 -30
  54. package/dist/esm/lib/pageAi/cache.js.map +1 -1
  55. package/dist/esm/lib/testExtension.d.ts.map +1 -1
  56. package/dist/esm/lib/testExtension.js +69 -436
  57. package/dist/esm/lib/testExtension.js.map +1 -1
  58. package/dist/esm/main.d.ts +1 -0
  59. package/dist/esm/main.d.ts.map +1 -1
  60. package/dist/esm/main.js +1 -0
  61. package/dist/esm/main.js.map +1 -1
  62. package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
  63. package/dist/esm/managers/AdminApiController.js +1 -0
  64. package/dist/esm/managers/AdminApiController.js.map +1 -1
  65. package/dist/esm/utils/MiscUtils.d.ts +5 -0
  66. package/dist/esm/utils/MiscUtils.d.ts.map +1 -1
  67. package/dist/esm/utils/MiscUtils.js +16 -0
  68. package/dist/esm/utils/MiscUtils.js.map +1 -1
  69. package/dist/lib/DonobuExtendedPage.d.ts +1 -1
  70. package/dist/lib/DonobuExtendedPage.d.ts.map +1 -1
  71. package/dist/lib/PageAi.d.ts +4 -6
  72. package/dist/lib/PageAi.d.ts.map +1 -1
  73. package/dist/lib/PageAi.js +11 -9
  74. package/dist/lib/PageAi.js.map +1 -1
  75. package/dist/lib/createDonobuExtendedPage.d.ts +10 -0
  76. package/dist/lib/createDonobuExtendedPage.d.ts.map +1 -0
  77. package/dist/lib/createDonobuExtendedPage.js +377 -0
  78. package/dist/lib/createDonobuExtendedPage.js.map +1 -0
  79. package/dist/lib/pageAi/cache.d.ts +13 -10
  80. package/dist/lib/pageAi/cache.d.ts.map +1 -1
  81. package/dist/lib/pageAi/cache.js +67 -30
  82. package/dist/lib/pageAi/cache.js.map +1 -1
  83. package/dist/lib/testExtension.d.ts.map +1 -1
  84. package/dist/lib/testExtension.js +69 -436
  85. package/dist/lib/testExtension.js.map +1 -1
  86. package/dist/main.d.ts +1 -0
  87. package/dist/main.d.ts.map +1 -1
  88. package/dist/main.js +1 -0
  89. package/dist/main.js.map +1 -1
  90. package/dist/managers/AdminApiController.d.ts.map +1 -1
  91. package/dist/managers/AdminApiController.js +1 -0
  92. package/dist/managers/AdminApiController.js.map +1 -1
  93. package/dist/utils/MiscUtils.d.ts +5 -0
  94. package/dist/utils/MiscUtils.d.ts.map +1 -1
  95. package/dist/utils/MiscUtils.js +16 -0
  96. package/dist/utils/MiscUtils.js.map +1 -1
  97. package/package.json +4 -1
@@ -16,62 +16,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.test = void 0;
18
18
  const test_1 = require("@playwright/test");
19
- const uuid_1 = require("uuid");
20
- const GptClient_1 = require("../clients/GptClient");
21
- const VercelAiGptClient_1 = require("../clients/VercelAiGptClient");
22
- const PlaywrightUtils_1 = require("../utils/PlaywrightUtils");
23
- const donobuTestStack_1 = require("./utils/donobuTestStack");
24
- const MiscUtils_1 = require("../utils/MiscUtils");
25
19
  const DonobuFlowsManager_1 = require("../managers/DonobuFlowsManager");
26
- const gptClients_1 = require("./fixtures/gptClients");
27
- const GoToWebpageTool_1 = require("../tools/GoToWebpageTool");
28
- const PageInspector_1 = require("../managers/PageInspector");
29
- const InteractionVisualizer_1 = require("../managers/InteractionVisualizer");
30
- const ToolManager_1 = require("../managers/ToolManager");
31
- const AnalyzePageTextTool_1 = require("../tools/AnalyzePageTextTool");
32
- const AssertPageTextTool_1 = require("../tools/AssertPageTextTool");
33
20
  const Logger_1 = require("../utils/Logger");
34
- const DonobuFlow_1 = require("../managers/DonobuFlow");
35
- const HoverOverElementTool_1 = require("../tools/HoverOverElementTool");
36
- const InputRandomizedEmailAddressTool_1 = require("../tools/InputRandomizedEmailAddressTool");
37
- const AssertTool_1 = require("../tools/AssertTool");
38
- const ChangeWebBrowserTabTool_1 = require("../tools/ChangeWebBrowserTabTool");
39
- const ChooseSelectOptionTool_1 = require("../tools/ChooseSelectOptionTool");
40
- const ClickTool_1 = require("../tools/ClickTool");
41
- const CreateBrowserCookieReportTool_1 = require("../tools/CreateBrowserCookieReportTool");
42
- const InputTextTool_1 = require("../tools/InputTextTool");
43
- const PressKeyTool_1 = require("../tools/PressKeyTool");
44
- const RunAccessibilityTestTool_1 = require("../tools/RunAccessibilityTestTool");
45
- const ScrollPageTool_1 = require("../tools/ScrollPageTool");
46
21
  const BrowserUtils_1 = require("../utils/BrowserUtils");
47
- const v4_1 = require("zod/v4");
48
- const ControlPanel_1 = require("../models/ControlPanel");
49
- const GptApiKeysNotSetupException_1 = require("../exceptions/GptApiKeysNotSetupException");
50
- const SmartSelector_1 = require("./SmartSelector");
51
- const PageAi_1 = require("./PageAi");
52
- const path_1 = require("path");
53
- const originalGotoRegistry_1 = require("./originalGotoRegistry");
54
22
  const envVars_1 = require("../envVars");
55
23
  const triageTestFailure_1 = require("./utils/triageTestFailure");
56
24
  const selfHealing_1 = require("./utils/selfHealing");
25
+ const createDonobuExtendedPage_1 = require("./createDonobuExtendedPage");
26
+ const MiscUtils_1 = require("../utils/MiscUtils");
27
+ const path_1 = require("path");
57
28
  __exportStar(require("playwright/test"), exports);
58
- const PLACEHOLDER_FLOW_URL = 'https://example.com';
59
- /**
60
- * Force a true/false/undefined value for a given value. This is a stripped down
61
- * version of th 'yn' library.
62
- */
63
- function yn(value) {
64
- value = String(value).trim();
65
- if (/^(?:y|yes|true|1|on)$/i.test(value)) {
66
- return true;
67
- }
68
- else if (/^(?:n|no|false|0|off)$/i.test(value)) {
69
- return false;
70
- }
71
- else {
72
- return undefined;
73
- }
74
- }
75
29
  exports.test = test_1.test.extend({
76
30
  // 1) Declare `gptClient` as an "option" fixture with a default of `undefined`.
77
31
  gptClient: [
@@ -80,377 +34,93 @@ exports.test = test_1.test.extend({
80
34
  ],
81
35
  // Override the default page fixture
82
36
  page: async ({ page, gptClient, headless }, use, testInfo) => {
83
- await PlaywrightUtils_1.PlaywrightUtils.setupBasicBrowserContext(page.context());
84
37
  const overallObjective = testInfo.annotations.find((v) => v.type === 'objective')?.description ??
85
38
  null;
86
- const donobuStack = await (0, donobuTestStack_1.getOrCreateDonobuStack)();
87
- const persistence = await donobuStack.flowsPersistenceFactory.createPersistenceLayer();
88
- const initialBrowserState = await getBrowserState(page, testInfo);
89
- const resolvedGptClient = await buttonUpGptClient(gptClient);
90
- const sharedState = {
91
- donobuFlowMetadata: {
92
- id: (0, uuid_1.v4)(),
93
- name: testInfo.title,
94
- createdWithDonobuVersion: MiscUtils_1.MiscUtils.DONOBU_VERSION,
95
- browser: {
96
- persistState: true,
97
- using: {
98
- type: 'device',
99
- deviceName: 'Desktop Chromium',
100
- headless: headless,
101
- },
102
- },
103
- envVars: (0, DonobuFlowsManager_1.distillAllowedEnvVariableNames)(overallObjective, testInfo.annotations
104
- .filter((a) => a.type == 'ENV' && a.description)
105
- .map((a) => a.description)),
106
- gptConfigName: null,
107
- hasGptConfigNameOverride: false,
108
- customTools: null,
109
- defaultMessageDuration: 0,
110
- runMode: 'DETERMINISTIC',
111
- isControlPanelEnabled: false,
112
- callbackUrl: null,
113
- targetWebsite: PLACEHOLDER_FLOW_URL,
114
- overallObjective: overallObjective,
115
- allowedTools: [],
116
- resultJsonSchema: null,
117
- result: null,
118
- inputTokensUsed: 0,
119
- completionTokensUsed: 0,
120
- maxToolCalls: null,
121
- startedAt: new Date().getTime(),
122
- completedAt: null,
123
- state: 'RUNNING_ACTION',
124
- nextState: null,
125
- },
126
- donobuStack: donobuStack,
127
- pageAi: undefined,
128
- persistence: persistence,
129
- initialBrowserState: initialBrowserState,
130
- gptClient: resolvedGptClient,
131
- runtimeDirectives: {
132
- clearPageAiCache: yn(envVars_1.env.data.DONOBU_PAGE_AI_CLEAR_CACHE),
133
- },
134
- };
135
- const extend = createDonobuPageExtender(sharedState, testInfo);
136
- const extendedPage = extend(page);
39
+ const extendedPage = await (0, createDonobuExtendedPage_1.extendPage)(page, {
40
+ cacheFilepath: (0, path_1.join)((0, path_1.dirname)(testInfo.file), 'donobu.json'),
41
+ envVars: (0, DonobuFlowsManager_1.distillAllowedEnvVariableNames)(overallObjective, testInfo.annotations
42
+ .filter((a) => a.type == 'ENV' && a.description)
43
+ .map((a) => a.description)),
44
+ gptClient: gptClient,
45
+ headless: headless,
46
+ });
47
+ extendedPage._dnb.donobuFlowMetadata.name = testInfo.title;
48
+ extendedPage._dnb.donobuFlowMetadata.overallObjective = overallObjective;
137
49
  try {
138
- await sharedState.persistence.setFlowMetadata(sharedState.donobuFlowMetadata);
50
+ await page._dnb.persistence.setFlowMetadata(page._dnb.donobuFlowMetadata);
139
51
  await use(extendedPage);
140
52
  }
141
53
  catch (error) {
142
- testInfo.status = 'failed';
54
+ testInfo.status =
55
+ error instanceof test_1.errors.TimeoutError ? 'timedOut' : 'failed';
143
56
  throw error;
144
57
  }
145
58
  finally {
146
- try {
147
- sharedState.donobuFlowMetadata.state =
148
- testInfo.status === 'failed' || testInfo.status === 'timedOut'
149
- ? 'FAILED'
150
- : 'SUCCESS';
151
- sharedState.donobuFlowMetadata.completedAt = new Date().getTime();
152
- await sharedState.persistence.setFlowMetadata(sharedState.donobuFlowMetadata);
153
- await testInfo.attach('test-flow-metadata.json', {
154
- body: JSON.stringify(sharedState.donobuFlowMetadata, null, 2),
155
- contentType: 'application/json',
156
- });
157
- const browserState = await BrowserUtils_1.BrowserUtils.getBrowserStorageState(extendedPage.context());
158
- await sharedState.persistence.setBrowserState(sharedState.donobuFlowMetadata.id, browserState);
159
- }
160
- catch (error) {
161
- Logger_1.appLogger.error('Error during test cleanup:', error);
162
- }
163
- if (testInfo.status === 'failed') {
164
- if (isV1Test(testInfo)) {
165
- if (isV1SelfHealingEnabled(testInfo) &&
166
- !yn(envVars_1.env.data.DONOBU_AUTO_HEAL_ACTIVE)) {
167
- if (!sharedState.gptClient) {
168
- Logger_1.appLogger.warn('Will not self-heal due to no GPT client being set up.');
169
- }
170
- else {
171
- try {
172
- await (0, selfHealing_1.selfHeal)(sharedState.gptClient, testInfo, extendedPage);
173
- }
174
- catch (error) {
175
- Logger_1.appLogger.error('Error when attempting to self-heal', error);
176
- }
177
- }
178
- }
59
+ await finalizeTest(extendedPage, testInfo);
60
+ }
61
+ },
62
+ });
63
+ async function finalizeTest(page, testInfo) {
64
+ const sharedState = page._dnb;
65
+ try {
66
+ sharedState.donobuFlowMetadata.state =
67
+ testInfo.status === 'failed' || testInfo.status === 'timedOut'
68
+ ? 'FAILED'
69
+ : 'SUCCESS';
70
+ sharedState.donobuFlowMetadata.completedAt = new Date().getTime();
71
+ await sharedState.persistence.setFlowMetadata(sharedState.donobuFlowMetadata);
72
+ await testInfo.attach('test-flow-metadata.json', {
73
+ body: JSON.stringify(sharedState.donobuFlowMetadata, null, 2),
74
+ contentType: 'application/json',
75
+ });
76
+ const browserState = await BrowserUtils_1.BrowserUtils.getBrowserStorageState(page.context());
77
+ await sharedState.persistence.setBrowserState(sharedState.donobuFlowMetadata.id, browserState);
78
+ }
79
+ catch (error) {
80
+ Logger_1.appLogger.error(`Error during cleanup for test ${testInfo.title}:`, error);
81
+ }
82
+ if (testInfo.status === 'failed') {
83
+ if (isV1Test(testInfo)) {
84
+ if (isV1SelfHealingEnabled(testInfo) &&
85
+ !MiscUtils_1.MiscUtils.yn(envVars_1.env.data.DONOBU_AUTO_HEAL_ACTIVE)) {
86
+ if (!sharedState.gptClient) {
87
+ Logger_1.appLogger.warn('Will not self-heal due to no GPT client being set up.');
179
88
  }
180
89
  else {
181
90
  try {
182
- const evidenceResult = await (0, triageTestFailure_1.gatherTestFailureEvidence)(testInfo, extendedPage);
183
- if (evidenceResult?.filePath) {
184
- Logger_1.appLogger.info(`Persisted Donobu triage evidence for "${testInfo.title}" to ${evidenceResult.filePath}.`);
185
- }
186
- else if (evidenceResult?.evidence) {
187
- Logger_1.appLogger.info(`Captured Donobu triage evidence for "${testInfo.title}" (schema v${evidenceResult.evidence.schemaVersion}).`);
188
- }
91
+ await (0, selfHealing_1.selfHeal)(sharedState.gptClient, testInfo, page);
189
92
  }
190
93
  catch (error) {
191
- Logger_1.appLogger.error(`Failed to gather test failure evidence for "${testInfo.title}".`, error);
94
+ Logger_1.appLogger.error('Error when attempting to self-heal', error);
192
95
  }
193
96
  }
194
97
  }
195
- else if (testInfo.status === 'passed' &&
196
- yn(envVars_1.env.data.DONOBU_AUTO_HEAL_ACTIVE)) {
197
- const hasSelfHealedAnnotation = testInfo.annotations.some((annotation) => annotation.type === 'self-healed');
198
- if (!hasSelfHealedAnnotation) {
199
- testInfo.annotations.push({
200
- type: 'self-healed',
201
- description: 'Automatically healed by Donobu auto-heal rerun.',
202
- });
203
- }
204
- }
205
98
  }
206
- },
207
- });
208
- function createDonobuPageExtender(sharedState, testInfo) {
209
- const extend = (target) => {
210
- if (!(0, originalGotoRegistry_1.hasOriginalGoto)(target)) {
211
- (0, originalGotoRegistry_1.registerOriginalGoto)(target, target.goto);
212
- }
213
- const extended = target;
214
- extended._dnb = sharedState;
215
- attachDonobuMethods(extended, sharedState, testInfo, extend);
216
- return extended;
217
- };
218
- return extend;
219
- }
220
- function attachDonobuMethods(page, sharedState, testInfo, extend) {
221
- page.ai = async (instruction, options, gptClientOverride) => {
222
- let finalGptClient = null;
223
- if (gptClientOverride) {
224
- if (!(gptClientOverride instanceof GptClient_1.GptClient)) {
225
- finalGptClient = new VercelAiGptClient_1.VercelAiGptClient(gptClientOverride);
99
+ else {
100
+ try {
101
+ const evidenceResult = await (0, triageTestFailure_1.gatherTestFailureEvidence)(testInfo, page);
102
+ if (evidenceResult?.filePath) {
103
+ Logger_1.appLogger.info(`Persisted Donobu triage evidence for "${testInfo.title}" to ${evidenceResult.filePath}.`);
104
+ }
105
+ else if (evidenceResult?.evidence) {
106
+ Logger_1.appLogger.info(`Captured Donobu triage evidence for "${testInfo.title}" (schema v${evidenceResult.evidence.schemaVersion}).`);
107
+ }
226
108
  }
227
- else {
228
- finalGptClient = gptClientOverride;
109
+ catch (error) {
110
+ Logger_1.appLogger.error(`Failed to gather test failure evidence for "${testInfo.title}".`, error);
229
111
  }
230
112
  }
231
- else if (sharedState.gptClient) {
232
- finalGptClient = sharedState.gptClient;
233
- }
234
- if (!finalGptClient) {
235
- throw new Error(`No AI connection available. Establish a connection by setting an API key via an environment variable.
236
- Valid options:
237
- - ${envVars_1.env.keys.ANTHROPIC_API_KEY}
238
- - ${envVars_1.env.keys.GOOGLE_GENERATIVE_AI_API_KEY}
239
- - ${envVars_1.env.keys.OPENAI_API_KEY}`);
240
- }
241
- if (!sharedState.pageAi) {
242
- const cacheFilepath = (0, path_1.join)((0, path_1.dirname)(testInfo.file), 'donobu.json');
243
- sharedState.pageAi = PageAi_1.PageAi.withFileCache(sharedState.donobuStack, sharedState.persistence, finalGptClient, cacheFilepath);
244
- }
245
- const clearAiCacheForRun = sharedState.runtimeDirectives?.clearPageAiCache ?? false;
246
- const revisedOptions = {
247
- envVars: sharedState.donobuFlowMetadata.envVars ?? [],
248
- ...(options ? options : {}),
249
- };
250
- if (clearAiCacheForRun) {
251
- await sharedState.pageAi.invalidate(page, instruction, revisedOptions);
252
- Logger_1.appLogger.debug(`Page.AI cache invalidated for this run via ${envVars_1.env.keys.DONOBU_PAGE_AI_CLEAR_CACHE}`);
253
- }
254
- return sharedState.pageAi.ai(page, instruction, revisedOptions);
255
- };
256
- page.find = (selector, options) => {
257
- return new SmartSelector_1.SmartSelectorImpl(page, {
258
- element: [selector, ...(options?.failover ?? [])],
259
- frame: options?.frame,
260
- });
261
- };
262
- page.goto = async (url, options) => {
263
- const startedAt = new Date().getTime();
264
- const flowId = sharedState.donobuFlowMetadata.id;
265
- if (sharedState.donobuFlowMetadata.targetWebsite === PLACEHOLDER_FLOW_URL) {
266
- sharedState.donobuFlowMetadata = {
267
- ...sharedState.donobuFlowMetadata,
268
- targetWebsite: url,
269
- };
270
- await sharedState.persistence.setFlowMetadata(sharedState.donobuFlowMetadata);
271
- }
272
- try {
273
- const originalGoto = (0, originalGotoRegistry_1.getOriginalGoto)(page);
274
- const resp = await originalGoto.call(page, url, options);
275
- const pageTitle = await page.title();
276
- const postCallImage = await PlaywrightUtils_1.PlaywrightUtils.takeViewportScreenshot(page);
277
- const postCallImageId = await sharedState.persistence.saveScreenShot(flowId, postCallImage);
278
- const completedAt = new Date().getTime();
279
- await sharedState.persistence.saveToolCall(flowId, {
280
- id: MiscUtils_1.MiscUtils.createAdHocToolCallId(),
281
- toolName: GoToWebpageTool_1.GoToWebpageTool.NAME,
282
- parameters: {
283
- url: url,
284
- },
285
- outcome: {
286
- isSuccessful: true,
287
- forLlm: `Successfully navigated to ${url}`,
288
- metadata: {
289
- pageTitle: pageTitle,
290
- resolvedUrl: page.url(),
291
- },
292
- },
293
- postCallImageId: postCallImageId,
294
- page: url,
295
- startedAt: startedAt,
296
- completedAt: completedAt,
297
- });
298
- return resp;
299
- }
300
- catch (error) {
301
- const postCallImage = await PlaywrightUtils_1.PlaywrightUtils.takeViewportScreenshot(page);
302
- const postCallImageId = await sharedState.persistence.saveScreenShot(flowId, postCallImage);
303
- const completedAt = new Date().getTime();
304
- await sharedState.persistence.saveToolCall(flowId, {
305
- id: MiscUtils_1.MiscUtils.createAdHocToolCallId(),
306
- toolName: GoToWebpageTool_1.GoToWebpageTool.NAME,
307
- parameters: {
308
- url: url,
309
- },
310
- outcome: {
311
- isSuccessful: false,
312
- forLlm: `FAILED! ${typeof error}: ${error.message}`,
313
- metadata: null,
314
- },
315
- postCallImageId: postCallImageId,
316
- page: url,
317
- startedAt: startedAt,
318
- completedAt: completedAt,
113
+ }
114
+ else if (testInfo.status === 'passed' &&
115
+ MiscUtils_1.MiscUtils.yn(envVars_1.env.data.DONOBU_AUTO_HEAL_ACTIVE)) {
116
+ const hasSelfHealedAnnotation = testInfo.annotations.some((annotation) => annotation.type === 'self-healed');
117
+ if (!hasSelfHealedAnnotation) {
118
+ testInfo.annotations.push({
119
+ type: 'self-healed',
120
+ description: 'Automatically healed by Donobu auto-heal rerun.',
319
121
  });
320
- testInfo.status = 'failed';
321
- throw error;
322
- }
323
- };
324
- page.run = async (toolName, toolParams, gptClientOverride) => {
325
- let finalGptClient = null;
326
- if (gptClientOverride) {
327
- if (!(gptClientOverride instanceof GptClient_1.GptClient)) {
328
- finalGptClient = new VercelAiGptClient_1.VercelAiGptClient(gptClientOverride);
329
- }
330
- else {
331
- finalGptClient = gptClientOverride;
332
- }
333
- }
334
- else if (sharedState.gptClient) {
335
- finalGptClient = sharedState.gptClient;
336
- }
337
- const pageInspector = new PageInspector_1.PageInspector();
338
- const controlPanel = new ControlPanel_1.NoOpControlPanel();
339
- const clonedParams = toolParams
340
- ? JSON.parse(JSON.stringify(toolParams))
341
- : {};
342
- clonedParams.rationale || (clonedParams.rationale = '');
343
- const envData = await sharedState.donobuStack.flowsManager.buildEnvData(sharedState.donobuFlowMetadata.envVars ?? []);
344
- const toolCallContext = {
345
- flowsManager: sharedState.donobuStack.flowsManager,
346
- envData: envData,
347
- pageInspector: pageInspector,
348
- controlPanel: controlPanel,
349
- persistence: sharedState.persistence,
350
- gptClient: finalGptClient,
351
- interactionVisualizer: new InteractionVisualizer_1.InteractionVisualizer(0),
352
- proposedToolCalls: [],
353
- invokedToolCalls: [],
354
- page: { current: page },
355
- metadata: sharedState.donobuFlowMetadata,
356
- toolCallId: clonedParams.toolCallId ?? MiscUtils_1.MiscUtils.createAdHocToolCallId(),
357
- };
358
- try {
359
- const tools = await ToolManager_1.ToolManager.allTools();
360
- const result = await new ToolManager_1.ToolManager(tools).invokeTool(toolCallContext, toolName, clonedParams, false);
361
- if (!result.outcome.isSuccessful) {
362
- throw new Error(`${toolName} execution failed: ${JSON.stringify(result, null, 2)}`);
363
- }
364
- return result.outcome;
365
- }
366
- catch (error) {
367
- testInfo.status = 'failed';
368
- throw error;
369
- }
370
- };
371
- page.analyzePageText = async (params, gptClientOverride) => {
372
- return page.run(AnalyzePageTextTool_1.AnalyzePageTextTool.NAME, params, gptClientOverride);
373
- };
374
- page.assertPageText = async (params, gptClientOverride) => {
375
- return page.run(AssertPageTextTool_1.AssertPageTextTool.NAME, params, gptClientOverride);
376
- };
377
- page.changeTab = async (url) => {
378
- const result = await page.run(ChangeWebBrowserTabTool_1.ChangeWebBrowserTabTool.NAME, {
379
- tabUrl: url,
380
- });
381
- if (result.isSuccessful) {
382
- const matchingPage = page
383
- .context()
384
- .pages()
385
- .find((tab) => tab.url() === url);
386
- if (!matchingPage) {
387
- throw new Error(`Unable to locate tab with URL ${url} after switching.`);
388
- }
389
- return extend(matchingPage);
390
- }
391
- throw Error(result.forLlm);
392
- };
393
- page.chooseSelectOption = async (params) => {
394
- return page.run(ChooseSelectOptionTool_1.ChooseSelectOptionTool.NAME, params);
395
- };
396
- page.clickElement = async (params) => {
397
- return page.run(ClickTool_1.ClickTool.NAME, params);
398
- };
399
- page.createCookieReport = async (gptClientOverride) => {
400
- return page.run(CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool.NAME, {}, gptClientOverride);
401
- };
402
- page.extract = async (params, gptClientOverride) => {
403
- let finalGptClient = null;
404
- if (gptClientOverride) {
405
- if (!(gptClientOverride instanceof GptClient_1.GptClient)) {
406
- finalGptClient = new VercelAiGptClient_1.VercelAiGptClient(gptClientOverride);
407
- }
408
- else {
409
- finalGptClient = gptClientOverride;
410
- }
411
122
  }
412
- else if (sharedState.gptClient) {
413
- finalGptClient = sharedState.gptClient;
414
- }
415
- if (!finalGptClient) {
416
- testInfo.status = 'failed';
417
- throw Error('Cannot extract an object from page without a GPT client set up!');
418
- }
419
- try {
420
- const toolCallHistory = await sharedState.persistence.getToolCalls(sharedState.donobuFlowMetadata.id);
421
- const structuredOutputMessage = await (0, DonobuFlow_1.extractFromPage)(params.instruction ??
422
- 'Generate an object conforming to the given JSON-schema', params.schema, page, toolCallHistory, finalGptClient);
423
- sharedState.donobuFlowMetadata.resultJsonSchema = v4_1.z.toJSONSchema(params.schema);
424
- sharedState.donobuFlowMetadata.result = JSON.parse(JSON.stringify(structuredOutputMessage.output));
425
- await sharedState.persistence.setFlowMetadata(sharedState.donobuFlowMetadata);
426
- return structuredOutputMessage.output;
427
- }
428
- catch (error) {
429
- testInfo.status = 'failed';
430
- throw error;
431
- }
432
- };
433
- page.hoverOverElement = async (params) => {
434
- return page.run(HoverOverElementTool_1.HoverOverElementTool.NAME, params);
435
- };
436
- page.inputRandomizedEmailAddress = async (params) => {
437
- return page.run(InputRandomizedEmailAddressTool_1.InputRandomizedEmailAddressTool.NAME, params);
438
- };
439
- page.inputText = async (params) => {
440
- return page.run(InputTextTool_1.InputTextTool.NAME, params);
441
- };
442
- page.pressKey = async (params) => {
443
- return page.run(PressKeyTool_1.PressKeyTool.NAME, params);
444
- };
445
- page.runAccessibilityTest = async () => {
446
- return page.run(RunAccessibilityTestTool_1.RunAccessibilityTestTool.NAME);
447
- };
448
- page.scroll = async (params) => {
449
- return page.run(ScrollPageTool_1.ScrollPageTool.NAME, params);
450
- };
451
- page.visuallyAssert = async (params, gptClientOverride) => {
452
- return page.run(AssertTool_1.AssertTool.NAME, params, gptClientOverride);
453
- };
123
+ }
454
124
  }
455
125
  /**
456
126
  * A "v1" test is one that was generated by the Donobu app and
@@ -464,50 +134,13 @@ function isV1Test(testInfo) {
464
134
  function isV1SelfHealingEnabled(testInfo) {
465
135
  if (envVars_1.env.keys.SELF_HEAL_TESTS_ENABLED in testInfo.project.metadata) {
466
136
  // Check project-specific metadata. This takes priority if it exists.
467
- const isSelfHealEnabledForProject = yn(testInfo.project.metadata[envVars_1.env.keys.SELF_HEAL_TESTS_ENABLED]) ?? false;
137
+ const isSelfHealEnabledForProject = MiscUtils_1.MiscUtils.yn(testInfo.project.metadata[envVars_1.env.keys.SELF_HEAL_TESTS_ENABLED]) ?? false;
468
138
  return isSelfHealEnabledForProject;
469
139
  }
470
140
  else {
471
141
  // Failover to checking the environment variable.
472
- const isSelfHealEnabledViaEnvVar = yn(envVars_1.env.data.SELF_HEAL_TESTS_ENABLED?.trim()) ?? false;
142
+ const isSelfHealEnabledViaEnvVar = MiscUtils_1.MiscUtils.yn(envVars_1.env.data.SELF_HEAL_TESTS_ENABLED?.trim()) ?? false;
473
143
  return isSelfHealEnabledViaEnvVar;
474
144
  }
475
145
  }
476
- async function getBrowserState(page, testInfo) {
477
- try {
478
- return await BrowserUtils_1.BrowserUtils.getBrowserStorageState(page.context());
479
- }
480
- catch (e) {
481
- Logger_1.appLogger.error(`Failed to fetch browser state for test: ${testInfo.file}`, e);
482
- return {
483
- cookies: [],
484
- origins: [],
485
- };
486
- }
487
- }
488
- async function buttonUpGptClient(gptClient) {
489
- try {
490
- if (!gptClient) {
491
- gptClient = await (0, gptClients_1.getOrCreateDefaultGptClient)();
492
- }
493
- return gptClient;
494
- }
495
- catch (error) {
496
- if (!(error instanceof GptApiKeysNotSetupException_1.GptApiKeysNotSetupException)) {
497
- const err = error;
498
- Logger_1.appLogger.error(`Failed to set up GPT client! ${err.name}: ${err.message}`);
499
- }
500
- // Do nothing since we may not need a GPT client at all anyway.
501
- // If something later on requires a GPT client, it will throw an error.
502
- return gptClient;
503
- }
504
- finally {
505
- if (gptClient) {
506
- const modelName = 'modelName' in gptClient.config
507
- ? gptClient.config.modelName
508
- : undefined;
509
- Logger_1.appLogger.info(`Set up ${gptClient.config.type} client${modelName ? ` for model: ${modelName}` : ''}`);
510
- }
511
- }
512
- }
513
146
  //# sourceMappingURL=testExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testExtension.js","sourceRoot":"","sources":["../../../src/lib/testExtension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testExtension.js","sourceRoot":"","sources":["../../../src/lib/testExtension.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import './init';
2
2
  import { ControlPanelFactory } from './models/ControlPanel';
3
+ export * from './lib/createDonobuExtendedPage';
3
4
  export * from './lib/fixtures/browserState';
4
5
  export * from './lib/fixtures/gptClients';
5
6
  export * from './lib/utils/donobuTestStack';
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAOhB,OAAO,EACL,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AAIxD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,MAAqB,EAC3B,gBAAgB,GAAE,mBAA6C,GAC9D,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;GAGG;AACH,qBAAa,IAAI;IACf;;;OAGG;WACiB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvD,OAAO,CAAC,MAAM,CAAC,SAAS;CAUzB"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAOhB,OAAO,EACL,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AAIxD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,MAAqB,EAC3B,gBAAgB,GAAE,mBAA6C,GAC9D,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;GAGG;AACH,qBAAa,IAAI;IACf;;;OAGG;WACiB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvD,OAAO,CAAC,MAAM,CAAC,SAAS;CAUzB"}
package/dist/esm/main.js CHANGED
@@ -24,6 +24,7 @@ const envVars_1 = require("./envVars");
24
24
  const ToolManager_1 = require("./managers/ToolManager");
25
25
  const Logger_1 = require("./utils/Logger");
26
26
  const ControlPanel_1 = require("./models/ControlPanel");
27
+ __exportStar(require("./lib/createDonobuExtendedPage"), exports);
27
28
  __exportStar(require("./lib/fixtures/browserState"), exports);
28
29
  __exportStar(require("./lib/fixtures/gptClients"), exports);
29
30
  __exportStar(require("./lib/utils/donobuTestStack"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}