@supernal/interface 1.0.9 → 1.0.11

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 (147) hide show
  1. package/dist/cjs/src/browser.js +42 -1
  2. package/dist/cjs/src/browser.js.map +1 -1
  3. package/dist/cjs/src/decorators/ContainerHelpers.js +16 -1
  4. package/dist/cjs/src/decorators/ContainerHelpers.js.map +1 -1
  5. package/dist/cjs/src/decorators/Tool.js +2 -3
  6. package/dist/cjs/src/decorators/Tool.js.map +1 -1
  7. package/dist/cjs/src/testing/graph-tester/core/GraphTester.js +339 -0
  8. package/dist/cjs/src/testing/graph-tester/core/GraphTester.js.map +1 -0
  9. package/dist/cjs/src/testing/graph-tester/core/TestFunction.js +189 -0
  10. package/dist/cjs/src/testing/graph-tester/core/TestFunction.js.map +1 -0
  11. package/dist/cjs/src/testing/graph-tester/core/types.js +24 -0
  12. package/dist/cjs/src/testing/graph-tester/core/types.js.map +1 -0
  13. package/dist/cjs/src/testing/graph-tester/fixtures/index.js +13 -0
  14. package/dist/cjs/src/testing/graph-tester/fixtures/index.js.map +1 -0
  15. package/dist/cjs/src/testing/graph-tester/fixtures/portPool.js +184 -0
  16. package/dist/cjs/src/testing/graph-tester/fixtures/portPool.js.map +1 -0
  17. package/dist/cjs/src/testing/graph-tester/index.js +98 -0
  18. package/dist/cjs/src/testing/graph-tester/index.js.map +1 -0
  19. package/dist/cjs/src/testing/graph-tester/modes/AccessibilityMode.js +230 -0
  20. package/dist/cjs/src/testing/graph-tester/modes/AccessibilityMode.js.map +1 -0
  21. package/dist/cjs/src/testing/graph-tester/modes/PerformanceMode.js +168 -0
  22. package/dist/cjs/src/testing/graph-tester/modes/PerformanceMode.js.map +1 -0
  23. package/dist/cjs/src/testing/graph-tester/modes/SEOMode.js +264 -0
  24. package/dist/cjs/src/testing/graph-tester/modes/SEOMode.js.map +1 -0
  25. package/dist/cjs/src/testing/graph-tester/modes/VisualRegressionMode.js +199 -0
  26. package/dist/cjs/src/testing/graph-tester/modes/VisualRegressionMode.js.map +1 -0
  27. package/dist/cjs/src/testing/graph-tester/modes/index.js +17 -0
  28. package/dist/cjs/src/testing/graph-tester/modes/index.js.map +1 -0
  29. package/dist/cjs/src/testing/graph-tester/reporters/HTMLReporter.js +411 -0
  30. package/dist/cjs/src/testing/graph-tester/reporters/HTMLReporter.js.map +1 -0
  31. package/dist/cjs/src/testing/graph-tester/reporters/JSONReporter.js +127 -0
  32. package/dist/cjs/src/testing/graph-tester/reporters/JSONReporter.js.map +1 -0
  33. package/dist/cjs/src/testing/graph-tester/reporters/MarkdownReporter.js +169 -0
  34. package/dist/cjs/src/testing/graph-tester/reporters/MarkdownReporter.js.map +1 -0
  35. package/dist/cjs/src/testing/graph-tester/reporters/UnifiedReporter.js +118 -0
  36. package/dist/cjs/src/testing/graph-tester/reporters/UnifiedReporter.js.map +1 -0
  37. package/dist/cjs/src/testing/graph-tester/reporters/index.js +17 -0
  38. package/dist/cjs/src/testing/graph-tester/reporters/index.js.map +1 -0
  39. package/dist/cjs/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js +47 -0
  40. package/dist/cjs/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js.map +1 -0
  41. package/dist/cjs/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js +584 -0
  42. package/dist/cjs/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js.map +1 -0
  43. package/dist/cjs/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js +376 -0
  44. package/dist/cjs/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js.map +1 -0
  45. package/dist/cjs/src/testing/graph-tester/screenshot/index.js +15 -0
  46. package/dist/cjs/src/testing/graph-tester/screenshot/index.js.map +1 -0
  47. package/dist/cjs/src/testing/graph-tester/screenshot/types.js +11 -0
  48. package/dist/cjs/src/testing/graph-tester/screenshot/types.js.map +1 -0
  49. package/dist/cjs/src/testing/selectors.js +1 -1
  50. package/dist/esm/src/browser.d.ts +9 -0
  51. package/dist/esm/src/browser.d.ts.map +1 -1
  52. package/dist/esm/src/browser.js +14 -0
  53. package/dist/esm/src/browser.js.map +1 -1
  54. package/dist/esm/src/decorators/ContainerHelpers.d.ts +2 -1
  55. package/dist/esm/src/decorators/ContainerHelpers.d.ts.map +1 -1
  56. package/dist/esm/src/decorators/ContainerHelpers.js +16 -1
  57. package/dist/esm/src/decorators/ContainerHelpers.js.map +1 -1
  58. package/dist/esm/src/decorators/Tool.d.ts.map +1 -1
  59. package/dist/esm/src/decorators/Tool.js +2 -3
  60. package/dist/esm/src/decorators/Tool.js.map +1 -1
  61. package/dist/esm/src/testing/graph-tester/core/GraphTester.d.ts +110 -0
  62. package/dist/esm/src/testing/graph-tester/core/GraphTester.d.ts.map +1 -0
  63. package/dist/esm/src/testing/graph-tester/core/GraphTester.js +335 -0
  64. package/dist/esm/src/testing/graph-tester/core/GraphTester.js.map +1 -0
  65. package/dist/esm/src/testing/graph-tester/core/TestFunction.d.ts +120 -0
  66. package/dist/esm/src/testing/graph-tester/core/TestFunction.d.ts.map +1 -0
  67. package/dist/esm/src/testing/graph-tester/core/TestFunction.js +184 -0
  68. package/dist/esm/src/testing/graph-tester/core/TestFunction.js.map +1 -0
  69. package/dist/esm/src/testing/graph-tester/core/types.d.ts +331 -0
  70. package/dist/esm/src/testing/graph-tester/core/types.d.ts.map +1 -0
  71. package/dist/esm/src/testing/graph-tester/core/types.js +21 -0
  72. package/dist/esm/src/testing/graph-tester/core/types.js.map +1 -0
  73. package/dist/esm/src/testing/graph-tester/fixtures/index.d.ts +8 -0
  74. package/dist/esm/src/testing/graph-tester/fixtures/index.d.ts.map +1 -0
  75. package/dist/esm/src/testing/graph-tester/fixtures/index.js +7 -0
  76. package/dist/esm/src/testing/graph-tester/fixtures/index.js.map +1 -0
  77. package/dist/esm/src/testing/graph-tester/fixtures/portPool.d.ts +40 -0
  78. package/dist/esm/src/testing/graph-tester/fixtures/portPool.d.ts.map +1 -0
  79. package/dist/esm/src/testing/graph-tester/fixtures/portPool.js +147 -0
  80. package/dist/esm/src/testing/graph-tester/fixtures/portPool.js.map +1 -0
  81. package/dist/esm/src/testing/graph-tester/index.d.ts +84 -0
  82. package/dist/esm/src/testing/graph-tester/index.d.ts.map +1 -0
  83. package/dist/esm/src/testing/graph-tester/index.js +77 -0
  84. package/dist/esm/src/testing/graph-tester/index.js.map +1 -0
  85. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.d.ts +40 -0
  86. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.d.ts.map +1 -0
  87. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.js +193 -0
  88. package/dist/esm/src/testing/graph-tester/modes/AccessibilityMode.js.map +1 -0
  89. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.d.ts +42 -0
  90. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.d.ts.map +1 -0
  91. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.js +131 -0
  92. package/dist/esm/src/testing/graph-tester/modes/PerformanceMode.js.map +1 -0
  93. package/dist/esm/src/testing/graph-tester/modes/SEOMode.d.ts +39 -0
  94. package/dist/esm/src/testing/graph-tester/modes/SEOMode.d.ts.map +1 -0
  95. package/dist/esm/src/testing/graph-tester/modes/SEOMode.js +227 -0
  96. package/dist/esm/src/testing/graph-tester/modes/SEOMode.js.map +1 -0
  97. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.d.ts +83 -0
  98. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.d.ts.map +1 -0
  99. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.js +162 -0
  100. package/dist/esm/src/testing/graph-tester/modes/VisualRegressionMode.js.map +1 -0
  101. package/dist/esm/src/testing/graph-tester/modes/index.d.ts +14 -0
  102. package/dist/esm/src/testing/graph-tester/modes/index.d.ts.map +1 -0
  103. package/dist/esm/src/testing/graph-tester/modes/index.js +10 -0
  104. package/dist/esm/src/testing/graph-tester/modes/index.js.map +1 -0
  105. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.d.ts +38 -0
  106. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.d.ts.map +1 -0
  107. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.js +374 -0
  108. package/dist/esm/src/testing/graph-tester/reporters/HTMLReporter.js.map +1 -0
  109. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.d.ts +50 -0
  110. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.d.ts.map +1 -0
  111. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.js +90 -0
  112. package/dist/esm/src/testing/graph-tester/reporters/JSONReporter.js.map +1 -0
  113. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.d.ts +33 -0
  114. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.d.ts.map +1 -0
  115. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.js +132 -0
  116. package/dist/esm/src/testing/graph-tester/reporters/MarkdownReporter.js.map +1 -0
  117. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.d.ts +30 -0
  118. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.d.ts.map +1 -0
  119. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.js +81 -0
  120. package/dist/esm/src/testing/graph-tester/reporters/UnifiedReporter.js.map +1 -0
  121. package/dist/esm/src/testing/graph-tester/reporters/index.d.ts +14 -0
  122. package/dist/esm/src/testing/graph-tester/reporters/index.d.ts.map +1 -0
  123. package/dist/esm/src/testing/graph-tester/reporters/index.js +10 -0
  124. package/dist/esm/src/testing/graph-tester/reporters/index.js.map +1 -0
  125. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.d.ts +33 -0
  126. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.d.ts.map +1 -0
  127. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js +43 -0
  128. package/dist/esm/src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.js.map +1 -0
  129. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.d.ts +70 -0
  130. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.d.ts.map +1 -0
  131. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js +547 -0
  132. package/dist/esm/src/testing/graph-tester/screenshot/HTMLAnnotationRenderer.js.map +1 -0
  133. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.d.ts +83 -0
  134. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.d.ts.map +1 -0
  135. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js +339 -0
  136. package/dist/esm/src/testing/graph-tester/screenshot/ScreenshotAnnotator.js.map +1 -0
  137. package/dist/esm/src/testing/graph-tester/screenshot/index.d.ts +11 -0
  138. package/dist/esm/src/testing/graph-tester/screenshot/index.d.ts.map +1 -0
  139. package/dist/esm/src/testing/graph-tester/screenshot/index.js +9 -0
  140. package/dist/esm/src/testing/graph-tester/screenshot/index.js.map +1 -0
  141. package/dist/esm/src/testing/graph-tester/screenshot/types.d.ts +331 -0
  142. package/dist/esm/src/testing/graph-tester/screenshot/types.d.ts.map +1 -0
  143. package/dist/esm/src/testing/graph-tester/screenshot/types.js +10 -0
  144. package/dist/esm/src/testing/graph-tester/screenshot/types.js.map +1 -0
  145. package/dist/esm/src/testing/selectors.d.ts +1 -1
  146. package/dist/esm/src/testing/selectors.js +1 -1
  147. package/package.json +19 -6
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Markdown reporter (stub - to be implemented in Phase 2).
4
+ *
5
+ * Will generate GitHub-friendly markdown reports.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.MarkdownReporter = void 0;
44
+ /**
45
+ * Markdown reporter (stub).
46
+ */
47
+ class MarkdownReporter {
48
+ constructor(config) {
49
+ this.name = 'Markdown Reporter';
50
+ this.config = config;
51
+ }
52
+ async generate(results) {
53
+ const markdown = this.generateMarkdown(results);
54
+ const outputPath = `${this.config.outputDir}/${this.config.filename || 'TEST_RESULTS.md'}`;
55
+ await this.ensureDirectory(this.config.outputDir);
56
+ await this.writeFile(outputPath, markdown);
57
+ console.log(`📝 Markdown report generated: ${outputPath}`);
58
+ }
59
+ generateMarkdown(results) {
60
+ const sections = [];
61
+ // Header
62
+ sections.push('# Graph-Based Testing Report\n');
63
+ sections.push(`> Generated on ${new Date().toLocaleString()}\n`);
64
+ // Summary
65
+ sections.push('## Summary\n');
66
+ sections.push('| Metric | Value |');
67
+ sections.push('|--------|-------|');
68
+ sections.push(`| Routes Tested | ${results.routeCount} |`);
69
+ sections.push(`| Total Tests | ${results.testCount} |`);
70
+ sections.push(`| Passed | ${results.passedCount} ✅ |`);
71
+ sections.push(`| Failed | ${results.failedCount} ❌ |`);
72
+ sections.push(`| Pass Rate | ${results.passRate}% |`);
73
+ sections.push(`| Total Duration | ${(results.totalDuration / 1000).toFixed(2)}s |`);
74
+ sections.push('');
75
+ // Status badge
76
+ const status = results.passRate === 100 ? '✅ All tests passed' : `⚠️ ${results.failedCount} test(s) failed`;
77
+ sections.push(`**Status:** ${status}\n`);
78
+ // Results by mode
79
+ sections.push('## Results by Test Mode\n');
80
+ for (const [mode, modeResults] of results.resultsByMode) {
81
+ const passed = modeResults.filter((r) => r.passed).length;
82
+ const failed = modeResults.filter((r) => !r.passed).length;
83
+ const icon = this.getModeIcon(mode);
84
+ sections.push(`### ${icon} ${mode.toUpperCase()}\n`);
85
+ sections.push(`- **Passed:** ${passed} ✅`);
86
+ sections.push(`- **Failed:** ${failed} ❌`);
87
+ sections.push(`- **Total:** ${modeResults.length}`);
88
+ sections.push('');
89
+ }
90
+ // Results by route
91
+ sections.push('## Test Results by Route\n');
92
+ for (const [route, routeResults] of results.resultsByRoute) {
93
+ sections.push(`### \`${route}\`\n`);
94
+ sections.push('| Mode | Status | Duration | Errors |');
95
+ sections.push('|------|--------|----------|--------|');
96
+ for (const result of routeResults) {
97
+ const status = result.passed ? '✅ PASS' : '❌ FAIL';
98
+ const errors = result.errors.length > 0 ? result.errors.length : '-';
99
+ sections.push(`| ${result.mode} | ${status} | ${result.duration}ms | ${errors} |`);
100
+ }
101
+ // Show errors if any
102
+ const failedResults = routeResults.filter((r) => !r.passed);
103
+ if (failedResults.length > 0) {
104
+ sections.push('\n**Errors:**\n');
105
+ for (const result of failedResults) {
106
+ if (result.errors.length > 0) {
107
+ sections.push(`<details>`);
108
+ sections.push(`<summary><strong>${result.mode}</strong> - ${result.errors.length} error(s)</summary>\n`);
109
+ sections.push('```');
110
+ result.errors.forEach((err) => sections.push(typeof err === 'string' ? err : err.message));
111
+ sections.push('```');
112
+ sections.push('</details>\n');
113
+ }
114
+ }
115
+ }
116
+ sections.push('');
117
+ }
118
+ // Detailed mode breakdown
119
+ sections.push('## Detailed Mode Analysis\n');
120
+ for (const [mode, modeResults] of results.resultsByMode) {
121
+ const icon = this.getModeIcon(mode);
122
+ sections.push(`### ${icon} ${mode.toUpperCase()} Mode\n`);
123
+ const passed = modeResults.filter((r) => r.passed).length;
124
+ const failed = modeResults.filter((r) => !r.passed).length;
125
+ const avgDuration = modeResults.reduce((sum, r) => sum + r.duration, 0) / modeResults.length;
126
+ sections.push(`**Performance:**`);
127
+ sections.push(`- Average Duration: ${avgDuration.toFixed(2)}ms`);
128
+ sections.push(`- Success Rate: ${((passed / modeResults.length) * 100).toFixed(1)}%`);
129
+ sections.push('');
130
+ // Show failed routes for this mode
131
+ const failures = modeResults.filter((r) => !r.passed);
132
+ if (failures.length > 0) {
133
+ sections.push('**Failed Routes:**\n');
134
+ for (const result of failures) {
135
+ sections.push(`- \`${result.route || 'unknown'}\``);
136
+ if (this.config.includeErrorStacks && result.errors.length > 0) {
137
+ sections.push(' ```');
138
+ result.errors.forEach((err) => sections.push(` ${typeof err === 'string' ? err : err.message}`));
139
+ sections.push(' ```');
140
+ }
141
+ }
142
+ sections.push('');
143
+ }
144
+ }
145
+ // Footer
146
+ sections.push('---\n');
147
+ sections.push('_Generated by Supernal Interface Graph-Based Testing Framework_');
148
+ return sections.join('\n');
149
+ }
150
+ getModeIcon(mode) {
151
+ const icons = {
152
+ visual: '👁️',
153
+ performance: '⚡',
154
+ accessibility: '♿',
155
+ seo: '🔍',
156
+ };
157
+ return icons[mode] || '📊';
158
+ }
159
+ async ensureDirectory(dir) {
160
+ const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
161
+ await fs.mkdir(dir, { recursive: true });
162
+ }
163
+ async writeFile(path, content) {
164
+ const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
165
+ await fs.writeFile(path, content, 'utf-8');
166
+ }
167
+ }
168
+ exports.MarkdownReporter = MarkdownReporter;
169
+ //# sourceMappingURL=MarkdownReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownReporter.js","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/reporters/MarkdownReporter.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBH;;GAEG;AACH,MAAa,gBAAgB;IAK3B,YAAY,MAA8B;QAJjC,SAAI,GAAG,mBAAmB,CAAC;QAKlC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA8B;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QAE3F,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEO,gBAAgB,CAAC,OAA8B;QACrD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,SAAS;QACT,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEjE,UAAU;QACV,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,WAAW,MAAM,CAAC,CAAC;QACvD,QAAQ,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,WAAW,MAAM,CAAC,CAAC;QACvD,QAAQ,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpF,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElB,eAAe;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,iBAAiB,CAAC;QAC5G,QAAQ,CAAC,IAAI,CAAC,eAAe,MAAM,IAAI,CAAC,CAAC;QAEzC,kBAAkB;QAClB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEpC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,mBAAmB;QACnB,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAEvD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;gBACrE,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,MAAM,MAAM,MAAM,MAAM,CAAC,QAAQ,QAAQ,MAAM,IAAI,CAAC,CAAC;YACrF,CAAC;YAED,qBAAqB;YACrB,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACjC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;oBACnC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC3B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,CAAC,MAAM,uBAAuB,CAAC,CAAC;wBACzG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACrB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC3F,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACrB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,0BAA0B;QAC1B,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE7C,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YAC3D,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;YAE7F,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAElB,mCAAmC;YACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACtC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAC9B,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,IAAI,SAAS,IAAI,CAAC,CAAC;oBACpD,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC/D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;wBAClG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,SAAS;QACT,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAEjF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,MAAM,KAAK,GAA2B;YACpC,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,GAAG;YAChB,aAAa,EAAE,GAAG;YAClB,GAAG,EAAE,IAAI;SACV,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAW;QACvC,MAAM,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QACvC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;QACnD,MAAM,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QACvC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAlJD,4CAkJC"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ /**
3
+ * Unified reporter - orchestrates multiple reporters and correlates results across modes.
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.UnifiedReporter = void 0;
42
+ const JSONReporter_1 = require("./JSONReporter");
43
+ const HTMLReporter_1 = require("./HTMLReporter");
44
+ const MarkdownReporter_1 = require("./MarkdownReporter");
45
+ /**
46
+ * Unified reporter (stub).
47
+ */
48
+ class UnifiedReporter {
49
+ constructor(config) {
50
+ this.name = 'Unified Reporter';
51
+ this.config = config;
52
+ }
53
+ async generate(results) {
54
+ console.log(`\n📊 Generating unified reports in ${this.config.formats.length} format(s)...\n`);
55
+ const reporters = [];
56
+ // Create reporters based on requested formats
57
+ if (this.config.formats.includes('json')) {
58
+ reporters.push(new JSONReporter_1.JSONReporter({
59
+ outputDir: this.config.outputDir,
60
+ filename: 'results.json',
61
+ pretty: true,
62
+ }));
63
+ }
64
+ if (this.config.formats.includes('html')) {
65
+ reporters.push(new HTMLReporter_1.HTMLReporter({
66
+ outputDir: this.config.outputDir,
67
+ filename: 'index.html',
68
+ includeCharts: true,
69
+ }));
70
+ }
71
+ if (this.config.formats.includes('markdown')) {
72
+ reporters.push(new MarkdownReporter_1.MarkdownReporter({
73
+ outputDir: this.config.outputDir,
74
+ filename: 'TEST_RESULTS.md',
75
+ includeErrorStacks: this.config.includeDetailedLogs,
76
+ }));
77
+ }
78
+ if (this.config.formats.includes('csv')) {
79
+ reporters.push({
80
+ name: 'CSV Reporter',
81
+ generate: async (results) => {
82
+ await this.generateCSV(results);
83
+ },
84
+ });
85
+ }
86
+ // Generate all reports in parallel
87
+ await Promise.all(reporters.map((reporter) => reporter.generate(results)));
88
+ console.log(`✅ Unified report generation complete\n`);
89
+ }
90
+ async generateCSV(results) {
91
+ const rows = [];
92
+ // CSV header
93
+ rows.push('Route,Mode,Status,Duration (ms),Errors');
94
+ // CSV data
95
+ for (const [route, routeResults] of results.resultsByRoute) {
96
+ for (const result of routeResults) {
97
+ const status = result.passed ? 'PASS' : 'FAIL';
98
+ const errors = result.errors.length > 0 ? `"${result.errors.join('; ')}"` : '';
99
+ rows.push(`"${route}",${result.mode},${status},${result.duration},${errors}`);
100
+ }
101
+ }
102
+ const csv = rows.join('\n');
103
+ const outputPath = `${this.config.outputDir}/results.csv`;
104
+ await this.ensureDirectory(this.config.outputDir);
105
+ await this.writeFile(outputPath, csv);
106
+ console.log(`📊 CSV report generated: ${outputPath}`);
107
+ }
108
+ async ensureDirectory(dir) {
109
+ const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
110
+ await fs.mkdir(dir, { recursive: true });
111
+ }
112
+ async writeFile(path, content) {
113
+ const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
114
+ await fs.writeFile(path, content, 'utf-8');
115
+ }
116
+ }
117
+ exports.UnifiedReporter = UnifiedReporter;
118
+ //# sourceMappingURL=UnifiedReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnifiedReporter.js","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/reporters/UnifiedReporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * Reporters exports.
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.MarkdownReporter = exports.HTMLReporter = exports.JSONReporter = exports.UnifiedReporter = void 0;
9
+ var UnifiedReporter_1 = require("./UnifiedReporter");
10
+ Object.defineProperty(exports, "UnifiedReporter", { enumerable: true, get: function () { return UnifiedReporter_1.UnifiedReporter; } });
11
+ var JSONReporter_1 = require("./JSONReporter");
12
+ Object.defineProperty(exports, "JSONReporter", { enumerable: true, get: function () { return JSONReporter_1.JSONReporter; } });
13
+ var HTMLReporter_1 = require("./HTMLReporter");
14
+ Object.defineProperty(exports, "HTMLReporter", { enumerable: true, get: function () { return HTMLReporter_1.HTMLReporter; } });
15
+ var MarkdownReporter_1 = require("./MarkdownReporter");
16
+ Object.defineProperty(exports, "MarkdownReporter", { enumerable: true, get: function () { return MarkdownReporter_1.MarkdownReporter; } });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/reporters/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AAGxB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAGrB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAGrB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * Canvas annotation renderer (stub - to be implemented in Phase 3).
4
+ *
5
+ * Will render bounding boxes directly on screenshot canvas.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CanvasAnnotationRenderer = void 0;
11
+ /**
12
+ * Canvas annotation renderer (stub).
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const renderer = new CanvasAnnotationRenderer({
17
+ * drawLabels: true,
18
+ * outputPath: './screenshots/dashboard-annotated.png'
19
+ * });
20
+ *
21
+ * const result = await renderer.render(annotatedScreenshot);
22
+ * ```
23
+ */
24
+ class CanvasAnnotationRenderer {
25
+ constructor(config) {
26
+ this.config = {
27
+ drawLabels: true,
28
+ labelFontSize: 12,
29
+ boundingBoxColor: '#00ff00',
30
+ boundingBoxWidth: 2,
31
+ ...config,
32
+ };
33
+ }
34
+ /**
35
+ * Render annotated screenshot with canvas overlay.
36
+ *
37
+ * @param screenshot - Annotated screenshot
38
+ * @returns Render result
39
+ */
40
+ async render(screenshot) {
41
+ // TODO: Implement in Phase 3
42
+ // Will use canvas/sharp to draw bounding boxes on screenshot
43
+ throw new Error('CanvasAnnotationRenderer not yet implemented (Phase 3)');
44
+ }
45
+ }
46
+ exports.CanvasAnnotationRenderer = CanvasAnnotationRenderer;
47
+ //# sourceMappingURL=CanvasAnnotationRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasAnnotationRenderer.js","sourceRoot":"","sources":["../../../../../../src/testing/graph-tester/screenshot/CanvasAnnotationRenderer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAQH;;;;;;;;;;;;GAYG;AACH,MAAa,wBAAwB;IAGnC,YAAY,MAA4B;QACtC,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,SAAS;YAC3B,gBAAgB,EAAE,CAAC;YACnB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,UAA+B;QAC1C,6BAA6B;QAC7B,6DAA6D;QAC7D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;CACF;AAxBD,4DAwBC"}