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

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 (274) hide show
  1. package/.eslintrc.cjs +4 -1
  2. package/dist/multi/141.app-f32e4213.js +1 -0
  3. package/dist/multi/222.app-f32e4213.js +1 -0
  4. package/dist/multi/335.app-f32e4213.js +1 -0
  5. package/dist/multi/34.app-f32e4213.js +1 -0
  6. package/dist/multi/349.app-f32e4213.js +1 -0
  7. package/dist/multi/378.app-f32e4213.js +1 -0
  8. package/dist/multi/406.app-f32e4213.js +1 -0
  9. package/dist/multi/476.app-f32e4213.js +1 -0
  10. package/dist/multi/53.app-f32e4213.js +1 -0
  11. package/dist/multi/584.app-f32e4213.js +1 -0
  12. package/dist/multi/690.app-f32e4213.js +1 -0
  13. package/dist/multi/747.app-f32e4213.js +1 -0
  14. package/dist/multi/767.app-f32e4213.js +1 -0
  15. package/dist/multi/{816.app-4468f0e2.js → 816.app-f32e4213.js} +1 -1
  16. package/dist/multi/83.app-f32e4213.js +1 -0
  17. package/dist/multi/873.app-f32e4213.js +1 -0
  18. package/dist/multi/920.app-f32e4213.js +1 -0
  19. package/dist/multi/991.app-f32e4213.js +1 -0
  20. package/dist/multi/app-f32e4213.js +2 -0
  21. package/dist/multi/manifest.json +20 -20
  22. package/dist/multi/styles-f32e4213.css +284 -0
  23. package/dist/single/app-7fa8e43f.js +2 -0
  24. package/dist/single/manifest.json +1 -1
  25. package/package.json +7 -4
  26. package/src/assets/scss/fonts.scss +2 -20
  27. package/src/components/{app/ArrowButton → ArrowButton}/index.tsx +3 -4
  28. package/src/components/{app/BaseLayout → BaseLayout}/index.tsx +18 -16
  29. package/src/components/{app/Footer → Footer}/FooterLogo.tsx +2 -2
  30. package/src/components/Footer/FooterVersion.tsx +33 -0
  31. package/src/components/Footer/index.tsx +13 -0
  32. package/src/components/Header/index.tsx +14 -0
  33. package/src/components/{app/LanguagePicker → LanguagePicker}/index.tsx +2 -3
  34. package/src/components/MainReport/index.tsx +19 -0
  35. package/src/components/{app/Metadata → Metadata}/index.tsx +23 -16
  36. package/src/components/{app/Metadata → Metadata}/styles.scss +1 -1
  37. package/src/components/{app/MetadataButton → MetadataButton}/index.tsx +3 -4
  38. package/src/components/{app/Modal → Modal}/index.tsx +9 -19
  39. package/src/components/{app/ReportBody → ReportBody}/Filters.tsx +5 -11
  40. package/src/components/{app/ReportBody → ReportBody}/HeaderActions.tsx +1 -1
  41. package/src/components/{app/ReportBody → ReportBody}/SortBy.tsx +12 -14
  42. package/src/components/{app/ReportBody → ReportBody}/index.tsx +4 -3
  43. package/src/components/{app/ReportHeader → ReportHeader}/ReportHeaderLabelList.tsx +2 -2
  44. package/src/components/{app/ReportHeader → ReportHeader}/ReportHeaderLogo.tsx +2 -2
  45. package/src/components/{app/ReportHeader → ReportHeader}/ReportHeaderPie.tsx +2 -2
  46. package/src/components/{app/ReportHeader → ReportHeader}/index.tsx +5 -5
  47. package/src/components/{app/ReportLogo → ReportLogo}/index.tsx +3 -4
  48. package/src/components/{app/ReportLogoFull → ReportLogoFull}/index.tsx +3 -4
  49. package/src/components/{app/ReportMetadata → ReportMetadata}/MetadataItem.tsx +2 -2
  50. package/src/components/{app/ReportMetadata → ReportMetadata}/MetadataSummary.tsx +8 -10
  51. package/src/components/{app/ReportMetadata → ReportMetadata}/MetadataTestType.tsx +5 -5
  52. package/src/components/ReportMetadata/MetadataWithIcon.tsx +21 -0
  53. package/src/components/{app/ReportMetadata → ReportMetadata}/index.tsx +5 -5
  54. package/src/components/{app/ReportMetadata → ReportMetadata}/styles.scss +1 -1
  55. package/src/components/{app/Tabs → Tabs}/index.tsx +6 -1
  56. package/src/components/{app/TestResult → TestResult}/TestResultAttachmentsView/index.tsx +1 -1
  57. package/src/components/{app/TestResult → TestResult}/TestResultDescription/index.tsx +4 -4
  58. package/src/components/TestResult/TestResultDropdown/index.tsx +23 -0
  59. package/src/components/{app/TestResult → TestResult}/TestResultEmpty/index.tsx +7 -7
  60. package/src/components/TestResult/TestResultError/index.tsx +59 -0
  61. package/src/components/{app/TestResult → TestResult}/TestResultHeader/index.tsx +10 -10
  62. package/src/components/{app/TestResult → TestResult}/TestResultHistory/TestResultHistoryItem.tsx +16 -17
  63. package/src/components/{app/TestResult → TestResult}/TestResultHistory/index.tsx +2 -2
  64. package/src/components/{app/TestResult → TestResult}/TestResultInfo/TestResultInfoStatuses.tsx +8 -9
  65. package/src/components/{app/TestResult → TestResult}/TestResultInfo/index.tsx +8 -10
  66. package/src/components/{app/TestResult → TestResult}/TestResultLinks/index.tsx +12 -16
  67. package/src/components/{app/TestResult → TestResult}/TestResultMetadata/index.tsx +4 -4
  68. package/src/components/{app/TestResult → TestResult}/TestResultNavigation/index.tsx +7 -9
  69. package/src/components/TestResult/TestResultOverview.tsx +43 -0
  70. package/src/components/{app/TestResult → TestResult}/TestResultParameters/index.tsx +4 -4
  71. package/src/components/{app/TestResult → TestResult}/TestResultPrevStatuses/index.tsx +6 -9
  72. package/src/components/TestResult/TestResultRetriesView/TestResultRetriesItem.tsx +52 -0
  73. package/src/components/TestResult/TestResultRetriesView/index.tsx +24 -0
  74. package/src/components/{app/TestResult → TestResult}/TestResultSetup/index.tsx +20 -12
  75. package/src/components/TestResult/TestResultSeverity/index.tsx +27 -0
  76. package/src/components/{app/TestResult → TestResult}/TestResultStatus/index.tsx +2 -2
  77. package/src/components/{app/TestResult → TestResult}/TestResultSteps/attachment.tsx +10 -10
  78. package/src/components/{app/TestResult → TestResult}/TestResultSteps/attachmentCode.tsx +7 -2
  79. package/src/components/{app/TestResult → TestResult}/TestResultSteps/attachmentImage.tsx +6 -3
  80. package/src/components/TestResult/TestResultSteps/attachmentVideo.tsx +15 -0
  81. package/src/components/{app/TestResult → TestResult}/TestResultSteps/index.tsx +17 -8
  82. package/src/components/{app/TestResult → TestResult}/TestResultSteps/testResultAttachment.tsx +25 -27
  83. package/src/components/{app/TestResult → TestResult}/TestResultSteps/testResultAttachmentInfo.tsx +8 -12
  84. package/src/components/{app/TestResult → TestResult}/TestResultSteps/testResultStep.tsx +34 -20
  85. package/src/components/TestResult/TestResultSteps/testResultStepInfo.tsx +30 -0
  86. package/src/components/{app/TestResult → TestResult}/TestResultSteps/wrongAttachment.tsx +1 -1
  87. package/src/components/{app/TestResult → TestResult}/TestResultTabs/index.tsx +1 -1
  88. package/src/components/{app/TestResult → TestResult}/TestResultTeardown/index.tsx +19 -9
  89. package/src/components/TestResult/TestStepsEmpty/index.tsx +23 -0
  90. package/src/components/TestResult/TestStepsEmpty/styles.scss +25 -0
  91. package/src/components/{app/TestResult → TestResult}/index.tsx +10 -10
  92. package/src/components/{app/ThemeButton → ThemeButton}/ThemeButton.tsx +2 -4
  93. package/src/components/{app/Tree → Tree}/Tree.tsx +10 -10
  94. package/src/components/{app/Tree → Tree}/TreeHeader.tsx +3 -3
  95. package/src/components/{app/Tree → Tree}/TreeItem.tsx +2 -2
  96. package/src/components/Tree/TreeItemIcon.tsx +32 -0
  97. package/src/components/{app/Tree → Tree}/index.tsx +5 -13
  98. package/src/i18n/locales/am.json +3 -1
  99. package/src/i18n/locales/az.json +3 -1
  100. package/src/i18n/locales/de.json +3 -1
  101. package/src/i18n/locales/en.json +4 -1
  102. package/src/i18n/locales/es.json +3 -1
  103. package/src/i18n/locales/fr.json +3 -1
  104. package/src/i18n/locales/he.json +3 -1
  105. package/src/i18n/locales/it.json +3 -1
  106. package/src/i18n/locales/ja.json +3 -1
  107. package/src/i18n/locales/ka.json +3 -1
  108. package/src/i18n/locales/kr.json +3 -1
  109. package/src/i18n/locales/nl.json +3 -1
  110. package/src/i18n/locales/pl.json +3 -1
  111. package/src/i18n/locales/pt.json +3 -1
  112. package/src/i18n/locales/ru.json +3 -1
  113. package/src/i18n/locales/sv.json +3 -1
  114. package/src/i18n/locales/tr.json +3 -1
  115. package/src/i18n/locales/zh.json +3 -1
  116. package/src/index.html +1 -0
  117. package/src/index.tsx +2 -2
  118. package/src/stores/index.ts +1 -1
  119. package/src/stores/testResults.ts +6 -2
  120. package/src/stores/tree.ts +43 -12
  121. package/src/utils/isMac.ts +6 -5
  122. package/src/utils/loadFromLocalStorage.ts +8 -0
  123. package/src/utils/treeFilters.ts +107 -58
  124. package/test/utils/treeFilters.test.ts +25 -1
  125. package/tsconfig.json +5 -3
  126. package/types.d.ts +15 -2
  127. package/vitest.config.ts +7 -1
  128. package/webpack.config.js +4 -0
  129. package/dist/multi/141.app-4468f0e2.js +0 -1
  130. package/dist/multi/222.app-4468f0e2.js +0 -1
  131. package/dist/multi/335.app-4468f0e2.js +0 -1
  132. package/dist/multi/34.app-4468f0e2.js +0 -1
  133. package/dist/multi/349.app-4468f0e2.js +0 -1
  134. package/dist/multi/378.app-4468f0e2.js +0 -1
  135. package/dist/multi/406.app-4468f0e2.js +0 -1
  136. package/dist/multi/476.app-4468f0e2.js +0 -1
  137. package/dist/multi/53.app-4468f0e2.js +0 -1
  138. package/dist/multi/584.app-4468f0e2.js +0 -1
  139. package/dist/multi/690.app-4468f0e2.js +0 -1
  140. package/dist/multi/747.app-4468f0e2.js +0 -1
  141. package/dist/multi/767.app-4468f0e2.js +0 -1
  142. package/dist/multi/83.app-4468f0e2.js +0 -1
  143. package/dist/multi/873.app-4468f0e2.js +0 -1
  144. package/dist/multi/920.app-4468f0e2.js +0 -1
  145. package/dist/multi/991.app-4468f0e2.js +0 -1
  146. package/dist/multi/app-4468f0e2.js +0 -2
  147. package/dist/multi/styles-4468f0e2.css +0 -363
  148. package/dist/single/app-33b3c367.js +0 -2
  149. package/src/assets/fonts/JetBrainsMono_vf.woff +0 -0
  150. package/src/assets/fonts/JetBrainsMono_vf.woff2 +0 -0
  151. package/src/assets/fonts/pt-root-ui_vf.woff +0 -0
  152. package/src/assets/fonts/pt-root-ui_vf.woff2 +0 -0
  153. package/src/assets/scss/mixins.scss +0 -26
  154. package/src/assets/svg/arrows-chevron-down.svg +0 -5
  155. package/src/assets/svg/github.svg +0 -5
  156. package/src/assets/svg/line-alerts-notification-box.svg +0 -3
  157. package/src/assets/svg/line-arrows-chevron-down-double.svg +0 -3
  158. package/src/assets/svg/line-arrows-chevron-down.svg +0 -3
  159. package/src/assets/svg/line-arrows-chevron-right.svg +0 -3
  160. package/src/assets/svg/line-arrows-chevron-up-double.svg +0 -3
  161. package/src/assets/svg/line-arrows-chevron-up.svg +0 -3
  162. package/src/assets/svg/line-arrows-corner-down-right.svg +0 -3
  163. package/src/assets/svg/line-arrows-expand-3.svg +0 -3
  164. package/src/assets/svg/line-arrows-refresh-ccw-1.svg +0 -3
  165. package/src/assets/svg/line-arrows-sort-line-asc.svg +0 -3
  166. package/src/assets/svg/line-arrows-sort-line-desc.svg +0 -3
  167. package/src/assets/svg/line-arrows-switch-vertical-1.svg +0 -3
  168. package/src/assets/svg/line-dev-bug-2.svg +0 -3
  169. package/src/assets/svg/line-dev-code-square.svg +0 -3
  170. package/src/assets/svg/line-files-file-attachment-2.svg +0 -3
  171. package/src/assets/svg/line-general-check.svg +0 -3
  172. package/src/assets/svg/line-general-checklist3.svg +0 -3
  173. package/src/assets/svg/line-general-copy-3.svg +0 -3
  174. package/src/assets/svg/line-general-download-cloud.svg +0 -3
  175. package/src/assets/svg/line-general-equal.svg +0 -3
  176. package/src/assets/svg/line-general-home-line.svg +0 -3
  177. package/src/assets/svg/line-general-link-1.svg +0 -3
  178. package/src/assets/svg/line-general-link-external.svg +0 -3
  179. package/src/assets/svg/line-general-search-md.svg +0 -3
  180. package/src/assets/svg/line-general-settings-1.svg +0 -3
  181. package/src/assets/svg/line-general-x-close.svg +0 -3
  182. package/src/assets/svg/line-general-zap.svg +0 -3
  183. package/src/assets/svg/line-helpers-flag.svg +0 -4
  184. package/src/assets/svg/line-helpers-play-circle.svg +0 -4
  185. package/src/assets/svg/line-images-image.svg +0 -3
  186. package/src/assets/svg/line-security-key.svg +0 -3
  187. package/src/assets/svg/line-shapes-dot-circle.svg +0 -3
  188. package/src/assets/svg/line-shapes-moon.svg +0 -3
  189. package/src/assets/svg/line-shapes-sun.svg +0 -3
  190. package/src/assets/svg/line-time-clock-stopwatch.svg +0 -3
  191. package/src/assets/svg/report-logo.svg +0 -64
  192. package/src/assets/svg/solid-alert-circle.svg +0 -3
  193. package/src/assets/svg/solid-check-circle.svg +0 -3
  194. package/src/assets/svg/solid-help-circle.svg +0 -3
  195. package/src/assets/svg/solid-minus-circle.svg +0 -3
  196. package/src/assets/svg/solid-x-circle.svg +0 -3
  197. package/src/assets/svg/spinner.svg +0 -18
  198. package/src/assets/svg/view-off.svg +0 -12
  199. package/src/assets/svg/view.svg +0 -11
  200. package/src/components/app/Footer/FooterVersion.tsx +0 -27
  201. package/src/components/app/Footer/index.tsx +0 -13
  202. package/src/components/app/Header/index.tsx +0 -17
  203. package/src/components/app/MainReport/index.tsx +0 -19
  204. package/src/components/app/ReportMetadata/MetadataWithIcon.tsx +0 -25
  205. package/src/components/app/TestResult/TestResultDropdown/index.tsx +0 -19
  206. package/src/components/app/TestResult/TestResultError/index.tsx +0 -53
  207. package/src/components/app/TestResult/TestResultOverview.tsx +0 -40
  208. package/src/components/app/TestResult/TestResultRetriesView/TestResultRetriesItem.tsx +0 -50
  209. package/src/components/app/TestResult/TestResultRetriesView/index.tsx +0 -24
  210. package/src/components/app/TestResult/TestResultSeverity/index.tsx +0 -34
  211. package/src/components/app/TestResult/TestResultSteps/attachmentVideo.tsx +0 -12
  212. package/src/components/app/TestResult/TestResultSteps/testResultStepInfo.tsx +0 -33
  213. package/src/components/app/Tree/TreeItemIcon.tsx +0 -35
  214. package/src/components/commons/Button/index.tsx +0 -176
  215. package/src/components/commons/Button/styles.scss +0 -560
  216. package/src/components/commons/Counter/index.tsx +0 -29
  217. package/src/components/commons/Counter/styles.scss +0 -21
  218. package/src/components/commons/Label/index.tsx +0 -11
  219. package/src/components/commons/Label/styles.scss +0 -7
  220. package/src/components/commons/Link/index.tsx +0 -20
  221. package/src/components/commons/Link/styles.scss +0 -46
  222. package/src/components/commons/Loadable/index.tsx +0 -32
  223. package/src/components/commons/Menu/index.tsx +0 -198
  224. package/src/components/commons/Menu/styles.scss +0 -94
  225. package/src/components/commons/PageLoader/index.tsx +0 -10
  226. package/src/components/commons/PageLoader/styles.scss +0 -29
  227. package/src/components/commons/SearchBox/index.tsx +0 -64
  228. package/src/components/commons/SearchBox/styles.scss +0 -58
  229. package/src/components/commons/Spinner/index.tsx +0 -8
  230. package/src/components/commons/SuccessRatePieChart/index.tsx +0 -52
  231. package/src/components/commons/SuccessRatePieChart/styles.scss +0 -11
  232. package/src/components/commons/SvgIcon/index.tsx +0 -46
  233. package/src/components/commons/SvgIcon/styles.scss +0 -26
  234. package/src/components/commons/Toggle/index.tsx +0 -30
  235. package/src/components/commons/Toggle/styles.scss +0 -48
  236. package/src/components/commons/Tooltip/index.tsx +0 -123
  237. package/src/components/commons/Tooltip/styles.scss +0 -38
  238. package/src/components/commons/Typography/index.tsx +0 -99
  239. package/src/hooks/useDebouncedCallback.ts +0 -31
  240. /package/dist/multi/{app-4468f0e2.js.LICENSE.txt → app-f32e4213.js.LICENSE.txt} +0 -0
  241. /package/dist/single/{app-33b3c367.js.LICENSE.txt → app-7fa8e43f.js.LICENSE.txt} +0 -0
  242. /package/src/assets/scss/{code.css → code.scss} +0 -0
  243. /package/src/components/{app/ArrowButton → ArrowButton}/styles.scss +0 -0
  244. /package/src/components/{app/BaseLayout → BaseLayout}/styles.scss +0 -0
  245. /package/src/components/{app/Footer → Footer}/styles.scss +0 -0
  246. /package/src/components/{app/Header → Header}/styles.scss +0 -0
  247. /package/src/components/{app/MetadataButton → MetadataButton}/styles.scss +0 -0
  248. /package/src/components/{app/Modal → Modal}/styles.scss +0 -0
  249. /package/src/components/{app/ReportBody → ReportBody}/context.tsx +0 -0
  250. /package/src/components/{app/ReportBody → ReportBody}/styles.scss +0 -0
  251. /package/src/components/{app/ReportHeader → ReportHeader}/styles.scss +0 -0
  252. /package/src/components/{app/ReportLogo → ReportLogo}/styles.scss +0 -0
  253. /package/src/components/{app/ReportLogoFull → ReportLogoFull}/styles.scss +0 -0
  254. /package/src/components/{app/Tabs → Tabs}/styles.scss +0 -0
  255. /package/src/components/{app/TestResult → TestResult}/TestResultAttachmentsView/styles.scss +0 -0
  256. /package/src/components/{app/TestResult → TestResult}/TestResultDescription/styles.scss +0 -0
  257. /package/src/components/{app/TestResult → TestResult}/TestResultDropdown/styles.scss +0 -0
  258. /package/src/components/{app/TestResult → TestResult}/TestResultEmpty/styles.scss +0 -0
  259. /package/src/components/{app/TestResult → TestResult}/TestResultError/styles.scss +0 -0
  260. /package/src/components/{app/TestResult → TestResult}/TestResultHeader/styles.scss +0 -0
  261. /package/src/components/{app/TestResult → TestResult}/TestResultHistory/styles.scss +0 -0
  262. /package/src/components/{app/TestResult → TestResult}/TestResultInfo/styles.scss +0 -0
  263. /package/src/components/{app/TestResult → TestResult}/TestResultLinks/styles.scss +0 -0
  264. /package/src/components/{app/TestResult → TestResult}/TestResultMetadata/styles.scss +0 -0
  265. /package/src/components/{app/TestResult → TestResult}/TestResultNavigation/styles.scss +0 -0
  266. /package/src/components/{app/TestResult → TestResult}/TestResultParameters/styles.scss +0 -0
  267. /package/src/components/{app/TestResult → TestResult}/TestResultPrevStatuses/styles.scss +0 -0
  268. /package/src/components/{app/TestResult → TestResult}/TestResultRetriesView/styles.scss +0 -0
  269. /package/src/components/{app/TestResult → TestResult}/TestResultSeverity/styles.scss +0 -0
  270. /package/src/components/{app/TestResult → TestResult}/TestResultStatus/styles.scss +0 -0
  271. /package/src/components/{app/TestResult → TestResult}/TestResultSteps/HtmlAttachmentPreview.tsx +0 -0
  272. /package/src/components/{app/TestResult → TestResult}/TestResultSteps/styles.scss +0 -0
  273. /package/src/components/{app/TestResult → TestResult}/TestResultTabs/styles.scss +0 -0
  274. /package/src/components/{app/Tree → Tree}/styles.scss +0 -0
@@ -0,0 +1,30 @@
1
+ import { type DefaultTestStepResult, formatDuration } from "@allurereport/core-api";
2
+ import { SvgIcon, Text, allureIcons } from "@allurereport/web-components";
3
+ import * as styles from "@/components/TestResult/TestResultSteps/styles.scss";
4
+
5
+ export const TestResultStepInfo = (props: { item: DefaultTestStepResult }) => {
6
+ const { item } = props;
7
+ const formattedDuration = formatDuration(item?.duration as number);
8
+ const stepLength = item.steps?.length;
9
+ const attachmentLength = item.steps?.filter((step) => step.type === "attachment")?.length;
10
+
11
+ return (
12
+ <div className={styles["item-info"]}>
13
+ {Boolean(stepLength) && (
14
+ <div className={styles["item-info-step"]}>
15
+ <SvgIcon id={allureIcons.lineArrowsCornerDownRight} className={styles["item-info-step-icon"]} />
16
+ <Text size={"s"}>{stepLength}</Text>
17
+ </div>
18
+ )}
19
+ {Boolean(attachmentLength) && (
20
+ <div className={styles["item-info-step"]}>
21
+ <SvgIcon id={allureIcons.lineFilesFileAttachment2} className={styles["item-info-step-icon"]} />
22
+ <Text size={"s"}>{attachmentLength}</Text>
23
+ </div>
24
+ )}
25
+ <Text type="ui" size={"s"} className={styles["item-time"]}>
26
+ {formattedDuration}
27
+ </Text>
28
+ </div>
29
+ );
30
+ };
@@ -1,4 +1,4 @@
1
- import * as styles from "@/components/app/TestResult/TestResultSteps/styles.scss";
1
+ import * as styles from "@/components/TestResult/TestResultSteps/styles.scss";
2
2
  import { useI18n } from "@/stores";
3
3
 
4
4
  export const EmptyComponent = () => {
@@ -1,6 +1,6 @@
1
+ import { Text } from "@allurereport/web-components";
1
2
  import { type ComponentChildren, createContext } from "preact";
2
3
  import { useContext, useState } from "preact/hooks";
3
- import { Text } from "@/components/commons/Typography";
4
4
  import * as styles from "./styles.scss";
5
5
 
6
6
  type TestResultTabsContextT = {
@@ -1,12 +1,13 @@
1
+ import { allureIcons } from "@allurereport/web-components";
1
2
  import type { FunctionalComponent } from "preact";
2
3
  import { useState } from "preact/hooks";
3
4
  import type { AllureAwesomeTestResult } from "types";
4
- import lineHelpersFlag from "@/assets/svg/line-helpers-flag.svg";
5
- import { TestResultDropdown } from "@/components/app/TestResult/TestResultDropdown";
6
- import * as styles from "@/components/app/TestResult/TestResultSteps/styles.scss";
7
- import { TestResultAttachment } from "@/components/app/TestResult/TestResultSteps/testResultAttachment";
8
- import { TestResultStep } from "@/components/app/TestResult/TestResultSteps/testResultStep";
5
+ import { TestResultDropdown } from "@/components/TestResult/TestResultDropdown";
6
+ import * as styles from "@/components/TestResult/TestResultSteps/styles.scss";
7
+ import { TestResultAttachment } from "@/components/TestResult/TestResultSteps/testResultAttachment";
8
+ import { TestResultStep } from "@/components/TestResult/TestResultSteps/testResultStep";
9
9
  import { useI18n } from "@/stores/locale";
10
+ import { collapsedTrees, toggleTree } from "@/stores/tree";
10
11
 
11
12
  const typeMap = {
12
13
  before: TestResultStep,
@@ -17,18 +18,27 @@ const typeMap = {
17
18
 
18
19
  export type TestResultTeardownProps = {
19
20
  teardown: AllureAwesomeTestResult["teardown"];
21
+ id: string;
20
22
  };
21
23
 
22
- export const TestResultTeardown: FunctionalComponent<TestResultTeardownProps> = ({ teardown }) => {
23
- const [isOpened, setIsOpen] = useState(false);
24
+ export const TestResultTeardown: FunctionalComponent<TestResultTeardownProps> = ({ teardown, id }) => {
25
+ const teardownId = `${id}-teardown`;
26
+ const isEarlyCollapsed = !collapsedTrees.value.has(teardownId);
27
+ const [isOpened, setIsOpen] = useState<boolean>(isEarlyCollapsed);
28
+
29
+ const handleClick = () => {
30
+ setIsOpen(!isOpened);
31
+ toggleTree(teardownId);
32
+ };
33
+
24
34
  const { t } = useI18n("execution");
25
35
 
26
36
  return (
27
37
  <div className={styles["test-result-steps"]}>
28
38
  <TestResultDropdown
29
- icon={lineHelpersFlag.id}
39
+ icon={allureIcons.lineHelpersFlag}
30
40
  isOpened={isOpened}
31
- setIsOpen={setIsOpen}
41
+ setIsOpen={handleClick}
32
42
  counter={teardown?.length}
33
43
  title={t("teardown")}
34
44
  />
@@ -0,0 +1,23 @@
1
+ import { SvgIcon, Text, allureIcons } from "@allurereport/web-components";
2
+ import { useI18n } from "@/stores";
3
+ import * as styles from "./styles.scss";
4
+
5
+ const TestStepsEmpty = () => {
6
+ const { t } = useI18n("empty");
7
+ return (
8
+ <div className={styles["test-steps-empty"]}>
9
+ <div className={styles["test-steps-empty-wrapper"]}>
10
+ <SvgIcon
11
+ size={"m"}
12
+ width={"32px"}
13
+ height={"32px"}
14
+ id={allureIcons.lineDevCodeSquare}
15
+ className={styles["test-steps-empty-icon"]}
16
+ />
17
+ <Text className={styles["test-steps-empty-text"]}>{t("no-test-steps-results")}</Text>
18
+ </div>
19
+ </div>
20
+ );
21
+ };
22
+
23
+ export default TestStepsEmpty;
@@ -0,0 +1,25 @@
1
+ .test-steps-empty {
2
+ display: flex;
3
+ justify-content: center;
4
+ flex-wrap: wrap;
5
+ min-height: 320px;
6
+ align-items: center;
7
+ }
8
+
9
+ .test-steps-empty-wrapper {
10
+ display: flex;
11
+ flex-direction: column;
12
+ align-items: center;
13
+ }
14
+
15
+ .test-steps-empty-icon {
16
+ width: 32px;
17
+ height: 32px;
18
+ margin-bottom: 16px;
19
+ flex: 1 1 auto;
20
+ }
21
+
22
+ .test-steps-empty-text {
23
+ color: var(--on-text-secondary);
24
+ flex: 1 1 auto;
25
+ }
@@ -1,14 +1,14 @@
1
1
  import type { FunctionComponent, FunctionalComponent } from "preact";
2
2
  import type { AllureAwesomeTestResult } from "types";
3
- import * as styles from "@/components/app/BaseLayout/styles.scss";
4
- import { TestResultAttachmentView } from "@/components/app/TestResult/TestResultAttachmentsView";
5
- import TestResultEmpty from "@/components/app/TestResult/TestResultEmpty";
6
- import { TestResultHeader } from "@/components/app/TestResult/TestResultHeader";
7
- import TestResultHistoryView from "@/components/app/TestResult/TestResultHistory";
8
- import { TestResultInfo } from "@/components/app/TestResult/TestResultInfo";
9
- import { TestResultOverview } from "@/components/app/TestResult/TestResultOverview";
10
- import { TestResultRetriesView } from "@/components/app/TestResult/TestResultRetriesView";
11
- import { TestResultTabs, useTestResultTabsContext } from "@/components/app/TestResult/TestResultTabs";
3
+ import * as styles from "@/components/BaseLayout/styles.scss";
4
+ import { TestResultAttachmentView } from "@/components/TestResult/TestResultAttachmentsView";
5
+ import TestResultEmpty from "@/components/TestResult/TestResultEmpty";
6
+ import { TestResultHeader } from "@/components/TestResult/TestResultHeader";
7
+ import TestResultHistoryView from "@/components/TestResult/TestResultHistory";
8
+ import { TestResultInfo } from "@/components/TestResult/TestResultInfo";
9
+ import { TestResultOverview } from "@/components/TestResult/TestResultOverview";
10
+ import { TestResultRetriesView } from "@/components/TestResult/TestResultRetriesView";
11
+ import { TestResultTabs, useTestResultTabsContext } from "@/components/TestResult/TestResultTabs";
12
12
 
13
13
  export type TestResultViewProps = {
14
14
  testResult?: AllureAwesomeTestResult;
@@ -16,7 +16,7 @@ export type TestResultViewProps = {
16
16
 
17
17
  const TestResultView: FunctionalComponent<TestResultViewProps> = ({ testResult }) => {
18
18
  const { currentTab } = useTestResultTabsContext();
19
- const viewMap = {
19
+ const viewMap: Record<string, any> = {
20
20
  overview: TestResultOverview,
21
21
  history: TestResultHistoryView,
22
22
  attachments: TestResultAttachmentView,
@@ -1,7 +1,5 @@
1
+ import { IconButton, allureIcons } from "@allurereport/web-components";
1
2
  import { useEffect } from "preact/hooks";
2
- import lineShapesMoonIcon from "@/assets/svg/line-shapes-moon.svg";
3
- import lineShapesSunIcon from "@/assets/svg/line-shapes-sun.svg";
4
- import { IconButton } from "@/components/commons/Button";
5
3
  import { getTheme, themeStore, toggleTheme } from "@/stores/theme";
6
4
 
7
5
  export const ThemeButton = () => {
@@ -15,7 +13,7 @@ export const ThemeButton = () => {
15
13
  <IconButton
16
14
  onClick={toggleTheme}
17
15
  style="ghost"
18
- icon={theme === "light" ? lineShapesMoonIcon.id : lineShapesSunIcon.id}
16
+ icon={theme === "light" ? allureIcons.lineShapesMoon : allureIcons.lineShapesSun}
19
17
  size="s"
20
18
  />
21
19
  );
@@ -2,8 +2,9 @@ import type { Statistic } from "@allurereport/core-api";
2
2
  import cx from "clsx";
3
3
  import type { FunctionComponent } from "preact";
4
4
  import { useState } from "preact/hooks";
5
- import TreeItem from "@/components/app/Tree/TreeItem";
6
- import type { AllureAwesomeRecursiveTree, AllureAwesomeStatus } from "../../../../types";
5
+ import type { AllureAwesomeRecursiveTree, AllureAwesomeStatus } from "types";
6
+ import TreeItem from "@/components/Tree/TreeItem";
7
+ import { collapsedTrees, toggleTree } from "@/stores/tree";
7
8
  import TreeHeader from "./TreeHeader";
8
9
  import * as styles from "./styles.scss";
9
10
 
@@ -16,9 +17,13 @@ interface TreeProps {
16
17
  }
17
18
 
18
19
  const Tree: FunctionComponent<TreeProps> = ({ tree, statusFilter, root, name, statistic }) => {
19
- const [isOpened, setIsOpen] = useState(statistic === undefined || !!statistic.failed || !!statistic.broken);
20
- const toggleTree = () => {
20
+ const isEarlyCollapsed = collapsedTrees.value.has(tree.nodeId);
21
+ const haveFailedSteps = statistic === undefined || !!statistic?.failed || !!statistic?.broken;
22
+ const [isOpened, setIsOpen] = useState(() => (isEarlyCollapsed ? !haveFailedSteps : haveFailedSteps));
23
+
24
+ const toggleTreeHeader = () => {
21
25
  setIsOpen(!isOpened);
26
+ toggleTree(tree.nodeId);
22
27
  };
23
28
  const emptyTree = !tree?.trees?.length && !tree?.leaves?.length;
24
29
 
@@ -60,12 +65,7 @@ const Tree: FunctionComponent<TreeProps> = ({ tree, statusFilter, root, name, st
60
65
  return (
61
66
  <div className={styles.tree}>
62
67
  {name && (
63
- <TreeHeader
64
- categoryTitle={name}
65
- isOpened={isOpened}
66
- toggleTree={toggleTree}
67
- statistic={statistic}
68
- />
68
+ <TreeHeader categoryTitle={name} isOpened={isOpened} toggleTree={toggleTreeHeader} statistic={statistic} />
69
69
  )}
70
70
  {treeContent}
71
71
  </div>
@@ -1,9 +1,9 @@
1
1
  import { type Statistic, statusesList } from "@allurereport/core-api";
2
+ import { Loadable } from "@allurereport/web-components";
3
+ import { Text } from "@allurereport/web-components";
2
4
  import { clsx } from "clsx";
3
5
  import { type FunctionComponent } from "preact";
4
- import { ArrowButton } from "@/components/app/ArrowButton";
5
- import { Loadable } from "@/components/commons/Loadable";
6
- import { Text } from "@/components/commons/Typography";
6
+ import { ArrowButton } from "@/components/ArrowButton";
7
7
  import { statsStore } from "@/stores";
8
8
  import { treeFiltersStore } from "@/stores/tree";
9
9
  import * as styles from "./styles.scss";
@@ -1,7 +1,7 @@
1
1
  import { type TestStatus, formatDuration } from "@allurereport/core-api";
2
+ import { Text } from "@allurereport/web-components";
2
3
  import type { FunctionComponent } from "preact";
3
- import TreeItemIcon from "@/components/app/Tree/TreeItemIcon";
4
- import { Text } from "@/components/commons/Typography";
4
+ import TreeItemIcon from "@/components/Tree/TreeItemIcon";
5
5
  import { navigateTo } from "@/index";
6
6
  import * as styles from "./styles.scss";
7
7
 
@@ -0,0 +1,32 @@
1
+ import { SvgIcon, allureIcons } from "@allurereport/web-components";
2
+ import { clsx } from "clsx";
3
+ import type { FunctionalComponent } from "preact";
4
+ import * as styles from "./styles.scss";
5
+
6
+ interface TestStatusIconProps {
7
+ status?: "failed" | "broken" | "passed" | "skipped" | "unknown";
8
+ className?: string;
9
+ classNameIcon?: string;
10
+ }
11
+
12
+ const { solidAlertCircle, solidCheckCircle, solidHelpCircle, solidMinusCircle, solidXCircle } = allureIcons;
13
+
14
+ const icons = {
15
+ failed: solidXCircle,
16
+ broken: solidAlertCircle,
17
+ passed: solidCheckCircle,
18
+ skipped: solidMinusCircle,
19
+ unknown: solidHelpCircle,
20
+ };
21
+
22
+ const TreeItemIcon: FunctionalComponent<TestStatusIconProps> = ({ status = "unknown", className, classNameIcon }) => {
23
+ const statusClass = clsx(styles[`status-${status}`], classNameIcon);
24
+
25
+ return (
26
+ <div data-testid={`tree-leaf-status-${status}`} className={clsx(styles["tree-item-icon"], className)}>
27
+ <SvgIcon className={statusClass} id={icons[status]} />
28
+ </div>
29
+ );
30
+ };
31
+
32
+ export default TreeItemIcon;
@@ -1,23 +1,15 @@
1
- import { useEffect } from "preact/hooks";
2
- import { useTabsContext } from "@/components/app/Tabs";
3
- import Tree from "@/components/app/Tree/Tree";
4
- import { Button } from "@/components/commons/Button";
5
- import { Loadable } from "@/components/commons/Loadable";
6
- import { PageLoader } from "@/components/commons/PageLoader";
7
- import { Text } from "@/components/commons/Typography";
1
+ import { Button, Loadable, PageLoader, Text } from "@allurereport/web-components";
2
+ import type { AllureAwesomeStatus } from "types";
3
+ import { useTabsContext } from "@/components/Tabs";
4
+ import Tree from "@/components/Tree/Tree";
8
5
  import { useI18n } from "@/stores/locale";
9
- import { clearTreeFilters, filteredTree, noTests, noTestsFound, setTreeStatus, treeStore } from "@/stores/tree";
10
- import type { AllureAwesomeStatus } from "../../../../types";
6
+ import { clearTreeFilters, filteredTree, noTests, noTestsFound, treeStore } from "@/stores/tree";
11
7
  import * as styles from "./styles.scss";
12
8
 
13
9
  export const TreeList = () => {
14
10
  const { t } = useI18n("empty");
15
11
  const { currentTab } = useTabsContext();
16
12
 
17
- useEffect(() => {
18
- setTreeStatus(currentTab as AllureAwesomeStatus);
19
- }, [currentTab]);
20
-
21
13
  return (
22
14
  <Loadable
23
15
  source={treeStore}
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Մաքրել ֆիլտրները",
66
66
  "no-attachments-results": "Կցորդների մասին տեղեկություններ չկան",
67
67
  "no-history-results": "Պատմության մասին տեղեկություններ չկան",
68
- "no-retries-results": "Կրկնությունների մասին տեղեկություններ չկան"
68
+ "no-retries-results": "Կրկնությունների մասին տեղեկություններ չկան",
69
+ "no-test-steps-results": "Թեստի քայլերի մասին տեղեկատվությունը հասանելի չէ։",
70
+ "no-test-case-results": "Թեստի դեպքերի արդյունքներ չկան։"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "արգելափակում",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Filtrləri təmizlə",
66
66
  "no-attachments-results": "Əlavə məlumatı mövcud deyil",
67
67
  "no-history-results": "Tarixçə məlumatı mövcud deyil",
68
- "no-retries-results": "Təkrar məlumatı mövcud deyil"
68
+ "no-retries-results": "Təkrar məlumatı mövcud deyil",
69
+ "no-test-steps-results": "Test addımları haqqında məlumat mövcud deyil",
70
+ "no-test-case-results": "Test halları haqqında nəticələr yoxdur"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "bloklayıcı",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Filter löschen",
66
66
  "no-attachments-results": "Keine Anhängeinformationen verfügbar",
67
67
  "no-history-results": "Keine Verlaufsinformationen verfügbar",
68
- "no-retries-results": "Keine Wiederholungsinformationen verfügbar"
68
+ "no-retries-results": "Keine Wiederholungsinformationen verfügbar",
69
+ "no-test-steps-results": "Keine Informationen zu Testschritten verfügbar",
70
+ "no-test-case-results": "Keine Testergebnisse verfügbar"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "Blocker",
@@ -62,10 +62,13 @@
62
62
  "empty": {
63
63
  "no-results": "No results",
64
64
  "no-tests-found": "No results found",
65
+ "no-message-provided": "No message is provided",
65
66
  "clear-filters": "Clear filters",
66
67
  "no-attachments-results": "No attachments information available",
67
68
  "no-history-results": "No history information available",
68
- "no-retries-results": "No retries information available"
69
+ "no-retries-results": "No retries information available",
70
+ "no-test-steps-results": "No test steps information available",
71
+ "no-test-case-results": "No test case results"
69
72
  },
70
73
  "severity": {
71
74
  "blocker": "blocker",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Limpiar filtros",
66
66
  "no-attachments-results": "No hay información de adjuntos disponible",
67
67
  "no-history-results": "No hay información de historial disponible",
68
- "no-retries-results": "No hay información de reintentos disponible"
68
+ "no-retries-results": "No hay información de reintentos disponible",
69
+ "no-test-steps-results": "No hay información disponible sobre los pasos de prueba",
70
+ "no-test-case-results": "No hay resultados de casos de prueba"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "bloqueante",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Effacer les filtres",
66
66
  "no-attachments-results": "Aucune information sur les pièces jointes disponible",
67
67
  "no-history-results": "Aucune information sur l'historique disponible",
68
- "no-retries-results": "Aucune information sur les réessais disponible"
68
+ "no-retries-results": "Aucune information sur les réessais disponible",
69
+ "no-test-steps-results": "Aucune information sur les étapes de test disponible",
70
+ "no-test-case-results": "Aucun résultat de cas de test"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "bloquant",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "נקה מסננים",
66
66
  "no-attachments-results": "לא נמצאה מידע על קבצים מצורפים",
67
67
  "no-history-results": "לא נמצאה מידע על היסטוריה",
68
- "no-retries-results": "לא נמצאה מידע על נסיונות חוזרים"
68
+ "no-retries-results": "לא נמצאה מידע על נסיונות חוזרים",
69
+ "no-test-steps-results": "אין מידע על שלבי הבדיקה",
70
+ "no-test-case-results": "אין תוצאות של מקרי בדיקה"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "חוסם",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Cancella i filtri",
66
66
  "no-attachments-results": "Nessuna informazione sugli allegati disponibile",
67
67
  "no-history-results": "Nessuna informazione sulla cronologia disponibile",
68
- "no-retries-results": "Nessuna informazione sui ritentativi disponibile"
68
+ "no-retries-results": "Nessuna informazione sui ritentativi disponibile",
69
+ "no-test-steps-results": "Nessuna informazione disponibile sui passaggi del test",
70
+ "no-test-case-results": "Nessun risultato dei casi di test"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "bloccante",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "フィルターをクリア",
66
66
  "no-attachments-results": "添付ファイル情報が利用できません",
67
67
  "no-history-results": "履歴情報が利用できません",
68
- "no-retries-results": "再試行情報が利用できません"
68
+ "no-retries-results": "再試行情報が利用できません",
69
+ "no-test-steps-results": "テスト手順の情報は利用できません",
70
+ "no-test-case-results": "テストケースの結果がありません"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "ブロッカー",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "ფილტრების გასუფთავება",
66
66
  "no-attachments-results": "დანართების ინფორმაცია არ არის ხელმისაწვდომი",
67
67
  "no-history-results": "ისტორიის ინფორმაცია არ არის ხელმისაწვდომი",
68
- "no-retries-results": "ხელახალი ცდების ინფორმ���ცია არ არის ხელმისაწვდომი"
68
+ "no-retries-results": "ხელახალი ცდების ინფორმ���ცია არ არის ხელმისაწვდომი",
69
+ "no-test-steps-results": "ტესტის ნაბიჯების ინფორმაცია ხელმისაწვდომი არ არის",
70
+ "no-test-case-results": "ტესტის შემთხვევის შედეგები არ არის"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "ბლოკერი",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "필터 지우기",
66
66
  "no-attachments-results": "첨부파일 정보를 사용할 수 없습니다",
67
67
  "no-history-results": "기록 정보를 사용할 수 없습니다",
68
- "no-retries-results": "재시도 정보를 사용할 수 없습니다"
68
+ "no-retries-results": "재시도 정보를 사용할 수 없습니다",
69
+ "no-test-steps-results": "테스트 단계 정보가 없습니다",
70
+ "no-test-case-results": "테스트 케이스 결과가 없습니다"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "차단자",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Filters wissen",
66
66
  "no-attachments-results": "Geen bijlageninformatie beschikbaar",
67
67
  "no-history-results": "Geen geschiedenisinformatie beschikbaar",
68
- "no-retries-results": "Geen herhalingsinformatie beschikbaar"
68
+ "no-retries-results": "Geen herhalingsinformatie beschikbaar",
69
+ "no-test-steps-results": "Geen informatie over teststappen beschikbaar",
70
+ "no-test-case-results": "Geen testresultaten"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "blokkerend",
@@ -62,7 +62,9 @@
62
62
  "clear-filters": "Wyczyść filtry",
63
63
  "no-attachments-results": "Brak dostępnych informacji o załącznikach",
64
64
  "no-history-results": "Brak dostępnych informacji o historii",
65
- "no-retries-results": "Brak dostępnych informacji o ponownych próbach"
65
+ "no-retries-results": "Brak dostępnych informacji o ponownych próbach",
66
+ "no-test-steps-results": "Brak dostępnych informacji o krokach testowych",
67
+ "no-test-case-results": "Brak wyników przypadków testowych"
66
68
  },
67
69
  "severity": {
68
70
  "name": "Ważność",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Limpar filtros",
66
66
  "no-attachments-results": "Nenhuma informação de anexos disponível",
67
67
  "no-history-results": "Nenhuma informação de histórico disponível",
68
- "no-retries-results": "Nenhuma informação de repetições disponível"
68
+ "no-retries-results": "Nenhuma informação de repetições disponível",
69
+ "no-test-steps-results": "Nenhuma informação disponível sobre as etapas do teste",
70
+ "no-test-case-results": "Nenhum resultado de caso de teste"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "bloqueador",
@@ -62,7 +62,9 @@
62
62
  "clear-filters": "Очистить фильтры",
63
63
  "no-attachments-results": "Информация о вложениях отсутствует",
64
64
  "no-history-results": "Информация об истории отсутствует",
65
- "no-retries-results": "Информация о перезапусках отсутствует"
65
+ "no-retries-results": "Информация о перезапусках отсутствует",
66
+ "no-test-steps-results": "Нет информации о шагах тестирования",
67
+ "no-test-case-results": "Нет результатов тест-кейсов"
66
68
  },
67
69
  "severity": {
68
70
  "name": "Важность",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Rensa filter",
66
66
  "no-attachments-results": "Ingen bilaga information tillgänglig",
67
67
  "no-history-results": "Ingen historik information tillgänglig",
68
- "no-retries-results": "Ingen omtagningar information tillgänglig"
68
+ "no-retries-results": "Ingen omtagningar information tillgänglig",
69
+ "no-test-steps-results": "Ingen information om teststeg tillgänglig",
70
+ "no-test-case-results": "Inga testfallresultat"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "blockerare",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "Filtreleri temizle",
66
66
  "no-attachments-results": "Ek bilgisi mevcut değil",
67
67
  "no-history-results": "Geçmiş bilgisi mevcut değil",
68
- "no-retries-results": "Tekrar deneme bilgisi mevcut değil"
68
+ "no-retries-results": "Tekrar deneme bilgisi mevcut değil",
69
+ "no-test-steps-results": "Test adımları hakkında bilgi mevcut değil",
70
+ "no-test-case-results": "Test vakası sonuçları yok"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "engelleyici",
@@ -65,7 +65,9 @@
65
65
  "clear-filters": "清除过滤器",
66
66
  "no-attachments-results": "没有附件信息",
67
67
  "no-history-results": "没有历史信息",
68
- "no-retries-results": "没有重试信息"
68
+ "no-retries-results": "没有重试信息",
69
+ "no-test-steps-results": "没有可用的测试步骤信息",
70
+ "no-test-case-results": "没有测试用例结果"
69
71
  },
70
72
  "severity": {
71
73
  "blocker": "阻断",
package/src/index.html CHANGED
@@ -2,6 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Allure Awesome</title>
5
+ <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" />
5
6
  <base href="http://localhost:8080" />
6
7
  </head>
7
8
  <body>
package/src/index.tsx CHANGED
@@ -1,8 +1,8 @@
1
+ import "@allurereport/web-components/index.css";
1
2
  import { render } from "preact";
2
- import "preact/debug";
3
3
  import { useEffect, useState } from "preact/hooks";
4
4
  import "@/assets/scss/index.scss";
5
- import { BaseLayout } from "@/components/app/BaseLayout";
5
+ import { BaseLayout } from "@/components/BaseLayout";
6
6
  import { isMac } from "@/utils/isMac";
7
7
 
8
8
  const App = () => {
@@ -1,4 +1,4 @@
1
1
  export * from "./theme";
2
- export * from "./types";
2
+ export type * from "./types";
3
3
  export * from "./stats";
4
4
  export * from "./locale";
@@ -3,13 +3,17 @@ import { signal } from "@preact/signals";
3
3
  import { type AllureAwesomeTestResult } from "../../types";
4
4
  import { type StoreSignalState } from "./types";
5
5
 
6
- export const testResultStore = signal<StoreSignalState<Record<string, AllureAwesomeTestResult>>>({
6
+ export type TestResultsStoreState = Record<string, AllureAwesomeTestResult>;
7
+
8
+ export type TestResultNavStoreState = string[];
9
+
10
+ export const testResultStore = signal<StoreSignalState<TestResultsStoreState>>({
7
11
  loading: true,
8
12
  error: undefined,
9
13
  data: undefined,
10
14
  });
11
15
 
12
- export const testResultNavStore = signal<StoreSignalState<string[]>>({
16
+ export const testResultNavStore = signal<StoreSignalState<TestResultNavStoreState>>({
13
17
  loading: true,
14
18
  error: undefined,
15
19
  data: undefined,