donobu 5.30.0 → 5.31.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.
|
@@ -43,6 +43,7 @@ function buildDonobuReport(resultsByTest) {
|
|
|
43
43
|
const results = resultsByTest.get(test) ?? [];
|
|
44
44
|
return {
|
|
45
45
|
annotations: test.annotations,
|
|
46
|
+
tags: test.tags,
|
|
46
47
|
projectName: getProjectName(test),
|
|
47
48
|
// Signal "skipped" tests to the renderers the same way the JSON
|
|
48
49
|
// reporter does.
|
|
@@ -356,6 +356,7 @@ function extractTests(jsonData) {
|
|
|
356
356
|
isSelfHealed,
|
|
357
357
|
objective: objectiveAnnotation?.description ?? null,
|
|
358
358
|
annotations,
|
|
359
|
+
tags: Array.isArray(test.tags) ? test.tags : [],
|
|
359
360
|
results,
|
|
360
361
|
projectName: test.projectName ?? '',
|
|
361
362
|
plan: null,
|
|
@@ -1367,6 +1368,7 @@ function renderHtml(report, triage, outputDir) {
|
|
|
1367
1368
|
<span class="test-name"><span class="test-file">${esc(displayFileName)}</span> (${esc(test.specTitle)})</span>
|
|
1368
1369
|
</div>
|
|
1369
1370
|
${test.plan ? `<span class="inline-reason" style="color:${reasonCfg(test.plan.plan.failureReason).color}" title="${esc(test.plan.plan.failureReason)}">${esc(reasonCfg(test.plan.plan.failureReason).label)}</span>` : ''}
|
|
1371
|
+
${test.tags.map((t) => `<span class="test-tag">${esc(t)}</span>`).join('')}
|
|
1370
1372
|
${totalStepCount > 0 ? `<span class="test-step-count" title="${totalStepCount} steps">${totalStepCount} steps</span>` : ''}
|
|
1371
1373
|
<span class="test-duration">${fmtDuration(totalTestDuration)}</span>
|
|
1372
1374
|
</div>
|
|
@@ -1473,6 +1475,7 @@ body::before{content:'';position:fixed;top:-750px;left:50%;transform:translateX(
|
|
|
1473
1475
|
.copy-flow-id .check-icon{color:#22c55e}
|
|
1474
1476
|
.inline-reason{font-size:11px;font-weight:500;flex-shrink:0;padding:1px 8px;border-radius:4px;background:var(--overlay-light)}
|
|
1475
1477
|
.test-step-count{font-size:11px;color:var(--text-dim);flex-shrink:0;font-family:var(--mono);padding:2px 8px;background:rgba(255,255,255,.04);border-radius:4px}
|
|
1478
|
+
.test-tag{font-size:11px;color:var(--accent);flex-shrink:0;font-family:var(--mono);padding:2px 8px;background:rgba(255,127,58,.08);border:1px solid rgba(255,127,58,.2);border-radius:4px}
|
|
1476
1479
|
.test-duration{font-size:12px;color:var(--text-dim);flex-shrink:0;font-family:var(--mono)}
|
|
1477
1480
|
.flow-id-detail{display:flex;align-items:center;gap:10px;margin-bottom:4px;padding:8px 12px;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius)}
|
|
1478
1481
|
.flow-id-detail .detail-label{margin-bottom:0;font-size:10px;letter-spacing:.8px}
|
|
@@ -105,6 +105,9 @@ function renderMarkdown(report) {
|
|
|
105
105
|
(!result && test.status === undefined)) {
|
|
106
106
|
markdown += `**Status**: ⏭️ Skipped \n`;
|
|
107
107
|
markdown += `**Duration**: N/A \n`;
|
|
108
|
+
if (Array.isArray(test.tags) && test.tags.length > 0) {
|
|
109
|
+
markdown += `**Tags**: ${test.tags.join(' ')} \n`;
|
|
110
|
+
}
|
|
108
111
|
const objectiveAnnotation = test.annotations?.find((a) => a.type === 'objective');
|
|
109
112
|
if (objectiveAnnotation) {
|
|
110
113
|
const objective = (objectiveAnnotation.description || 'No objective provided').replace(/```/g, '\\`\\`\\`');
|
|
@@ -142,6 +145,9 @@ function renderMarkdown(report) {
|
|
|
142
145
|
const duration = formatDuration(result.duration || 0);
|
|
143
146
|
markdown += `**Status**: ${status} \n`;
|
|
144
147
|
markdown += `**Duration**: ${duration} \n`;
|
|
148
|
+
if (Array.isArray(test.tags) && test.tags.length > 0) {
|
|
149
|
+
markdown += `**Tags**: ${test.tags.join(' ')} \n`;
|
|
150
|
+
}
|
|
145
151
|
if (healed) {
|
|
146
152
|
markdown += `> ❤️🩹 This test was automatically healed by re-running with Donobu treatment plan directives.\n\n`;
|
|
147
153
|
}
|
|
@@ -43,6 +43,7 @@ function buildDonobuReport(resultsByTest) {
|
|
|
43
43
|
const results = resultsByTest.get(test) ?? [];
|
|
44
44
|
return {
|
|
45
45
|
annotations: test.annotations,
|
|
46
|
+
tags: test.tags,
|
|
46
47
|
projectName: getProjectName(test),
|
|
47
48
|
// Signal "skipped" tests to the renderers the same way the JSON
|
|
48
49
|
// reporter does.
|
package/dist/reporter/render.js
CHANGED
|
@@ -356,6 +356,7 @@ function extractTests(jsonData) {
|
|
|
356
356
|
isSelfHealed,
|
|
357
357
|
objective: objectiveAnnotation?.description ?? null,
|
|
358
358
|
annotations,
|
|
359
|
+
tags: Array.isArray(test.tags) ? test.tags : [],
|
|
359
360
|
results,
|
|
360
361
|
projectName: test.projectName ?? '',
|
|
361
362
|
plan: null,
|
|
@@ -1367,6 +1368,7 @@ function renderHtml(report, triage, outputDir) {
|
|
|
1367
1368
|
<span class="test-name"><span class="test-file">${esc(displayFileName)}</span> (${esc(test.specTitle)})</span>
|
|
1368
1369
|
</div>
|
|
1369
1370
|
${test.plan ? `<span class="inline-reason" style="color:${reasonCfg(test.plan.plan.failureReason).color}" title="${esc(test.plan.plan.failureReason)}">${esc(reasonCfg(test.plan.plan.failureReason).label)}</span>` : ''}
|
|
1371
|
+
${test.tags.map((t) => `<span class="test-tag">${esc(t)}</span>`).join('')}
|
|
1370
1372
|
${totalStepCount > 0 ? `<span class="test-step-count" title="${totalStepCount} steps">${totalStepCount} steps</span>` : ''}
|
|
1371
1373
|
<span class="test-duration">${fmtDuration(totalTestDuration)}</span>
|
|
1372
1374
|
</div>
|
|
@@ -1473,6 +1475,7 @@ body::before{content:'';position:fixed;top:-750px;left:50%;transform:translateX(
|
|
|
1473
1475
|
.copy-flow-id .check-icon{color:#22c55e}
|
|
1474
1476
|
.inline-reason{font-size:11px;font-weight:500;flex-shrink:0;padding:1px 8px;border-radius:4px;background:var(--overlay-light)}
|
|
1475
1477
|
.test-step-count{font-size:11px;color:var(--text-dim);flex-shrink:0;font-family:var(--mono);padding:2px 8px;background:rgba(255,255,255,.04);border-radius:4px}
|
|
1478
|
+
.test-tag{font-size:11px;color:var(--accent);flex-shrink:0;font-family:var(--mono);padding:2px 8px;background:rgba(255,127,58,.08);border:1px solid rgba(255,127,58,.2);border-radius:4px}
|
|
1476
1479
|
.test-duration{font-size:12px;color:var(--text-dim);flex-shrink:0;font-family:var(--mono)}
|
|
1477
1480
|
.flow-id-detail{display:flex;align-items:center;gap:10px;margin-bottom:4px;padding:8px 12px;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius)}
|
|
1478
1481
|
.flow-id-detail .detail-label{margin-bottom:0;font-size:10px;letter-spacing:.8px}
|
|
@@ -105,6 +105,9 @@ function renderMarkdown(report) {
|
|
|
105
105
|
(!result && test.status === undefined)) {
|
|
106
106
|
markdown += `**Status**: ⏭️ Skipped \n`;
|
|
107
107
|
markdown += `**Duration**: N/A \n`;
|
|
108
|
+
if (Array.isArray(test.tags) && test.tags.length > 0) {
|
|
109
|
+
markdown += `**Tags**: ${test.tags.join(' ')} \n`;
|
|
110
|
+
}
|
|
108
111
|
const objectiveAnnotation = test.annotations?.find((a) => a.type === 'objective');
|
|
109
112
|
if (objectiveAnnotation) {
|
|
110
113
|
const objective = (objectiveAnnotation.description || 'No objective provided').replace(/```/g, '\\`\\`\\`');
|
|
@@ -142,6 +145,9 @@ function renderMarkdown(report) {
|
|
|
142
145
|
const duration = formatDuration(result.duration || 0);
|
|
143
146
|
markdown += `**Status**: ${status} \n`;
|
|
144
147
|
markdown += `**Duration**: ${duration} \n`;
|
|
148
|
+
if (Array.isArray(test.tags) && test.tags.length > 0) {
|
|
149
|
+
markdown += `**Tags**: ${test.tags.join(' ')} \n`;
|
|
150
|
+
}
|
|
145
151
|
if (healed) {
|
|
146
152
|
markdown += `> ❤️🩹 This test was automatically healed by re-running with Donobu treatment plan directives.\n\n`;
|
|
147
153
|
}
|