@allurereport/web-classic 3.0.0-beta.10
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/.babelrc--old.cjs +18 -0
- package/.babelrc.js +46 -0
- package/.eslintrc--old.cjs +125 -0
- package/.eslintrc.cjs +22 -0
- package/README.md +27 -0
- package/dist/multi/10.app-970f027d.js +1 -0
- package/dist/multi/222.app-970f027d.js +1 -0
- package/dist/multi/26.app-970f027d.js +1 -0
- package/dist/multi/302.app-970f027d.js +1 -0
- package/dist/multi/304.app-970f027d.js +1 -0
- package/dist/multi/369.app-970f027d.js +1 -0
- package/dist/multi/389.app-970f027d.js +1 -0
- package/dist/multi/498.app-970f027d.js +1 -0
- package/dist/multi/60.app-970f027d.js +1 -0
- package/dist/multi/643.app-970f027d.js +1 -0
- package/dist/multi/671.app-970f027d.js +1 -0
- package/dist/multi/725.app-970f027d.js +1 -0
- package/dist/multi/770.app-970f027d.js +1 -0
- package/dist/multi/848.app-970f027d.js +1 -0
- package/dist/multi/853.app-970f027d.js +1 -0
- package/dist/multi/872.app-970f027d.js +1 -0
- package/dist/multi/895.app-970f027d.js +1 -0
- package/dist/multi/920.app-970f027d.js +1 -0
- package/dist/multi/979.app-970f027d.js +1 -0
- package/dist/multi/991.app-970f027d.js +1 -0
- package/dist/multi/JetBrainsMono_vf-9e9649b6..woff2 +0 -0
- package/dist/multi/JetBrainsMono_vf-b9a9c326..woff +0 -0
- package/dist/multi/app-970f027d.js +2 -0
- package/dist/multi/app-970f027d.js.LICENSE.txt +25 -0
- package/dist/multi/manifest.json +28 -0
- package/dist/multi/pt-root-ui_vf-22fe60ca..woff +0 -0
- package/dist/multi/pt-root-ui_vf-9d251e8b..woff2 +0 -0
- package/dist/multi/styles-970f027d.css +283 -0
- package/dist/single/app-2babff54.js +2 -0
- package/dist/single/app-2babff54.js.LICENSE.txt +25 -0
- package/dist/single/manifest.json +3 -0
- package/package--old.json +106 -0
- package/package.json +107 -0
- package/postcss.config.js +5 -0
- package/src/assets/scss/_common.scss +142 -0
- package/src/assets/scss/code.scss +71 -0
- package/src/assets/scss/day.scss +51 -0
- package/src/assets/scss/fonts.scss +3 -0
- package/src/assets/scss/index.scss +9 -0
- package/src/assets/scss/night.scss +61 -0
- package/src/assets/scss/palette.scss +393 -0
- package/src/assets/scss/theme.scss +117 -0
- package/src/assets/scss/typography.scss +218 -0
- package/src/assets/scss/vars.scss +8 -0
- package/src/components/ArrowButton/index.tsx +36 -0
- package/src/components/ArrowButton/styles.scss +35 -0
- package/src/components/BaseLayout/index.tsx +23 -0
- package/src/components/BaseLayout/styles.scss +63 -0
- package/src/components/Behaviors/BehaviorsList.tsx +67 -0
- package/src/components/Behaviors/index.tsx +60 -0
- package/src/components/Behaviors/styles.scss +196 -0
- package/src/components/Categories/CategoriesList.tsx +67 -0
- package/src/components/Categories/index.tsx +60 -0
- package/src/components/Categories/styles.scss +196 -0
- package/src/components/Footer/FooterLogo.tsx +16 -0
- package/src/components/Footer/FooterVersion.tsx +33 -0
- package/src/components/Footer/index.tsx +13 -0
- package/src/components/Footer/styles.scss +14 -0
- package/src/components/Graphs/index.tsx +2 -0
- package/src/components/Header/index.tsx +14 -0
- package/src/components/Header/styles.scss +26 -0
- package/src/components/HeaderActions/Filters.tsx +90 -0
- package/src/components/HeaderActions/HeaderActions.tsx +59 -0
- package/src/components/HeaderActions/SortBy.tsx +128 -0
- package/src/components/HeaderActions/styles.scss +82 -0
- package/src/components/LanguagePicker/index.tsx +41 -0
- package/src/components/LanguagePicker/styles.scss +3 -0
- package/src/components/MainReport/index.tsx +19 -0
- package/src/components/Metadata/index.tsx +121 -0
- package/src/components/Metadata/styles.scss +146 -0
- package/src/components/MetadataButton/index.tsx +32 -0
- package/src/components/MetadataButton/styles.scss +53 -0
- package/src/components/Modal/ModalView.hbs +13 -0
- package/src/components/Modal/ModalView.js +43 -0
- package/src/components/Modal/index.tsx +174 -0
- package/src/components/Modal/styles.scss +126 -0
- package/src/components/Overview/index.tsx +9 -0
- package/src/components/Packages/PackagesList.tsx +67 -0
- package/src/components/Packages/index.tsx +59 -0
- package/src/components/Packages/styles.scss +196 -0
- package/src/components/ReportBody/Filters.tsx +92 -0
- package/src/components/ReportBody/HeaderActions.tsx +21 -0
- package/src/components/ReportBody/SortBy.tsx +132 -0
- package/src/components/ReportBody/context.tsx +106 -0
- package/src/components/ReportBody/index.tsx +71 -0
- package/src/components/ReportBody/styles.scss +64 -0
- package/src/components/ReportHeader/ReportHeaderLabelList.tsx +12 -0
- package/src/components/ReportHeader/ReportHeaderLogo.tsx +10 -0
- package/src/components/ReportHeader/ReportHeaderPie.tsx +14 -0
- package/src/components/ReportHeader/index.tsx +33 -0
- package/src/components/ReportHeader/styles.scss +49 -0
- package/src/components/ReportLogo/index.tsx +16 -0
- package/src/components/ReportLogo/styles.scss +20 -0
- package/src/components/ReportLogoFull/index.tsx +20 -0
- package/src/components/ReportLogoFull/styles.scss +7 -0
- package/src/components/ReportMetadata/MetadataItem.tsx +45 -0
- package/src/components/ReportMetadata/MetadataSummary.tsx +81 -0
- package/src/components/ReportMetadata/MetadataTestType.tsx +16 -0
- package/src/components/ReportMetadata/MetadataWithIcon.tsx +21 -0
- package/src/components/ReportMetadata/index.tsx +46 -0
- package/src/components/ReportMetadata/styles.scss +99 -0
- package/src/components/SideBySide/index.tsx +54 -0
- package/src/components/SideBySide/styles.scss +59 -0
- package/src/components/SideNav/SideNav.tsx +78 -0
- package/src/components/SideNav/SideNavView.hbs +39 -0
- package/src/components/SideNav/SideNavView.js +81 -0
- package/src/components/SideNav/styles.scss +126 -0
- package/src/components/Suites/index.tsx +62 -0
- package/src/components/Suites/styles.scss +10 -0
- package/src/components/Tabs/index.tsx +33 -0
- package/src/components/Tabs/styles.scss +56 -0
- package/src/components/TestResult/TestResultAttachmentsView/index.tsx +27 -0
- package/src/components/TestResult/TestResultAttachmentsView/styles.scss +12 -0
- package/src/components/TestResult/TestResultDescription/index.tsx +27 -0
- package/src/components/TestResult/TestResultDescription/styles.scss +12 -0
- package/src/components/TestResult/TestResultDropdown/index.tsx +23 -0
- package/src/components/TestResult/TestResultDropdown/styles.scss +34 -0
- package/src/components/TestResult/TestResultEmpty/index.tsx +33 -0
- package/src/components/TestResult/TestResultEmpty/styles.scss +25 -0
- package/src/components/TestResult/TestResultError/index.tsx +48 -0
- package/src/components/TestResult/TestResultError/styles.scss +51 -0
- package/src/components/TestResult/TestResultHeader/index.tsx +53 -0
- package/src/components/TestResult/TestResultHeader/styles.scss +43 -0
- package/src/components/TestResult/TestResultHistory/TestResultHistoryItem.tsx +67 -0
- package/src/components/TestResult/TestResultHistory/index.tsx +26 -0
- package/src/components/TestResult/TestResultHistory/styles.scss +63 -0
- package/src/components/TestResult/TestResultInfo/TestResultInfoStatuses.tsx +30 -0
- package/src/components/TestResult/TestResultInfo/index.tsx +79 -0
- package/src/components/TestResult/TestResultInfo/styles.scss +50 -0
- package/src/components/TestResult/TestResultLinks/index.tsx +56 -0
- package/src/components/TestResult/TestResultLinks/styles.scss +30 -0
- package/src/components/TestResult/TestResultMetadata/index.tsx +27 -0
- package/src/components/TestResult/TestResultMetadata/styles.scss +8 -0
- package/src/components/TestResult/TestResultNavigation/index.tsx +80 -0
- package/src/components/TestResult/TestResultNavigation/styles.scss +48 -0
- package/src/components/TestResult/TestResultOverview.tsx +40 -0
- package/src/components/TestResult/TestResultParameters/index.tsx +30 -0
- package/src/components/TestResult/TestResultParameters/styles.scss +8 -0
- package/src/components/TestResult/TestResultPrevStatuses/index.tsx +49 -0
- package/src/components/TestResult/TestResultPrevStatuses/styles.scss +57 -0
- package/src/components/TestResult/TestResultRetriesView/TestResultRetriesItem.tsx +49 -0
- package/src/components/TestResult/TestResultRetriesView/index.tsx +20 -0
- package/src/components/TestResult/TestResultRetriesView/styles.scss +69 -0
- package/src/components/TestResult/TestResultSetup/index.tsx +49 -0
- package/src/components/TestResult/TestResultSeverity/index.tsx +27 -0
- package/src/components/TestResult/TestResultSeverity/styles.scss +29 -0
- package/src/components/TestResult/TestResultStatus/index.tsx +26 -0
- package/src/components/TestResult/TestResultStatus/styles.scss +36 -0
- package/src/components/TestResult/TestResultSteps/HtmlAttachmentPreview.tsx +12 -0
- package/src/components/TestResult/TestResultSteps/attachment.tsx +68 -0
- package/src/components/TestResult/TestResultSteps/attachmentCode.tsx +20 -0
- package/src/components/TestResult/TestResultSteps/attachmentImage.tsx +32 -0
- package/src/components/TestResult/TestResultSteps/attachmentVideo.tsx +15 -0
- package/src/components/TestResult/TestResultSteps/index.tsx +49 -0
- package/src/components/TestResult/TestResultSteps/styles.scss +225 -0
- package/src/components/TestResult/TestResultSteps/testResultAttachment.tsx +77 -0
- package/src/components/TestResult/TestResultSteps/testResultAttachmentInfo.tsx +83 -0
- package/src/components/TestResult/TestResultSteps/testResultStep.tsx +78 -0
- package/src/components/TestResult/TestResultSteps/testResultStepInfo.tsx +30 -0
- package/src/components/TestResult/TestResultSteps/wrongAttachment.tsx +8 -0
- package/src/components/TestResult/TestResultTabs/index.tsx +59 -0
- package/src/components/TestResult/TestResultTabs/styles.scss +76 -0
- package/src/components/TestResult/TestResultTeardown/index.tsx +49 -0
- package/src/components/TestResult/TestResultView.hbs +32 -0
- package/src/components/TestResult/TestResultView.js +90 -0
- package/src/components/TestResult/index.tsx +54 -0
- package/src/components/TestResult/styles.scss +29 -0
- package/src/components/TestResultView/index.tsx +31 -0
- package/src/components/ThemeButton/ThemeButton.tsx +20 -0
- package/src/components/Timeline/index.tsx +2 -0
- package/src/components/Tree/Tree.tsx +76 -0
- package/src/components/Tree/TreeHeader.tsx +82 -0
- package/src/components/Tree/TreeItem.tsx +49 -0
- package/src/components/Tree/TreeItemIcon.tsx +32 -0
- package/src/components/Tree/index.tsx +60 -0
- package/src/components/Tree/styles.scss +185 -0
- package/src/favicon.ico +0 -0
- package/src/index.html +40 -0
- package/src/index.js +52 -0
- package/src/index.tsx +60 -0
- package/src/mixins.scss +128 -0
- package/src/rtl.scss +19 -0
- package/src/stores/behaviors.ts +127 -0
- package/src/stores/categories.ts +127 -0
- package/src/stores/chart.ts +32 -0
- package/src/stores/envInfo.ts +34 -0
- package/src/stores/index.ts +4 -0
- package/src/stores/locale.ts +83 -0
- package/src/stores/packages.ts +127 -0
- package/src/stores/router.ts +55 -0
- package/src/stores/stats.ts +36 -0
- package/src/stores/tabs.ts +7 -0
- package/src/stores/testResults.ts +66 -0
- package/src/stores/theme.ts +33 -0
- package/src/stores/tree.ts +127 -0
- package/src/stores/types.ts +5 -0
- package/src/styles.scss +91 -0
- package/src/translations/am.json +127 -0
- package/src/translations/az.json +127 -0
- package/src/translations/br.json +214 -0
- package/src/translations/constants.ts +124 -0
- package/src/translations/de.json +127 -0
- package/src/translations/en.json +128 -0
- package/src/translations/es.json +118 -0
- package/src/translations/fr.json +118 -0
- package/src/translations/he.json +118 -0
- package/src/translations/isv.json +216 -0
- package/src/translations/it.json +118 -0
- package/src/translations/ja.json +118 -0
- package/src/translations/ka.json +118 -0
- package/src/translations/kr.json +118 -0
- package/src/translations/nl.json +118 -0
- package/src/translations/pl.json +116 -0
- package/src/translations/pt.json +118 -0
- package/src/translations/ru.json +116 -0
- package/src/translations/sv.json +118 -0
- package/src/translations/tr.json +118 -0
- package/src/translations/zh.json +118 -0
- package/src/types/globals.d.ts +13 -0
- package/src/types/window.d.ts +8 -0
- package/src/utils/attachments.ts +156 -0
- package/src/utils/capitalize.ts +6 -0
- package/src/utils/copyToClipboard.ts +16 -0
- package/src/utils/isMac.ts +8 -0
- package/src/utils/navigate.ts +7 -0
- package/src/utils/statuses.js +1 -0
- package/src/utils/statuses.ts +55 -0
- package/src/utils/time.ts +17 -0
- package/src/utils/treeFilters.ts +139 -0
- package/src/variables.scss +71 -0
- package/test/utils/treeFilters.test.ts +448 -0
- package/tsconfig.json +25 -0
- package/types.d.ts +85 -0
- package/vitest.config.ts +18 -0
- package/webpack.config--old.js +127 -0
- package/webpack.config.js +108 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
.tree {
|
|
2
|
+
position: relative;
|
|
3
|
+
|
|
4
|
+
&:not(:first-child) {
|
|
5
|
+
border-top: 1px solid var(--on-border-muted);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.tree-list {
|
|
10
|
+
min-height: 128px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.tree-header {
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: 4px;
|
|
17
|
+
transition: background-color 300ms;
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
padding: 4px 8px 4px 6px;
|
|
20
|
+
|
|
21
|
+
&:hover {
|
|
22
|
+
background: var(--bg-control-flat-medium);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.tree-header-arrow {
|
|
27
|
+
transform: rotate(-90deg);
|
|
28
|
+
transition: transform 200ms;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.tree-header-arrow-opened {
|
|
32
|
+
transform: rotate(0);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.tree-header-title {
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
text-overflow: ellipsis;
|
|
39
|
+
margin-right: 24px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.tree-count {
|
|
43
|
+
display: flex;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.tree-item {
|
|
47
|
+
display: flex;
|
|
48
|
+
justify-content: space-between;
|
|
49
|
+
padding: 6px 8px 6px 6px;
|
|
50
|
+
transition: background-color 300ms;
|
|
51
|
+
gap: 4px;
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
position: relative;
|
|
54
|
+
|
|
55
|
+
&:hover {
|
|
56
|
+
background: var(--bg-control-flat-medium);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&:not(:first-child) {
|
|
60
|
+
border-top: 1px solid var(--on-border-muted);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
.tree-item-marked {
|
|
64
|
+
background: var(--bg-base-secondary);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.item-title {
|
|
68
|
+
display: flex;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.item-time {
|
|
72
|
+
flex: none;
|
|
73
|
+
margin-left: auto;
|
|
74
|
+
color: var(--on-text-hint);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.test-count {
|
|
78
|
+
display: flex;
|
|
79
|
+
margin-left: auto;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.tree-content:not(.root) {
|
|
83
|
+
display: block;
|
|
84
|
+
padding-left: 24px;
|
|
85
|
+
margin-bottom: 12px;
|
|
86
|
+
border-top: 1px solid var(--on-border-muted);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.tree-item-icon {
|
|
90
|
+
padding: 2px 4px;
|
|
91
|
+
height: max-content;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.status-passed {
|
|
95
|
+
color: var(--bg-support-castor);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.status-failed {
|
|
99
|
+
color: var(--bg-support-capella);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.status-broken {
|
|
103
|
+
color: var(--bg-support-atlas);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.status-skipped {
|
|
107
|
+
color: var(--bg-support-rau);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.status-unknown {
|
|
111
|
+
color: var(--bg-support-skat);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.tree-header-bar {
|
|
115
|
+
display: inline-flex;
|
|
116
|
+
font-family: var(--font-family);
|
|
117
|
+
max-width: 140px;
|
|
118
|
+
min-width: 46px;
|
|
119
|
+
border-radius: 4px;
|
|
120
|
+
height: 12px;
|
|
121
|
+
background: var(--on-text-hint);
|
|
122
|
+
margin-left: auto;
|
|
123
|
+
font-size: 10px;
|
|
124
|
+
font-weight: var(--font-weight-extra-bold);
|
|
125
|
+
line-height: 12px;
|
|
126
|
+
overflow: hidden;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.tree-header-bar-item {
|
|
130
|
+
display: flex;
|
|
131
|
+
min-width: 16px;
|
|
132
|
+
justify-content: center;
|
|
133
|
+
text-align: center;
|
|
134
|
+
padding: 0 6px;
|
|
135
|
+
flex-grow: 1;
|
|
136
|
+
|
|
137
|
+
&.passed {
|
|
138
|
+
background-color: var(--bg-support-castor);
|
|
139
|
+
color: var(--constant-on-text-primary);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
&.failed {
|
|
143
|
+
background-color: var(--bg-support-capella);
|
|
144
|
+
color: var(--constant-on-text-primary);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
&.broken {
|
|
148
|
+
background-color: var(--bg-support-atlas);
|
|
149
|
+
color: var(--constant-on-text-primary);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
&.skipped {
|
|
153
|
+
background-color: var(--bg-support-rau);
|
|
154
|
+
color: var(--constant-on-text-primary);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
&.unknown {
|
|
158
|
+
background-color: var(--bg-support-skat);
|
|
159
|
+
color: var(--constant-on-text-primary);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.tree-empty-results {
|
|
164
|
+
padding: 44px 24px;
|
|
165
|
+
text-align: center;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.tree-empty-results-title {
|
|
169
|
+
color: var(--on-text-secondary);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.tree-empty-results-clear-button {
|
|
173
|
+
margin-top: 4px;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.order {
|
|
177
|
+
user-select: none;
|
|
178
|
+
color: var(--on-text-hint);
|
|
179
|
+
min-width: 16px;
|
|
180
|
+
text-align: center;
|
|
181
|
+
box-sizing: content-box;
|
|
182
|
+
padding-top: 2px;
|
|
183
|
+
line-height: 16px;
|
|
184
|
+
width: 24px;
|
|
185
|
+
}
|
package/src/favicon.ico
ADDED
|
Binary file
|
package/src/index.html
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<!-- Inline favicon for single single-file build -->
|
|
6
|
+
<link rel="icon" href="data:image/svg+xml,%3Csvg width='32' height='32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M22.232 4.662a3.6 3.6 0 0 1 5.09.035c2.855 2.894 4.662 6.885 4.662 11.295a3.6 3.6 0 0 1-7.2 0c0-2.406-.981-4.61-2.587-6.24a3.6 3.6 0 0 1 .035-5.09Z' fill='url(%23a)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.392 3.6a3.6 3.6 0 0 1 3.6-3.6c4.41 0 8.401 1.807 11.296 4.662a3.6 3.6 0 1 1-5.056 5.126C20.602 8.18 18.398 7.2 15.992 7.2a3.6 3.6 0 0 1-3.6-3.6Z' fill='url(%23b)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0 15.992C0 7.157 7.157 0 15.992 0a3.6 3.6 0 0 1 0 7.2A8.789 8.789 0 0 0 7.2 15.992c0 2.406.981 4.61 2.588 6.24a3.6 3.6 0 0 1-5.126 5.056C1.807 24.393 0 20.402 0 15.992Z' fill='url(%23c)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4.661 22.232a3.6 3.6 0 0 1 5.091-.035c1.63 1.606 3.834 2.587 6.24 2.587a3.6 3.6 0 0 1 0 7.2c-4.41 0-8.401-1.807-11.295-4.661a3.6 3.6 0 0 1-.036-5.091Z' fill='url(%23d)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M28.384 12.392a3.6 3.6 0 0 1 3.6 3.6c0 8.835-7.157 15.992-15.992 15.992a3.6 3.6 0 0 1 0-7.2 8.789 8.789 0 0 0 8.792-8.792 3.6 3.6 0 0 1 3.6-3.6Z' fill='url(%23e)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M28.385 12.392a3.6 3.6 0 0 1 3.6 3.6v12.392a3.6 3.6 0 0 1-7.2 0V15.992a3.6 3.6 0 0 1 3.6-3.6Z' fill='url(%23f)'/%3E%3Cg clip-path='url(%23g)'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M22.232 4.662a3.6 3.6 0 0 1 5.091.035c2.855 2.894 4.662 6.885 4.662 11.295a3.6 3.6 0 0 1-7.2 0c0-2.406-.982-4.61-2.588-6.24a3.6 3.6 0 0 1 .035-5.09Z' fill='url(%23h)'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='a' x1='26.4' y1='9.6' x2='28.8' y2='15' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%237E22CE'/%3E%3Cstop offset='1' stop-color='%238B5CF6'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='26.8' y1='9.4' x2='17.8' y2='3.6' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23EF4444'/%3E%3Cstop offset='1' stop-color='%23DC2626'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='3.6' y1='14' x2='5.4' y2='24.8' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2322C55E'/%3E%3Cstop offset='1' stop-color='%2315803D'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='4.8' y1='22.2' x2='14.4' y2='29.2' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2394A3B8'/%3E%3Cstop offset='.958' stop-color='%2364748B'/%3E%3Cstop offset='1' stop-color='%2364748B'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='28.4' y1='22.173' x2='22.188' y2='28.384' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D97706'/%3E%3Cstop offset='1' stop-color='%23FBBF24'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='29.2' y1='54.4' x2='30.626' y2='54.256' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23FBBF24'/%3E%3Cstop offset='1' stop-color='%23FBBF24'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='26.4' y1='9.6' x2='28.8' y2='15' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%237E22CE'/%3E%3Cstop offset='1' stop-color='%238B5CF6'/%3E%3C/linearGradient%3E%3CclipPath id='g'%3E%3Cpath fill='%23fff' transform='translate(24.8 12)' d='M0 0h7.2v8H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<title>Allure Report</title>
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="app"></div>
|
|
12
|
+
<script>
|
|
13
|
+
</script>
|
|
14
|
+
<script>
|
|
15
|
+
window.allure = window.allure || {};
|
|
16
|
+
</script>
|
|
17
|
+
<script>
|
|
18
|
+
const { origin, pathname } = window.location;
|
|
19
|
+
const url = new URL(pathname, origin);
|
|
20
|
+
const baseEl = document.createElement("base");
|
|
21
|
+
|
|
22
|
+
baseEl.href = url.toString();
|
|
23
|
+
|
|
24
|
+
window.document.head.appendChild(baseEl);
|
|
25
|
+
</script>
|
|
26
|
+
<script>
|
|
27
|
+
window.allureReportOptions = {
|
|
28
|
+
reportName: "Allure Classic Report (Dev)",
|
|
29
|
+
logo: "/data/logo.jpg",
|
|
30
|
+
theme: "light",
|
|
31
|
+
reportLanguage: "ru",
|
|
32
|
+
createdAt: 1731513697651,
|
|
33
|
+
groupBy: "suite",
|
|
34
|
+
};
|
|
35
|
+
</script>
|
|
36
|
+
<script async>
|
|
37
|
+
window.allureReportDataReady = true;
|
|
38
|
+
</script>
|
|
39
|
+
</body>
|
|
40
|
+
</html>
|
package/src/index.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ensureReportDataReady } from "@allurereport/web-commons";
|
|
2
|
+
import "highlight.js/styles/github-gist.css";
|
|
3
|
+
import $ from "jquery";
|
|
4
|
+
import "normalize-css/normalize.css";
|
|
5
|
+
import { App } from "./app.js";
|
|
6
|
+
import "./blocks/arrow/styles.scss";
|
|
7
|
+
import "./blocks/executor-icon/styles.scss";
|
|
8
|
+
import "./blocks/pane/styles.scss";
|
|
9
|
+
import "./blocks/status-details/styles.scss";
|
|
10
|
+
import "./blocks/table/styles.scss";
|
|
11
|
+
import "./blocks/tabs/styles.scss";
|
|
12
|
+
import "./favicon.ico";
|
|
13
|
+
import "./pluginApi.js";
|
|
14
|
+
import "./plugins/default/index.js";
|
|
15
|
+
import "./plugins/screen-diff/index.js";
|
|
16
|
+
import "./plugins/screen-diff/styles.css";
|
|
17
|
+
import "./plugins/tab-behaviors/index.js";
|
|
18
|
+
import "./plugins/tab-category/index.js";
|
|
19
|
+
import "./plugins/tab-graph/index.js";
|
|
20
|
+
import "./plugins/tab-packages/index.js";
|
|
21
|
+
import "./plugins/tab-suites/index.js";
|
|
22
|
+
import "./plugins/tab-timeline/index.js";
|
|
23
|
+
import "./plugins/testresult-category/index.js";
|
|
24
|
+
import "./plugins/testresult-description/index.js";
|
|
25
|
+
import "./plugins/testresult-duration/index.js";
|
|
26
|
+
import "./plugins/testresult-history/index.js";
|
|
27
|
+
import "./plugins/testresult-links/index.js";
|
|
28
|
+
import "./plugins/testresult-owner/index.js";
|
|
29
|
+
import "./plugins/testresult-parameters/index.js";
|
|
30
|
+
import "./plugins/testresult-retries/index.js";
|
|
31
|
+
import "./plugins/testresult-severity/index.js";
|
|
32
|
+
import "./plugins/testresult-tags/index.js";
|
|
33
|
+
import "./plugins/widget-categories-trend/index.js";
|
|
34
|
+
import "./plugins/widget-categories/index.js";
|
|
35
|
+
import "./plugins/widget-duration-trend/index.js";
|
|
36
|
+
import "./plugins/widget-duration/index.js";
|
|
37
|
+
import "./plugins/widget-environment/index.js";
|
|
38
|
+
import "./plugins/widget-executor/index.js";
|
|
39
|
+
import "./plugins/widget-history-trend/index.js";
|
|
40
|
+
import "./plugins/widget-retry-trend/index.js";
|
|
41
|
+
import "./plugins/widget-severity/index.js";
|
|
42
|
+
import "./plugins/widget-status/index.js";
|
|
43
|
+
import "./plugins/widget-suites/index.js";
|
|
44
|
+
import "./plugins/widget-summary/index.js";
|
|
45
|
+
|
|
46
|
+
window.jQuery = $;
|
|
47
|
+
|
|
48
|
+
$(document).ready(async () => {
|
|
49
|
+
await ensureReportDataReady();
|
|
50
|
+
|
|
51
|
+
return App.start();
|
|
52
|
+
});
|
package/src/index.tsx
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { PageLoader } from "@allurereport/web-components";
|
|
2
|
+
import "@allurereport/web-components/index.css";
|
|
3
|
+
import { render } from "preact";
|
|
4
|
+
import { useEffect, useMemo } from "preact/compat";
|
|
5
|
+
import "@/assets/scss/index.scss";
|
|
6
|
+
import { BaseLayout } from "@/components/BaseLayout";
|
|
7
|
+
import Behaviors from "@/components/Behaviors";
|
|
8
|
+
import Categories from "@/components/Categories";
|
|
9
|
+
import Graphs from "@/components/Graphs";
|
|
10
|
+
import Overview from "@/components/Overview";
|
|
11
|
+
import Packages from "@/components/Packages";
|
|
12
|
+
import Suites from "@/components/Suites";
|
|
13
|
+
import { TestResultView } from "@/components/TestResultView";
|
|
14
|
+
import Timeline from "@/components/Timeline";
|
|
15
|
+
import { currentLocale, getLocale, getTheme } from "@/stores";
|
|
16
|
+
import { handleHashChange, route } from "@/stores/router";
|
|
17
|
+
|
|
18
|
+
const tabComponents = {
|
|
19
|
+
overview: Overview,
|
|
20
|
+
behaviors: Behaviors,
|
|
21
|
+
categories: Categories,
|
|
22
|
+
graphs: Graphs,
|
|
23
|
+
packages: Packages,
|
|
24
|
+
suites: Suites,
|
|
25
|
+
timeline: Timeline,
|
|
26
|
+
testresult: TestResultView,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const App = () => {
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
getTheme();
|
|
32
|
+
getLocale();
|
|
33
|
+
handleHashChange();
|
|
34
|
+
}, []);
|
|
35
|
+
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
globalThis.addEventListener("hashchange", handleHashChange);
|
|
38
|
+
|
|
39
|
+
return () => {
|
|
40
|
+
globalThis.removeEventListener("hashchange", handleHashChange);
|
|
41
|
+
};
|
|
42
|
+
}, []);
|
|
43
|
+
|
|
44
|
+
const ActiveComponent = useMemo(() => tabComponents[route.value.tabName] || (() => null), [route.value.tabName]);
|
|
45
|
+
|
|
46
|
+
if (!currentLocale.value) {
|
|
47
|
+
return <PageLoader />;
|
|
48
|
+
}
|
|
49
|
+
return (
|
|
50
|
+
<BaseLayout>
|
|
51
|
+
<ActiveComponent params={route.value.params} />
|
|
52
|
+
</BaseLayout>
|
|
53
|
+
);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const rootElement = document.getElementById("app");
|
|
57
|
+
|
|
58
|
+
(async () => {
|
|
59
|
+
render(<App />, rootElement);
|
|
60
|
+
})();
|
package/src/mixins.scss
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
@import "./variables.scss";
|
|
2
|
+
|
|
3
|
+
@mixin status-bg() {
|
|
4
|
+
&_status_failed {
|
|
5
|
+
background: $background-failed;
|
|
6
|
+
}
|
|
7
|
+
&_status_broken {
|
|
8
|
+
background: $background-broken;
|
|
9
|
+
}
|
|
10
|
+
&_status_passed {
|
|
11
|
+
background: $background-passed;
|
|
12
|
+
}
|
|
13
|
+
&_status_skipped {
|
|
14
|
+
background: $background-skipped;
|
|
15
|
+
}
|
|
16
|
+
&_status_unknown {
|
|
17
|
+
background: $background-unknown;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@mixin status-bg-bright-before() {
|
|
22
|
+
&_status_failed::before {
|
|
23
|
+
background: $color-failed;
|
|
24
|
+
}
|
|
25
|
+
&_status_broken::before {
|
|
26
|
+
background: $color-broken;
|
|
27
|
+
}
|
|
28
|
+
&_status_passed::before {
|
|
29
|
+
background: $color-passed;
|
|
30
|
+
}
|
|
31
|
+
&_status_skipped::before {
|
|
32
|
+
background: $color-skipped;
|
|
33
|
+
}
|
|
34
|
+
&_status_unknown::before {
|
|
35
|
+
background: $color-unknown;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@mixin status-bg-light() {
|
|
40
|
+
&_status_failed {
|
|
41
|
+
background: $background-light-failed;
|
|
42
|
+
}
|
|
43
|
+
&_status_broken {
|
|
44
|
+
background: $background-light-broken;
|
|
45
|
+
}
|
|
46
|
+
&_status_passed {
|
|
47
|
+
background: $background-light-passed;
|
|
48
|
+
}
|
|
49
|
+
&_status_skipped {
|
|
50
|
+
background: $background-light-skipped;
|
|
51
|
+
}
|
|
52
|
+
&_status_unknown {
|
|
53
|
+
background: $background-light-unknown;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@mixin status-bg-bright() {
|
|
58
|
+
&_status_failed {
|
|
59
|
+
background: $color-failed;
|
|
60
|
+
}
|
|
61
|
+
&_status_broken {
|
|
62
|
+
background: $color-broken;
|
|
63
|
+
}
|
|
64
|
+
&_status_passed {
|
|
65
|
+
background: $color-passed;
|
|
66
|
+
}
|
|
67
|
+
&_status_skipped {
|
|
68
|
+
background: $color-skipped;
|
|
69
|
+
}
|
|
70
|
+
&_status_unknown {
|
|
71
|
+
background: $color-unknown;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@mixin status-border() {
|
|
76
|
+
&_status_failed {
|
|
77
|
+
border-color: $color-failed;
|
|
78
|
+
}
|
|
79
|
+
&_status_broken {
|
|
80
|
+
border-color: $color-broken;
|
|
81
|
+
}
|
|
82
|
+
&_status_passed {
|
|
83
|
+
border-color: $color-passed;
|
|
84
|
+
}
|
|
85
|
+
&_status_skipped {
|
|
86
|
+
border-color: $color-skipped;
|
|
87
|
+
}
|
|
88
|
+
&_status_unknown {
|
|
89
|
+
border-color: $color-unknown;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@mixin status-text() {
|
|
94
|
+
&_status_failed {
|
|
95
|
+
color: $color-failed;
|
|
96
|
+
}
|
|
97
|
+
&_status_broken {
|
|
98
|
+
color: $color-broken;
|
|
99
|
+
}
|
|
100
|
+
&_status_passed {
|
|
101
|
+
color: $color-passed;
|
|
102
|
+
}
|
|
103
|
+
&_status_skipped {
|
|
104
|
+
color: $color-skipped;
|
|
105
|
+
}
|
|
106
|
+
&_status_unknown {
|
|
107
|
+
color: $color-unknown;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@mixin status-fill() {
|
|
112
|
+
&_status_failed {
|
|
113
|
+
fill: $color-failed;
|
|
114
|
+
}
|
|
115
|
+
&_status_broken {
|
|
116
|
+
fill: $color-broken;
|
|
117
|
+
}
|
|
118
|
+
&_status_passed {
|
|
119
|
+
fill: $color-passed;
|
|
120
|
+
}
|
|
121
|
+
&_status_skipped {
|
|
122
|
+
fill: $color-skipped;
|
|
123
|
+
}
|
|
124
|
+
&_status_unknown {
|
|
125
|
+
fill: $color-unknown;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
package/src/rtl.scss
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[dir="rtl"] .chart__axis_y g text {
|
|
2
|
+
text-anchor: start;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
[dir="rtl"] .timeline__group text {
|
|
6
|
+
text-anchor: end;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
[dir="rtl"] .chart__legend {
|
|
10
|
+
right: 10%;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
[dir="rtl"] .fa-angle-left:before {
|
|
14
|
+
content: "\F105";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
[dir="rtl"] .tooltip_position_bottom {
|
|
18
|
+
width: 100px;
|
|
19
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { fetchReportJsonData } from "@allurereport/web-commons";
|
|
2
|
+
import { computed, signal } from "@preact/signals";
|
|
3
|
+
import type { AwesomeStatus, AwesomeTree, AwesomeTreeGroup } from "types";
|
|
4
|
+
import type { StoreSignalState } from "@/stores/types";
|
|
5
|
+
import { createRecursiveTree, isRecursiveTreeEmpty } from "@/utils/treeFilters";
|
|
6
|
+
|
|
7
|
+
export type TreeSortBy = "order" | "duration" | "status" | "alphabet";
|
|
8
|
+
export type TreeDirection = "asc" | "desc";
|
|
9
|
+
export type TreeFilters = "flaky" | "retry" | "new";
|
|
10
|
+
export type TreeFiltersState = {
|
|
11
|
+
query: string;
|
|
12
|
+
status: AwesomeStatus;
|
|
13
|
+
filter: Record<TreeFilters, boolean>;
|
|
14
|
+
sortBy: TreeSortBy;
|
|
15
|
+
direction: TreeDirection;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const behaviorsStore = signal<StoreSignalState<AwesomeTree>>({
|
|
19
|
+
loading: true,
|
|
20
|
+
error: undefined,
|
|
21
|
+
data: undefined,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export const noTests = computed(() => !Object.keys(behaviorsStore?.value?.data?.leavesById).length);
|
|
25
|
+
|
|
26
|
+
export const behaviorsFiltersStore = signal<TreeFiltersState>({
|
|
27
|
+
query: "",
|
|
28
|
+
status: "total",
|
|
29
|
+
filter: {
|
|
30
|
+
flaky: false,
|
|
31
|
+
retry: false,
|
|
32
|
+
new: false,
|
|
33
|
+
},
|
|
34
|
+
sortBy: "order",
|
|
35
|
+
direction: "asc",
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
export const filteredBehaviors = computed(() => {
|
|
39
|
+
const { root, leavesById, groupsById } = behaviorsStore.value.data;
|
|
40
|
+
|
|
41
|
+
return createRecursiveTree({
|
|
42
|
+
group: root as AwesomeTreeGroup,
|
|
43
|
+
leavesById,
|
|
44
|
+
groupsById,
|
|
45
|
+
filterOptions: behaviorsFiltersStore.value,
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export const noTestsFound = computed(() => {
|
|
50
|
+
return isRecursiveTreeEmpty(filteredBehaviors.value);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
export const clearBehaviorsFilters = () => {
|
|
54
|
+
behaviorsFiltersStore.value = {
|
|
55
|
+
query: "",
|
|
56
|
+
status: "total",
|
|
57
|
+
filter: {
|
|
58
|
+
flaky: false,
|
|
59
|
+
retry: false,
|
|
60
|
+
new: false,
|
|
61
|
+
},
|
|
62
|
+
sortBy: "order",
|
|
63
|
+
direction: "asc",
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export const setBehaviorsQuery = (query: string) => {
|
|
68
|
+
behaviorsFiltersStore.value = {
|
|
69
|
+
...behaviorsFiltersStore.value,
|
|
70
|
+
query,
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const setBehaviorsStatus = (status: AwesomeStatus) => {
|
|
75
|
+
behaviorsFiltersStore.value = {
|
|
76
|
+
...behaviorsFiltersStore.value,
|
|
77
|
+
status,
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const setBehaviorsSortBy = (sortBy: TreeSortBy) => {
|
|
82
|
+
behaviorsFiltersStore.value = {
|
|
83
|
+
...behaviorsFiltersStore.value,
|
|
84
|
+
sortBy,
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const setBehaviorsDirection = (direction: TreeDirection) => {
|
|
89
|
+
behaviorsFiltersStore.value = {
|
|
90
|
+
...behaviorsFiltersStore.value,
|
|
91
|
+
direction,
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const setBehaviorsFilter = (filterKey: TreeFilters, value: boolean) => {
|
|
96
|
+
behaviorsFiltersStore.value = {
|
|
97
|
+
...behaviorsFiltersStore.value,
|
|
98
|
+
filter: {
|
|
99
|
+
...behaviorsFiltersStore.value.filter,
|
|
100
|
+
[filterKey]: value,
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export const fetchBehaviorsData = async () => {
|
|
106
|
+
behaviorsStore.value = {
|
|
107
|
+
...behaviorsStore.value,
|
|
108
|
+
loading: true,
|
|
109
|
+
error: undefined,
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
const res = await fetchReportJsonData<AwesomeTree>("widgets/behaviors.json");
|
|
114
|
+
|
|
115
|
+
behaviorsStore.value = {
|
|
116
|
+
data: res,
|
|
117
|
+
error: undefined,
|
|
118
|
+
loading: false,
|
|
119
|
+
};
|
|
120
|
+
} catch (e) {
|
|
121
|
+
behaviorsStore.value = {
|
|
122
|
+
...behaviorsStore.value,
|
|
123
|
+
error: e.message,
|
|
124
|
+
loading: false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
};
|