@allurereport/web-awesome 3.0.0-beta.9 → 3.0.1

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 (290) hide show
  1. package/dist/multi/173.app-bae2a0fe5738d77cd976.js +1 -0
  2. package/dist/multi/174.app-bae2a0fe5738d77cd976.js +1 -0
  3. package/dist/multi/252.app-bae2a0fe5738d77cd976.js +1 -0
  4. package/dist/multi/282.app-bae2a0fe5738d77cd976.js +1 -0
  5. package/dist/multi/29.app-bae2a0fe5738d77cd976.js +1 -0
  6. package/dist/multi/416.app-bae2a0fe5738d77cd976.js +1 -0
  7. package/dist/multi/527.app-bae2a0fe5738d77cd976.js +1 -0
  8. package/dist/multi/600.app-bae2a0fe5738d77cd976.js +1 -0
  9. package/dist/multi/605.app-bae2a0fe5738d77cd976.js +1 -0
  10. package/dist/multi/638.app-bae2a0fe5738d77cd976.js +1 -0
  11. package/dist/multi/672.app-bae2a0fe5738d77cd976.js +1 -0
  12. package/dist/multi/686.app-bae2a0fe5738d77cd976.js +1 -0
  13. package/dist/multi/725.app-bae2a0fe5738d77cd976.js +1 -0
  14. package/dist/multi/741.app-bae2a0fe5738d77cd976.js +1 -0
  15. package/dist/multi/755.app-bae2a0fe5738d77cd976.js +1 -0
  16. package/dist/multi/894.app-bae2a0fe5738d77cd976.js +1 -0
  17. package/dist/multi/91.app-bae2a0fe5738d77cd976.js +1 -0
  18. package/dist/multi/943.app-bae2a0fe5738d77cd976.js +1 -0
  19. package/dist/multi/980.app-bae2a0fe5738d77cd976.js +1 -0
  20. package/dist/multi/app-bae2a0fe5738d77cd976.js +2 -0
  21. package/dist/multi/app-bae2a0fe5738d77cd976.js.LICENSE.txt +10 -0
  22. package/dist/multi/manifest.json +25 -24
  23. package/dist/multi/styles-bbf68b2ba63c38b53c38.css +48 -0
  24. package/dist/single/app-996d3b5869f8fc942b66.js +2 -0
  25. package/dist/single/app-996d3b5869f8fc942b66.js.LICENSE.txt +10 -0
  26. package/dist/single/manifest.json +1 -1
  27. package/package.json +31 -19
  28. package/src/assets/scss/day.scss +2 -0
  29. package/src/assets/scss/index.scss +1 -3
  30. package/src/assets/scss/night.scss +2 -0
  31. package/src/assets/scss/palette.scss +391 -391
  32. package/src/assets/scss/theme.scss +292 -79
  33. package/src/components/BaseLayout/index.tsx +10 -32
  34. package/src/components/BaseLayout/styles.scss +14 -4
  35. package/src/components/Charts/index.tsx +245 -0
  36. package/src/components/Charts/styles.scss +27 -0
  37. package/src/components/EnvironmentPicker/index.tsx +60 -0
  38. package/src/components/EnvironmentPicker/styles.scss +9 -0
  39. package/src/components/Footer/FooterLogo.tsx +1 -2
  40. package/src/components/Footer/FooterVersion.tsx +7 -3
  41. package/src/components/Footer/index.tsx +6 -2
  42. package/src/components/Header/CiInfo/index.tsx +67 -0
  43. package/src/components/Header/CiInfo/styles.scss +7 -0
  44. package/src/components/Header/index.tsx +21 -8
  45. package/src/components/Header/styles.scss +9 -1
  46. package/src/components/HeaderControls/index.tsx +20 -0
  47. package/src/components/MainReport/index.tsx +84 -6
  48. package/src/components/MainReport/styles.scss +20 -0
  49. package/src/components/Metadata/index.tsx +6 -4
  50. package/src/components/MetadataButton/index.tsx +14 -6
  51. package/src/components/MetadataButton/styles.scss +3 -0
  52. package/src/components/Modal/index.tsx +15 -167
  53. package/src/components/NavTabs/index.tsx +70 -0
  54. package/src/components/{TestResult/TestResultTabs → NavTabs}/styles.scss +0 -3
  55. package/src/components/Report/index.tsx +7 -0
  56. package/src/components/ReportBody/Filters.tsx +96 -64
  57. package/src/components/ReportBody/HeaderActions.tsx +2 -2
  58. package/src/components/ReportBody/SortBy.tsx +4 -7
  59. package/src/components/ReportBody/index.tsx +30 -24
  60. package/src/components/ReportBody/styles.scss +9 -3
  61. package/src/components/ReportGlobalAttachments/index.tsx +34 -0
  62. package/src/components/ReportGlobalAttachments/styles.scss +11 -0
  63. package/src/components/ReportGlobalErrors/index.tsx +30 -0
  64. package/src/components/ReportGlobalErrors/styles.scss +12 -0
  65. package/src/components/ReportHeader/ReportHeaderLogo.tsx +6 -2
  66. package/src/components/ReportHeader/ReportHeaderPie.tsx +1 -2
  67. package/src/components/ReportHeader/index.tsx +38 -12
  68. package/src/components/ReportHeader/styles.scss +9 -1
  69. package/src/components/ReportMetadata/MetadataSummary.tsx +57 -65
  70. package/src/components/ReportMetadata/MetadataWithIcon.tsx +11 -13
  71. package/src/components/ReportMetadata/index.tsx +50 -3
  72. package/src/components/ReportMetadata/styles.scss +0 -2
  73. package/src/components/ReportQualityGateResults/index.tsx +42 -0
  74. package/src/components/ReportQualityGateResults/styles.scss +44 -0
  75. package/src/components/ReportTabs/index.tsx +37 -0
  76. package/src/components/SectionPicker/index.tsx +55 -0
  77. package/src/components/SectionPicker/styles.scss +5 -0
  78. package/src/components/SectionSwitcher/index.tsx +16 -0
  79. package/src/components/SectionSwitcher/styles.scss +4 -0
  80. package/src/components/SectionTabs/index.tsx +0 -0
  81. package/src/components/SideBySide/index.tsx +52 -0
  82. package/src/components/SideBySide/styles.scss +64 -0
  83. package/src/components/SplitLayout/index.tsx +71 -0
  84. package/src/components/SplitLayout/styles.scss +84 -0
  85. package/src/components/TestResult/TestStepsEmpty/index.tsx +3 -9
  86. package/src/components/TestResult/TrAttachmentsView/index.tsx +29 -0
  87. package/src/components/TestResult/{TestResultDescription → TrDescription}/index.tsx +5 -5
  88. package/src/components/TestResult/{TestResultDropdown → TrDropdown}/index.tsx +7 -5
  89. package/src/components/TestResult/{TestResultEmpty → TrEmpty}/index.tsx +7 -13
  90. package/src/components/TestResult/TrEnvironmentItem/index.tsx +82 -0
  91. package/src/components/TestResult/TrEnvironmentItem/styles.scss +60 -0
  92. package/src/components/TestResult/TrEnvironmentsView/index.tsx +64 -0
  93. package/src/components/TestResult/TrEnvironmentsView/styles.scss +11 -0
  94. package/src/components/TestResult/TrError/TrDiff.tsx +121 -0
  95. package/src/components/TestResult/TrError/index.tsx +111 -0
  96. package/src/components/TestResult/TrError/styles.scss +223 -0
  97. package/src/components/TestResult/TrHeader/TrBreadcrumbs.tsx +44 -0
  98. package/src/components/TestResult/TrHeader/index.tsx +15 -0
  99. package/src/components/TestResult/{TestResultHeader → TrHeader}/styles.scss +7 -2
  100. package/src/components/TestResult/TrHistory/TrHistoryItem.tsx +94 -0
  101. package/src/components/TestResult/TrHistory/index.tsx +26 -0
  102. package/src/components/TestResult/{TestResultHistory → TrHistory}/styles.scss +2 -1
  103. package/src/components/TestResult/{TestResultInfo/TestResultInfoStatuses.tsx → TrInfo/TrInfoStatuses.tsx} +6 -4
  104. package/src/components/TestResult/TrInfo/index.tsx +99 -0
  105. package/src/components/TestResult/{TestResultInfo → TrInfo}/styles.scss +18 -0
  106. package/src/components/TestResult/{TestResultLinks → TrLinks}/index.tsx +8 -8
  107. package/src/components/TestResult/{TestResultMetadata → TrMetadata}/index.tsx +6 -6
  108. package/src/components/TestResult/{TestResultNavigation → TrNavigation}/index.tsx +7 -9
  109. package/src/components/TestResult/TrOverview.tsx +46 -0
  110. package/src/components/TestResult/{TestResultParameters → TrParameters}/index.tsx +4 -4
  111. package/src/components/TestResult/TrPrevStatuses/index.tsx +63 -0
  112. package/src/components/TestResult/TrPwTraces/PwTrace.tsx +34 -0
  113. package/src/components/TestResult/TrPwTraces/PwTraceButton.tsx +32 -0
  114. package/src/components/TestResult/TrPwTraces/index.tsx +32 -0
  115. package/src/components/TestResult/TrPwTraces/styles.scss +20 -0
  116. package/src/components/TestResult/TrRetriesView/TrRetriesItem.tsx +70 -0
  117. package/src/components/TestResult/TrRetriesView/index.tsx +29 -0
  118. package/src/components/TestResult/{TestResultSetup → TrSetup}/index.tsx +13 -13
  119. package/src/components/TestResult/{TestResultSeverity → TrSeverity}/index.tsx +2 -2
  120. package/src/components/TestResult/{TestResultStatus → TrStatus}/index.tsx +5 -5
  121. package/src/components/TestResult/TrSteps/TrAttachment.tsx +118 -0
  122. package/src/components/TestResult/{TestResultSteps/testResultAttachmentInfo.tsx → TrSteps/TrAttachmentInfo.tsx} +11 -11
  123. package/src/components/TestResult/TrSteps/TrStep.tsx +98 -0
  124. package/src/components/TestResult/TrSteps/TrStepInfo.tsx +90 -0
  125. package/src/components/TestResult/{TestResultSteps → TrSteps}/index.tsx +12 -12
  126. package/src/components/TestResult/{TestResultSteps → TrSteps}/styles.scss +49 -10
  127. package/src/components/TestResult/{TestResultSteps → TrSteps}/wrongAttachment.tsx +1 -1
  128. package/src/components/TestResult/TrTabs/index.tsx +42 -0
  129. package/src/components/TestResult/{TestResultTeardown → TrTeardown}/index.tsx +13 -13
  130. package/src/components/TestResult/index.tsx +54 -38
  131. package/src/components/TestResult/styles.scss +12 -0
  132. package/src/components/Timeline/index.tsx +100 -0
  133. package/src/components/Timeline/styles.scss +45 -0
  134. package/src/components/ToggleLayout/index.tsx +17 -0
  135. package/src/components/Tree/index.tsx +117 -11
  136. package/src/components/Tree/styles.scss +23 -5
  137. package/src/index.html +22 -6
  138. package/src/index.tsx +90 -20
  139. package/src/locales/az.json +378 -0
  140. package/src/locales/de.json +378 -0
  141. package/src/locales/en.json +378 -0
  142. package/src/locales/es.json +378 -0
  143. package/src/locales/fr.json +378 -0
  144. package/src/locales/he.json +378 -0
  145. package/src/locales/hy.json +378 -0
  146. package/src/locales/it.json +378 -0
  147. package/src/locales/ja.json +378 -0
  148. package/src/locales/ka.json +378 -0
  149. package/src/locales/kr.json +378 -0
  150. package/src/locales/nl.json +378 -0
  151. package/src/locales/pl.json +386 -0
  152. package/src/locales/pt.json +378 -0
  153. package/src/locales/ru.json +386 -0
  154. package/src/locales/sv.json +378 -0
  155. package/src/locales/tr.json +378 -0
  156. package/src/locales/ua.json +329 -0
  157. package/src/locales/zh.json +378 -0
  158. package/src/stores/chart.ts +41 -6
  159. package/src/stores/env.ts +88 -0
  160. package/src/stores/envInfo.ts +2 -2
  161. package/src/stores/globals.ts +28 -0
  162. package/src/stores/layout.ts +36 -0
  163. package/src/stores/locale.ts +77 -29
  164. package/src/stores/modal.ts +22 -0
  165. package/src/stores/qualityGate.ts +28 -0
  166. package/src/stores/router.ts +108 -0
  167. package/src/stores/sections.ts +63 -0
  168. package/src/stores/stats.ts +52 -7
  169. package/src/stores/testResults.ts +13 -9
  170. package/src/stores/theme.ts +15 -18
  171. package/src/stores/timeline.ts +39 -0
  172. package/src/stores/tree.ts +65 -110
  173. package/src/stores/treeFilters/actions.ts +67 -0
  174. package/src/stores/treeFilters/constants.ts +7 -0
  175. package/src/stores/treeFilters/index.ts +3 -0
  176. package/src/stores/treeFilters/store.ts +73 -0
  177. package/src/stores/treeFilters/types.ts +12 -0
  178. package/src/stores/variables.ts +40 -0
  179. package/src/styles.scss +66 -0
  180. package/src/utils/persist.ts +23 -0
  181. package/src/utils/time.ts +1 -0
  182. package/src/utils/tree.ts +30 -0
  183. package/src/utils/treeFilters.ts +42 -24
  184. package/test/components/Header/CiInfo.test.tsx +177 -0
  185. package/test/components/Header.test.tsx +122 -0
  186. package/test/stores/treeFilters.test.ts +302 -0
  187. package/test/utils/treeFilters.test.ts +189 -44
  188. package/tsconfig.json +7 -2
  189. package/tsconfig.node.json +8 -0
  190. package/types.d.ts +45 -24
  191. package/vitest.config.ts +15 -2
  192. package/vitest.setup.ts +1 -0
  193. package/webpack.config.js +35 -5
  194. package/dist/multi/141.app-f32e4213.js +0 -1
  195. package/dist/multi/222.app-f32e4213.js +0 -1
  196. package/dist/multi/335.app-f32e4213.js +0 -1
  197. package/dist/multi/34.app-f32e4213.js +0 -1
  198. package/dist/multi/349.app-f32e4213.js +0 -1
  199. package/dist/multi/378.app-f32e4213.js +0 -1
  200. package/dist/multi/406.app-f32e4213.js +0 -1
  201. package/dist/multi/476.app-f32e4213.js +0 -1
  202. package/dist/multi/53.app-f32e4213.js +0 -1
  203. package/dist/multi/584.app-f32e4213.js +0 -1
  204. package/dist/multi/690.app-f32e4213.js +0 -1
  205. package/dist/multi/747.app-f32e4213.js +0 -1
  206. package/dist/multi/767.app-f32e4213.js +0 -1
  207. package/dist/multi/816.app-f32e4213.js +0 -1
  208. package/dist/multi/83.app-f32e4213.js +0 -1
  209. package/dist/multi/873.app-f32e4213.js +0 -1
  210. package/dist/multi/920.app-f32e4213.js +0 -1
  211. package/dist/multi/991.app-f32e4213.js +0 -1
  212. package/dist/multi/app-f32e4213.js +0 -2
  213. package/dist/multi/app-f32e4213.js.LICENSE.txt +0 -16
  214. package/dist/multi/styles-f32e4213.css +0 -284
  215. package/dist/single/app-7fa8e43f.js +0 -2
  216. package/dist/single/app-7fa8e43f.js.LICENSE.txt +0 -16
  217. package/src/assets/scss/code.scss +0 -71
  218. package/src/assets/scss/typography.scss +0 -218
  219. package/src/components/ArrowButton/index.tsx +0 -36
  220. package/src/components/ArrowButton/styles.scss +0 -35
  221. package/src/components/LanguagePicker/index.tsx +0 -40
  222. package/src/components/Modal/styles.scss +0 -126
  223. package/src/components/ReportLogo/index.tsx +0 -16
  224. package/src/components/ReportLogo/styles.scss +0 -20
  225. package/src/components/ReportLogoFull/index.tsx +0 -20
  226. package/src/components/ReportLogoFull/styles.scss +0 -7
  227. package/src/components/Tabs/index.tsx +0 -62
  228. package/src/components/TestResult/TestResultAttachmentsView/index.tsx +0 -27
  229. package/src/components/TestResult/TestResultError/index.tsx +0 -59
  230. package/src/components/TestResult/TestResultError/styles.scss +0 -51
  231. package/src/components/TestResult/TestResultHeader/index.tsx +0 -55
  232. package/src/components/TestResult/TestResultHistory/TestResultHistoryItem.tsx +0 -67
  233. package/src/components/TestResult/TestResultHistory/index.tsx +0 -26
  234. package/src/components/TestResult/TestResultInfo/index.tsx +0 -79
  235. package/src/components/TestResult/TestResultOverview.tsx +0 -43
  236. package/src/components/TestResult/TestResultPrevStatuses/index.tsx +0 -49
  237. package/src/components/TestResult/TestResultRetriesView/TestResultRetriesItem.tsx +0 -52
  238. package/src/components/TestResult/TestResultRetriesView/index.tsx +0 -24
  239. package/src/components/TestResult/TestResultSteps/HtmlAttachmentPreview.tsx +0 -12
  240. package/src/components/TestResult/TestResultSteps/attachment.tsx +0 -68
  241. package/src/components/TestResult/TestResultSteps/attachmentCode.tsx +0 -20
  242. package/src/components/TestResult/TestResultSteps/attachmentImage.tsx +0 -32
  243. package/src/components/TestResult/TestResultSteps/attachmentVideo.tsx +0 -15
  244. package/src/components/TestResult/TestResultSteps/testResultAttachment.tsx +0 -77
  245. package/src/components/TestResult/TestResultSteps/testResultStep.tsx +0 -85
  246. package/src/components/TestResult/TestResultSteps/testResultStepInfo.tsx +0 -30
  247. package/src/components/TestResult/TestResultTabs/index.tsx +0 -59
  248. package/src/components/ThemeButton/ThemeButton.tsx +0 -20
  249. package/src/components/Tree/Tree.tsx +0 -75
  250. package/src/components/Tree/TreeHeader.tsx +0 -82
  251. package/src/components/Tree/TreeItem.tsx +0 -35
  252. package/src/components/Tree/TreeItemIcon.tsx +0 -32
  253. package/src/i18n/constants.ts +0 -124
  254. package/src/i18n/locales/am.json +0 -120
  255. package/src/i18n/locales/az.json +0 -120
  256. package/src/i18n/locales/de.json +0 -120
  257. package/src/i18n/locales/en.json +0 -121
  258. package/src/i18n/locales/es.json +0 -120
  259. package/src/i18n/locales/fr.json +0 -120
  260. package/src/i18n/locales/he.json +0 -120
  261. package/src/i18n/locales/it.json +0 -120
  262. package/src/i18n/locales/ja.json +0 -120
  263. package/src/i18n/locales/ka.json +0 -120
  264. package/src/i18n/locales/kr.json +0 -120
  265. package/src/i18n/locales/nl.json +0 -120
  266. package/src/i18n/locales/pl.json +0 -118
  267. package/src/i18n/locales/pt.json +0 -120
  268. package/src/i18n/locales/ru.json +0 -118
  269. package/src/i18n/locales/sv.json +0 -120
  270. package/src/i18n/locales/tr.json +0 -120
  271. package/src/i18n/locales/zh.json +0 -120
  272. package/src/utils/attachments.ts +0 -156
  273. package/src/utils/capitalize.ts +0 -6
  274. /package/dist/multi/{JetBrainsMono_vf-b9a9c326..woff → JetBrainsMono_vf.woff} +0 -0
  275. /package/dist/multi/{JetBrainsMono_vf-9e9649b6..woff2 → JetBrainsMono_vf.woff2} +0 -0
  276. /package/dist/multi/{pt-root-ui_vf-22fe60ca..woff → pt-root-ui_vf.woff} +0 -0
  277. /package/dist/multi/{pt-root-ui_vf-9d251e8b..woff2 → pt-root-ui_vf.woff2} +0 -0
  278. /package/src/components/{Tabs → ReportTabs}/styles.scss +0 -0
  279. /package/src/components/TestResult/{TestResultAttachmentsView → TrAttachmentsView}/styles.scss +0 -0
  280. /package/src/components/TestResult/{TestResultDescription → TrDescription}/styles.scss +0 -0
  281. /package/src/components/TestResult/{TestResultDropdown → TrDropdown}/styles.scss +0 -0
  282. /package/src/components/TestResult/{TestResultEmpty → TrEmpty}/styles.scss +0 -0
  283. /package/src/components/TestResult/{TestResultLinks → TrLinks}/styles.scss +0 -0
  284. /package/src/components/TestResult/{TestResultMetadata → TrMetadata}/styles.scss +0 -0
  285. /package/src/components/TestResult/{TestResultNavigation → TrNavigation}/styles.scss +0 -0
  286. /package/src/components/TestResult/{TestResultParameters → TrParameters}/styles.scss +0 -0
  287. /package/src/components/TestResult/{TestResultPrevStatuses → TrPrevStatuses}/styles.scss +0 -0
  288. /package/src/components/TestResult/{TestResultRetriesView → TrRetriesView}/styles.scss +0 -0
  289. /package/src/components/TestResult/{TestResultSeverity → TrSeverity}/styles.scss +0 -0
  290. /package/src/components/TestResult/{TestResultStatus → TrStatus}/styles.scss +0 -0
@@ -6,10 +6,6 @@
6
6
  }
7
7
  }
8
8
 
9
- .tree-list {
10
- min-height: 128px;
11
- }
12
-
13
9
  .tree-header {
14
10
  display: flex;
15
11
  align-items: center;
@@ -178,5 +174,27 @@
178
174
  box-sizing: content-box;
179
175
  padding-top: 2px;
180
176
  line-height: 16px;
181
- width: 24px;
177
+ }
178
+
179
+ .tree-item-marked {
180
+ background: var(--bg-base-secondary);
181
+ }
182
+
183
+ .tree-item-marked {
184
+ background: var(--bg-base-secondary);
185
+ }
186
+
187
+ .tree-section {
188
+ &:not(:last-child) {
189
+ padding-bottom: 8px;
190
+ margin-bottom: 14px;
191
+ border-bottom: 1px solid var(--on-border-muted);
192
+ }
193
+ }
194
+
195
+ .tree-env-button {
196
+ display: flex;
197
+ align-items: center;
198
+ justify-content: space-between;
199
+ padding: 0 8px 0 6px;
182
200
  }
package/src/index.html CHANGED
@@ -22,12 +22,28 @@
22
22
  </script>
23
23
  <script>
24
24
  window.allureReportOptions = {
25
- reportName: "Allure Report (Dev)",
26
- logo: "/data/logo.jpg",
27
- theme: "light",
28
- reportLanguage: "ru",
29
- createdAt: 1731513697651,
30
- groupBy: "suite",
25
+ "reportName": "Allure Report",
26
+ "logo": "",
27
+ "theme": "light",
28
+ "reportLanguage": "en",
29
+ "createdAt": 1739819870336,
30
+ "reportUuid": "51b36daf-614b-409c-b6a1-e8e401b2c144",
31
+ "groupBy": ["parentSuite", "suite", "subSuite"],
32
+ "layout": "split",
33
+ "allureVersion": "3.0.0-beta.8",
34
+ "ci": {
35
+ "type": "github",
36
+ "detected": true,
37
+ "jobUid": "1234567890",
38
+ "jobUrl": "#",
39
+ "jobName": "Sample job name",
40
+ "jobRunUid": "0987654321",
41
+ "jobRunUrl": "#",
42
+ "jobRunName": "Sample job run name",
43
+ "jobRunBranch": "master",
44
+ "pullRequestName": "Pull request #123",
45
+ "pullRequestUrl": "#"
46
+ }
31
47
  };
32
48
  </script>
33
49
  <script async>
package/src/index.tsx CHANGED
@@ -1,38 +1,110 @@
1
+ import { ensureReportDataReady } from "@allurereport/web-commons";
2
+ import { Spinner, SvgIcon, allureIcons } from "@allurereport/web-components";
1
3
  import "@allurereport/web-components/index.css";
4
+ import clsx from "clsx";
2
5
  import { render } from "preact";
3
6
  import { useEffect, useState } from "preact/hooks";
4
7
  import "@/assets/scss/index.scss";
5
- import { BaseLayout } from "@/components/BaseLayout";
8
+ import { Footer } from "@/components/Footer";
9
+ import { Header } from "@/components/Header";
10
+ import { ModalComponent } from "@/components/Modal";
11
+ import { SectionSwitcher } from "@/components/SectionSwitcher";
12
+ import { fetchEnvStats, fetchReportStats, getLocale, getTheme, waitForI18next } from "@/stores";
13
+ import { fetchPieChartData } from "@/stores/chart";
14
+ import { currentEnvironment, environmentsStore, fetchEnvironments } from "@/stores/env";
15
+ import { fetchEnvInfo } from "@/stores/envInfo";
16
+ import { fetchGlobals } from "@/stores/globals";
17
+ import { getLayout, isLayoutLoading, layoutStore } from "@/stores/layout";
18
+ import { handleHashChange, route } from "@/stores/router";
19
+ import { currentSection, getSection } from "@/stores/sections";
20
+ import { fetchTestResult, fetchTestResultNav } from "@/stores/testResults";
21
+ import { fetchEnvTreesData } from "@/stores/tree";
6
22
  import { isMac } from "@/utils/isMac";
23
+ import { fetchQualityGateResults } from "./stores/qualityGate";
24
+ import * as styles from "./styles.scss";
25
+
26
+ const Loader = () => {
27
+ return (
28
+ <div className={clsx(styles.loader, isLayoutLoading.value ? styles.loading : "")} data-testid="loader">
29
+ <SvgIcon id={allureIcons.reportLogo} size={"m"} />
30
+ <Spinner />
31
+ </div>
32
+ );
33
+ };
7
34
 
8
35
  const App = () => {
9
- const [testResultId, setTestResultId] = useState<string>("");
36
+ const className = styles[`layout-${currentSection.value !== "" ? currentSection.value : layoutStore.value}`];
37
+ const [prefetched, setPrefetched] = useState(false);
38
+ const testResultId = route.value.params?.testResultId ?? null;
39
+ const prefetchData = async () => {
40
+ const fns = [
41
+ ensureReportDataReady,
42
+ fetchReportStats,
43
+ fetchPieChartData,
44
+ fetchEnvironments,
45
+ fetchEnvInfo,
46
+ fetchGlobals,
47
+ fetchQualityGateResults,
48
+ ];
49
+
50
+ if (globalThis) {
51
+ fns.unshift(
52
+ getSection as () => Promise<void>,
53
+ getLocale,
54
+ getLayout as () => Promise<void>,
55
+ getTheme as () => Promise<void>,
56
+ );
57
+ }
10
58
 
11
- const getLocationHashId = () => {
12
- const hash = globalThis.location.hash;
13
- const match = hash.match(/[^#/]+$/);
14
- return match ? match[0] : null;
59
+ await waitForI18next;
60
+ await Promise.all(fns.map((fn) => fn(currentEnvironment.value)));
61
+
62
+ if (currentEnvironment.value) {
63
+ await fetchEnvTreesData([currentEnvironment.value]);
64
+ await fetchEnvStats(environmentsStore.value.data);
65
+ } else {
66
+ await fetchEnvTreesData(environmentsStore.value.data);
67
+ await fetchEnvStats(environmentsStore.value.data);
68
+ }
69
+
70
+ setPrefetched(true);
15
71
  };
16
72
 
17
73
  useEffect(() => {
18
- const handleHashChange = () => {
19
- const id = getLocationHashId();
20
- setTestResultId(id);
21
- };
74
+ prefetchData();
75
+ }, [currentEnvironment.value]);
76
+
77
+ useEffect(() => {
78
+ if (testResultId) {
79
+ fetchTestResult(testResultId);
80
+ fetchTestResultNav(currentEnvironment.value);
81
+ }
82
+ }, [testResultId, currentEnvironment]);
83
+
84
+ useEffect(() => {
85
+ const onHashChange = () => handleHashChange();
22
86
 
23
87
  handleHashChange();
24
- globalThis.addEventListener("hashchange", handleHashChange);
88
+ globalThis.addEventListener("hashchange", onHashChange);
25
89
 
26
90
  return () => {
27
- globalThis.removeEventListener("hashchange", handleHashChange);
91
+ globalThis.removeEventListener("hashchange", onHashChange);
28
92
  };
29
93
  }, []);
30
94
 
31
- return <BaseLayout testResultId={testResultId} />;
32
- };
33
-
34
- export const navigateTo = (path: string) => {
35
- globalThis.location.hash = path;
95
+ return (
96
+ <>
97
+ {!prefetched && <Loader />}
98
+ {prefetched && (
99
+ <div className={styles.main}>
100
+ <Header className={className} />
101
+ <SectionSwitcher />
102
+ <Footer className={className} />
103
+ <ModalComponent />
104
+ </div>
105
+ )}
106
+ </>
107
+ );
36
108
  };
37
109
 
38
110
  export const openInNewTab = (path: string) => {
@@ -47,6 +119,4 @@ document.addEventListener("DOMContentLoaded", () => {
47
119
  }
48
120
  });
49
121
 
50
- (async () => {
51
- render(<App />, rootElement);
52
- })();
122
+ render(<App />, rootElement);
@@ -0,0 +1,378 @@
1
+ {
2
+ "statuses": {
3
+ "passed": "keçdi",
4
+ "failed": "uğursuz",
5
+ "broken": "sınıq",
6
+ "skipped": "keçildi",
7
+ "unknown": "naməlum",
8
+ "total": "cəmi",
9
+ "flakyTests": "etibarsız",
10
+ "newTests": "yeni",
11
+ "retryTests": "təkrar"
12
+ },
13
+ "testSummary": {
14
+ "total": "Cəmi",
15
+ "flaky": "Etibarsız testlər",
16
+ "retries": "Təkrar testlər",
17
+ "new": "Yeni testlər"
18
+ },
19
+ "tabs": {
20
+ "total": "Hamısı",
21
+ "results": "Nəticələr",
22
+ "globalAttachments": "Qlobal Əlavələr",
23
+ "globalErrors": "Qlobal Xətalar",
24
+ "qualityGates": "Keyfiyyət Darvazaları"
25
+ },
26
+ "search": {
27
+ "search": "Axtarış",
28
+ "search-placeholder": "Ad və ya ID"
29
+ },
30
+ "filters": {
31
+ "more-filters": "Daha çox filtr",
32
+ "enable-filter": "\"{{filter}}\" filtrlərini aktiv edin",
33
+ "flaky": "Etibarsız",
34
+ "retry": "Təkrar",
35
+ "new": "Yeni",
36
+ "fixed": "Düzəldilmiş",
37
+ "regressed": "Reqressiya",
38
+ "malfunctioned": "Sınıq"
39
+ },
40
+ "filters.description": {
41
+ "flaky": "Qeyri-sabit testləri göstərir",
42
+ "retry": "Yenidən işə salınan test nəticələrini göstərir",
43
+ "new": "Bu hesabatda ilk dəfə görünən test nəticələrini göstərir",
44
+ "fixed": "İndi uğurlu olan, əvvəl \"uğursuz\" və ya \"sınıq\" olan testləri göstərir",
45
+ "regressed": "Statusu \"uğursuz\" olan, əvvəl \"uğurlu\" və ya \"sınıq\" olan test nəticələrini göstərir",
46
+ "malfunctioned": "Statusu \"sınıq\" olan, əvvəl \"uğurlu\" və ya \"uğursuz\" olan test nəticələrini göstərir"
47
+ },
48
+ "sort-by": {
49
+ "sort-by-text": "Sıralamaq üzrə:",
50
+ "sort-by-category": "Sıralamaq üzrə",
51
+ "direction-category": "İstiqamət"
52
+ },
53
+ "sort-by.values": {
54
+ "order": "Sıra",
55
+ "alphabet": "Əlifba",
56
+ "duration": "Müddət",
57
+ "status": "Status"
58
+ },
59
+ "sort-by.directions": {
60
+ "order-desc": "Sonuncu – Birinci",
61
+ "order-asc": "Birinci – Sonuncu",
62
+ "order-asc-short": "Birinci",
63
+ "order-desc-short": "Sonuncu",
64
+ "alphabet-asc": "A – Z",
65
+ "alphabet-desc": "Z – A",
66
+ "alphabet-asc-short": "A – Z",
67
+ "alphabet-desc-short": "Z – A",
68
+ "duration-asc": "1 – 9",
69
+ "duration-desc": "9 – 1",
70
+ "duration-asc-short": "1 – 9",
71
+ "duration-desc-short": "9 – 1",
72
+ "status-asc": "Filtr siyahısına uyğun",
73
+ "status-desc": "Tərsinə çevrilmiş",
74
+ "status-asc-short": "Adi",
75
+ "status-desc-short": "Tərs"
76
+ },
77
+ "empty": {
78
+ "no-results": "Nəticə tapılmadı",
79
+ "no-tests-found": "Nəticə tapılmadı",
80
+ "no-message-provided": "Mesaj təqdim edilməyib",
81
+ "clear-filters": "Filtrləri təmizlə",
82
+ "no-attachments-results": "Əlavə məlumatı mövcud deyil",
83
+ "no-global-errors-results": "Qlobal səhvlər haqqında məlumat mövcud deyil",
84
+ "no-quality-gate-results": "Keyfiyyət darvazası nəticələri mövcud deyil",
85
+ "no-history-results": "Tarixçə məlumatı mövcud deyil",
86
+ "no-retries-results": "Təkrar məlumatı mövcud deyil",
87
+ "no-test-steps-results": "Test addımları haqqında məlumat mövcud deyil",
88
+ "no-test-case-results": "Test halları haqqında nəticələr yoxdur",
89
+ "no-environments-results": "Mühitlər haqqında məlumat mövcud deyil"
90
+ },
91
+ "severity": {
92
+ "blocker": "bloklayıcı",
93
+ "critical": "kritik",
94
+ "normal": "normal",
95
+ "minor": "kiçik",
96
+ "trivial": "əhəmiyyətsiz"
97
+ },
98
+ "execution": {
99
+ "name": "İcra",
100
+ "body": "Test məzmunu",
101
+ "setup": "Hazırlıq",
102
+ "teardown": "Yekunlaşma"
103
+ },
104
+ "environments": {
105
+ "environment_one": "Mühit",
106
+ "environment_other": "Mühitlər",
107
+ "all": "Hamısı"
108
+ },
109
+ "ui": {
110
+ "labels": "Etiketlər",
111
+ "metadata": "Metaməlumat",
112
+ "parameters": "Parametrlər",
113
+ "description": "Təsvir",
114
+ "links": "Keçidlər",
115
+ "overview": "Ümumi baxış",
116
+ "history": "Tarixçə",
117
+ "attachments": "Əlavələr",
118
+ "retries": "Təkrarlar",
119
+ "environments": "Mühitlər",
120
+ "error": "Səhv",
121
+ "goToStep": "Addıma keç",
122
+ "showLess": "Daha az göstər",
123
+ "showMore": "Daha çox göstər",
124
+ "copy": "Kopyala",
125
+ "attempt": "Cəhd {{attempt}} / {{total}}",
126
+ "at": "üçün",
127
+ "variables": "Dəyişənlər",
128
+ "openPwTrace": "Playwright Trace aç",
129
+ "finishedAtOriginal": "{{formattedCreatedAt}}, çıxış kodu {{original}} ilə",
130
+ "finishedAtBoth": "{{formattedCreatedAt}}, çıxış kodu {{actual}} ilə (əsas {{original}})"
131
+ },
132
+ "controls": {
133
+ "newTabAttachment": "Yeni sekmede aç",
134
+ "nextTR": "Növbəti test nəticəsi",
135
+ "prevTR": "Əvvəlki test nəticəsi",
136
+ "downloadAttachment": "Əlavəni yüklə",
137
+ "backto": "Geri dön",
138
+ "clipboard": "Panoya kopyala",
139
+ "clipboardError": "Səhv. Görünür, bu xüsusiyyət brauzeriniz tərəfindən dəstəklənmir",
140
+ "clipboardSuccess": "Uğurla kopyalandı",
141
+ "collapse": "Daralt",
142
+ "expand": "Genişləndir",
143
+ "fullscreen": "Tam ekran",
144
+ "language": "Dili dəyiş",
145
+ "openInNewTab": "Yeni tabda aç",
146
+ "openPreview": "Önizləməni aç",
147
+ "noSelectedTR": "Seçilmiş Test nəticəsi yoxdur",
148
+ "comparison": "Müqayisə",
149
+ "showDiff": "Fərqi göstər",
150
+ "viewMode": "Baxış rejimi",
151
+ "unified": "Birləşdirilmiş",
152
+ "side-by-side": "Yan-yana",
153
+ "compareBy": "Müqayisə üsulu",
154
+ "chars": "simvollar",
155
+ "words": "sözlər",
156
+ "lines": "sətirlər",
157
+ "actual": "Faktiki",
158
+ "expected": "Gözlənilən"
159
+ },
160
+ "errors": {
161
+ "missedAttachment": "Əlavə tapılmadı"
162
+ },
163
+ "sections": {
164
+ "report": "Report",
165
+ "charts": "Qrafiklər",
166
+ "timeline": "Zaman xətti"
167
+ },
168
+ "timeline": {
169
+ "empty": "Məlumat yoxdur",
170
+ "empty_host": "{{ host }} üçün məlumat yoxdur",
171
+ "selected_one": "{{ count }} test ({{ percentage }}%) {{ minDuration }}-dən çox və {{ maxDuration }}-dən az müddətlə seçildi",
172
+ "selected_other": "{{ count }} test ({{ percentage }}%) {{ minDuration }}-dən çox və {{ maxDuration }}-dən az müddətlə seçildi",
173
+ "host": "Host: {{ host }}"
174
+ },
175
+ "charts": {
176
+ "trend": {
177
+ "title": "Trend qrafiki: {{type}}",
178
+ "type": {
179
+ "status": "Status",
180
+ "severity": "Ciddilik"
181
+ }
182
+ },
183
+ "currentStatus": {
184
+ "title": "Cari Status",
185
+ "status": {
186
+ "passed": "$t(statuses:passed, capitalize)",
187
+ "failed": "$t(statuses:failed, capitalize)",
188
+ "broken": "$t(statuses:broken, capitalize)",
189
+ "skipped": "$t(statuses:skipped, capitalize)",
190
+ "unknown": "$t(statuses:unknown, capitalize)"
191
+ },
192
+ "percentage": "{{percentage}}%",
193
+ "of": "{{total}} dən",
194
+ "total": "cəmi",
195
+ "tests": {
196
+ "new_zero": "Yeni test yoxdur",
197
+ "new_one": "{{count}} yeni test",
198
+ "new_other": "{{count}} yeni test",
199
+ "flaky_zero": "Qeyri-sabit test yoxdur",
200
+ "flaky_one": "{{count}} qeyri-sabit test",
201
+ "flaky_other": "{{count}} qeyri-sabit test",
202
+ "retries_zero": "Yenidən cəhd edilmiş test yoxdur",
203
+ "retries_one": "{{count}} yenidən cəhd edilmiş test",
204
+ "retries_other": "{{count}} yenidən cəhd edilmiş test"
205
+ }
206
+ },
207
+ "statusDynamics": {
208
+ "title": "Status dinamikası",
209
+ "status": {
210
+ "passed": "$t(statuses:passed, capitalize)",
211
+ "failed": "$t(statuses:failed, capitalize)",
212
+ "broken": "$t(statuses:broken, capitalize)",
213
+ "skipped": "$t(statuses:skipped, capitalize)",
214
+ "unknown": "$t(statuses:unknown, capitalize)"
215
+ },
216
+ "no-history": "$t(empty:no-history-results)",
217
+ "no-results": "$t(empty:no-results)",
218
+ "tooltips": {
219
+ "current": "Son hesabat ({{timestamp, timestamp_long_no_seconds}})",
220
+ "history": "{{timestamp, timestamp_long_no_seconds}} hesabatı"
221
+ },
222
+ "ticks": {
223
+ "current": "Sonuncu",
224
+ "history": "{{timestamp, timestamp_date}}"
225
+ }
226
+ },
227
+ "statusTransitions": {
228
+ "title": "Status keçidləri",
229
+ "legend": {
230
+ "trend": "Düzəltmə dərəcəsi"
231
+ },
232
+ "transitions": {
233
+ "new": "$t(transitions:new, capitalize)",
234
+ "fixed": "$t(transitions:fixed, capitalize)",
235
+ "regressed": "$t(transitions:regressed, capitalize)",
236
+ "malfunctioned": "$t(transitions:malfunctioned, capitalize)"
237
+ },
238
+ "no-history": "$t(empty:no-history-results)",
239
+ "no-results": "$t(empty:no-results)",
240
+ "tooltips": {
241
+ "current": "Son hesabat ({{timestamp, timestamp_long_no_seconds}})",
242
+ "history": "{{timestamp, timestamp_long_no_seconds}} hesabatı"
243
+ },
244
+ "ticks": {
245
+ "current": "Sonuncu",
246
+ "history": "{{timestamp, timestamp_date}}"
247
+ }
248
+ },
249
+ "durations": {
250
+ "title": "{{groupBy}} görə müddət histogramı",
251
+ "title_none": "Müddət histogramı",
252
+ "no-results": "$t(empty:no-results)",
253
+ "groupBy": {
254
+ "none": "Yoxdur",
255
+ "layer": "Qat"
256
+ },
257
+ "ticks": {
258
+ "durationRange": "{{from, format_duration}} - {{to, format_duration}}"
259
+ },
260
+ "tooltips": {
261
+ "durationRange": "{{from, format_duration}} - {{to, format_duration}}"
262
+ },
263
+ "legend": {
264
+ "value": "{{value}}",
265
+ "total": "Test sayı"
266
+ }
267
+ },
268
+ "stabilityDistribution": {
269
+ "title": "Sabitlik paylanması",
270
+ "no-results": "$t(empty:no-results)",
271
+ "legend": {
272
+ "stabilityRate": "Sabitlik dərəcəsi"
273
+ }
274
+ },
275
+ "testBaseGrowthDynamics": {
276
+ "title": "Test bazasının artım dinamikası",
277
+ "status": {
278
+ "newpassed": "Yeni $t(statuses:passed)",
279
+ "newfailed": "Yeni $t(statuses:failed)",
280
+ "newbroken": "Yeni $t(statuses:broken)",
281
+ "newskipped": "Yeni $t(statuses:skipped)",
282
+ "newunknown": "Yeni $t(statuses:unknown)",
283
+ "removedpassed": "Silinmiş $t(statuses:passed)",
284
+ "removedfailed": "Silinmiş $t(statuses:failed)",
285
+ "removedbroken": "Silinmiş $t(statuses:broken)",
286
+ "removedskipped": "Silinmiş $t(statuses:skipped)",
287
+ "removedunknown": "Silinmiş $t(statuses:unknown)"
288
+ },
289
+ "legend": {
290
+ "trend": "Artım trendi"
291
+ },
292
+ "no-history": "$t(empty:no-history-results)",
293
+ "no-results": "$t(empty:no-results)",
294
+ "tooltips": {
295
+ "current": "Son hesabat ({{timestamp, timestamp_long_no_seconds}})",
296
+ "history": "{{timestamp, timestamp_long_no_seconds}} tarixli hesabat"
297
+ },
298
+ "ticks": {
299
+ "current": "Son",
300
+ "history": "{{timestamp, timestamp_date}}"
301
+ }
302
+ },
303
+ "fbsuAgePyramid": {
304
+ "title": "FBSU yaş piramidası",
305
+ "status": {
306
+ "passed": "$t(statuses:passed, capitalize)",
307
+ "failed": "$t(statuses:failed, capitalize)",
308
+ "broken": "$t(statuses:broken, capitalize)",
309
+ "skipped": "$t(statuses:skipped, capitalize)",
310
+ "unknown": "$t(statuses:unknown, capitalize)"
311
+ },
312
+ "no-history": "$t(empty:no-history-results)",
313
+ "no-results": "$t(empty:no-results)",
314
+ "tooltips": {
315
+ "current": "Son hesabat ({{timestamp, timestamp_long_no_seconds}})",
316
+ "history": "{{timestamp, timestamp_long_no_seconds}} tarixli hesabat"
317
+ },
318
+ "ticks": {
319
+ "current": "Son",
320
+ "history": "{{timestamp, timestamp_date}}"
321
+ }
322
+ },
323
+ "trSeverities": {
324
+ "title": "Ciddilik dərəcəsinə görə test nəticələri",
325
+ "no-results": "$t(empty:no-results)",
326
+ "status": {
327
+ "passed": "$t(statuses:passed, capitalize)",
328
+ "failed": "$t(statuses:failed, capitalize)",
329
+ "broken": "$t(statuses:broken, capitalize)",
330
+ "skipped": "$t(statuses:skipped, capitalize)",
331
+ "unknown": "$t(statuses:unknown, capitalize)"
332
+ },
333
+ "severity": {
334
+ "blocker": "$t(severity:blocker, capitalize)",
335
+ "critical": "$t(severity:critical, capitalize)",
336
+ "normal": "$t(severity:normal, capitalize)",
337
+ "minor": "$t(severity:minor, capitalize)",
338
+ "trivial": "$t(severity:trivial, capitalize)",
339
+ "unset": "Ciddilik dərəcəsi yoxdur"
340
+ }
341
+ },
342
+ "durationDynamics": {
343
+ "title": "Müddət dinamikası",
344
+ "durations": {
345
+ "sequential": "Ardıcıl müddət",
346
+ "duration": "Test müddəti",
347
+ "speedup": "Sürətləndirmə"
348
+ },
349
+ "no-results": "$t(empty:no-results)",
350
+ "tooltips": {
351
+ "current": "Son hesabat ({{timestamp, timestamp_long_no_seconds}})",
352
+ "history": "{{timestamp, timestamp_long_no_seconds}} hesabatı"
353
+ },
354
+ "ticks": {
355
+ "current": "Son",
356
+ "history": "{{timestamp, timestamp_date}}"
357
+ },
358
+ "legend": {
359
+ "duration": "{{duration, format_duration}}",
360
+ "speedup": "{{speedup}}x"
361
+ }
362
+ }
363
+ },
364
+ "transitions": {
365
+ "description": {
366
+ "new": "Bu test nəticəsinin hesabatda ilk dəfə görünməsi",
367
+ "fixed": "Əvvəl \"uğursuz\" və ya \"sınıq\" olan, indi \"uğurlu\" olan test",
368
+ "regressed": "Əvvəl \"uğurlu\" və ya \"sınıq\" olan, indi \"uğursuz\" olan test",
369
+ "malfunctioned": "Əvvəl \"uğurlu\" və ya \"uğursuz\" olan, indi \"sınıq\" olan test",
370
+ "retries": "{{count}} yenidən cəhd",
371
+ "flaky": "İcra nəticələri qeyri-sabitdir"
372
+ },
373
+ "new": "Yeni",
374
+ "fixed": "Düzəldilmiş",
375
+ "regressed": "Reqressiya",
376
+ "malfunctioned": "Sınıq"
377
+ }
378
+ }