@allurereport/web-classic 3.8.2 → 3.9.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.
- package/allurerc-dev.mjs +10 -0
- package/dist/multi/app-ca55d3cd360ac8eef796.js +2 -0
- package/dist/multi/manifest.json +23 -23
- package/dist/multi/styles-f8dc8e0442ce4abf426b.css +284 -0
- package/dist/single/app-3d4358effbb13febd942.js +2 -0
- package/dist/single/manifest.json +1 -1
- package/package.json +10 -6
- package/src/assets/scss/code.scss +6 -6
- package/src/assets/scss/index.scss +8 -8
- package/src/components/Behaviors/styles.scss +38 -33
- package/src/components/Categories/styles.scss +38 -33
- package/src/components/HeaderActions/styles.scss +1 -1
- package/src/components/Modal/index.tsx +3 -1
- package/src/components/Modal/styles.scss +2 -2
- package/src/components/Packages/styles.scss +38 -33
- package/src/components/ReportBody/styles.scss +1 -1
- package/src/components/TestResult/TestResultError/styles.scss +4 -4
- package/src/components/TestResult/TestResultLinks/styles.scss +1 -1
- package/src/components/TestResult/TestResultNavigation/index.tsx +1 -1
- package/src/components/TestResult/TestResultPrevStatuses/styles.scss +5 -5
- package/src/components/TestResult/TestResultSeverity/styles.scss +4 -4
- package/src/components/TestResult/TestResultStatus/styles.scss +2 -35
- package/src/components/TestResult/TestResultSteps/attachment.tsx +24 -2
- package/src/components/TestResult/TestResultSteps/styles.scss +22 -14
- package/src/components/TestResult/TestResultSteps/testResultAttachmentInfo.tsx +1 -0
- package/src/components/TestResult/TestResultSteps/testResultStep.tsx +2 -2
- package/src/components/TestResult/TestResultTabs/styles.scss +1 -1
- package/src/components/Tree/TreeHeader.tsx +1 -1
- package/src/components/Tree/styles.scss +38 -33
- package/src/index.html +3 -3
- package/src/utils/attachments.ts +6 -0
- package/test/dummy.test.ts +9 -1
- package/test/utils/treeFilters.test.ts +9 -1
- package/types.d.ts +1 -0
- package/dist/multi/app-f80e40e5d4a6b2591c77.js +0 -2
- package/dist/multi/styles-782990bab862d8dfb55a.css +0 -284
- package/dist/single/app-d95b6198c4d471014aa1.js +0 -2
- package/src/assets/scss/day.scss +0 -51
- package/src/assets/scss/fonts.scss +0 -3
- package/src/assets/scss/night.scss +0 -61
- package/src/assets/scss/palette.scss +0 -393
- package/src/assets/scss/theme.scss +0 -326
- package/src/assets/scss/typography.scss +0 -218
- package/src/assets/scss/vars.scss +0 -8
- /package/dist/multi/{10.app-f80e40e5d4a6b2591c77.js → 10.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{222.app-f80e40e5d4a6b2591c77.js → 222.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{26.app-f80e40e5d4a6b2591c77.js → 26.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{302.app-f80e40e5d4a6b2591c77.js → 302.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{304.app-f80e40e5d4a6b2591c77.js → 304.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{333.app-f80e40e5d4a6b2591c77.js → 333.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{369.app-f80e40e5d4a6b2591c77.js → 369.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{389.app-f80e40e5d4a6b2591c77.js → 389.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{498.app-f80e40e5d4a6b2591c77.js → 498.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{60.app-f80e40e5d4a6b2591c77.js → 60.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{643.app-f80e40e5d4a6b2591c77.js → 643.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{671.app-f80e40e5d4a6b2591c77.js → 671.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{725.app-f80e40e5d4a6b2591c77.js → 725.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{770.app-f80e40e5d4a6b2591c77.js → 770.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{848.app-f80e40e5d4a6b2591c77.js → 848.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{853.app-f80e40e5d4a6b2591c77.js → 853.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{872.app-f80e40e5d4a6b2591c77.js → 872.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{895.app-f80e40e5d4a6b2591c77.js → 895.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{920.app-f80e40e5d4a6b2591c77.js → 920.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{979.app-f80e40e5d4a6b2591c77.js → 979.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{991.app-f80e40e5d4a6b2591c77.js → 991.app-ca55d3cd360ac8eef796.js} +0 -0
- /package/dist/multi/{app-f80e40e5d4a6b2591c77.js.LICENSE.txt → app-ca55d3cd360ac8eef796.js.LICENSE.txt} +0 -0
- /package/dist/single/{app-d95b6198c4d471014aa1.js.LICENSE.txt → app-3d4358effbb13febd942.js.LICENSE.txt} +0 -0
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
/* This is a hack because button do not have this state */
|
|
29
29
|
.filtersBtnWithFilters > button::after {
|
|
30
30
|
content: "";
|
|
31
|
-
background-color: var(--
|
|
31
|
+
background-color: var(--color-intent-primary-bg);
|
|
32
32
|
width: 6px;
|
|
33
33
|
height: 6px;
|
|
34
34
|
border-radius: 100px;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.test-result-error {
|
|
2
2
|
padding: 8px 8px 12px 16px;
|
|
3
|
-
background-color: var(--bg-
|
|
3
|
+
background-color: var(--color-status-failed-bg-subtle);
|
|
4
4
|
border-radius: 8px;
|
|
5
5
|
position: relative;
|
|
6
6
|
overflow: hidden;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
position: absolute;
|
|
15
15
|
left: 0;
|
|
16
16
|
top: 0;
|
|
17
|
-
background: var(--
|
|
17
|
+
background: var(--color-status-failed-border);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
.test-result-error-text {
|
|
28
28
|
margin-bottom: 8px;
|
|
29
29
|
padding-left: 8px;
|
|
30
|
-
color: var(--
|
|
30
|
+
color: var(--color-status-failed-text);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.test-result-error-trace {
|
|
@@ -50,6 +50,6 @@
|
|
|
50
50
|
transition: background-color 300ms;
|
|
51
51
|
|
|
52
52
|
&:hover {
|
|
53
|
-
background: var(--bg-
|
|
53
|
+
background: var(--color-status-failed-bg-subtle);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -44,7 +44,7 @@ export const TestResultNavigation: FunctionalComponent<TestResultNavigationProps
|
|
|
44
44
|
return (
|
|
45
45
|
<div className={styles["test-result-nav"]}>
|
|
46
46
|
{fullName && <FullName />}
|
|
47
|
-
{data && !testResult?.
|
|
47
|
+
{data && !testResult?.isRetry && (
|
|
48
48
|
<div className={styles["test-result-navigator"]}>
|
|
49
49
|
<TooltipWrapper tooltipText={tooltip("prevTR")} isTriggerActive={currentIndex > 1}>
|
|
50
50
|
<IconButton
|
|
@@ -26,23 +26,23 @@
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.status-passed {
|
|
29
|
-
color: var(--
|
|
29
|
+
color: var(--color-status-passed-chart);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
.status-failed {
|
|
33
|
-
color: var(--
|
|
33
|
+
color: var(--color-status-failed-chart);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
.status-broken {
|
|
37
|
-
color: var(--
|
|
37
|
+
color: var(--color-status-broken-chart);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.status-skipped {
|
|
41
|
-
color: var(--
|
|
41
|
+
color: var(--color-status-skipped-chart);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
.status-unknown {
|
|
45
|
-
color: var(--
|
|
45
|
+
color: var(--color-status-unknown-chart);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
.test-result-prev-status-tooltip {
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.severity-blocker {
|
|
12
|
-
color: var(--
|
|
12
|
+
color: var(--color-intent-danger-text);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.severity-critical {
|
|
16
|
-
color: var(--
|
|
16
|
+
color: var(--color-intent-warning-text);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
.severity-normal {
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.severity-minor {
|
|
24
|
-
color: var(--
|
|
24
|
+
color: var(--color-intent-primary-text);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
.severity-trivial {
|
|
28
|
-
color: var(--
|
|
28
|
+
color: var(--color-intent-success-text);
|
|
29
29
|
}
|
|
@@ -1,36 +1,3 @@
|
|
|
1
|
-
.
|
|
2
|
-
padding: 2px;
|
|
3
|
-
display: flex;
|
|
4
|
-
border-radius: 100px;
|
|
5
|
-
color: var(--constant-on-text-primary);
|
|
6
|
-
height: max-content;
|
|
7
|
-
}
|
|
1
|
+
@import "~@allurereport/web-components/mixins.scss";
|
|
8
2
|
|
|
9
|
-
|
|
10
|
-
padding: 0 4px;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.test-result-status-icon {
|
|
14
|
-
color: var(--constant-on-text-primary);
|
|
15
|
-
padding: 0;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.status-passed {
|
|
19
|
-
background-color: var(--bg-support-castor);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.status-failed {
|
|
23
|
-
background-color: var(--bg-support-capella);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.status-broken {
|
|
27
|
-
background-color: var(--bg-support-atlas);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.status-skipped {
|
|
31
|
-
background-color: var(--bg-support-rau);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.status-unknown {
|
|
35
|
-
background-color: var(--bg-support-skat);
|
|
36
|
-
}
|
|
3
|
+
@include status-label-shape("test-result-status", "test-result-status-icon", "test-result-status-text");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AttachmentTestStepResult } from "@allurereport/core-api";
|
|
2
|
-
import { Spinner } from "@allurereport/web-components";
|
|
2
|
+
import { MarkdownPreview, Spinner } from "@allurereport/web-components";
|
|
3
3
|
import type { FunctionalComponent } from "preact";
|
|
4
4
|
import { useEffect, useState } from "preact/hooks";
|
|
5
5
|
|
|
@@ -22,13 +22,17 @@ const componentsByAttachmentType: Record<string, any> = {
|
|
|
22
22
|
css: AttachmentCode,
|
|
23
23
|
table: AttachmentCode,
|
|
24
24
|
html: AttachmentCode,
|
|
25
|
+
markdown: AttachmentCode,
|
|
25
26
|
text: AttachmentCode,
|
|
26
27
|
video: AttachmentVideo,
|
|
27
28
|
};
|
|
28
29
|
const previewComponentsByAttachmentType: Record<string, any> = {
|
|
29
30
|
html: HtmlAttachmentPreview,
|
|
31
|
+
markdown: MarkdownPreview,
|
|
30
32
|
};
|
|
31
33
|
|
|
34
|
+
const DUAL_VIEW_ATTACHMENT_TYPES = new Set(["html", "markdown"]);
|
|
35
|
+
|
|
32
36
|
export interface AttachmentTestStepResultProps {
|
|
33
37
|
item: AttachmentTestStepResult;
|
|
34
38
|
previewable?: boolean;
|
|
@@ -61,8 +65,26 @@ export const Attachment: FunctionalComponent<AttachmentTestStepResultProps> = ({
|
|
|
61
65
|
);
|
|
62
66
|
}
|
|
63
67
|
|
|
68
|
+
const defaultRenderedPreview = attachmentComponent.type === "markdown" || attachmentComponent.type === "html";
|
|
69
|
+
const showPreview =
|
|
70
|
+
!!CurrentPreviewComponent &&
|
|
71
|
+
(defaultRenderedPreview ? !previewable || modalData.value.preview : !!(previewable && modalData.value.preview));
|
|
72
|
+
|
|
73
|
+
if (DUAL_VIEW_ATTACHMENT_TYPES.has(attachmentComponent.type) && CurrentPreviewComponent && CurrentComponent) {
|
|
74
|
+
return (
|
|
75
|
+
<div className={styles.attachmentViewStack}>
|
|
76
|
+
<div className={styles.attachmentViewPane} hidden={showPreview}>
|
|
77
|
+
<CurrentComponent attachment={attachment} item={item} />
|
|
78
|
+
</div>
|
|
79
|
+
<div className={styles.attachmentViewPane} hidden={!showPreview}>
|
|
80
|
+
<CurrentPreviewComponent attachment={attachment} item={item} />
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
64
86
|
// temp solution before modal component refactoring
|
|
65
|
-
if (
|
|
87
|
+
if (showPreview) {
|
|
66
88
|
return <CurrentPreviewComponent attachment={attachment} item={item} />;
|
|
67
89
|
}
|
|
68
90
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
padding-right: 24px;
|
|
3
3
|
|
|
4
4
|
&:not(:first-child) {
|
|
5
|
-
border-top: 1px solid var(--
|
|
5
|
+
border-top: 1px solid var(--color-border-subtle);
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -12,19 +12,19 @@
|
|
|
12
12
|
|
|
13
13
|
.test-result-step {
|
|
14
14
|
&:not(:first-child) {
|
|
15
|
-
border-top: 1px solid var(--
|
|
15
|
+
border-top: 1px solid var(--color-border-subtle);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
.test-result-step-content {
|
|
20
20
|
padding-left: 24px;
|
|
21
21
|
margin-bottom: 12px;
|
|
22
|
-
border-top: 1px solid var(--
|
|
22
|
+
border-top: 1px solid var(--color-border-subtle);
|
|
23
23
|
min-width: 0;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
.test-result-attachment-content {
|
|
27
|
-
border-top: 1px solid var(--
|
|
27
|
+
border-top: 1px solid var(--color-border-subtle);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
.test-result-attachment-content-wrapper {
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
min-height: 32px;
|
|
47
47
|
|
|
48
48
|
&:hover {
|
|
49
|
-
background: var(--
|
|
49
|
+
background: var(--color-control-bg-ghost-hover);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
.test-result-step-number {
|
|
66
|
-
color: var(--
|
|
66
|
+
color: var(--color-text-muted);
|
|
67
67
|
min-width: 16px;
|
|
68
68
|
text-align: center;
|
|
69
69
|
box-sizing: content-box;
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
.item-time {
|
|
73
73
|
flex: none;
|
|
74
74
|
margin-left: auto;
|
|
75
|
-
color: var(--
|
|
75
|
+
color: var(--color-text-muted);
|
|
76
76
|
line-height: 20px;
|
|
77
77
|
min-width: 56px;
|
|
78
78
|
text-align: right;
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
margin-left: auto;
|
|
83
83
|
display: flex;
|
|
84
84
|
gap: 8px;
|
|
85
|
-
color: var(--
|
|
85
|
+
color: var(--color-text-secondary);
|
|
86
86
|
align-items: center;
|
|
87
87
|
flex: 0 0 auto;
|
|
88
88
|
}
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
display: flex;
|
|
92
92
|
align-items: center;
|
|
93
93
|
gap: 4px;
|
|
94
|
-
color: var(--
|
|
94
|
+
color: var(--color-icon-secondary);
|
|
95
95
|
min-width: 52px;
|
|
96
96
|
justify-content: flex-end;
|
|
97
97
|
}
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
.item-info-step-icon {
|
|
106
|
-
color: var(--
|
|
106
|
+
color: var(--color-icon-secondary);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
.test-result-step-chevron {
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
padding: 4px 8px 4px 6px;
|
|
127
127
|
|
|
128
128
|
&:hover {
|
|
129
|
-
background: var(--
|
|
129
|
+
background: var(--color-control-bg-ghost-hover);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
.test-result-attachment-icon {
|
|
143
|
-
color: var(--
|
|
143
|
+
color: var(--color-icon-secondary);
|
|
144
144
|
padding: 2px 4px;
|
|
145
145
|
height: max-content;
|
|
146
146
|
}
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
.item-button {
|
|
192
|
-
color: var(--
|
|
192
|
+
color: var(--color-control-bg-ghost);
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
.wrong-attachment-sign {
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
.test-result-attachment-missed {
|
|
202
|
-
color: var(--
|
|
202
|
+
color: var(--color-text-secondary);
|
|
203
203
|
line-height: 20px;
|
|
204
204
|
margin-right: auto;
|
|
205
205
|
padding-top: 2px;
|
|
@@ -217,6 +217,14 @@
|
|
|
217
217
|
width: 24px;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
+
.attachmentViewStack {
|
|
221
|
+
width: 100%;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.attachmentViewPane[hidden] {
|
|
225
|
+
display: none !important;
|
|
226
|
+
}
|
|
227
|
+
|
|
220
228
|
.html-attachment-preview {
|
|
221
229
|
padding: 0 16px;
|
|
222
230
|
}
|
|
@@ -35,6 +35,7 @@ export const TestResultAttachmentInfo: FunctionalComponent<TestResultAttachmentI
|
|
|
35
35
|
openModal({
|
|
36
36
|
data: item,
|
|
37
37
|
component: <Attachment item={item} previewable={true} />,
|
|
38
|
+
preview: contentType === "text/markdown" || contentType === "text/html",
|
|
38
39
|
});
|
|
39
40
|
};
|
|
40
41
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DefaultTestStepResult } from "@allurereport/core-api";
|
|
2
|
-
import { Code,
|
|
2
|
+
import { Code, LinkifiedText, allureIcons } from "@allurereport/web-components";
|
|
3
3
|
import type { FunctionComponent } from "preact";
|
|
4
4
|
import { useState } from "preact/hooks";
|
|
5
5
|
|
|
@@ -71,7 +71,7 @@ export const TestResultStep: FunctionComponent<{
|
|
|
71
71
|
<Code size={"s"} className={styles["test-result-step-number"]}>
|
|
72
72
|
{stepIndex}
|
|
73
73
|
</Code>
|
|
74
|
-
<
|
|
74
|
+
<LinkifiedText className={styles["test-result-header-text"]} text={item.name} />
|
|
75
75
|
<TestResultStepInfo item={item} />
|
|
76
76
|
</div>
|
|
77
77
|
{hasContent && isOpened && <TestResultStepsContent item={item} />}
|
|
@@ -70,7 +70,7 @@ const TreeHeader: FunctionComponent<TreeHeaderProps> = ({
|
|
|
70
70
|
{categoryTitle}
|
|
71
71
|
</Text>
|
|
72
72
|
{treeHeaderBar && (
|
|
73
|
-
<div className={styles["tree-header-bar"]} style={{
|
|
73
|
+
<div className={styles["tree-header-bar"]} style={{ minWidth: `${width}px` }}>
|
|
74
74
|
{treeHeaderBar}
|
|
75
75
|
</div>
|
|
76
76
|
)}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
position: relative;
|
|
3
3
|
|
|
4
4
|
&:not(:first-child) {
|
|
5
|
-
border-top: 1px solid var(--
|
|
5
|
+
border-top: 1px solid var(--color-border-subtle);
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
padding: 4px 8px 4px 6px;
|
|
20
20
|
|
|
21
21
|
&:hover {
|
|
22
|
-
background: var(--
|
|
22
|
+
background: var(--color-control-bg-ghost-hover);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -53,15 +53,15 @@
|
|
|
53
53
|
position: relative;
|
|
54
54
|
|
|
55
55
|
&:hover {
|
|
56
|
-
background: var(--
|
|
56
|
+
background: var(--color-control-bg-ghost-hover);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
&:not(:first-child) {
|
|
60
|
-
border-top: 1px solid var(--
|
|
60
|
+
border-top: 1px solid var(--color-border-subtle);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
.tree-item-marked {
|
|
64
|
-
background: var(--bg-
|
|
64
|
+
background: var(--color-bg-secondary);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
.item-title {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
.item-time {
|
|
72
72
|
flex: none;
|
|
73
73
|
margin-left: auto;
|
|
74
|
-
color: var(--
|
|
74
|
+
color: var(--color-text-muted);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.test-count {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
display: block;
|
|
84
84
|
padding-left: 24px;
|
|
85
85
|
margin-bottom: 12px;
|
|
86
|
-
border-top: 1px solid var(--
|
|
86
|
+
border-top: 1px solid var(--color-border-subtle);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
.tree-item-icon {
|
|
@@ -92,71 +92,76 @@
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
.status-passed {
|
|
95
|
-
color: var(--
|
|
95
|
+
color: var(--color-status-passed-bg);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
.status-failed {
|
|
99
|
-
color: var(--
|
|
99
|
+
color: var(--color-status-failed-bg);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
.status-broken {
|
|
103
|
-
color: var(--
|
|
103
|
+
color: var(--color-status-broken-bg);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
.status-skipped {
|
|
107
|
-
color: var(--
|
|
107
|
+
color: var(--color-status-skipped-bg);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
.status-unknown {
|
|
111
|
-
color: var(--
|
|
111
|
+
color: var(--color-status-unknown-bg);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
.tree-header-bar {
|
|
115
115
|
display: inline-flex;
|
|
116
|
+
align-items: center;
|
|
117
|
+
gap: var(--space-0-25);
|
|
116
118
|
font-family: var(--font-family);
|
|
117
119
|
max-width: 140px;
|
|
118
120
|
min-width: 46px;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
background: var(--on-text-hint);
|
|
121
|
+
height: var(--space-2);
|
|
122
|
+
background: transparent;
|
|
122
123
|
margin-left: auto;
|
|
123
|
-
font-size:
|
|
124
|
-
font-weight: var(--font-weight-
|
|
125
|
-
line-height:
|
|
126
|
-
overflow:
|
|
124
|
+
font-size: var(--font-size-xs);
|
|
125
|
+
font-weight: var(--font-weight-bold);
|
|
126
|
+
line-height: var(--line-height-s);
|
|
127
|
+
overflow: visible;
|
|
127
128
|
}
|
|
128
129
|
|
|
129
130
|
.tree-header-bar-item {
|
|
130
131
|
display: flex;
|
|
131
|
-
|
|
132
|
+
align-items: center;
|
|
132
133
|
justify-content: center;
|
|
134
|
+
box-sizing: border-box;
|
|
135
|
+
min-width: var(--space-2);
|
|
136
|
+
height: var(--space-2);
|
|
137
|
+
border-radius: var(--radius-pill);
|
|
133
138
|
text-align: center;
|
|
134
|
-
padding: 0
|
|
139
|
+
padding: 0 var(--space-0-75);
|
|
135
140
|
flex-grow: 1;
|
|
136
141
|
|
|
137
142
|
&.passed {
|
|
138
|
-
background-color: var(--
|
|
139
|
-
color: var(--
|
|
143
|
+
background-color: var(--color-status-passed-bg);
|
|
144
|
+
color: var(--color-status-passed-on-bg);
|
|
140
145
|
}
|
|
141
146
|
|
|
142
147
|
&.failed {
|
|
143
|
-
background-color: var(--
|
|
144
|
-
color: var(--
|
|
148
|
+
background-color: var(--color-status-failed-bg);
|
|
149
|
+
color: var(--color-status-failed-on-bg);
|
|
145
150
|
}
|
|
146
151
|
|
|
147
152
|
&.broken {
|
|
148
|
-
background-color: var(--
|
|
149
|
-
color: var(--
|
|
153
|
+
background-color: var(--color-status-broken-bg);
|
|
154
|
+
color: var(--color-status-broken-on-bg);
|
|
150
155
|
}
|
|
151
156
|
|
|
152
157
|
&.skipped {
|
|
153
|
-
background-color: var(--
|
|
154
|
-
color: var(--
|
|
158
|
+
background-color: var(--color-status-skipped-bg);
|
|
159
|
+
color: var(--color-status-skipped-on-bg);
|
|
155
160
|
}
|
|
156
161
|
|
|
157
162
|
&.unknown {
|
|
158
|
-
background-color: var(--
|
|
159
|
-
color: var(--
|
|
163
|
+
background-color: var(--color-status-unknown-bg);
|
|
164
|
+
color: var(--color-status-unknown-on-bg);
|
|
160
165
|
}
|
|
161
166
|
}
|
|
162
167
|
|
|
@@ -166,7 +171,7 @@
|
|
|
166
171
|
}
|
|
167
172
|
|
|
168
173
|
.tree-empty-results-title {
|
|
169
|
-
color: var(--
|
|
174
|
+
color: var(--color-text-secondary);
|
|
170
175
|
}
|
|
171
176
|
|
|
172
177
|
.tree-empty-results-clear-button {
|
|
@@ -175,7 +180,7 @@
|
|
|
175
180
|
|
|
176
181
|
.order {
|
|
177
182
|
user-select: none;
|
|
178
|
-
color: var(--
|
|
183
|
+
color: var(--color-text-muted);
|
|
179
184
|
min-width: 16px;
|
|
180
185
|
text-align: center;
|
|
181
186
|
box-sizing: content-box;
|
package/src/index.html
CHANGED
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
<script>
|
|
13
13
|
window.allureReportOptions = {
|
|
14
14
|
reportName: "Allure Classic Report (Dev)",
|
|
15
|
-
logo: "
|
|
15
|
+
logo: "",
|
|
16
16
|
theme: "light",
|
|
17
|
-
reportLanguage: "
|
|
17
|
+
reportLanguage: "en",
|
|
18
18
|
createdAt: 1731513697651,
|
|
19
|
-
groupBy: "
|
|
19
|
+
groupBy: ["epic", "feature", "story"],
|
|
20
20
|
};
|
|
21
21
|
</script>
|
|
22
22
|
</head>
|
package/src/utils/attachments.ts
CHANGED
|
@@ -29,6 +29,7 @@ export const fetchAttachment = async (id: string, ext: string, contentType: stri
|
|
|
29
29
|
case "uri":
|
|
30
30
|
case "code":
|
|
31
31
|
case "html":
|
|
32
|
+
case "markdown":
|
|
32
33
|
case "table":
|
|
33
34
|
case "text": {
|
|
34
35
|
const text = await response.text();
|
|
@@ -105,6 +106,11 @@ export const attachmentType = (type: string) => {
|
|
|
105
106
|
type: "text",
|
|
106
107
|
icon: "txt",
|
|
107
108
|
};
|
|
109
|
+
case "text/markdown":
|
|
110
|
+
return {
|
|
111
|
+
type: "markdown",
|
|
112
|
+
icon: "file",
|
|
113
|
+
};
|
|
108
114
|
case "text/html":
|
|
109
115
|
return {
|
|
110
116
|
type: "html",
|
package/test/dummy.test.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { epic, feature, label, story } from "allure-js-commons";
|
|
2
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
3
|
+
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
await epic("coverage");
|
|
6
|
+
await feature("plugin-classic");
|
|
7
|
+
await story("dummy");
|
|
8
|
+
await label("coverage", "plugin-classic");
|
|
9
|
+
});
|
|
2
10
|
|
|
3
11
|
describe("dummy", () => {
|
|
4
12
|
it("works", () => {
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { epic, feature, label, story } from "allure-js-commons";
|
|
2
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
2
3
|
|
|
3
4
|
import { createRecursiveTree, filterLeaves } from "../../src/utils/treeFilters.js";
|
|
4
5
|
import type { ClassicTestResult } from "../../types.js";
|
|
5
6
|
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
await epic("coverage");
|
|
9
|
+
await feature("filters");
|
|
10
|
+
await story("treeFilters");
|
|
11
|
+
await label("coverage", "filters");
|
|
12
|
+
});
|
|
13
|
+
|
|
6
14
|
describe("utils > treeFilters", () => {
|
|
7
15
|
describe("filterLeaves", () => {
|
|
8
16
|
it("returns the leaves as is when no filter options are provided", () => {
|