@allurereport/web-awesome 3.8.2 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +112 -0
  2. package/allurerc-dev.mjs +10 -0
  3. package/dist/multi/121.app-b18cce138691927e8759.js +1 -0
  4. package/dist/multi/173.app-b18cce138691927e8759.js +1 -0
  5. package/dist/multi/174.app-b18cce138691927e8759.js +1 -0
  6. package/dist/multi/252.app-b18cce138691927e8759.js +1 -0
  7. package/dist/multi/282.app-b18cce138691927e8759.js +1 -0
  8. package/dist/multi/29.app-b18cce138691927e8759.js +1 -0
  9. package/dist/multi/310.app-b18cce138691927e8759.js +1 -0
  10. package/dist/multi/416.app-b18cce138691927e8759.js +1 -0
  11. package/dist/multi/507.app-b18cce138691927e8759.js +1 -0
  12. package/dist/multi/527.app-b18cce138691927e8759.js +1 -0
  13. package/dist/multi/600.app-b18cce138691927e8759.js +1 -0
  14. package/dist/multi/605.app-b18cce138691927e8759.js +1 -0
  15. package/dist/multi/638.app-b18cce138691927e8759.js +1 -0
  16. package/dist/multi/672.app-b18cce138691927e8759.js +1 -0
  17. package/dist/multi/686.app-b18cce138691927e8759.js +1 -0
  18. package/dist/multi/725.app-b18cce138691927e8759.js +1 -0
  19. package/dist/multi/741.app-b18cce138691927e8759.js +1 -0
  20. package/dist/multi/749.app-b18cce138691927e8759.js +1 -0
  21. package/dist/multi/755.app-b18cce138691927e8759.js +1 -0
  22. package/dist/multi/779.app-b18cce138691927e8759.js +1 -0
  23. package/dist/multi/894.app-b18cce138691927e8759.js +1 -0
  24. package/dist/multi/943.app-b18cce138691927e8759.js +1 -0
  25. package/dist/multi/980.app-b18cce138691927e8759.js +1 -0
  26. package/dist/multi/app-b18cce138691927e8759.js +2 -0
  27. package/dist/multi/manifest.json +26 -23
  28. package/dist/multi/styles-212da6c68fa0beb4c6c5.css +1 -0
  29. package/dist/multi/styles-5c882b14b6f3112e40c4.css +1 -0
  30. package/dist/multi/styles-a4f65de86208f79dd2be.css +58 -0
  31. package/dist/single/app-733f473da7b51f98876d.js +2 -0
  32. package/dist/single/manifest.json +1 -1
  33. package/package.json +19 -14
  34. package/src/assets/scss/_common.scss +2 -2
  35. package/src/assets/scss/index.scss +8 -6
  36. package/src/components/BaseLayout/index.tsx +14 -2
  37. package/src/components/BaseLayout/styles.scss +5 -5
  38. package/src/components/Categories/CategoryHeaderItem/styles.scss +2 -2
  39. package/src/components/Categories/CategoryTreeItem/styles.scss +2 -2
  40. package/src/components/Categories/GroupTreeItem/styles.scss +4 -5
  41. package/src/components/Categories/HistoryTreeItem/styles.scss +2 -2
  42. package/src/components/Categories/LabelTreeItem/styles.scss +2 -2
  43. package/src/components/Categories/MessageTreeItem/index.tsx +1 -1
  44. package/src/components/Categories/MessageTreeItem/styles.scss +18 -18
  45. package/src/components/Categories/sticky.ts +1 -1
  46. package/src/components/Footer/FooterVersion.tsx +5 -10
  47. package/src/components/Footer/index.tsx +7 -1
  48. package/src/components/Footer/styles.scss +8 -2
  49. package/src/components/Header/CiInfo/index.tsx +17 -13
  50. package/src/components/Header/CiInfo/styles.scss +1 -1
  51. package/src/components/Header/styles.scss +2 -2
  52. package/src/components/HeaderControls/index.tsx +1 -3
  53. package/src/components/HotkeysProvider/index.tsx +556 -0
  54. package/src/components/KeyboardShortcuts/index.tsx +73 -0
  55. package/src/components/KeyboardShortcuts/shortcutsConfig.ts +91 -0
  56. package/src/components/KeyboardShortcuts/styles.scss +69 -0
  57. package/src/components/MainReport/index.tsx +89 -72
  58. package/src/components/MainReport/styles.scss +20 -5
  59. package/src/components/Metadata/index.tsx +27 -6
  60. package/src/components/Metadata/styles.scss +21 -9
  61. package/src/components/MetadataButton/index.tsx +2 -0
  62. package/src/components/MetadataButton/styles.scss +1 -1
  63. package/src/components/NavTabs/styles.scss +8 -8
  64. package/src/components/ReportBody/styles.scss +3 -4
  65. package/src/components/ReportCategories/styles.scss +1 -1
  66. package/src/components/ReportFilters/styles.scss +1 -1
  67. package/src/components/ReportGlobalAttachments/styles.scss +1 -1
  68. package/src/components/ReportGlobalErrors/styles.scss +1 -1
  69. package/src/components/ReportHeader/index.tsx +25 -13
  70. package/src/components/ReportHeader/styles.scss +2 -2
  71. package/src/components/ReportMetadata/index.tsx +44 -15
  72. package/src/components/ReportMetadata/styles.scss +6 -6
  73. package/src/components/ReportQualityGateResults/styles.scss +2 -2
  74. package/src/components/ReportSearch/index.tsx +1 -5
  75. package/src/components/ReportTabs/styles.scss +9 -9
  76. package/src/components/SectionSwitcher/index.tsx +87 -10
  77. package/src/components/SideBySide/index.tsx +20 -2
  78. package/src/components/SideBySide/styles.scss +9 -1
  79. package/src/components/SplitLayout/index.tsx +11 -2
  80. package/src/components/SplitLayout/styles.scss +23 -4
  81. package/src/components/TestResult/TestStepsEmpty/styles.scss +1 -1
  82. package/src/components/TestResult/TrDescription/styles.scss +1 -1
  83. package/src/components/TestResult/TrDropdown/index.tsx +2 -2
  84. package/src/components/TestResult/TrDropdown/styles.scss +1 -1
  85. package/src/components/TestResult/TrEmpty/styles.scss +1 -1
  86. package/src/components/TestResult/TrEnvironmentItem/styles.scss +4 -4
  87. package/src/components/TestResult/TrError/index.tsx +32 -7
  88. package/src/components/TestResult/TrError/styles.scss +23 -23
  89. package/src/components/TestResult/TrHeader/styles.scss +2 -2
  90. package/src/components/TestResult/TrHistory/styles.scss +6 -6
  91. package/src/components/TestResult/TrInfo/styles.scss +8 -8
  92. package/src/components/TestResult/TrLinks/index.tsx +2 -2
  93. package/src/components/TestResult/TrLinks/styles.scss +2 -2
  94. package/src/components/TestResult/TrMetadata/index.tsx +1 -1
  95. package/src/components/TestResult/TrMetadata/styles.scss +1 -1
  96. package/src/components/TestResult/TrNavigation/index.tsx +1 -1
  97. package/src/components/TestResult/TrNavigation/styles.scss +2 -2
  98. package/src/components/TestResult/TrOverview.tsx +2 -0
  99. package/src/components/TestResult/TrParameters/index.tsx +1 -1
  100. package/src/components/TestResult/TrParameters/styles.scss +1 -1
  101. package/src/components/TestResult/TrPrevStatuses/styles.scss +8 -8
  102. package/src/components/TestResult/TrPwTraces/styles.scss +1 -1
  103. package/src/components/TestResult/TrRetriesView/TrRetriesItem.tsx +27 -1
  104. package/src/components/TestResult/TrRetriesView/styles.scss +20 -10
  105. package/src/components/TestResult/TrSetup/index.tsx +10 -4
  106. package/src/components/TestResult/TrSeverity/styles.scss +7 -7
  107. package/src/components/TestResult/TrStatus/styles.scss +2 -35
  108. package/src/components/TestResult/TrSteps/TrAttachment.tsx +79 -43
  109. package/src/components/TestResult/TrSteps/TrAttachmentInfo.tsx +44 -17
  110. package/src/components/TestResult/TrSteps/TrBodyItems.tsx +5 -2
  111. package/src/components/TestResult/TrSteps/TrErrorStep.tsx +3 -0
  112. package/src/components/TestResult/TrSteps/TrStep.tsx +15 -6
  113. package/src/components/TestResult/TrSteps/TrStepHeader.tsx +8 -5
  114. package/src/components/TestResult/TrSteps/index.tsx +7 -5
  115. package/src/components/TestResult/TrSteps/stepTreeExpansion.ts +27 -9
  116. package/src/components/TestResult/TrSteps/styles.scss +80 -20
  117. package/src/components/TestResult/TrTeardown/index.tsx +10 -4
  118. package/src/components/TestResult/bodyItems.ts +1 -1
  119. package/src/components/TestResult/index.tsx +8 -2
  120. package/src/components/TestResult/styles.scss +10 -1
  121. package/src/components/TestResult/trOverviewFocus.scss +4 -0
  122. package/src/components/Timeline/styles.scss +6 -6
  123. package/src/components/Tree/index.tsx +79 -5
  124. package/src/components/Tree/styles.scss +55 -35
  125. package/src/hooks/useTestResultOverviewFocusScroll.ts +23 -0
  126. package/src/index.html +30 -33
  127. package/src/index.tsx +12 -6
  128. package/src/locales/ar.json +62 -1
  129. package/src/locales/az.json +62 -1
  130. package/src/locales/de.json +62 -1
  131. package/src/locales/en.json +62 -1
  132. package/src/locales/es.json +62 -1
  133. package/src/locales/fr.json +62 -1
  134. package/src/locales/he.json +62 -1
  135. package/src/locales/hy.json +62 -1
  136. package/src/locales/it.json +62 -1
  137. package/src/locales/ja.json +62 -1
  138. package/src/locales/ka.json +62 -1
  139. package/src/locales/kr.json +62 -1
  140. package/src/locales/nl.json +62 -1
  141. package/src/locales/pl.json +62 -1
  142. package/src/locales/pt.json +62 -1
  143. package/src/locales/ru.json +62 -1
  144. package/src/locales/sv.json +62 -1
  145. package/src/locales/tr.json +62 -1
  146. package/src/locales/uk.json +62 -1
  147. package/src/locales/zh-TW.json +62 -1
  148. package/src/locales/zh.json +62 -1
  149. package/src/stores/keyboard.ts +371 -0
  150. package/src/stores/keyboardActions.ts +769 -0
  151. package/src/stores/locale.ts +5 -2
  152. package/src/stores/reportEnvSections.ts +6 -0
  153. package/src/stores/reportRootTabs.ts +95 -0
  154. package/src/stores/search.ts +147 -0
  155. package/src/stores/testResultOverviewNav.ts +119 -0
  156. package/src/stores/testResultTabs.ts +62 -0
  157. package/src/stores/timeline.ts +1 -1
  158. package/src/stores/tree.ts +42 -4
  159. package/src/stores/treeFilters/store.ts +3 -36
  160. package/src/stores/treeSort.ts +7 -1
  161. package/src/styles/_pane-active.scss +8 -0
  162. package/src/styles.scss +1 -1
  163. package/src/utils/atSeparator.ts +4 -0
  164. package/src/utils/flattenTestResultOverview.ts +182 -0
  165. package/src/utils/time.ts +2 -1
  166. package/src/utils/trOverviewFocus.ts +18 -0
  167. package/src/utils/treeFilters.ts +15 -4
  168. package/test/components/EnvironmentPicker.test.tsx +21 -3
  169. package/test/components/Footer.test.tsx +26 -0
  170. package/test/components/Header/CiInfo.test.tsx +56 -0
  171. package/test/components/Header.test.tsx +8 -0
  172. package/test/components/HeaderControls.test.tsx +28 -0
  173. package/test/components/ReportGlobals.test.tsx +9 -1
  174. package/test/components/ReportHeader.test.tsx +77 -0
  175. package/test/components/ReportMetadata.test.tsx +131 -0
  176. package/test/components/TestResult/PwTraceButton.test.tsx +8 -0
  177. package/test/components/TestResult/TrErrorStep.test.tsx +8 -0
  178. package/test/components/TestResult/TrOverview.test.tsx +30 -10
  179. package/test/components/TestResult/TrRetriesItem.test.tsx +163 -0
  180. package/test/components/TestResult/TrSteps.test.tsx +108 -0
  181. package/test/components/TestResult/bodyItems.test.ts +9 -1
  182. package/test/components/TestResult/openPwTraceInNewTab.test.ts +8 -0
  183. package/test/components/TestResult/stepTreeExpansion.test.ts +10 -2
  184. package/test/components/Timeline.test.tsx +15 -7
  185. package/test/stores/keyboard/keyboardActions.test.ts +615 -0
  186. package/test/stores/search.test.ts +143 -0
  187. package/test/stores/treeFilters/actions.test.ts +8 -0
  188. package/test/stores/treeSort.test.ts +58 -0
  189. package/test/utils/flattenTestResultOverview.test.ts +57 -0
  190. package/test/utils/ownerAddress.test.ts +9 -1
  191. package/test/utils/time.test.ts +52 -0
  192. package/test/utils/treeFilters.test.ts +113 -1
  193. package/types.d.ts +39 -0
  194. package/webpack.config.js +12 -7
  195. package/CONTRIBUTING.md +0 -34
  196. package/dist/multi/173.app-f008fb8342025f2b1ace.js +0 -1
  197. package/dist/multi/174.app-f008fb8342025f2b1ace.js +0 -1
  198. package/dist/multi/252.app-f008fb8342025f2b1ace.js +0 -1
  199. package/dist/multi/282.app-f008fb8342025f2b1ace.js +0 -1
  200. package/dist/multi/29.app-f008fb8342025f2b1ace.js +0 -1
  201. package/dist/multi/310.app-f008fb8342025f2b1ace.js +0 -1
  202. package/dist/multi/416.app-f008fb8342025f2b1ace.js +0 -1
  203. package/dist/multi/507.app-f008fb8342025f2b1ace.js +0 -1
  204. package/dist/multi/527.app-f008fb8342025f2b1ace.js +0 -1
  205. package/dist/multi/600.app-f008fb8342025f2b1ace.js +0 -1
  206. package/dist/multi/605.app-f008fb8342025f2b1ace.js +0 -1
  207. package/dist/multi/638.app-f008fb8342025f2b1ace.js +0 -1
  208. package/dist/multi/672.app-f008fb8342025f2b1ace.js +0 -1
  209. package/dist/multi/686.app-f008fb8342025f2b1ace.js +0 -1
  210. package/dist/multi/725.app-f008fb8342025f2b1ace.js +0 -1
  211. package/dist/multi/741.app-f008fb8342025f2b1ace.js +0 -1
  212. package/dist/multi/749.app-f008fb8342025f2b1ace.js +0 -1
  213. package/dist/multi/755.app-f008fb8342025f2b1ace.js +0 -1
  214. package/dist/multi/894.app-f008fb8342025f2b1ace.js +0 -1
  215. package/dist/multi/943.app-f008fb8342025f2b1ace.js +0 -1
  216. package/dist/multi/980.app-f008fb8342025f2b1ace.js +0 -1
  217. package/dist/multi/app-f008fb8342025f2b1ace.js +0 -2
  218. package/dist/multi/styles-9f7a23a0c8b79fa76981.css +0 -58
  219. package/dist/single/app-07332238da9897064301.js +0 -2
  220. package/src/assets/scss/day.scss +0 -53
  221. package/src/assets/scss/fonts.scss +0 -3
  222. package/src/assets/scss/night.scss +0 -63
  223. package/src/assets/scss/palette.scss +0 -393
  224. package/src/assets/scss/theme.scss +0 -330
  225. package/src/assets/scss/vars.scss +0 -11
  226. /package/dist/multi/{app-f008fb8342025f2b1ace.js.LICENSE.txt → app-b18cce138691927e8759.js.LICENSE.txt} +0 -0
  227. /package/dist/single/{app-07332238da9897064301.js.LICENSE.txt → app-733f473da7b51f98876d.js.LICENSE.txt} +0 -0
@@ -29,7 +29,7 @@
29
29
  border-radius: 4px;
30
30
 
31
31
  &:hover {
32
- background: var(--bg-control-flat-medium);
32
+ background: var(--color-row-bg-hover);
33
33
  }
34
34
  }
35
35
 
@@ -20,6 +20,6 @@
20
20
  }
21
21
 
22
22
  .test-result-thumb-text {
23
- color: var(--on-text-secondary);
23
+ color: var(--color-text-secondary);
24
24
  flex: 1 1 auto;
25
25
  }
@@ -3,7 +3,7 @@
3
3
  cursor: pointer;
4
4
 
5
5
  &:hover {
6
- background: var(--bg-control-flat-medium);
6
+ background: var(--color-row-bg-hover);
7
7
  }
8
8
  }
9
9
  }
@@ -44,15 +44,15 @@
44
44
  .test-result-environment-item-time {
45
45
  margin-left: auto;
46
46
  line-height: 20px;
47
- color: var(--on-text-secondary);
47
+ color: var(--color-text-secondary);
48
48
  }
49
49
 
50
50
  .test-result-environment-item-link {
51
51
  :root {
52
- --allure-btn-icon-color: var(--bg-control-flat);
52
+ --allure-btn-icon-color: var(--color-control-bg-ghost);
53
53
  }
54
54
 
55
- color: var(--on-icon-secondary);
55
+ color: var(--color-icon-secondary);
56
56
  }
57
57
 
58
58
  .test-result-environment-item-status {
@@ -15,15 +15,15 @@ import * as styles from "./styles.scss";
15
15
 
16
16
  const TrErrorTrace = ({ trace }: { trace: string }) => {
17
17
  const sanitizedTrace = ansiToHTML(trace, {
18
- fg: "var(--on-text-primary)",
18
+ fg: "var(--color-text-primary)",
19
19
  bg: "none",
20
20
  colors: {
21
21
  0: "none",
22
22
  1: "none",
23
- 2: "var(--on-support-sirius)",
24
- 3: "var(--on-support-atlas)",
25
- 4: "var(--bg-support-skat)",
26
- 5: "var(--on-support-betelgeuse)",
23
+ 2: "var(--color-intent-info-text)",
24
+ 3: "var(--color-intent-warning-text)",
25
+ 4: "var(--color-status-unknown-chart)",
26
+ 5: "var(--color-syntax-type)",
27
27
  },
28
28
  });
29
29
 
@@ -55,7 +55,7 @@ export const TrError: FunctionalComponent<
55
55
  const sanitizedMessage =
56
56
  showMessage && message
57
57
  ? ansiToHTML(message, {
58
- fg: "var(--on-text-primary)",
58
+ fg: "var(--color-text-primary)",
59
59
  colors: {},
60
60
  })
61
61
  : "";
@@ -98,7 +98,32 @@ export const TrError: FunctionalComponent<
98
98
  ) : showMessage ? (
99
99
  empty("no-message-provided")
100
100
  ) : null}
101
- {hasDiff && (
101
+ {!showMessage && message && (
102
+ <div className={styles["test-result-error-header"]}>
103
+ {hasDiff ? (
104
+ <Button
105
+ style={"flat"}
106
+ data-testId={"test-result-diff-button"}
107
+ size={"s"}
108
+ text={tooltip("showDiff")}
109
+ onClick={openDiff}
110
+ />
111
+ ) : (
112
+ <span />
113
+ )}
114
+ <TooltipWrapper tooltipText={tooltip("clipboard")} tooltipTextAfterClick={tooltip("clipboardSuccess")}>
115
+ <IconButton
116
+ style={"ghost"}
117
+ size={"s"}
118
+ icon={allureIcons.lineGeneralCopy3}
119
+ onClick={() => {
120
+ copyToClipboard(message);
121
+ }}
122
+ />
123
+ </TooltipWrapper>
124
+ </div>
125
+ )}
126
+ {(showMessage || !message) && hasDiff && (
102
127
  <Button
103
128
  style={"flat"}
104
129
  data-testId={"test-result-diff-button"}
@@ -1,6 +1,6 @@
1
1
  .test-result-error {
2
2
  padding: 8px 8px 12px 16px;
3
- background-color: var(--bg-alpha-capella);
3
+ background-color: var(--color-status-failed-bg-subtle);
4
4
  border-radius: 8px;
5
5
  position: relative;
6
6
  overflow: hidden;
@@ -18,37 +18,37 @@
18
18
  }
19
19
 
20
20
  .tr-status-failed {
21
- background-color: var(--bg-alpha-capella);
21
+ background-color: var(--color-status-failed-bg-subtle);
22
22
  &:before {
23
- background-color: var(--bg-support-capella);
23
+ background-color: var(--color-status-failed-chart);
24
24
  }
25
25
  }
26
26
 
27
27
  .tr-status-broken {
28
- background-color: var(--bg-alpha-atlas);
28
+ background-color: var(--color-status-broken-bg-subtle);
29
29
  &:before {
30
- background-color: var(--bg-support-atlas);
30
+ background-color: var(--color-status-broken-chart);
31
31
  }
32
32
  }
33
33
 
34
34
  .tr-status-skipped {
35
- background-color: var(--bg-alpha-rau);
35
+ background-color: var(--color-status-skipped-bg-subtle);
36
36
  &:before {
37
- background-color: var(--bg-support-rau);
37
+ background-color: var(--color-status-skipped-chart);
38
38
  }
39
39
  }
40
40
 
41
41
  .tr-status-unknown {
42
- background-color: var(--bg-alpha-skat);
42
+ background-color: var(--color-status-unknown-bg-subtle);
43
43
  &:before {
44
- background-color: var(--bg-support-skat);
44
+ background-color: var(--color-status-unknown-chart);
45
45
  }
46
46
  }
47
47
 
48
48
  .tr-status-passed {
49
- background-color: var(--bg-alpha-castor);
49
+ background-color: var(--color-status-passed-bg-subtle);
50
50
  &:before {
51
- background-color: var(--bg-support-castor);
51
+ background-color: var(--color-status-passed-chart);
52
52
  }
53
53
  }
54
54
 
@@ -61,27 +61,27 @@
61
61
  .test-result-error-text {
62
62
  margin-bottom: 8px;
63
63
  padding-left: 8px;
64
- color: var(--on-support-capella);
64
+ color: var(--color-status-failed-text);
65
65
  margin-right: auto;
66
66
  }
67
67
 
68
68
  .tr-color-failed {
69
- color: var(--on-support-capella);
69
+ color: var(--color-status-failed-text);
70
70
  }
71
71
 
72
72
  .tr-color-broken {
73
- color: var(--on-support-atlas);
73
+ color: var(--color-status-broken-text);
74
74
  }
75
75
 
76
76
  .tr-color-skipped {
77
- color: var(--on-support-rau);
77
+ color: var(--color-status-skipped-text);
78
78
  }
79
79
 
80
80
  .tr-color-passed {
81
- color: var(--on-support-castor);
81
+ color: var(--color-status-passed-text);
82
82
  }
83
83
  .tr-color-unknown {
84
- color: var(--on-support-skat);
84
+ color: var(--color-status-unknown-text);
85
85
  }
86
86
 
87
87
  .test-result-error-trace {
@@ -143,18 +143,18 @@
143
143
  }
144
144
 
145
145
  .diff-green {
146
- color: var(--on-support-castor);
147
- background: #09933729;
146
+ color: var(--color-intent-success-text);
147
+ background: var(--color-intent-success-bg-subtle);
148
148
  }
149
149
 
150
150
  .diff-grey {
151
- color: var(--on-text-secondary);
151
+ color: var(--color-text-secondary);
152
152
  margin-bottom: 4px;
153
153
  }
154
154
 
155
155
  .diff-red {
156
- color: var(--on-support-capella);
157
- background: var(--bg-alpha-capella);
156
+ color: var(--color-intent-danger-text);
157
+ background: var(--color-intent-danger-bg-subtle);
158
158
  }
159
159
 
160
160
  .diff-buttons {
@@ -201,6 +201,6 @@
201
201
  }
202
202
 
203
203
  .diff-buttons-title {
204
- color: var(--on-text-secondary);
204
+ color: var(--color-text-secondary);
205
205
  margin-right: 8px;
206
206
  }
@@ -13,14 +13,14 @@
13
13
  }
14
14
 
15
15
  .test-result-breadcrumb-link {
16
- color: var(--on-text-secondary);
16
+ color: var(--color-text-secondary);
17
17
  }
18
18
 
19
19
  .test-result-breadcrumb {
20
20
  display: flex;
21
21
  min-width: 0;
22
22
  gap: 4px;
23
- color: var(--on-text-secondary);
23
+ color: var(--color-text-secondary);
24
24
  white-space: nowrap;
25
25
  text-overflow: ellipsis;
26
26
  overflow: hidden;
@@ -20,10 +20,10 @@
20
20
  width: 100%;
21
21
  align-items: flex-start;
22
22
  text-decoration: none;
23
- color: var(--on-text-primary);
23
+ color: var(--color-text-primary);
24
24
 
25
25
  &:hover {
26
- background: var(--bg-control-flat-medium);
26
+ background: var(--color-row-bg-hover);
27
27
  }
28
28
  }
29
29
 
@@ -31,7 +31,7 @@
31
31
  padding-top: 2px;
32
32
 
33
33
  &[data-unknown] {
34
- color: var(--on-text-hint);
34
+ color: var(--color-text-muted);
35
35
  }
36
36
  }
37
37
 
@@ -45,15 +45,15 @@
45
45
  .item-time {
46
46
  margin-left: auto;
47
47
  line-height: 20px;
48
- color: var(--on-text-secondary);
48
+ color: var(--color-text-secondary);
49
49
  }
50
50
 
51
51
  .test-result-history-item-link {
52
52
  :root {
53
- --allure-btn-icon-color: var(--bg-control-flat);
53
+ --allure-btn-icon-color: var(--color-control-bg-ghost);
54
54
  }
55
55
 
56
- color: var(--on-icon-secondary);
56
+ color: var(--color-icon-secondary);
57
57
  }
58
58
 
59
59
  .test-result-history-item-status {
@@ -7,7 +7,7 @@
7
7
  left: 0;
8
8
  top: 0;
9
9
  width: 100%;
10
- background: var(--bg-base-primary);
10
+ background: var(--color-bg-primary);
11
11
  z-index: 1;
12
12
  }
13
13
 
@@ -16,8 +16,8 @@
16
16
  left: 0;
17
17
  top: 0;
18
18
  width: 100%;
19
- background: var(--bg-base-primary);
20
- z-index: 1;
19
+ background: var(--color-bg-primary);
20
+ z-index: 2;
21
21
  }
22
22
 
23
23
  .test-result-info-data {
@@ -27,7 +27,7 @@
27
27
  margin-bottom: 8px;
28
28
 
29
29
  & > *:not(:first-child):not(:empty) {
30
- border-left: 1px solid var(--on-border-primary);
30
+ border-left: 1px solid var(--color-border-default);
31
31
  padding-left: 12px;
32
32
  }
33
33
  }
@@ -38,15 +38,15 @@
38
38
  }
39
39
 
40
40
  .test-result-duration {
41
- color: var(--on-text-secondary);
41
+ color: var(--color-text-secondary);
42
42
  }
43
43
 
44
44
  .test-result-category {
45
- color: var(--on-text-secondary);
45
+ color: var(--color-text-secondary);
46
46
  }
47
47
 
48
48
  .test-result-tabs {
49
- border-bottom: 1px solid var(--on-border-primary);
49
+ border-bottom: 1px solid var(--color-border-default);
50
50
  }
51
51
 
52
52
  .test-result-tab {
@@ -69,5 +69,5 @@
69
69
 
70
70
  .metadata-icon {
71
71
  margin-right: 8px;
72
- color: var(--on-icon-secondary);
72
+ color: var(--color-icon-secondary);
73
73
  }
@@ -62,8 +62,8 @@ export type TrLinksProps = {
62
62
 
63
63
  export const TrLinks: FunctionalComponent<TrLinksProps> = ({ id, links }) => {
64
64
  const { t } = useI18n("ui");
65
- const linksId = id !== null ? `${id}-links` : null;
66
- const linksShowAllId = id !== null ? `${id}-links-showAll` : null;
65
+ const linksId = id ? `${id}-links` : null;
66
+ const linksShowAllId = id ? `${id}-links-showAll` : null;
67
67
  const isOpened = !collapsedTrees.value.has(linksId);
68
68
  const showAll = collapsedTrees.value.has(linksShowAllId);
69
69
  const visibleLinks =
@@ -7,7 +7,7 @@
7
7
 
8
8
  .test-result-links-wrapper {
9
9
  width: 100%;
10
- border-bottom: 1px solid var(--on-border-primary);
10
+ border-bottom: 1px solid var(--color-border-default);
11
11
  padding-bottom: 12px;
12
12
  }
13
13
 
@@ -19,7 +19,7 @@
19
19
  }
20
20
 
21
21
  .test-result-link-text {
22
- color: var(--on-support-aldebaran);
22
+ color: var(--color-link-text);
23
23
  }
24
24
 
25
25
  .test-result-links-list {
@@ -19,7 +19,7 @@ export type TrMetadataProps = {
19
19
  export const TrMetadata: FunctionalComponent<TrMetadataProps> = ({ id, testResult }) => {
20
20
  const { t } = useI18n("ui");
21
21
  const { labels, groupedLabels } = testResult ?? {};
22
- const labelsId = id !== null ? `${id}-labels` : null;
22
+ const labelsId = id ? `${id}-labels` : null;
23
23
  const labelsShowAllId = id !== null ? `${id}-labels-showAll` : null;
24
24
  const isOpened = !collapsedTrees.value.has(labelsId);
25
25
  const entries = groupedLabels ? Object.entries(groupedLabels) : [];
@@ -3,6 +3,6 @@
3
3
  }
4
4
 
5
5
  .test-result-metadata-wrapper {
6
- border-bottom: 1px solid var(--on-border-primary);
6
+ border-bottom: 1px solid var(--color-border-default);
7
7
  padding-bottom: 12px;
8
8
  }
@@ -107,7 +107,7 @@ export const TrNavigation = (props: Props) => {
107
107
  return null;
108
108
  }
109
109
 
110
- const isHidden = !!testResult?.hidden;
110
+ const isHidden = !!testResult?.isRetry;
111
111
  const hasFullName = !!testResult?.fullName;
112
112
 
113
113
  // Nothing to show
@@ -19,7 +19,7 @@
19
19
  white-space: nowrap;
20
20
  text-overflow: ellipsis;
21
21
  width: 100%;
22
- color: var(--on-text-secondary);
22
+ color: var(--color-text-secondary);
23
23
  }
24
24
  }
25
25
 
@@ -32,7 +32,7 @@
32
32
  }
33
33
 
34
34
  .counter {
35
- color: var(--on-text-secondary);
35
+ color: var(--color-text-secondary);
36
36
  padding-left: 4px;
37
37
  padding-right: 4px;
38
38
  }
@@ -11,6 +11,7 @@ import { TrPwTraces } from "@/components/TestResult/TrPwTraces";
11
11
  import { TrSetup } from "@/components/TestResult/TrSetup";
12
12
  import { TrSteps } from "@/components/TestResult/TrSteps";
13
13
  import { TrTeardown } from "@/components/TestResult/TrTeardown";
14
+ import { useTestResultOverviewFocusScroll } from "@/hooks/useTestResultOverviewFocusScroll";
14
15
  import { useI18n } from "@/stores/locale";
15
16
  import { currentTrId } from "@/stores/testResult";
16
17
 
@@ -21,6 +22,7 @@ export type TrOverviewProps = {
21
22
  };
22
23
 
23
24
  export const TrOverview: FunctionalComponent<TrOverviewProps> = ({ testResult }) => {
25
+ useTestResultOverviewFocusScroll();
24
26
  const { parameters, groupedLabels, links, descriptionHtml, setup, teardown, id } = testResult || {};
25
27
  const testResultId = id ?? currentTrId.value;
26
28
  const { t } = useI18n("ui");
@@ -18,7 +18,7 @@ export type TrParametersProps = {
18
18
 
19
19
  export const TrParameters: FunctionalComponent<TrParametersProps> = ({ id, parameters }) => {
20
20
  const { t } = useI18n("ui");
21
- const parametersId = id !== null ? `${id}-parameters` : null;
21
+ const parametersId = id ? `${id}-parameters` : null;
22
22
  const parametersShowAllId = id !== null ? `${id}-parameters-showAll` : null;
23
23
  const isOpened = !collapsedTrees.value.has(parametersId);
24
24
  const list = parameters ?? [];
@@ -3,6 +3,6 @@
3
3
  }
4
4
 
5
5
  .test-result-metadata-wrapper {
6
- border-bottom: 1px solid var(--on-border-primary);
6
+ border-bottom: 1px solid var(--color-border-default);
7
7
  padding-bottom: 12px;
8
8
  }
@@ -20,35 +20,35 @@
20
20
  top: 0;
21
21
  bottom: 0;
22
22
  margin: auto;
23
- background: var(--on-border-medium);
23
+ background: var(--color-border-medium);
24
24
  }
25
25
  }
26
26
  }
27
27
 
28
28
  .status-passed {
29
- color: var(--bg-support-castor);
29
+ color: var(--color-status-passed-chart);
30
30
  }
31
31
 
32
32
  .status-failed {
33
- color: var(--bg-support-capella);
33
+ color: var(--color-status-failed-chart);
34
34
  }
35
35
 
36
36
  .status-broken {
37
- color: var(--bg-support-atlas);
37
+ color: var(--color-status-broken-chart);
38
38
  }
39
39
 
40
40
  .status-skipped {
41
- color: var(--bg-support-rau);
41
+ color: var(--color-status-skipped-chart);
42
42
  }
43
43
 
44
44
  .status-unknown {
45
- color: var(--bg-support-skat);
45
+ color: var(--color-status-unknown-chart);
46
46
  }
47
47
 
48
48
  .test-result-prev-status-tooltip {
49
49
  text-align: center;
50
- background-color: var(--constant-bg-base-modal);
51
- color: var(--constant-on-text-primary);
50
+ background-color: var(--color-bg-inverse-raised);
51
+ color: var(--color-text-inverse);
52
52
  padding: 2px 8px;
53
53
  border-radius: 6px;
54
54
  font-size: 12px;
@@ -3,7 +3,7 @@
3
3
  }
4
4
 
5
5
  .tr-metadata-wrapper {
6
- border-bottom: 1px solid var(--on-border-primary);
6
+ border-bottom: 1px solid var(--color-border-default);
7
7
  padding-top: 8px;
8
8
  padding-bottom: 12px;
9
9
  }
@@ -4,6 +4,7 @@ import type { FunctionalComponent } from "preact";
4
4
  import { useState } from "preact/hooks";
5
5
  import type { AwesomeTestResult } from "types";
6
6
 
7
+ import { hasErrorDiff } from "@/components/TestResult/bodyItems";
7
8
  import { TrError } from "@/components/TestResult/TrError";
8
9
  import { useI18n } from "@/stores/locale";
9
10
  import { navigateToTestResult } from "@/stores/router";
@@ -22,13 +23,15 @@ export const TrRetriesItem: FunctionalComponent<TrRetriesItemProps> = ({ testRes
22
23
  const [isOpened, setIsOpen] = useState(false);
23
24
 
24
25
  const { t } = useI18n("ui");
26
+ const { t: controls } = useI18n("controls");
25
27
 
26
28
  const retryTitlePrefix = t("attempt", { attempt, total: totalAttempts });
27
29
  const convertedStop = stop ? timestampToDate(stop) : undefined;
28
30
  const retryTitle = convertedStop ? `${retryTitlePrefix} – ${convertedStop}` : retryTitlePrefix;
29
31
 
30
32
  const formattedDuration = typeof duration === "number" ? formatDuration(duration) : undefined;
31
- const hasErrorDetails = Boolean(error?.trace || error?.message);
33
+ const errorPreview = getErrorPreview(error, controls("comparison"));
34
+ const hasErrorDetails = Boolean(errorPreview);
32
35
 
33
36
  return (
34
37
  <div data-testid="test-result-retries-item">
@@ -45,6 +48,16 @@ export const TrRetriesItem: FunctionalComponent<TrRetriesItemProps> = ({ testRes
45
48
  <Text data-testid="test-result-retries-item-text" className={styles["test-result-retries-item-text"]}>
46
49
  {retryTitle}
47
50
  </Text>
51
+ {errorPreview && (
52
+ <Text
53
+ data-testid="test-result-retries-item-error-preview"
54
+ type="ui"
55
+ size="s"
56
+ className={styles["test-result-retries-item-error-preview"]}
57
+ >
58
+ {errorPreview}
59
+ </Text>
60
+ )}
48
61
  <div className={styles["test-result-retries-item-info"]}>
49
62
  {Boolean(formattedDuration) && (
50
63
  <Text type="ui" size={"s"} className={styles["item-time"]}>
@@ -70,3 +83,16 @@ export const TrRetriesItem: FunctionalComponent<TrRetriesItemProps> = ({ testRes
70
83
  </div>
71
84
  );
72
85
  };
86
+
87
+ const getErrorPreview = (error: AwesomeTestResult["error"], diffPreview: string) => {
88
+ const message = error?.message?.trim();
89
+ if (message) return message;
90
+
91
+ const tracePreview = error?.trace
92
+ ?.split(/\r?\n/)
93
+ .map((line) => line.trim())
94
+ .find(Boolean);
95
+ if (tracePreview) return tracePreview;
96
+
97
+ if (hasErrorDiff(error)) return diffPreview;
98
+ };
@@ -20,34 +20,44 @@
20
20
 
21
21
  .test-result-retries-item-wrap {
22
22
  transition: background-color 300ms;
23
- display: flex;
23
+ display: grid;
24
+ grid-template-columns: auto auto minmax(0, 1fr) max-content;
24
25
  gap: 4px;
25
- justify-content: space-between;
26
26
  border-radius: 6px;
27
27
  padding: 4px;
28
28
  width: 100%;
29
- align-items: flex-start;
29
+ align-items: center;
30
30
 
31
31
  &:hover {
32
- background: var(--bg-control-flat-medium);
32
+ background: var(--color-row-bg-hover);
33
33
  }
34
34
  }
35
35
 
36
36
  .test-result-retries-item-text {
37
- padding-top: 2px;
37
+ flex: 0 0 auto;
38
+ }
39
+
40
+ .test-result-retries-item-error-preview {
41
+ flex: 1 1 auto;
42
+ color: var(--on-text-secondary);
43
+ overflow: hidden;
44
+ text-overflow: ellipsis;
45
+ white-space: nowrap;
46
+ min-width: 0;
38
47
  }
39
48
 
40
49
  .test-result-retries-item-info {
41
50
  display: flex;
42
51
  gap: 4px;
43
52
  align-items: center;
44
- margin-left: auto;
53
+ justify-content: flex-end;
54
+ margin-left: 8px;
45
55
  }
46
56
 
47
57
  .item-time {
48
- margin-left: auto;
49
- line-height: 20px;
50
- color: var(--on-text-secondary);
58
+ color: var(--color-text-secondary);
59
+ line-height: 16px;
60
+ white-space: nowrap;
51
61
  }
52
62
 
53
63
  .test-result-retries-item-content {
@@ -55,7 +65,7 @@
55
65
  }
56
66
 
57
67
  .test-result-retries-item-link {
58
- color: var(--on-icon-secondary);
68
+ color: var(--color-icon-secondary);
59
69
  }
60
70
 
61
71
  .test-result-retries-item-status {