afterburn-cli 1.0.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 (188) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +281 -0
  3. package/dist/ai/gemini-client.d.ts +21 -0
  4. package/dist/ai/gemini-client.js +105 -0
  5. package/dist/ai/gemini-client.js.map +1 -0
  6. package/dist/ai/index.d.ts +1 -0
  7. package/dist/ai/index.js +3 -0
  8. package/dist/ai/index.js.map +1 -0
  9. package/dist/analysis/diagnosis-schema.d.ts +106 -0
  10. package/dist/analysis/diagnosis-schema.js +54 -0
  11. package/dist/analysis/diagnosis-schema.js.map +1 -0
  12. package/dist/analysis/error-analyzer.d.ts +9 -0
  13. package/dist/analysis/error-analyzer.js +573 -0
  14. package/dist/analysis/error-analyzer.js.map +1 -0
  15. package/dist/analysis/index.d.ts +4 -0
  16. package/dist/analysis/index.js +6 -0
  17. package/dist/analysis/index.js.map +1 -0
  18. package/dist/analysis/source-mapper.d.ts +19 -0
  19. package/dist/analysis/source-mapper.js +329 -0
  20. package/dist/analysis/source-mapper.js.map +1 -0
  21. package/dist/analysis/ui-auditor.d.ts +9 -0
  22. package/dist/analysis/ui-auditor.js +104 -0
  23. package/dist/analysis/ui-auditor.js.map +1 -0
  24. package/dist/artifacts/artifact-storage.d.ts +44 -0
  25. package/dist/artifacts/artifact-storage.js +99 -0
  26. package/dist/artifacts/artifact-storage.js.map +1 -0
  27. package/dist/artifacts/index.d.ts +1 -0
  28. package/dist/artifacts/index.js +3 -0
  29. package/dist/artifacts/index.js.map +1 -0
  30. package/dist/browser/browser-manager.d.ts +45 -0
  31. package/dist/browser/browser-manager.js +88 -0
  32. package/dist/browser/browser-manager.js.map +1 -0
  33. package/dist/browser/challenge-detector.d.ts +10 -0
  34. package/dist/browser/challenge-detector.js +58 -0
  35. package/dist/browser/challenge-detector.js.map +1 -0
  36. package/dist/browser/cookie-dismisser.d.ts +18 -0
  37. package/dist/browser/cookie-dismisser.js +76 -0
  38. package/dist/browser/cookie-dismisser.js.map +1 -0
  39. package/dist/browser/index.d.ts +4 -0
  40. package/dist/browser/index.js +6 -0
  41. package/dist/browser/index.js.map +1 -0
  42. package/dist/browser/stealth-browser.d.ts +13 -0
  43. package/dist/browser/stealth-browser.js +59 -0
  44. package/dist/browser/stealth-browser.js.map +1 -0
  45. package/dist/cli/commander-cli.d.ts +2 -0
  46. package/dist/cli/commander-cli.js +150 -0
  47. package/dist/cli/commander-cli.js.map +1 -0
  48. package/dist/cli/doctor.d.ts +34 -0
  49. package/dist/cli/doctor.js +124 -0
  50. package/dist/cli/doctor.js.map +1 -0
  51. package/dist/cli/first-run.d.ts +6 -0
  52. package/dist/cli/first-run.js +58 -0
  53. package/dist/cli/first-run.js.map +1 -0
  54. package/dist/cli/index.d.ts +3 -0
  55. package/dist/cli/index.js +5 -0
  56. package/dist/cli/index.js.map +1 -0
  57. package/dist/cli/progress.d.ts +11 -0
  58. package/dist/cli/progress.js +30 -0
  59. package/dist/cli/progress.js.map +1 -0
  60. package/dist/core/engine.d.ts +33 -0
  61. package/dist/core/engine.js +269 -0
  62. package/dist/core/engine.js.map +1 -0
  63. package/dist/core/index.d.ts +3 -0
  64. package/dist/core/index.js +4 -0
  65. package/dist/core/index.js.map +1 -0
  66. package/dist/core/validation.d.ts +52 -0
  67. package/dist/core/validation.js +228 -0
  68. package/dist/core/validation.js.map +1 -0
  69. package/dist/discovery/crawler.d.ts +58 -0
  70. package/dist/discovery/crawler.js +240 -0
  71. package/dist/discovery/crawler.js.map +1 -0
  72. package/dist/discovery/discovery-pipeline.d.ts +22 -0
  73. package/dist/discovery/discovery-pipeline.js +256 -0
  74. package/dist/discovery/discovery-pipeline.js.map +1 -0
  75. package/dist/discovery/element-mapper.d.ts +21 -0
  76. package/dist/discovery/element-mapper.js +422 -0
  77. package/dist/discovery/element-mapper.js.map +1 -0
  78. package/dist/discovery/index.d.ts +8 -0
  79. package/dist/discovery/index.js +8 -0
  80. package/dist/discovery/index.js.map +1 -0
  81. package/dist/discovery/link-validator.d.ts +15 -0
  82. package/dist/discovery/link-validator.js +137 -0
  83. package/dist/discovery/link-validator.js.map +1 -0
  84. package/dist/discovery/sitemap-builder.d.ts +19 -0
  85. package/dist/discovery/sitemap-builder.js +166 -0
  86. package/dist/discovery/sitemap-builder.js.map +1 -0
  87. package/dist/discovery/spa-detector.d.ts +12 -0
  88. package/dist/discovery/spa-detector.js +271 -0
  89. package/dist/discovery/spa-detector.js.map +1 -0
  90. package/dist/execution/error-detector.d.ts +10 -0
  91. package/dist/execution/error-detector.js +87 -0
  92. package/dist/execution/error-detector.js.map +1 -0
  93. package/dist/execution/evidence-capture.d.ts +8 -0
  94. package/dist/execution/evidence-capture.js +37 -0
  95. package/dist/execution/evidence-capture.js.map +1 -0
  96. package/dist/execution/index.d.ts +5 -0
  97. package/dist/execution/index.js +7 -0
  98. package/dist/execution/index.js.map +1 -0
  99. package/dist/execution/step-handlers.d.ts +48 -0
  100. package/dist/execution/step-handlers.js +349 -0
  101. package/dist/execution/step-handlers.js.map +1 -0
  102. package/dist/execution/test-data.d.ts +50 -0
  103. package/dist/execution/test-data.js +160 -0
  104. package/dist/execution/test-data.js.map +1 -0
  105. package/dist/execution/workflow-executor.d.ts +56 -0
  106. package/dist/execution/workflow-executor.js +331 -0
  107. package/dist/execution/workflow-executor.js.map +1 -0
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.js +5 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/mcp/entry.d.ts +2 -0
  112. package/dist/mcp/entry.js +5 -0
  113. package/dist/mcp/entry.js.map +1 -0
  114. package/dist/mcp/index.d.ts +2 -0
  115. package/dist/mcp/index.js +4 -0
  116. package/dist/mcp/index.js.map +1 -0
  117. package/dist/mcp/server.d.ts +3 -0
  118. package/dist/mcp/server.js +19 -0
  119. package/dist/mcp/server.js.map +1 -0
  120. package/dist/mcp/tools.d.ts +2 -0
  121. package/dist/mcp/tools.js +162 -0
  122. package/dist/mcp/tools.js.map +1 -0
  123. package/dist/planning/heuristic-planner.d.ts +7 -0
  124. package/dist/planning/heuristic-planner.js +238 -0
  125. package/dist/planning/heuristic-planner.js.map +1 -0
  126. package/dist/planning/index.d.ts +3 -0
  127. package/dist/planning/index.js +5 -0
  128. package/dist/planning/index.js.map +1 -0
  129. package/dist/planning/plan-schema.d.ts +74 -0
  130. package/dist/planning/plan-schema.js +39 -0
  131. package/dist/planning/plan-schema.js.map +1 -0
  132. package/dist/planning/workflow-planner.d.ts +39 -0
  133. package/dist/planning/workflow-planner.js +211 -0
  134. package/dist/planning/workflow-planner.js.map +1 -0
  135. package/dist/reports/health-scorer.d.ts +14 -0
  136. package/dist/reports/health-scorer.js +88 -0
  137. package/dist/reports/health-scorer.js.map +1 -0
  138. package/dist/reports/html-generator.d.ts +10 -0
  139. package/dist/reports/html-generator.js +155 -0
  140. package/dist/reports/html-generator.js.map +1 -0
  141. package/dist/reports/index.d.ts +4 -0
  142. package/dist/reports/index.js +6 -0
  143. package/dist/reports/index.js.map +1 -0
  144. package/dist/reports/markdown-generator.d.ts +10 -0
  145. package/dist/reports/markdown-generator.js +334 -0
  146. package/dist/reports/markdown-generator.js.map +1 -0
  147. package/dist/reports/priority-ranker.d.ts +22 -0
  148. package/dist/reports/priority-ranker.js +608 -0
  149. package/dist/reports/priority-ranker.js.map +1 -0
  150. package/dist/screenshots/dual-format.d.ts +14 -0
  151. package/dist/screenshots/dual-format.js +59 -0
  152. package/dist/screenshots/dual-format.js.map +1 -0
  153. package/dist/screenshots/index.d.ts +2 -0
  154. package/dist/screenshots/index.js +4 -0
  155. package/dist/screenshots/index.js.map +1 -0
  156. package/dist/screenshots/screenshot-manager.d.ts +33 -0
  157. package/dist/screenshots/screenshot-manager.js +86 -0
  158. package/dist/screenshots/screenshot-manager.js.map +1 -0
  159. package/dist/testing/accessibility-auditor.d.ts +23 -0
  160. package/dist/testing/accessibility-auditor.js +44 -0
  161. package/dist/testing/accessibility-auditor.js.map +1 -0
  162. package/dist/testing/index.d.ts +4 -0
  163. package/dist/testing/index.js +5 -0
  164. package/dist/testing/index.js.map +1 -0
  165. package/dist/testing/meta-auditor.d.ts +16 -0
  166. package/dist/testing/meta-auditor.js +268 -0
  167. package/dist/testing/meta-auditor.js.map +1 -0
  168. package/dist/testing/performance-monitor.d.ts +15 -0
  169. package/dist/testing/performance-monitor.js +64 -0
  170. package/dist/testing/performance-monitor.js.map +1 -0
  171. package/dist/types/artifacts.d.ts +58 -0
  172. package/dist/types/artifacts.js +3 -0
  173. package/dist/types/artifacts.js.map +1 -0
  174. package/dist/types/discovery.d.ts +124 -0
  175. package/dist/types/discovery.js +3 -0
  176. package/dist/types/discovery.js.map +1 -0
  177. package/dist/types/execution.d.ts +154 -0
  178. package/dist/types/execution.js +3 -0
  179. package/dist/types/execution.js.map +1 -0
  180. package/dist/types/index.d.ts +2 -0
  181. package/dist/types/index.js +4 -0
  182. package/dist/types/index.js.map +1 -0
  183. package/dist/utils/sanitizer.d.ts +25 -0
  184. package/dist/utils/sanitizer.js +98 -0
  185. package/dist/utils/sanitizer.js.map +1 -0
  186. package/package.json +86 -0
  187. package/templates/report.hbs +202 -0
  188. package/templates/styles/report.css +607 -0
@@ -0,0 +1,202 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Afterburn Report - {{targetUrl}}</title>
7
+ <style>{{{inlineCSS}}}</style>
8
+ </head>
9
+ <body>
10
+ <div class="container">
11
+ <!-- Header -->
12
+ <header>
13
+ <h1>Afterburn</h1>
14
+ <div class="subtitle">Test Report</div>
15
+ <div class="url">{{targetUrl}}</div>
16
+ <div class="date">Scanned on {{scanDate}}</div>
17
+ </header>
18
+
19
+ <!-- Health Score Section -->
20
+ <section class="health-score health-{{healthScore.label}}">
21
+ <div class="score-display">
22
+ <div class="score-number">{{healthScore.overall}}<span style="font-size: 2rem; opacity: 0.7;">/100</span></div>
23
+ <div class="score-label">{{healthScore.label}}</div>
24
+ </div>
25
+ <div class="checks-summary">
26
+ {{healthScore.checksPassed}} of {{healthScore.checksTotal}} checks passed
27
+ </div>
28
+ <div class="score-breakdown">
29
+ <div class="breakdown-item">
30
+ <h3>Workflows</h3>
31
+ <div class="score">{{healthScore.breakdown.workflows}}<span style="font-size: 1rem; opacity: 0.7;">/100</span></div>
32
+ </div>
33
+ <div class="breakdown-item">
34
+ <h3>Errors</h3>
35
+ <div class="score">{{healthScore.breakdown.errors}}<span style="font-size: 1rem; opacity: 0.7;">/100</span></div>
36
+ </div>
37
+ <div class="breakdown-item">
38
+ <h3>Accessibility</h3>
39
+ <div class="score">{{healthScore.breakdown.accessibility}}<span style="font-size: 1rem; opacity: 0.7;">/100</span></div>
40
+ </div>
41
+ <div class="breakdown-item">
42
+ <h3>Performance</h3>
43
+ <div class="score">{{healthScore.breakdown.performance}}<span style="font-size: 1rem; opacity: 0.7;">/100</span></div>
44
+ </div>
45
+ </div>
46
+ </section>
47
+
48
+ <!-- What to Fix First (To-Do List) -->
49
+ <section>
50
+ <h2>What to Fix First</h2>
51
+ {{#if prioritizedIssues.length}}
52
+ <div class="todo-list">
53
+ {{#each prioritizedIssues}}
54
+ <div class="todo-item priority-{{priority}}">
55
+ <div class="todo-header">
56
+ <span class="priority-badge {{priority}}">{{priority}}</span>
57
+ <span class="category-badge">{{category}}</span>
58
+ </div>
59
+ <div class="todo-summary">
60
+ {{summary}}
61
+ {{#if occurrenceCount}}
62
+ <span class="occurrence-badge">Found {{occurrenceCount}} times</span>
63
+ {{/if}}
64
+ </div>
65
+ <div class="todo-impact"><strong>Why it matters:</strong> {{impact}}</div>
66
+ <div class="todo-fix"><strong>How to fix:</strong> {{fixSuggestion}}</div>
67
+ <div class="todo-location">Location: {{location}}</div>
68
+ {{#if screenshotDataUri}}
69
+ <div class="todo-screenshot">
70
+ <img src="{{screenshotDataUri}}" alt="Screenshot showing the issue" />
71
+ </div>
72
+ {{/if}}
73
+ </div>
74
+ {{/each}}
75
+ </div>
76
+ {{else}}
77
+ <div class="empty-state">
78
+ <div class="empty-state-icon">✓</div>
79
+ <p>No issues found! Your site is looking great.</p>
80
+ </div>
81
+ {{/if}}
82
+ </section>
83
+
84
+ <!-- Workflow Results -->
85
+ <section>
86
+ <h2>Workflow Results</h2>
87
+ {{#if workflowResults.length}}
88
+ <div class="workflow-list">
89
+ {{#each workflowResults}}
90
+ <div class="workflow-item">
91
+ <div class="workflow-header">
92
+ <div class="workflow-name">{{workflowName}}</div>
93
+ <span class="status-badge {{overallStatus}}">{{overallStatus}}</span>
94
+ </div>
95
+ <div class="workflow-description">{{description}}</div>
96
+ <div class="workflow-meta">
97
+ <span>{{totalSteps}} steps</span>
98
+ <span>[PASS] {{passedSteps}} passed</span>
99
+ {{#if failedSteps}}
100
+ <span>[FAIL] {{failedSteps}} failed</span>
101
+ {{/if}}
102
+ {{#if skippedSteps}}
103
+ <span>[SKIP] {{skippedSteps}} skipped</span>
104
+ {{/if}}
105
+ <span>Duration: {{duration}}ms</span>
106
+ </div>
107
+ <details class="workflow-steps">
108
+ <summary>View step details</summary>
109
+ <div class="step-list">
110
+ {{#each stepResults}}
111
+ <div class="step-item">
112
+ <span class="step-status {{status}}">{{status}}</span>
113
+ <span>{{action}}{{#if selector}} → {{selector}}{{/if}}</span>
114
+ </div>
115
+ {{/each}}
116
+ </div>
117
+ </details>
118
+ </div>
119
+ {{/each}}
120
+ </div>
121
+ {{else}}
122
+ <div class="empty-state">
123
+ <div class="empty-state-icon">-</div>
124
+ <p>No workflows were tested.</p>
125
+ </div>
126
+ {{/if}}
127
+ </section>
128
+
129
+ <!-- Accessibility Summary -->
130
+ <section>
131
+ <h2>Accessibility Summary</h2>
132
+ {{#if pageAudits.length}}
133
+ <div class="summary-grid">
134
+ {{#each pageAudits}}
135
+ {{#if accessibility}}
136
+ <div class="summary-card">
137
+ <h3>{{url}}</h3>
138
+ <div class="value">{{accessibility.violationCount}}</div>
139
+ <div class="description">
140
+ {{#if accessibility.violationCount}}
141
+ {{accessibility.violationCount}} accessibility {{#if (eq accessibility.violationCount 1)}}issue{{else}}issues{{/if}} found
142
+ {{else}}
143
+ No accessibility issues found
144
+ {{/if}}
145
+ </div>
146
+ </div>
147
+ {{/if}}
148
+ {{/each}}
149
+ </div>
150
+ {{else}}
151
+ <div class="empty-state">
152
+ <div class="empty-state-icon">A11y</div>
153
+ <p>No accessibility audits were performed.</p>
154
+ </div>
155
+ {{/if}}
156
+ </section>
157
+
158
+ <!-- Performance Summary -->
159
+ <section>
160
+ <h2>Performance Summary</h2>
161
+ {{#if pageAudits.length}}
162
+ <div class="summary-grid">
163
+ {{#each pageAudits}}
164
+ {{#if performance}}
165
+ <div class="summary-card">
166
+ <h3>{{url}}</h3>
167
+ <div class="value">{{performance.lcp}}ms</div>
168
+ <div class="description">
169
+ Largest Contentful Paint (LCP)
170
+ {{#if (lt performance.lcp 2500)}}
171
+ <br>[GOOD] Good performance
172
+ {{else if (lt performance.lcp 4000)}}
173
+ <br>[WARN] Needs improvement
174
+ {{else}}
175
+ <br>[POOR] Poor performance
176
+ {{/if}}
177
+ </div>
178
+ </div>
179
+ {{/if}}
180
+ {{/each}}
181
+ </div>
182
+ {{else}}
183
+ <div class="empty-state">
184
+ <div class="empty-state-icon">-</div>
185
+ <p>No performance metrics were collected.</p>
186
+ </div>
187
+ {{/if}}
188
+ </section>
189
+
190
+ <!-- Footer -->
191
+ <footer>
192
+ <div class="footer-branding">Generated by <strong>Afterburn</strong></div>
193
+ <div class="footer-timestamp">{{scanDate}}</div>
194
+ {{#if aiPowered}}
195
+ <div class="ai-badge">[AI] AI-Powered Analysis</div>
196
+ {{else}}
197
+ <div class="ai-tip">Tip: Set <code>GEMINI_API_KEY</code> for smarter test planning and AI-powered root cause analysis.</div>
198
+ {{/if}}
199
+ </footer>
200
+ </div>
201
+ </body>
202
+ </html>