donobu 2.27.2 → 2.28.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 (61) hide show
  1. package/dist/apis/FlowsApi.d.ts +6 -15
  2. package/dist/apis/FlowsApi.d.ts.map +1 -1
  3. package/dist/apis/FlowsApi.js +18 -65
  4. package/dist/apis/FlowsApi.js.map +1 -1
  5. package/dist/assets/generated/version +1 -1
  6. package/dist/assets/playwright-json-to-markdown.js +1 -1
  7. package/dist/assets/playwright-json-to-slack-json.js +171 -0
  8. package/dist/esm/apis/FlowsApi.d.ts +6 -15
  9. package/dist/esm/apis/FlowsApi.d.ts.map +1 -1
  10. package/dist/esm/apis/FlowsApi.js +18 -65
  11. package/dist/esm/apis/FlowsApi.js.map +1 -1
  12. package/dist/esm/assets/generated/version +1 -1
  13. package/dist/esm/assets/playwright-json-to-markdown.js +1 -1
  14. package/dist/esm/assets/playwright-json-to-slack-json.js +171 -0
  15. package/dist/esm/lib/testExtension.d.ts.map +1 -1
  16. package/dist/esm/lib/testExtension.js +88 -100
  17. package/dist/esm/lib/testExtension.js.map +1 -1
  18. package/dist/esm/lib/utils/selfHealing.d.ts.map +1 -1
  19. package/dist/esm/lib/utils/selfHealing.js +20 -4
  20. package/dist/esm/lib/utils/selfHealing.js.map +1 -1
  21. package/dist/esm/managers/CodeGenerator.d.ts +1 -1
  22. package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
  23. package/dist/esm/managers/CodeGenerator.js +65 -34
  24. package/dist/esm/managers/CodeGenerator.js.map +1 -1
  25. package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
  26. package/dist/esm/managers/DonobuFlowsManager.js +1 -1
  27. package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
  28. package/dist/esm/models/CodeGenerationOptions.d.ts +12 -6
  29. package/dist/esm/models/CodeGenerationOptions.d.ts.map +1 -1
  30. package/dist/esm/models/CodeGenerationOptions.js +15 -2
  31. package/dist/esm/models/CodeGenerationOptions.js.map +1 -1
  32. package/dist/esm/models/FlowMetadata.js +3 -3
  33. package/dist/esm/models/FlowMetadata.js.map +1 -1
  34. package/dist/esm/tools/ReplayableInteraction.d.ts +11 -3
  35. package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
  36. package/dist/esm/tools/ReplayableInteraction.js +45 -21
  37. package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
  38. package/dist/lib/testExtension.d.ts.map +1 -1
  39. package/dist/lib/testExtension.js +88 -100
  40. package/dist/lib/testExtension.js.map +1 -1
  41. package/dist/lib/utils/selfHealing.d.ts.map +1 -1
  42. package/dist/lib/utils/selfHealing.js +20 -4
  43. package/dist/lib/utils/selfHealing.js.map +1 -1
  44. package/dist/managers/CodeGenerator.d.ts +1 -1
  45. package/dist/managers/CodeGenerator.d.ts.map +1 -1
  46. package/dist/managers/CodeGenerator.js +65 -34
  47. package/dist/managers/CodeGenerator.js.map +1 -1
  48. package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
  49. package/dist/managers/DonobuFlowsManager.js +1 -1
  50. package/dist/managers/DonobuFlowsManager.js.map +1 -1
  51. package/dist/models/CodeGenerationOptions.d.ts +12 -6
  52. package/dist/models/CodeGenerationOptions.d.ts.map +1 -1
  53. package/dist/models/CodeGenerationOptions.js +15 -2
  54. package/dist/models/CodeGenerationOptions.js.map +1 -1
  55. package/dist/models/FlowMetadata.js +3 -3
  56. package/dist/models/FlowMetadata.js.map +1 -1
  57. package/dist/tools/ReplayableInteraction.d.ts +11 -3
  58. package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
  59. package/dist/tools/ReplayableInteraction.js +45 -21
  60. package/dist/tools/ReplayableInteraction.js.map +1 -1
  61. package/package.json +3 -2
@@ -25,6 +25,7 @@ import { DonobuFlowsManager } from '../managers/DonobuFlowsManager';
25
25
  */
26
26
  export declare class FlowsApi {
27
27
  private readonly donobuFlowsManager;
28
+ private static DEFAULT_CODE_OPTIONS;
28
29
  constructor(donobuFlowsManager: DonobuFlowsManager);
29
30
  /**
30
31
  * Generates Playwright code that can replay a completed flow.
@@ -61,7 +62,11 @@ export declare class FlowsApi {
61
62
  * Content-Type: application/json
62
63
  *
63
64
  * {
64
- * "flowIds": ["flow1", "flow2", "flow3"]
65
+ * "flowIds": [ "flowId1", "flowId2", "flowId3" ],
66
+ * "options": {
67
+ * "areElementIdsVolatile": true,
68
+ * "disableSelectorFailover": true
69
+ * }
65
70
  * }
66
71
  *
67
72
  * Response:
@@ -95,8 +100,6 @@ export declare class FlowsApi {
95
100
  *
96
101
  * Response: CreateDonobuFlow object ready for POST to /api/flows
97
102
  * ```
98
- *
99
- * @public
100
103
  */
101
104
  getFlowAsRerun(req: Request, res: Response): Promise<void>;
102
105
  /**
@@ -214,8 +217,6 @@ export declare class FlowsApi {
214
217
  *
215
218
  * Response: Complete FlowMetadata object
216
219
  * ```
217
- *
218
- * @public
219
220
  */
220
221
  getFlowMetadata(req: Request, res: Response): Promise<void>;
221
222
  /**
@@ -279,15 +280,5 @@ export declare class FlowsApi {
279
280
  * Cannot be undone - the flow will need to be recreated to retry.
280
281
  */
281
282
  cancelFlow(req: Request, res: Response): Promise<void>;
282
- /**
283
- * Parses and validates the limit query parameter.
284
- *
285
- * Converts the limit string to a number with appropriate defaults and bounds.
286
- * Returns Number.MAX_SAFE_INTEGER if parsing fails to avoid artificial limits.
287
- *
288
- * @param limit - The limit query parameter value
289
- * @returns Parsed limit number or maximum safe integer
290
- */
291
- private parseLimit;
292
283
  }
293
284
  //# sourceMappingURL=FlowsApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlowsApi.d.ts","sourceRoot":"","sources":["../../src/apis/FlowsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAapE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,QAAQ;IACA,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB;IAE1E;;;;;;;;;;;;;;;;;;OAkBG;IACU,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACU,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1E;;;;;;;;;;;;;;;;;OAiBG;IACU,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDjE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE;;;;;;;;;;;;;;;OAeG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;;;;;;;;;OAgBG;IACU,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;;;;;;;;;;;;;;;;;;OAmBG;IACU,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;CAOnB"}
1
+ {"version":3,"file":"FlowsApi.d.ts","sourceRoot":"","sources":["../../src/apis/FlowsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AASpE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,QAAQ;IAMA,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IALtD,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAGjC;gBAEkC,kBAAkB,EAAE,kBAAkB;IAE1E;;;;;;;;;;;;;;;;;;OAkBG;IACU,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1E;;;;;;;;;;;;;;;OAeG;IACU,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE;;;;;;;;;;;;;;;OAeG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;;;;;;;OAcG;IACU,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;;;;;;;;;;;;;;;;;;OAmBG;IACU,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpE"}
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FlowsApi = void 0;
4
4
  const CreateDonobuFlow_1 = require("../models/CreateDonobuFlow");
5
5
  const FlowMetadata_1 = require("../models/FlowMetadata");
6
- const InvalidParamValueException_1 = require("../exceptions/InvalidParamValueException");
7
6
  const zod_1 = require("zod");
7
+ const CodeGenerationOptions_1 = require("../models/CodeGenerationOptions");
8
8
  /**
9
9
  * API controller for managing Donobu flows throughout their lifecycle.
10
10
  *
@@ -53,10 +53,8 @@ class FlowsApi {
53
53
  */
54
54
  async getFlowAsCode(req, res) {
55
55
  const flowId = req.params.flowId;
56
- const draftedPlaywrightScript = await this.donobuFlowsManager.getFlowAsPlaywrightScript(flowId, {
57
- areElementIdsVolatile: false,
58
- disableSelectorFailover: false,
59
- });
56
+ const options = CodeGenerationOptions_1.CodeGenerationOptionsSchema.optional().parse(req.query);
57
+ const draftedPlaywrightScript = await this.donobuFlowsManager.getFlowAsPlaywrightScript(flowId, options ?? FlowsApi.DEFAULT_CODE_OPTIONS);
60
58
  res.send({ script: draftedPlaywrightScript });
61
59
  }
62
60
  /**
@@ -74,7 +72,11 @@ class FlowsApi {
74
72
  * Content-Type: application/json
75
73
  *
76
74
  * {
77
- * "flowIds": ["flow1", "flow2", "flow3"]
75
+ * "flowIds": [ "flowId1", "flowId2", "flowId3" ],
76
+ * "options": {
77
+ * "areElementIdsVolatile": true,
78
+ * "disableSelectorFailover": true
79
+ * }
78
80
  * }
79
81
  *
80
82
  * Response:
@@ -94,12 +96,12 @@ class FlowsApi {
94
96
  */
95
97
  async getFlowsAsProject(req, res) {
96
98
  const parsedBody = zod_1.z
97
- .object({ flowIds: zod_1.z.array(zod_1.z.string()) })
99
+ .object({
100
+ flowIds: zod_1.z.array(zod_1.z.string()),
101
+ options: CodeGenerationOptions_1.CodeGenerationOptionsSchema.optional(),
102
+ })
98
103
  .parse(req.body);
99
- const project = await this.donobuFlowsManager.getFlowsAsPlaywrightProject(parsedBody.flowIds, {
100
- areElementIdsVolatile: false,
101
- disableSelectorFailover: false,
102
- });
104
+ const project = await this.donobuFlowsManager.getFlowsAsPlaywrightProject(parsedBody.flowIds, parsedBody.options ?? FlowsApi.DEFAULT_CODE_OPTIONS);
103
105
  res.json({
104
106
  files: project.files,
105
107
  });
@@ -119,8 +121,6 @@ class FlowsApi {
119
121
  *
120
122
  * Response: CreateDonobuFlow object ready for POST to /api/flows
121
123
  * ```
122
- *
123
- * @public
124
124
  */
125
125
  async getFlowAsRerun(req, res) {
126
126
  const flowId = req.params.flowId;
@@ -168,39 +168,7 @@ class FlowsApi {
168
168
  * - `startedBefore`: Unix timestamp - flows started before this time
169
169
  */
170
170
  async getFlows(req, res) {
171
- const query = {
172
- pageToken: req.query.pageToken,
173
- limit: this.parseLimit(req.query.limit),
174
- name: req.query.name,
175
- runMode: req.query.runMode,
176
- state: req.query.state,
177
- startedAfter: req.query.startedAfter
178
- ? parseInt(req.query.startedAfter)
179
- : undefined,
180
- startedBefore: req.query.startedBefore
181
- ? parseInt(req.query.startedBefore)
182
- : undefined,
183
- };
184
- // Validate numeric startedAfter.
185
- if (req.query.startedAfter &&
186
- query.startedAfter &&
187
- isNaN(query.startedAfter)) {
188
- throw new InvalidParamValueException_1.InvalidParamValueException('startedAfter', '' + req.query.startedAfter);
189
- }
190
- // Validate numeric startedBefore.
191
- if (req.query.startedBefore &&
192
- query.startedBefore &&
193
- isNaN(query.startedBefore)) {
194
- throw new InvalidParamValueException_1.InvalidParamValueException('startedBefore', '' + req.query.startedBefore);
195
- }
196
- // Validate that runMode is a valid enum value.
197
- if (query.runMode && !FlowMetadata_1.RunModeSchema.options.includes(query.runMode)) {
198
- throw new InvalidParamValueException_1.InvalidParamValueException('runMode', query.runMode);
199
- }
200
- // Validate that state is a valid enum value.
201
- if (query.state && !FlowMetadata_1.StateSchema.options.includes(query.state)) {
202
- throw new InvalidParamValueException_1.InvalidParamValueException('state', query.state);
203
- }
171
+ const query = FlowMetadata_1.FlowsQuerySchema.parse(req.query);
204
172
  const flows = await this.donobuFlowsManager.getFlows(query);
205
173
  res.json({ flows: flows.items, nextPageToken: flows.nextPageToken });
206
174
  }
@@ -295,8 +263,6 @@ class FlowsApi {
295
263
  *
296
264
  * Response: Complete FlowMetadata object
297
265
  * ```
298
- *
299
- * @public
300
266
  */
301
267
  async getFlowMetadata(req, res) {
302
268
  const flowId = req.params.flowId;
@@ -382,23 +348,10 @@ class FlowsApi {
382
348
  const metadata = await this.donobuFlowsManager.cancelFlow(flowId);
383
349
  res.json(metadata);
384
350
  }
385
- /**
386
- * Parses and validates the limit query parameter.
387
- *
388
- * Converts the limit string to a number with appropriate defaults and bounds.
389
- * Returns Number.MAX_SAFE_INTEGER if parsing fails to avoid artificial limits.
390
- *
391
- * @param limit - The limit query parameter value
392
- * @returns Parsed limit number or maximum safe integer
393
- */
394
- parseLimit(limit) {
395
- try {
396
- return limit ? parseInt(limit) : Number.MAX_SAFE_INTEGER;
397
- }
398
- catch {
399
- return Number.MAX_SAFE_INTEGER;
400
- }
401
- }
402
351
  }
403
352
  exports.FlowsApi = FlowsApi;
353
+ FlowsApi.DEFAULT_CODE_OPTIONS = {
354
+ areElementIdsVolatile: false,
355
+ disableSelectorFailover: false,
356
+ };
404
357
  //# sourceMappingURL=FlowsApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlowsApi.js","sourceRoot":"","sources":["../../src/apis/FlowsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlowsApi.js","sourceRoot":"","sources":["../../src/apis/FlowsApi.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- 1274
1
+ 1281
@@ -241,7 +241,7 @@ function generateMarkdown(jsonData) {
241
241
  });
242
242
 
243
243
  // Add timestamp footer
244
- markdown += `_Report generated on ${new Date().toLocaleString()}_\n`;
244
+ markdown += `_Report generated on ${new Date().toLocaleString()} by Donobu_\n`;
245
245
 
246
246
  return markdown;
247
247
  }
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Convert Playwright JSON test results to a simplified Slack-compatible report.
5
+ *
6
+ * Usage: node playwright-json-to-slack-json.js input.json [--report-url <url>]
7
+ */
8
+
9
+ const fs = require('fs');
10
+
11
+ // Read the JSON data from file or stdin
12
+ function readInput() {
13
+ const args = process.argv.slice(2);
14
+
15
+ // Parse arguments to extract report URL and input file
16
+ let reportUrl = null;
17
+ let inputFile = null;
18
+
19
+ for (let i = 0; i < args.length; i++) {
20
+ if (args[i] === '--report-url' && i + 1 < args.length) {
21
+ reportUrl = args[i + 1];
22
+ i++; // Skip the URL value
23
+ } else if (!args[i].startsWith('--')) {
24
+ inputFile = args[i];
25
+ }
26
+ }
27
+
28
+ let jsonData;
29
+
30
+ if (inputFile) {
31
+ jsonData = JSON.parse(fs.readFileSync(inputFile, 'utf8'));
32
+ } else {
33
+ jsonData = JSON.parse(fs.readFileSync(0, 'utf8')); // Read from stdin
34
+ }
35
+
36
+ return { jsonData, reportUrl };
37
+ }
38
+
39
+ // Process JSON and create simplified Slack blocks
40
+ function generateSlackBlocks(jsonData, reportUrl) {
41
+ const { suites } = jsonData;
42
+
43
+ const blocks = [];
44
+
45
+ // Header block
46
+ blocks.push({
47
+ type: 'header',
48
+ text: {
49
+ type: 'plain_text',
50
+ text: '🎭 Playwright Test Summary',
51
+ },
52
+ });
53
+
54
+ // Track totals
55
+ let totalPassed = 0;
56
+ let totalFailed = 0;
57
+ let totalTimedOut = 0;
58
+ let totalSkipped = 0;
59
+ let totalInterrupted = 0;
60
+ let totalSelfHealed = 0;
61
+
62
+ // Process each suite to get totals
63
+ suites.forEach((suite) => {
64
+ suite.specs.forEach((spec) => {
65
+ spec.tests.forEach((test) => {
66
+ const result = test.results && test.results.at(-1);
67
+ const isSelfHealed =
68
+ test.annotations &&
69
+ test.annotations.some((a) => a.type === 'self-healed');
70
+
71
+ if (
72
+ test.status === 'skipped' ||
73
+ (!result && test.status === undefined)
74
+ ) {
75
+ totalSkipped++;
76
+ } else if (result) {
77
+ if (isSelfHealed) {
78
+ totalSelfHealed++;
79
+ } else {
80
+ switch (result.status) {
81
+ case 'passed':
82
+ totalPassed++;
83
+ break;
84
+ case 'failed':
85
+ totalFailed++;
86
+ break;
87
+ case 'timedOut':
88
+ totalTimedOut++;
89
+ break;
90
+ case 'skipped':
91
+ totalSkipped++;
92
+ break;
93
+ case 'interrupted':
94
+ totalInterrupted++;
95
+ break;
96
+ }
97
+ }
98
+ }
99
+ });
100
+ });
101
+ });
102
+
103
+ // Create status summary table
104
+ const statusRows = [
105
+ { name: 'Passed', emoji: '✅', count: totalPassed },
106
+ { name: 'Self-Healed', emoji: '❤️‍🩹', count: totalSelfHealed },
107
+ { name: 'Failed', emoji: '❌', count: totalFailed },
108
+ { name: 'Timed Out', emoji: '⏰', count: totalTimedOut },
109
+ { name: 'Skipped', emoji: '⏭️', count: totalSkipped },
110
+ { name: 'Interrupted', emoji: '⚡', count: totalInterrupted },
111
+ ];
112
+
113
+ // Add each status row as a section with two fields
114
+ statusRows.forEach((row) => {
115
+ blocks.push({
116
+ type: 'section',
117
+ fields: [
118
+ {
119
+ type: 'mrkdwn',
120
+ text: `${row.emoji} ${row.name}`,
121
+ },
122
+ {
123
+ type: 'mrkdwn',
124
+ text: `${row.count}`,
125
+ },
126
+ ],
127
+ });
128
+ });
129
+
130
+ // Add report URL link if provided
131
+ if (reportUrl) {
132
+ blocks.push({
133
+ type: 'divider',
134
+ });
135
+
136
+ blocks.push({
137
+ type: 'section',
138
+ text: {
139
+ type: 'mrkdwn',
140
+ text: `📊 <${reportUrl}|View Full Report>`,
141
+ },
142
+ });
143
+ }
144
+
145
+ // Add timestamp footer
146
+ blocks.push({
147
+ type: 'divider',
148
+ });
149
+
150
+ blocks.push({
151
+ type: 'context',
152
+ elements: [
153
+ {
154
+ type: 'mrkdwn',
155
+ text: `Report generated on ${new Date().toLocaleString()} by Donobu`,
156
+ },
157
+ ],
158
+ });
159
+
160
+ return { blocks };
161
+ }
162
+
163
+ // Main execution
164
+ try {
165
+ const { jsonData, reportUrl } = readInput();
166
+ const slackBlocks = generateSlackBlocks(jsonData, reportUrl);
167
+ console.log(JSON.stringify(slackBlocks, null, 2));
168
+ } catch (error) {
169
+ console.error('Error processing JSON:', error.message);
170
+ process.exit(1);
171
+ }
@@ -25,6 +25,7 @@ import { DonobuFlowsManager } from '../managers/DonobuFlowsManager';
25
25
  */
26
26
  export declare class FlowsApi {
27
27
  private readonly donobuFlowsManager;
28
+ private static DEFAULT_CODE_OPTIONS;
28
29
  constructor(donobuFlowsManager: DonobuFlowsManager);
29
30
  /**
30
31
  * Generates Playwright code that can replay a completed flow.
@@ -61,7 +62,11 @@ export declare class FlowsApi {
61
62
  * Content-Type: application/json
62
63
  *
63
64
  * {
64
- * "flowIds": ["flow1", "flow2", "flow3"]
65
+ * "flowIds": [ "flowId1", "flowId2", "flowId3" ],
66
+ * "options": {
67
+ * "areElementIdsVolatile": true,
68
+ * "disableSelectorFailover": true
69
+ * }
65
70
  * }
66
71
  *
67
72
  * Response:
@@ -95,8 +100,6 @@ export declare class FlowsApi {
95
100
  *
96
101
  * Response: CreateDonobuFlow object ready for POST to /api/flows
97
102
  * ```
98
- *
99
- * @public
100
103
  */
101
104
  getFlowAsRerun(req: Request, res: Response): Promise<void>;
102
105
  /**
@@ -214,8 +217,6 @@ export declare class FlowsApi {
214
217
  *
215
218
  * Response: Complete FlowMetadata object
216
219
  * ```
217
- *
218
- * @public
219
220
  */
220
221
  getFlowMetadata(req: Request, res: Response): Promise<void>;
221
222
  /**
@@ -279,15 +280,5 @@ export declare class FlowsApi {
279
280
  * Cannot be undone - the flow will need to be recreated to retry.
280
281
  */
281
282
  cancelFlow(req: Request, res: Response): Promise<void>;
282
- /**
283
- * Parses and validates the limit query parameter.
284
- *
285
- * Converts the limit string to a number with appropriate defaults and bounds.
286
- * Returns Number.MAX_SAFE_INTEGER if parsing fails to avoid artificial limits.
287
- *
288
- * @param limit - The limit query parameter value
289
- * @returns Parsed limit number or maximum safe integer
290
- */
291
- private parseLimit;
292
283
  }
293
284
  //# sourceMappingURL=FlowsApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlowsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/FlowsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAapE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,QAAQ;IACA,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB;IAE1E;;;;;;;;;;;;;;;;;;OAkBG;IACU,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACU,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1E;;;;;;;;;;;;;;;;;OAiBG;IACU,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDjE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE;;;;;;;;;;;;;;;OAeG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;;;;;;;;;OAgBG;IACU,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;;;;;;;;;;;;;;;;;;OAmBG;IACU,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;CAOnB"}
1
+ {"version":3,"file":"FlowsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/FlowsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AASpE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,QAAQ;IAMA,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IALtD,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAGjC;gBAEkC,kBAAkB,EAAE,kBAAkB;IAE1E;;;;;;;;;;;;;;;;;;OAkBG;IACU,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1E;;;;;;;;;;;;;;;OAeG;IACU,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE;;;;;;;;;;;;;;;OAeG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;;;;;;;OAcG;IACU,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;;;;;;;;;;;;;;;;;;OAmBG;IACU,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE;;;;;;;;;;;;;;;;;;OAkBG;IACU,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpE"}
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FlowsApi = void 0;
4
4
  const CreateDonobuFlow_1 = require("../models/CreateDonobuFlow");
5
5
  const FlowMetadata_1 = require("../models/FlowMetadata");
6
- const InvalidParamValueException_1 = require("../exceptions/InvalidParamValueException");
7
6
  const zod_1 = require("zod");
7
+ const CodeGenerationOptions_1 = require("../models/CodeGenerationOptions");
8
8
  /**
9
9
  * API controller for managing Donobu flows throughout their lifecycle.
10
10
  *
@@ -53,10 +53,8 @@ class FlowsApi {
53
53
  */
54
54
  async getFlowAsCode(req, res) {
55
55
  const flowId = req.params.flowId;
56
- const draftedPlaywrightScript = await this.donobuFlowsManager.getFlowAsPlaywrightScript(flowId, {
57
- areElementIdsVolatile: false,
58
- disableSelectorFailover: false,
59
- });
56
+ const options = CodeGenerationOptions_1.CodeGenerationOptionsSchema.optional().parse(req.query);
57
+ const draftedPlaywrightScript = await this.donobuFlowsManager.getFlowAsPlaywrightScript(flowId, options ?? FlowsApi.DEFAULT_CODE_OPTIONS);
60
58
  res.send({ script: draftedPlaywrightScript });
61
59
  }
62
60
  /**
@@ -74,7 +72,11 @@ class FlowsApi {
74
72
  * Content-Type: application/json
75
73
  *
76
74
  * {
77
- * "flowIds": ["flow1", "flow2", "flow3"]
75
+ * "flowIds": [ "flowId1", "flowId2", "flowId3" ],
76
+ * "options": {
77
+ * "areElementIdsVolatile": true,
78
+ * "disableSelectorFailover": true
79
+ * }
78
80
  * }
79
81
  *
80
82
  * Response:
@@ -94,12 +96,12 @@ class FlowsApi {
94
96
  */
95
97
  async getFlowsAsProject(req, res) {
96
98
  const parsedBody = zod_1.z
97
- .object({ flowIds: zod_1.z.array(zod_1.z.string()) })
99
+ .object({
100
+ flowIds: zod_1.z.array(zod_1.z.string()),
101
+ options: CodeGenerationOptions_1.CodeGenerationOptionsSchema.optional(),
102
+ })
98
103
  .parse(req.body);
99
- const project = await this.donobuFlowsManager.getFlowsAsPlaywrightProject(parsedBody.flowIds, {
100
- areElementIdsVolatile: false,
101
- disableSelectorFailover: false,
102
- });
104
+ const project = await this.donobuFlowsManager.getFlowsAsPlaywrightProject(parsedBody.flowIds, parsedBody.options ?? FlowsApi.DEFAULT_CODE_OPTIONS);
103
105
  res.json({
104
106
  files: project.files,
105
107
  });
@@ -119,8 +121,6 @@ class FlowsApi {
119
121
  *
120
122
  * Response: CreateDonobuFlow object ready for POST to /api/flows
121
123
  * ```
122
- *
123
- * @public
124
124
  */
125
125
  async getFlowAsRerun(req, res) {
126
126
  const flowId = req.params.flowId;
@@ -168,39 +168,7 @@ class FlowsApi {
168
168
  * - `startedBefore`: Unix timestamp - flows started before this time
169
169
  */
170
170
  async getFlows(req, res) {
171
- const query = {
172
- pageToken: req.query.pageToken,
173
- limit: this.parseLimit(req.query.limit),
174
- name: req.query.name,
175
- runMode: req.query.runMode,
176
- state: req.query.state,
177
- startedAfter: req.query.startedAfter
178
- ? parseInt(req.query.startedAfter)
179
- : undefined,
180
- startedBefore: req.query.startedBefore
181
- ? parseInt(req.query.startedBefore)
182
- : undefined,
183
- };
184
- // Validate numeric startedAfter.
185
- if (req.query.startedAfter &&
186
- query.startedAfter &&
187
- isNaN(query.startedAfter)) {
188
- throw new InvalidParamValueException_1.InvalidParamValueException('startedAfter', '' + req.query.startedAfter);
189
- }
190
- // Validate numeric startedBefore.
191
- if (req.query.startedBefore &&
192
- query.startedBefore &&
193
- isNaN(query.startedBefore)) {
194
- throw new InvalidParamValueException_1.InvalidParamValueException('startedBefore', '' + req.query.startedBefore);
195
- }
196
- // Validate that runMode is a valid enum value.
197
- if (query.runMode && !FlowMetadata_1.RunModeSchema.options.includes(query.runMode)) {
198
- throw new InvalidParamValueException_1.InvalidParamValueException('runMode', query.runMode);
199
- }
200
- // Validate that state is a valid enum value.
201
- if (query.state && !FlowMetadata_1.StateSchema.options.includes(query.state)) {
202
- throw new InvalidParamValueException_1.InvalidParamValueException('state', query.state);
203
- }
171
+ const query = FlowMetadata_1.FlowsQuerySchema.parse(req.query);
204
172
  const flows = await this.donobuFlowsManager.getFlows(query);
205
173
  res.json({ flows: flows.items, nextPageToken: flows.nextPageToken });
206
174
  }
@@ -295,8 +263,6 @@ class FlowsApi {
295
263
  *
296
264
  * Response: Complete FlowMetadata object
297
265
  * ```
298
- *
299
- * @public
300
266
  */
301
267
  async getFlowMetadata(req, res) {
302
268
  const flowId = req.params.flowId;
@@ -382,23 +348,10 @@ class FlowsApi {
382
348
  const metadata = await this.donobuFlowsManager.cancelFlow(flowId);
383
349
  res.json(metadata);
384
350
  }
385
- /**
386
- * Parses and validates the limit query parameter.
387
- *
388
- * Converts the limit string to a number with appropriate defaults and bounds.
389
- * Returns Number.MAX_SAFE_INTEGER if parsing fails to avoid artificial limits.
390
- *
391
- * @param limit - The limit query parameter value
392
- * @returns Parsed limit number or maximum safe integer
393
- */
394
- parseLimit(limit) {
395
- try {
396
- return limit ? parseInt(limit) : Number.MAX_SAFE_INTEGER;
397
- }
398
- catch {
399
- return Number.MAX_SAFE_INTEGER;
400
- }
401
- }
402
351
  }
403
352
  exports.FlowsApi = FlowsApi;
353
+ FlowsApi.DEFAULT_CODE_OPTIONS = {
354
+ areElementIdsVolatile: false,
355
+ disableSelectorFailover: false,
356
+ };
404
357
  //# sourceMappingURL=FlowsApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlowsApi.js","sourceRoot":"","sources":["../../../src/apis/FlowsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlowsApi.js","sourceRoot":"","sources":["../../../src/apis/FlowsApi.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- 1274
1
+ 1281
@@ -241,7 +241,7 @@ function generateMarkdown(jsonData) {
241
241
  });
242
242
 
243
243
  // Add timestamp footer
244
- markdown += `_Report generated on ${new Date().toLocaleString()}_\n`;
244
+ markdown += `_Report generated on ${new Date().toLocaleString()} by Donobu_\n`;
245
245
 
246
246
  return markdown;
247
247
  }