@allurereport/web-awesome 3.0.0-beta.6 → 3.0.0-beta.8

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 (251) hide show
  1. package/.eslintrc.cjs +4 -1
  2. package/dist/multi/141.app-4375537b.js +1 -0
  3. package/dist/multi/222.app-4375537b.js +1 -0
  4. package/dist/multi/335.app-4375537b.js +1 -0
  5. package/dist/multi/34.app-4375537b.js +1 -0
  6. package/dist/multi/349.app-4375537b.js +1 -0
  7. package/dist/multi/378.app-4375537b.js +1 -0
  8. package/dist/multi/406.app-4375537b.js +1 -0
  9. package/dist/multi/476.app-4375537b.js +1 -0
  10. package/dist/multi/53.app-4375537b.js +1 -0
  11. package/dist/multi/584.app-4375537b.js +1 -0
  12. package/dist/multi/690.app-4375537b.js +1 -0
  13. package/dist/multi/747.app-4375537b.js +1 -0
  14. package/dist/multi/767.app-4375537b.js +1 -0
  15. package/dist/multi/83.app-4375537b.js +1 -0
  16. package/dist/multi/873.app-4375537b.js +1 -0
  17. package/dist/multi/920.app-4375537b.js +1 -0
  18. package/dist/multi/991.app-4375537b.js +1 -0
  19. package/dist/multi/app-4375537b.js +2 -0
  20. package/dist/multi/manifest.json +20 -20
  21. package/dist/multi/styles-4375537b.css +283 -0
  22. package/dist/single/app-f16f6693.js +2 -0
  23. package/dist/single/manifest.json +1 -1
  24. package/package.json +6 -4
  25. package/src/assets/scss/fonts.scss +2 -20
  26. package/src/components/{app/ArrowButton → ArrowButton}/index.tsx +3 -4
  27. package/src/components/{app/BaseLayout → BaseLayout}/index.tsx +17 -16
  28. package/src/components/{app/Footer → Footer}/FooterLogo.tsx +2 -2
  29. package/src/components/Footer/FooterVersion.tsx +33 -0
  30. package/src/components/Footer/index.tsx +13 -0
  31. package/src/components/Header/index.tsx +14 -0
  32. package/src/components/{app/LanguagePicker → LanguagePicker}/index.tsx +2 -3
  33. package/src/components/MainReport/index.tsx +19 -0
  34. package/src/components/{app/Metadata → Metadata}/index.tsx +23 -16
  35. package/src/components/{app/Metadata → Metadata}/styles.scss +1 -1
  36. package/src/components/{app/MetadataButton → MetadataButton}/index.tsx +3 -4
  37. package/src/components/{app/Modal → Modal}/index.tsx +9 -19
  38. package/src/components/{app/ReportBody → ReportBody}/Filters.tsx +7 -11
  39. package/src/components/{app/ReportBody → ReportBody}/HeaderActions.tsx +1 -1
  40. package/src/components/{app/ReportBody → ReportBody}/SortBy.tsx +12 -14
  41. package/src/components/{app/ReportBody → ReportBody}/index.tsx +2 -2
  42. package/src/components/{app/ReportHeader → ReportHeader}/ReportHeaderLabelList.tsx +2 -2
  43. package/src/components/{app/ReportHeader → ReportHeader}/ReportHeaderLogo.tsx +2 -2
  44. package/src/components/{app/ReportHeader → ReportHeader}/ReportHeaderPie.tsx +2 -2
  45. package/src/components/{app/ReportHeader → ReportHeader}/index.tsx +5 -5
  46. package/src/components/{app/ReportLogo → ReportLogo}/index.tsx +3 -4
  47. package/src/components/{app/ReportLogoFull → ReportLogoFull}/index.tsx +3 -4
  48. package/src/components/{app/ReportMetadata → ReportMetadata}/MetadataItem.tsx +2 -2
  49. package/src/components/{app/ReportMetadata → ReportMetadata}/MetadataSummary.tsx +8 -10
  50. package/src/components/{app/ReportMetadata → ReportMetadata}/MetadataTestType.tsx +5 -5
  51. package/src/components/ReportMetadata/MetadataWithIcon.tsx +21 -0
  52. package/src/components/{app/ReportMetadata → ReportMetadata}/index.tsx +5 -5
  53. package/src/components/{app/ReportMetadata → ReportMetadata}/styles.scss +1 -1
  54. package/src/components/{app/Tabs → Tabs}/index.tsx +1 -1
  55. package/src/components/{app/TestResult → TestResult}/TestResultAttachmentsView/index.tsx +1 -1
  56. package/src/components/{app/TestResult → TestResult}/TestResultDescription/index.tsx +4 -4
  57. package/src/components/TestResult/TestResultDropdown/index.tsx +23 -0
  58. package/src/components/{app/TestResult → TestResult}/TestResultEmpty/index.tsx +5 -6
  59. package/src/components/TestResult/TestResultError/index.tsx +59 -0
  60. package/src/components/{app/TestResult → TestResult}/TestResultHeader/index.tsx +10 -10
  61. package/src/components/{app/TestResult → TestResult}/TestResultHistory/TestResultHistoryItem.tsx +16 -17
  62. package/src/components/{app/TestResult → TestResult}/TestResultHistory/index.tsx +2 -2
  63. package/src/components/{app/TestResult → TestResult}/TestResultInfo/TestResultInfoStatuses.tsx +8 -9
  64. package/src/components/{app/TestResult → TestResult}/TestResultInfo/index.tsx +8 -10
  65. package/src/components/{app/TestResult → TestResult}/TestResultLinks/index.tsx +12 -16
  66. package/src/components/{app/TestResult → TestResult}/TestResultMetadata/index.tsx +4 -4
  67. package/src/components/{app/TestResult → TestResult}/TestResultNavigation/index.tsx +7 -9
  68. package/src/components/{app/TestResult → TestResult}/TestResultOverview.tsx +13 -13
  69. package/src/components/{app/TestResult → TestResult}/TestResultParameters/index.tsx +4 -4
  70. package/src/components/{app/TestResult → TestResult}/TestResultPrevStatuses/index.tsx +6 -9
  71. package/src/components/TestResult/TestResultRetriesView/TestResultRetriesItem.tsx +52 -0
  72. package/src/components/TestResult/TestResultRetriesView/index.tsx +24 -0
  73. package/src/components/{app/TestResult → TestResult}/TestResultSetup/index.tsx +8 -9
  74. package/src/components/TestResult/TestResultSeverity/index.tsx +27 -0
  75. package/src/components/{app/TestResult → TestResult}/TestResultStatus/index.tsx +2 -2
  76. package/src/components/{app/TestResult → TestResult}/TestResultSteps/attachment.tsx +10 -10
  77. package/src/components/{app/TestResult → TestResult}/TestResultSteps/attachmentCode.tsx +7 -2
  78. package/src/components/{app/TestResult → TestResult}/TestResultSteps/attachmentImage.tsx +6 -3
  79. package/src/components/TestResult/TestResultSteps/attachmentVideo.tsx +15 -0
  80. package/src/components/{app/TestResult → TestResult}/TestResultSteps/index.tsx +5 -5
  81. package/src/components/{app/TestResult → TestResult}/TestResultSteps/testResultAttachment.tsx +25 -27
  82. package/src/components/{app/TestResult → TestResult}/TestResultSteps/testResultAttachmentInfo.tsx +8 -12
  83. package/src/components/{app/TestResult → TestResult}/TestResultSteps/testResultStep.tsx +25 -18
  84. package/src/components/TestResult/TestResultSteps/testResultStepInfo.tsx +30 -0
  85. package/src/components/{app/TestResult → TestResult}/TestResultSteps/wrongAttachment.tsx +1 -1
  86. package/src/components/{app/TestResult → TestResult}/TestResultTabs/index.tsx +1 -1
  87. package/src/components/{app/TestResult → TestResult}/TestResultTeardown/index.tsx +6 -6
  88. package/src/components/{app/TestResult → TestResult}/index.tsx +10 -10
  89. package/src/components/{app/ThemeButton → ThemeButton}/ThemeButton.tsx +2 -4
  90. package/src/components/{app/Tree → Tree}/Tree.tsx +3 -10
  91. package/src/components/{app/Tree → Tree}/TreeHeader.tsx +3 -3
  92. package/src/components/{app/Tree → Tree}/TreeItem.tsx +2 -2
  93. package/src/components/Tree/TreeItemIcon.tsx +32 -0
  94. package/src/components/{app/Tree → Tree}/index.tsx +7 -7
  95. package/src/i18n/locales/en.json +1 -0
  96. package/src/index.tsx +2 -2
  97. package/src/stores/index.ts +1 -1
  98. package/src/stores/testResults.ts +7 -3
  99. package/src/stores/tree.ts +1 -1
  100. package/src/utils/isMac.ts +6 -5
  101. package/src/utils/treeFilters.ts +107 -58
  102. package/test/utils/treeFilters.test.ts +25 -1
  103. package/tsconfig.json +5 -3
  104. package/vitest.config.ts +7 -1
  105. package/webpack.config.js +2 -0
  106. package/dist/multi/141.app-07a6d2ea.js +0 -1
  107. package/dist/multi/222.app-07a6d2ea.js +0 -1
  108. package/dist/multi/335.app-07a6d2ea.js +0 -1
  109. package/dist/multi/34.app-07a6d2ea.js +0 -1
  110. package/dist/multi/349.app-07a6d2ea.js +0 -1
  111. package/dist/multi/378.app-07a6d2ea.js +0 -1
  112. package/dist/multi/406.app-07a6d2ea.js +0 -1
  113. package/dist/multi/476.app-07a6d2ea.js +0 -1
  114. package/dist/multi/53.app-07a6d2ea.js +0 -1
  115. package/dist/multi/584.app-07a6d2ea.js +0 -1
  116. package/dist/multi/690.app-07a6d2ea.js +0 -1
  117. package/dist/multi/747.app-07a6d2ea.js +0 -1
  118. package/dist/multi/767.app-07a6d2ea.js +0 -1
  119. package/dist/multi/83.app-07a6d2ea.js +0 -1
  120. package/dist/multi/873.app-07a6d2ea.js +0 -1
  121. package/dist/multi/920.app-07a6d2ea.js +0 -1
  122. package/dist/multi/991.app-07a6d2ea.js +0 -1
  123. package/dist/multi/app-07a6d2ea.js +0 -2
  124. package/dist/multi/styles-07a6d2ea.css +0 -363
  125. package/dist/single/app-c2627b69.js +0 -2
  126. package/src/assets/fonts/JetBrainsMono_vf.woff +0 -0
  127. package/src/assets/fonts/JetBrainsMono_vf.woff2 +0 -0
  128. package/src/assets/fonts/pt-root-ui_vf.woff +0 -0
  129. package/src/assets/fonts/pt-root-ui_vf.woff2 +0 -0
  130. package/src/assets/scss/mixins.scss +0 -26
  131. package/src/assets/svg/arrows-chevron-down.svg +0 -5
  132. package/src/assets/svg/github.svg +0 -5
  133. package/src/assets/svg/line-alerts-notification-box.svg +0 -3
  134. package/src/assets/svg/line-arrows-chevron-down-double.svg +0 -3
  135. package/src/assets/svg/line-arrows-chevron-down.svg +0 -3
  136. package/src/assets/svg/line-arrows-chevron-right.svg +0 -3
  137. package/src/assets/svg/line-arrows-chevron-up-double.svg +0 -3
  138. package/src/assets/svg/line-arrows-chevron-up.svg +0 -3
  139. package/src/assets/svg/line-arrows-corner-down-right.svg +0 -3
  140. package/src/assets/svg/line-arrows-expand-3.svg +0 -3
  141. package/src/assets/svg/line-arrows-refresh-ccw-1.svg +0 -3
  142. package/src/assets/svg/line-arrows-sort-line-asc.svg +0 -3
  143. package/src/assets/svg/line-arrows-sort-line-desc.svg +0 -3
  144. package/src/assets/svg/line-arrows-switch-vertical-1.svg +0 -3
  145. package/src/assets/svg/line-dev-bug-2.svg +0 -3
  146. package/src/assets/svg/line-dev-code-square.svg +0 -3
  147. package/src/assets/svg/line-files-file-attachment-2.svg +0 -3
  148. package/src/assets/svg/line-general-check.svg +0 -3
  149. package/src/assets/svg/line-general-checklist3.svg +0 -3
  150. package/src/assets/svg/line-general-copy-3.svg +0 -3
  151. package/src/assets/svg/line-general-download-cloud.svg +0 -3
  152. package/src/assets/svg/line-general-equal.svg +0 -3
  153. package/src/assets/svg/line-general-home-line.svg +0 -3
  154. package/src/assets/svg/line-general-link-1.svg +0 -3
  155. package/src/assets/svg/line-general-link-external.svg +0 -3
  156. package/src/assets/svg/line-general-search-md.svg +0 -3
  157. package/src/assets/svg/line-general-settings-1.svg +0 -3
  158. package/src/assets/svg/line-general-x-close.svg +0 -3
  159. package/src/assets/svg/line-general-zap.svg +0 -3
  160. package/src/assets/svg/line-helpers-flag.svg +0 -4
  161. package/src/assets/svg/line-helpers-play-circle.svg +0 -4
  162. package/src/assets/svg/line-images-image.svg +0 -3
  163. package/src/assets/svg/line-security-key.svg +0 -3
  164. package/src/assets/svg/line-shapes-dot-circle.svg +0 -3
  165. package/src/assets/svg/line-shapes-moon.svg +0 -3
  166. package/src/assets/svg/line-shapes-sun.svg +0 -3
  167. package/src/assets/svg/line-time-clock-stopwatch.svg +0 -3
  168. package/src/assets/svg/report-logo.svg +0 -64
  169. package/src/assets/svg/solid-alert-circle.svg +0 -3
  170. package/src/assets/svg/solid-check-circle.svg +0 -3
  171. package/src/assets/svg/solid-help-circle.svg +0 -3
  172. package/src/assets/svg/solid-minus-circle.svg +0 -3
  173. package/src/assets/svg/solid-x-circle.svg +0 -3
  174. package/src/assets/svg/spinner.svg +0 -18
  175. package/src/assets/svg/view-off.svg +0 -12
  176. package/src/assets/svg/view.svg +0 -11
  177. package/src/components/app/Footer/FooterVersion.tsx +0 -27
  178. package/src/components/app/Footer/index.tsx +0 -13
  179. package/src/components/app/Header/index.tsx +0 -17
  180. package/src/components/app/MainReport/index.tsx +0 -19
  181. package/src/components/app/ReportMetadata/MetadataWithIcon.tsx +0 -25
  182. package/src/components/app/TestResult/TestResultDropdown/index.tsx +0 -19
  183. package/src/components/app/TestResult/TestResultError/index.tsx +0 -53
  184. package/src/components/app/TestResult/TestResultRetriesView/TestResultRetriesItem.tsx +0 -50
  185. package/src/components/app/TestResult/TestResultRetriesView/index.tsx +0 -24
  186. package/src/components/app/TestResult/TestResultSeverity/index.tsx +0 -34
  187. package/src/components/app/TestResult/TestResultSteps/attachmentVideo.tsx +0 -12
  188. package/src/components/app/TestResult/TestResultSteps/testResultStepInfo.tsx +0 -33
  189. package/src/components/app/Tree/TreeItemIcon.tsx +0 -35
  190. package/src/components/commons/Button/index.tsx +0 -176
  191. package/src/components/commons/Button/styles.scss +0 -560
  192. package/src/components/commons/Counter/index.tsx +0 -29
  193. package/src/components/commons/Counter/styles.scss +0 -21
  194. package/src/components/commons/Label/index.tsx +0 -11
  195. package/src/components/commons/Label/styles.scss +0 -7
  196. package/src/components/commons/Link/index.tsx +0 -20
  197. package/src/components/commons/Link/styles.scss +0 -46
  198. package/src/components/commons/Loadable/index.tsx +0 -32
  199. package/src/components/commons/Menu/index.tsx +0 -198
  200. package/src/components/commons/Menu/styles.scss +0 -94
  201. package/src/components/commons/PageLoader/index.tsx +0 -10
  202. package/src/components/commons/PageLoader/styles.scss +0 -29
  203. package/src/components/commons/SearchBox/index.tsx +0 -64
  204. package/src/components/commons/SearchBox/styles.scss +0 -58
  205. package/src/components/commons/Spinner/index.tsx +0 -8
  206. package/src/components/commons/SuccessRatePieChart/index.tsx +0 -52
  207. package/src/components/commons/SuccessRatePieChart/styles.scss +0 -11
  208. package/src/components/commons/SvgIcon/index.tsx +0 -46
  209. package/src/components/commons/SvgIcon/styles.scss +0 -26
  210. package/src/components/commons/Toggle/index.tsx +0 -30
  211. package/src/components/commons/Toggle/styles.scss +0 -48
  212. package/src/components/commons/Tooltip/index.tsx +0 -123
  213. package/src/components/commons/Tooltip/styles.scss +0 -38
  214. package/src/components/commons/Typography/index.tsx +0 -99
  215. package/src/hooks/useDebouncedCallback.ts +0 -31
  216. /package/dist/multi/{816.app-07a6d2ea.js → 816.app-4375537b.js} +0 -0
  217. /package/dist/multi/{app-07a6d2ea.js.LICENSE.txt → app-4375537b.js.LICENSE.txt} +0 -0
  218. /package/dist/single/{app-c2627b69.js.LICENSE.txt → app-f16f6693.js.LICENSE.txt} +0 -0
  219. /package/src/assets/scss/{code.css → code.scss} +0 -0
  220. /package/src/components/{app/ArrowButton → ArrowButton}/styles.scss +0 -0
  221. /package/src/components/{app/BaseLayout → BaseLayout}/styles.scss +0 -0
  222. /package/src/components/{app/Footer → Footer}/styles.scss +0 -0
  223. /package/src/components/{app/Header → Header}/styles.scss +0 -0
  224. /package/src/components/{app/MetadataButton → MetadataButton}/styles.scss +0 -0
  225. /package/src/components/{app/Modal → Modal}/styles.scss +0 -0
  226. /package/src/components/{app/ReportBody → ReportBody}/context.tsx +0 -0
  227. /package/src/components/{app/ReportBody → ReportBody}/styles.scss +0 -0
  228. /package/src/components/{app/ReportHeader → ReportHeader}/styles.scss +0 -0
  229. /package/src/components/{app/ReportLogo → ReportLogo}/styles.scss +0 -0
  230. /package/src/components/{app/ReportLogoFull → ReportLogoFull}/styles.scss +0 -0
  231. /package/src/components/{app/Tabs → Tabs}/styles.scss +0 -0
  232. /package/src/components/{app/TestResult → TestResult}/TestResultAttachmentsView/styles.scss +0 -0
  233. /package/src/components/{app/TestResult → TestResult}/TestResultDescription/styles.scss +0 -0
  234. /package/src/components/{app/TestResult → TestResult}/TestResultDropdown/styles.scss +0 -0
  235. /package/src/components/{app/TestResult → TestResult}/TestResultEmpty/styles.scss +0 -0
  236. /package/src/components/{app/TestResult → TestResult}/TestResultError/styles.scss +0 -0
  237. /package/src/components/{app/TestResult → TestResult}/TestResultHeader/styles.scss +0 -0
  238. /package/src/components/{app/TestResult → TestResult}/TestResultHistory/styles.scss +0 -0
  239. /package/src/components/{app/TestResult → TestResult}/TestResultInfo/styles.scss +0 -0
  240. /package/src/components/{app/TestResult → TestResult}/TestResultLinks/styles.scss +0 -0
  241. /package/src/components/{app/TestResult → TestResult}/TestResultMetadata/styles.scss +0 -0
  242. /package/src/components/{app/TestResult → TestResult}/TestResultNavigation/styles.scss +0 -0
  243. /package/src/components/{app/TestResult → TestResult}/TestResultParameters/styles.scss +0 -0
  244. /package/src/components/{app/TestResult → TestResult}/TestResultPrevStatuses/styles.scss +0 -0
  245. /package/src/components/{app/TestResult → TestResult}/TestResultRetriesView/styles.scss +0 -0
  246. /package/src/components/{app/TestResult → TestResult}/TestResultSeverity/styles.scss +0 -0
  247. /package/src/components/{app/TestResult → TestResult}/TestResultStatus/styles.scss +0 -0
  248. /package/src/components/{app/TestResult → TestResult}/TestResultSteps/HtmlAttachmentPreview.tsx +0 -0
  249. /package/src/components/{app/TestResult → TestResult}/TestResultSteps/styles.scss +0 -0
  250. /package/src/components/{app/TestResult → TestResult}/TestResultTabs/styles.scss +0 -0
  251. /package/src/components/{app/Tree → Tree}/styles.scss +0 -0
@@ -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,8 @@ 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
7
  import TreeHeader from "./TreeHeader";
8
8
  import * as styles from "./styles.scss";
9
9
 
@@ -59,14 +59,7 @@ const Tree: FunctionComponent<TreeProps> = ({ tree, statusFilter, root, name, st
59
59
 
60
60
  return (
61
61
  <div className={styles.tree}>
62
- {name && (
63
- <TreeHeader
64
- categoryTitle={name}
65
- isOpened={isOpened}
66
- toggleTree={toggleTree}
67
- statistic={statistic}
68
- />
69
- )}
62
+ {name && <TreeHeader categoryTitle={name} isOpened={isOpened} toggleTree={toggleTree} statistic={statistic} />}
70
63
  {treeContent}
71
64
  </div>
72
65
  );
@@ -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,13 +1,13 @@
1
+ import { Button } from "@allurereport/web-components";
2
+ import { Loadable } from "@allurereport/web-components";
3
+ import { PageLoader } from "@allurereport/web-components";
4
+ import { Text } from "@allurereport/web-components";
1
5
  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";
6
+ import type { AllureAwesomeStatus } from "types";
7
+ import { useTabsContext } from "@/components/Tabs";
8
+ import Tree from "@/components/Tree/Tree";
8
9
  import { useI18n } from "@/stores/locale";
9
10
  import { clearTreeFilters, filteredTree, noTests, noTestsFound, setTreeStatus, treeStore } from "@/stores/tree";
10
- import type { AllureAwesomeStatus } from "../../../../types";
11
11
  import * as styles from "./styles.scss";
12
12
 
13
13
  export const TreeList = () => {
@@ -62,6 +62,7 @@
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",
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,
@@ -34,7 +38,7 @@ export const fetchTestResultNav = async () => {
34
38
  };
35
39
 
36
40
  export const fetchTestResult = async (testResultId: string) => {
37
- if (!testResultId || testResultStore.value.data?.[testResultId]) {
41
+ if (!testResultId) {
38
42
  return;
39
43
  }
40
44
 
@@ -1,8 +1,8 @@
1
1
  import { fetchReportJsonData } from "@allurereport/web-commons";
2
2
  import { computed, signal } from "@preact/signals";
3
+ import type { AllureAwesomeStatus, AllureAwesomeTree, AllureAwesomeTreeGroup } from "types";
3
4
  import type { StoreSignalState } from "@/stores/types";
4
5
  import { createRecursiveTree, isRecursiveTreeEmpty } from "@/utils/treeFilters";
5
- import type {AllureAwesomeStatus, AllureAwesomeTree, AllureAwesomeTreeGroup} from "../../types";
6
6
 
7
7
  export type TreeSortBy = "order" | "duration" | "status" | "alphabet";
8
8
  export type TreeDirection = "asc" | "desc";
@@ -1,7 +1,8 @@
1
- function testPlatform(re: RegExp) {
2
- return typeof window !== "undefined" && window.navigator != null
3
- ? re.test(window.navigator["userAgentData"]?.platform || window.navigator.platform)
4
- : false;
5
- }
1
+ export const testPlatform = (re: RegExp) => {
2
+ // @ts-ignore
3
+ const platform: string = window?.navigator?.userAgentData?.platform ?? window?.navigator?.platform;
4
+
5
+ return platform ? re.test(platform) : false;
6
+ };
6
7
 
7
8
  export const isMac = testPlatform(/^Mac/i);
@@ -1,57 +1,95 @@
1
- import type { TreeFiltersState } from "@/stores/tree";
2
- import type { AllureAwesomeRecursiveTree, AllureAwesomeTree, AllureAwesomeTreeGroup } from "../../types";
1
+ import type { Comparator, DefaultTreeGroup, Statistic, TestStatus, TreeLeaf } from "@allurereport/core-api";
2
+ import {
3
+ alphabetically,
4
+ andThen,
5
+ byStatistic,
6
+ byStatus,
7
+ compareBy,
8
+ emptyStatistic,
9
+ incrementStatistic,
10
+ mergeStatistic,
11
+ ordinal,
12
+ reverse,
13
+ } from "@allurereport/core-api";
14
+ import type { TreeFiltersState, TreeSortBy } from "@/stores/tree";
15
+ import type {
16
+ AllureAwesomeRecursiveTree,
17
+ AllureAwesomeTree,
18
+ AllureAwesomeTreeGroup,
19
+ AllureAwesomeTreeLeaf,
20
+ } from "../../types";
3
21
 
4
- const statusOrder = {
5
- failed: 1,
6
- broken: 2,
7
- passed: 3,
8
- skipped: 4,
9
- unknown: 5,
22
+ export const isIncluded = (leaf: TreeLeaf<AllureAwesomeTreeLeaf>, filterOptions: TreeFiltersState) => {
23
+ const queryMatched = !filterOptions?.query || leaf.name.toLowerCase().includes(filterOptions.query.toLowerCase());
24
+ const statusMatched =
25
+ !filterOptions?.status || filterOptions?.status === "total" || leaf.status === filterOptions.status;
26
+ const flakyMatched = !filterOptions?.filter?.flaky || leaf.flaky;
27
+ const retryMatched = !filterOptions?.filter?.retry || leaf.retry;
28
+ // TODO: at this moment we don't have a new field implementation even in the generator
29
+ // const newMatched = !filterOptions?.filter?.new || leaf.new;
30
+
31
+ return [queryMatched, statusMatched, flakyMatched, retryMatched].every(Boolean);
32
+ };
33
+
34
+ const leafComparatorByTreeSortBy = (sortBy: TreeSortBy = "status"): Comparator<TreeLeaf<AllureAwesomeTreeLeaf>> => {
35
+ const typedCompareBy = compareBy<TreeLeaf<AllureAwesomeTreeLeaf>>;
36
+ switch (sortBy) {
37
+ case "order":
38
+ return typedCompareBy("groupOrder", ordinal());
39
+ case "duration":
40
+ return typedCompareBy("duration", ordinal());
41
+ case "alphabet":
42
+ return typedCompareBy("name", alphabetically());
43
+ case "status":
44
+ return typedCompareBy("status", byStatus());
45
+ default:
46
+ // eslint-disable-next-line no-console
47
+ console.error(`unsupported comparator ${sortBy}`);
48
+ return () => 0;
49
+ }
50
+ };
51
+
52
+ const groupComparatorByTreeSortBy = (sortBy: TreeSortBy = "status"): Comparator<DefaultTreeGroup> => {
53
+ const typedCompareBy = compareBy<DefaultTreeGroup>;
54
+ switch (sortBy) {
55
+ case "alphabet":
56
+ return typedCompareBy("name", alphabetically());
57
+ case "order":
58
+ case "duration":
59
+ case "status":
60
+ return typedCompareBy("statistic", byStatistic());
61
+ default:
62
+ // eslint-disable-next-line no-console
63
+ console.error(`unsupported comparator ${sortBy}`);
64
+ return () => 0;
65
+ }
66
+ };
67
+
68
+ export const leafComparator = (filterOptions: TreeFiltersState): Comparator<TreeLeaf<AllureAwesomeTreeLeaf>> => {
69
+ const cmp = leafComparatorByTreeSortBy(filterOptions.sortBy);
70
+ const directional = filterOptions.direction === "asc" ? cmp : reverse(cmp);
71
+ // apply fallback sorting by name
72
+ return andThen([directional, compareBy("name", alphabetically())]);
73
+ };
74
+
75
+ export const groupComparator = (filterOptions: TreeFiltersState): Comparator<DefaultTreeGroup> => {
76
+ const cmp = groupComparatorByTreeSortBy(filterOptions.sortBy);
77
+ const directional = filterOptions.direction === "asc" ? cmp : reverse(cmp);
78
+ // apply fallback sorting by name
79
+ return andThen([directional, compareBy("name", alphabetically())]);
10
80
  };
11
81
 
12
82
  export const filterLeaves = (
13
83
  leaves: string[] = [],
14
84
  leavesById: AllureAwesomeTree["leavesById"],
15
- filterOptions?: TreeFiltersState,
85
+ filterOptions: TreeFiltersState,
16
86
  ) => {
17
87
  const filteredLeaves = [...leaves]
18
88
  .map((leafId) => leavesById[leafId])
19
- .filter((leaf) => {
20
- const queryMatched = !filterOptions?.query || leaf.name.toLowerCase().includes(filterOptions.query.toLowerCase());
21
- const statusMatched =
22
- !filterOptions?.status || filterOptions?.status === "total" || leaf.status === filterOptions.status;
23
- const flakyMatched = !filterOptions?.filter?.flaky || leaf.flaky;
24
- const retryMatched = !filterOptions?.filter?.retry || leaf.retry;
25
- // TODO: at this moment we don't have a new field implementation even in the generator
26
- // const newMatched = !filterOptions?.filter?.new || leaf.new;
27
-
28
- return [queryMatched, statusMatched, flakyMatched, retryMatched].every(Boolean);
29
- });
30
-
31
- if (!filterOptions) {
32
- return filteredLeaves;
33
- }
89
+ .filter((leaf: TreeLeaf<AllureAwesomeTreeLeaf>) => isIncluded(leaf, filterOptions));
34
90
 
35
- return filteredLeaves.sort((a, b) => {
36
- const asc = filterOptions.direction === "asc";
37
-
38
- switch (filterOptions.sortBy) {
39
- case "order":
40
- return asc ? a.groupOrder - b.groupOrder : b.groupOrder - a.groupOrder;
41
- case "duration":
42
- return asc ? (a.duration || 0) - (b.duration || 0) : (b.duration || 0) - (a.duration || 0);
43
- case "alphabet":
44
- return asc ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
45
- case "status": {
46
- const statusA = statusOrder[a.status] || statusOrder.unknown;
47
- const statusB = statusOrder[b.status] || statusOrder.unknown;
48
-
49
- return asc ? statusA - statusB : statusB - statusA;
50
- }
51
- default:
52
- return 0;
53
- }
54
- });
91
+ const comparator = leafComparator(filterOptions);
92
+ return filteredLeaves.sort(comparator);
55
93
  };
56
94
 
57
95
  /**
@@ -66,19 +104,11 @@ export const createRecursiveTree = (payload: {
66
104
  filterOptions?: TreeFiltersState;
67
105
  }): AllureAwesomeRecursiveTree => {
68
106
  const { group, groupsById, leavesById, filterOptions } = payload;
69
- const groupLeaves = group.leaves ?? [];
70
-
71
- return {
72
- ...group,
73
- // FIXME: don't have any idea, why eslint marks next line as unsafe because it actually has a correct type
74
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
75
- leaves: filterLeaves(groupLeaves, leavesById, filterOptions),
76
- trees: group?.groups
77
- ?.filter((groupId) => {
78
- const subGroup = groupsById[groupId];
107
+ const groupLeaves: string[] = group.leaves ?? [];
79
108
 
80
- return subGroup?.leaves?.length || subGroup?.groups?.length;
81
- })
109
+ const leaves = filterLeaves(groupLeaves, leavesById, filterOptions);
110
+ const trees =
111
+ group.groups
82
112
  ?.map((groupId) =>
83
113
  createRecursiveTree({
84
114
  group: groupsById[groupId],
@@ -86,11 +116,30 @@ export const createRecursiveTree = (payload: {
86
116
  leavesById,
87
117
  filterOptions,
88
118
  }),
89
- ),
119
+ )
120
+ ?.filter((rt) => !isRecursiveTreeEmpty(rt)) ?? [];
121
+
122
+ const statistic: Statistic = emptyStatistic();
123
+ trees.forEach((rt: AllureAwesomeRecursiveTree) => {
124
+ if (rt.statistic) {
125
+ const additional: Statistic = rt.statistic;
126
+ mergeStatistic(statistic, additional);
127
+ }
128
+ });
129
+ leaves.forEach((leaf) => {
130
+ const status: TestStatus = leaf.status;
131
+ incrementStatistic(statistic, status);
132
+ });
133
+
134
+ return {
135
+ ...group,
136
+ statistic,
137
+ leaves,
138
+ trees: trees.sort(groupComparator(filterOptions)),
90
139
  };
91
140
  };
92
141
 
93
- export const isRecursiveTreeEmpty = (tree: AllureAwesomeRecursiveTree) => {
142
+ export const isRecursiveTreeEmpty = (tree: AllureAwesomeRecursiveTree): boolean => {
94
143
  if (!tree.trees?.length && !tree.leaves?.length) {
95
144
  return true;
96
145
  }
@@ -21,7 +21,17 @@ describe("utils > treeFilters", () => {
21
21
  start: baseDate + 2000,
22
22
  } as AllureAwesomeTestResult,
23
23
  };
24
- const result = filterLeaves(leaves, leavesById);
24
+ const result = filterLeaves(leaves, leavesById, {
25
+ query: "",
26
+ status: "total",
27
+ filter: {
28
+ flaky: false,
29
+ retry: false,
30
+ new: false,
31
+ },
32
+ sortBy: "order",
33
+ direction: "asc",
34
+ });
25
35
 
26
36
  expect(result).toEqual([
27
37
  expect.objectContaining({ name: "a1" }),
@@ -51,7 +61,15 @@ describe("utils > treeFilters", () => {
51
61
  } as AllureAwesomeTestResult,
52
62
  };
53
63
  const result = filterLeaves(leaves, leavesById, {
64
+ query: "",
54
65
  status: "passed",
66
+ filter: {
67
+ flaky: false,
68
+ retry: false,
69
+ new: false,
70
+ },
71
+ sortBy: "order",
72
+ direction: "asc",
55
73
  });
56
74
 
57
75
  expect(result).toEqual([expect.objectContaining({ name: "a1" }), expect.objectContaining({ name: "c3" })]);
@@ -78,9 +96,15 @@ describe("utils > treeFilters", () => {
78
96
  } as AllureAwesomeTestResult,
79
97
  };
80
98
  const result = filterLeaves(leaves, leavesById, {
99
+ query: "",
100
+ status: "total",
81
101
  filter: {
82
102
  flaky: true,
103
+ retry: false,
104
+ new: false,
83
105
  },
106
+ sortBy: "order",
107
+ direction: "asc",
84
108
  });
85
109
 
86
110
  expect(result).toEqual([expect.objectContaining({ name: "a1" }), expect.objectContaining({ name: "c3" })]);
package/tsconfig.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "compilerOptions": {
3
3
  "baseUrl": "./",
4
4
  "paths": {
5
- "@/*": ["src/*"],
5
+ "@/*": ["src/*"]
6
6
  },
7
7
  "jsx": "preserve",
8
8
  "jsxFactory": "h",
@@ -14,12 +14,14 @@
14
14
  "allowSyntheticDefaultImports": true,
15
15
  "useUnknownInCatchVariables": false,
16
16
  "noEmit": true,
17
+ "noImplicitAny": true,
17
18
  "resolveJsonModule": true,
18
19
  "esModuleInterop": true,
19
20
  "lib": ["ES2019", "dom"],
20
21
  // node types should not be used in web-commons
21
- "types": []
22
+ "types": [],
23
+ "skipLibCheck": true
22
24
  },
23
25
  "include": ["src"],
24
- "exclude": ["node_modules"]
26
+ "exclude": ["node_modules", "dist"]
25
27
  }
package/vitest.config.ts CHANGED
@@ -7,6 +7,12 @@ export default defineConfig({
7
7
  test: {
8
8
  include: ["./test/**/*.test.ts"],
9
9
  setupFiles: [require.resolve("allure-vitest/setup")],
10
- reporters: ["default", ["allure-vitest/reporter", { resultsDir: "../../out/allure-results" }]],
10
+ reporters: [
11
+ "default",
12
+ [
13
+ "allure-vitest/reporter",
14
+ { resultsDir: "./out/allure-results", globalLabels: [{ name: "module", value: "web-awesome" }] },
15
+ ],
16
+ ],
11
17
  },
12
18
  });
package/webpack.config.js CHANGED
@@ -6,6 +6,7 @@ import { fileURLToPath } from "node:url";
6
6
  import SpriteLoaderPlugin from "svg-sprite-loader/plugin.js";
7
7
  import webpack from "webpack";
8
8
  import { WebpackManifestPlugin } from "webpack-manifest-plugin";
9
+ import ForkTsCheckerPlugin from "fork-ts-checker-webpack-plugin";
9
10
 
10
11
  const { SINGLE_FILE_MODE } = env;
11
12
  const baseDir = dirname(fileURLToPath(import.meta.url));
@@ -68,6 +69,7 @@ export default (env, argv) => {
68
69
  },
69
70
  },
70
71
  plugins: [
72
+ new ForkTsCheckerPlugin(),
71
73
  new webpack.DefinePlugin({
72
74
  DEVELOPMENT: devMode,
73
75
  }),
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[141],{2141:function(a){a.exports=JSON.parse('{"statuses":{"passed":"keçdi","failed":"uğursuz","broken":"sınıq","skipped":"keçildi","unknown":"naməlum","total":"cəmi","flakyTests":"etibarsız","newTests":"yeni","retryTests":"təkrar"},"testSummary":{"all":"Bütün testlər","flaky":"Etibarsız testlər","retry":"Təkrar testlər","new":"Yeni testlər"},"tabs":{"total":"Bütün"},"search":{"search":"Axtarış","search-placeholder":"Ad və ya ID"},"filters":{"more-filters":"Daha çox filtr","enable-filter":"\\"{filter}\\" filtrlərini aktiv edin","flaky":"Etibarsız","retry":"Təkrar","new":"Yeni"},"sort-by":{"sort-by-text":"Sıralamaq üzrə:","sort-by-category":"Sıralamaq üzrə","direction-category":"İstiqamət"},"sort-by.values":{"order":"Sıra","alphabet":"Əlifba","duration":"Müddət","status":"Status"},"sort-by.directions":{"order-desc":"Sonuncu – Birinci","order-asc":"Birinci – Sonuncu","order-asc-short":"Birinci","order-desc-short":"Sonuncu","alphabet-asc":"A – Z","alphabet-desc":"Z – A","alphabet-asc-short":"A – Z","alphabet-desc-short":"Z – A","duration-asc":"1 – 9","duration-desc":"9 – 1","duration-asc-short":"1 – 9","duration-desc-short":"9 – 1","status-asc":"Filtr siyahısına uyğun","status-desc":"Tərsinə çevrilmiş","status-asc-short":"Adi","status-desc-short":"Tərs"},"empty":{"no-results":"Nəticə tapılmadı","no-tests-found":"Nəticə tapılmadı","clear-filters":"Filtrləri təmizlə","no-attachments-results":"Əlavə məlumatı mövcud deyil","no-history-results":"Tarixçə məlumatı mövcud deyil","no-retries-results":"Təkrar məlumatı mövcud deyil"},"severity":{"blocker":"bloklayıcı","critical":"kritik","normal":"normal","minor":"kiçik","trivial":"əhəmiyyətsiz"},"execution":{"name":"İcra","body":"Test məzmunu","setup":"Hazırlıq","teardown":"Yekunlaşma"},"ui":{"labels":"Etiketlər","metadata":"Metaməlumat","parameters":"Parametrlər","description":"Təsvir","links":"Keçidlər","overview":"Ümumi baxış","history":"Tarixçə","attachments":"Əlavələr","retries":"Təkrarlar","error":"Səhv","goToStep":"Addıma keç","showLess":"Daha az göstər","showMore":"Daha çox göstər","copy":"Kopyala","at":"üçün"},"controls":{"newTabAttachment":"Yeni sekmede aç","nextTR":"Növbəti test nəticəsi","prevTR":"Əvvəlki test nəticəsi","downloadAttachment":"Əlavəni yüklə","backto":"Geri dön","clipboard":"Panoya kopyala","clipboardError":"Səhv. Görünür, bu xüsusiyyət brauzeriniz tərəfindən dəstəklənmir","clipboardSuccess":"Uğurla kopyalandı","collapse":"Daralt","expand":"Genişləndir","fullscreen":"Tam ekran","language":"Dili dəyiş","openInNewTab":"Yeni tabda aç"},"errors":{"missedAttachment":"Əlavə tapılmadı"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[222],{7222:function(e){e.exports=JSON.parse('{"statuses":{"passed":"réussi","failed":"échoué","broken":"cassé","skipped":"ignoré","unknown":"inconnu","total":"total","flakyTests":"instables","newTests":"nouveaux","retryTests":"réessais"},"testSummary":{"all":"Tous les tests","flaky":"Tests instables","retry":"Tests réessayés","new":"Nouveaux tests"},"tabs":{"total":"Tous"},"search":{"search":"Recherche","search-placeholder":"Nom ou ID"},"filters":{"more-filters":"Plus de filtres","enable-filter":"Activer le filtre \\"{filter}\\"","flaky":"Instables","retry":"Réessais","new":"Nouveaux"},"sort-by":{"sort-by-text":"Trier par :","sort-by-category":"Trier par","direction-category":"Direction"},"sort-by.values":{"order":"Ordre","alphabet":"Alphabétique","duration":"Durée","status":"Statut"},"sort-by.directions":{"order-desc":"Derniers – Premiers","order-asc":"Premiers – Derniers","order-asc-short":"Premiers","order-desc-short":"Derniers","alphabet-asc":"A – Z","alphabet-desc":"Z – A","alphabet-asc-short":"A – Z","alphabet-desc-short":"Z – A","duration-asc":"1 – 9","duration-desc":"9 – 1","duration-asc-short":"1 – 9","duration-desc-short":"9 – 1","status-asc":"Comme dans la liste des filtres","status-desc":"Inversé","status-asc-short":"Normal","status-desc-short":"Inversé"},"empty":{"no-results":"Aucun résultat","no-tests-found":"Aucun résultat trouvé","clear-filters":"Effacer les filtres","no-attachments-results":"Aucune information sur les pièces jointes disponible","no-history-results":"Aucune information sur l\'historique disponible","no-retries-results":"Aucune information sur les réessais disponible"},"severity":{"blocker":"bloquant","critical":"critique","normal":"normal","minor":"mineur","trivial":"trivial"},"execution":{"name":"Exécution","body":"Corps du test","setup":"Préparation","teardown":"Démontage"},"ui":{"labels":"Étiquettes","metadata":"Métadonnées","parameters":"Paramètres","description":"Description","links":"Liens","overview":"Vue d\'ensemble","history":"Historique","attachments":"Pièces jointes","retries":"Réessais","error":"Erreur","goToStep":"Aller à l\'étape","showLess":"Montrer moins","showMore":"Montrer plus","copy":"Copier","at":"à"},"controls":{"newTabAttachment":"Ouvrir dans un nouvel onglet","nextTR":"Résultat de test suivant","prevTR":"Résultat de test précédent","downloadAttachment":"Télécharger la pièce jointe","backto":"Retour à","clipboard":"Copier dans le presse-papier","clipboardError":"Erreur. Il semble que cette fonctionnalité ne soit pas prise en charge par votre navigateur","clipboardSuccess":"Copié avec succès","collapse":"Réduire","expand":"Agrandir","fullscreen":"Plein écran","language":"Changer la langue","openInNewTab":"Ouvrir dans un nouvel onglet"},"errors":{"missedAttachment":"Pièce jointe non trouvée"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[335],{8335:function(e){e.exports=JSON.parse('{"statuses":{"passed":"успешный","failed":"неуспешный","broken":"сломанный","skipped":"пропущенный","unknown":"неизвестный","total":"все"},"testSummary":{"all":"Все тесты","flaky":"Flaky тесты","retry":"Повторные тесты","new":"Новые тесты"},"tabs":{"total":"Все"},"search":{"search":"Поиск","search-placeholder":"Название или ID"},"filters":{"more-filters":"Фильтры","enable-filter":"Включить фильтр по \\"{filter}\\"","flaky":"Нестабильные","retry":"Повторенные","new":"Новые"},"sort-by":{"sort-by-text":"Сортировать по:","sort-by-category":"Сортировать по","direction-category":"Направление"},"sort-by.values":{"order":"Порядок","alphabet":"Название","duration":"Длительность","status":"Статус"},"sort-by.directions":{"order-asc":"Поздние – Ранние","order-desc":"Ранние – Поздние","order-asc-short":"Поздние","order-desc-short":"Ранние","alphabet-asc":"Я – А","alphabet-desc":"А – Я","alphabet-asc-short":"Я – А","alphabet-desc-short":"Я – А","duration-asc":"9 – 1","duration-desc":"1 – 9","duration-asc-short":"9 – 1","duration-desc-short":"1 – 9","status-asc":"Инвертировано","status-desc":"Как в списке фильтра","status-asc-short":"Инвертировано","status-desc-short":"По обычному"},"empty":{"no-results":"Нет результатов","no-tests-found":"Результаты не найдены","clear-filters":"Очистить фильтры","no-attachments-results":"Информация о вложениях отсутствует","no-history-results":"Информация об истории отсутствует","no-retries-results":"Информация о перезапусках отсутствует"},"severity":{"name":"Важность","blocker":"блокер","critical":"критическая","normal":"обычная","minor":"невысокая","trivial":"минимальная"},"execution":{"body":"Тело теста","name":"Выполнение","setup":"Подготовка","teardown":"Завершение"},"ui":{"labels":"Лейблы","metadata":"Метаданные","parameters":"Параметры","description":"Описание","links":"Ссылки","overview":"Обзор","history":"История","attachments":"Вложения","retries":"Перезапуски","error":"Ошибка","goToStep":"Перейти к шагу","showLess":"Показать меньше","showMore":"Показать больше","copy":"Скопировать","at":"в"},"controls":{"newTabAttachment":"Открыть в новой вкладке","downloadAttachment":"Загрузить вложение","nextTR":"Следующий тест","prevTR":"Предыдущий тест","backto":"Вернуться на","clipboard":"Скопировать в буфер обмена","clipboardError":"Ошибка. Скорее всего ваш браузер не поддерживает данную функциональность","clipboardSuccess":"Значение успешно скопировано","collapse":"Свернуть","expand":"Развернуть","fullscreen":"На весь экран","language":"Сменить язык","openInNewTab":"Открыть в новой вкладке"},"errors":{"missedAttachment":"Вложение не найдено"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[34],{5034:function(e){e.exports=JSON.parse('{"statuses":{"passed":"aprovado","failed":"falhou","broken":"quebrado","skipped":"ignorado","unknown":"desconhecido","total":"total","flakyTests":"instável","newTests":"novo","retryTests":"repetir"},"testSummary":{"all":"Todos os testes","flaky":"Testes instáveis","retry":"Testes repetidos","new":"Testes novos"},"tabs":{"total":"Tudo"},"search":{"search":"Pesquisar","search-placeholder":"Nome ou ID"},"filters":{"more-filters":"Mais filtros","enable-filter":"Habilitar filtro para \\"{filter}\\"","flaky":"Instável","retry":"Repetir","new":"Novo"},"sort-by":{"sort-by-text":"Ordenar por:","sort-by-category":"Ordenar por","direction-category":"Direção"},"sort-by.values":{"order":"Ordem","alphabet":"Alfabeto","duration":"Duração","status":"Estado"},"sort-by.directions":{"order-desc":"Mais recente – Mais antigo","order-asc":"Mais antigo – Mais recente","order-asc-short":"Antigo","order-desc-short":"Recente","alphabet-asc":"A – Z","alphabet-desc":"Z – A","alphabet-asc-short":"A – Z","alphabet-desc-short":"Z – A","duration-asc":"1 – 9","duration-desc":"9 – 1","duration-asc-short":"1 – 9","duration-desc-short":"9 – 1","status-asc":"Como na lista de filtros","status-desc":"Invertido","status-asc-short":"Regular","status-desc-short":"Invertido"},"empty":{"no-results":"Sem resultados","no-tests-found":"Nenhum resultado encontrado","clear-filters":"Limpar filtros","no-attachments-results":"Nenhuma informação de anexos disponível","no-history-results":"Nenhuma informação de histórico disponível","no-retries-results":"Nenhuma informação de repetições disponível"},"severity":{"blocker":"bloqueador","critical":"crítico","normal":"normal","minor":"menor","trivial":"trivial"},"execution":{"name":"Execução","body":"Corpo do teste","setup":"Configuração","teardown":"Desmontagem"},"ui":{"labels":"Etiquetas","metadata":"Metadados","parameters":"Parâmetros","description":"Descrição","links":"Links","overview":"Visão geral","history":"Histórico","attachments":"Anexos","retries":"Repetições","error":"Erro","goToStep":"Ir para o passo","showLess":"Mostrar menos","showMore":"Mostrar mais","copy":"Copiar","at":"em"},"controls":{"newTabAttachment":"Abrir anexo em nova aba","nextTR":"Próximo resultado de teste","prevTR":"Resultado de teste anterior","downloadAttachment":"Baixar anexo","backto":"Voltar para","clipboard":"Copiar para a área de transferência","clipboardError":"Erro. Parece que esta funcionalidade não é suportada pelo seu navegador","clipboardSuccess":"Copiado com sucesso","collapse":"Recolher","expand":"Expandir","fullscreen":"Tela cheia","language":"Alterar idioma","openInNewTab":"Abrir em nova aba"},"errors":{"missedAttachment":"Anexo não encontrado"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[349],{6349:function(e){e.exports=JSON.parse('{"statuses":{"passed":"עבר","failed":"נכשל","broken":"שבור","skipped":"דלג","unknown":"לא ידוע","total":"סה\\"כ","flakyTests":"לא יציב","newTests":"חדש","retryTests":"ניסיון חוזר"},"testSummary":{"all":"כל הבדיקות","flaky":"בדיקות לא יציבות","retry":"בדיקות חוזרות","new":"בדיקות חדשות"},"tabs":{"total":"הכל"},"search":{"search":"חפש","search-placeholder":"שם או מזהה"},"filters":{"more-filters":"עוד מסננים","enable-filter":"אפשר מסנן \\"{filter}\\"","flaky":"לא יציב","retry":"חוזר","new":"חדש"},"sort-by":{"sort-by-text":"מיין לפי:","sort-by-category":"מיין לפי","direction-category":"כיוון"},"sort-by.values":{"order":"סדר","alphabet":"אלפבית","duration":"משך זמן","status":"סטטוס"},"sort-by.directions":{"order-desc":"מהאחרון – לראשון","order-asc":"מהראשון – לאחרון","order-asc-short":"מהראשון","order-desc-short":"מהאחרון","alphabet-asc":"א – ת","alphabet-desc":"ת – א","alphabet-asc-short":"א – ת","alphabet-desc-short":"ת – א","duration-asc":"1 – 9","duration-desc":"9 – 1","duration-asc-short":"1 – 9","duration-desc-short":"9 – 1","status-asc":"כמו ברשימת המסננים","status-desc":"הפוך","status-asc-short":"רגיל","status-desc-short":"הפוך"},"empty":{"no-results":"אין תוצאות","no-tests-found":"לא נמצאו תוצאות","clear-filters":"נקה מסננים","no-attachments-results":"לא נמצאה מידע על קבצים מצורפים","no-history-results":"לא נמצאה מידע על היסטוריה","no-retries-results":"לא נמצאה מידע על נסיונות חוזרים"},"severity":{"blocker":"חוסם","critical":"קריטי","normal":"רגיל","minor":"קל","trivial":"פעוט"},"execution":{"name":"ביצוע","body":"תוכן הבדיקה","setup":"הכנה","teardown":"סיום"},"ui":{"labels":"תוויות","metadata":"נתונים","parameters":"פרמטרים","description":"תיאור","links":"קישורים","overview":"סקירה כללית","history":"היסטוריה","attachments":"קבצים מצורפים","retries":"נסיונות חוזרים","error":"שגיאה","goToStep":"עבור לשלב","showLess":"הצג פחות","showMore":"הצג עוד","copy":"העתק","at":"ב-"},"controls":{"newTabAttachment":"פתח קובץ מצורף בלשונית חדשה","nextTR":"תוצאת בדיקה הבאה","prevTR":"תוצאת בדיקה קודמת","downloadAttachment":"הורד קובץ מצורף","backto":"חזור ל","clipboard":"העתק ללוח","clipboardError":"לא ניתן להעתיק ללוח. ייתכן שהתכונה לא נתמכת בדפדפן שלך","clipboardSuccess":"הועתק בהצלחה","collapse":"כווץ","expand":"הרחב","fullscreen":"מסך מלא","language":"שנה שפה","openInNewTab":"פתח בכרטיסייה חדשה"},"errors":{"missedAttachment":"הקובץ המצורף לא נמצא"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[378],{2378:function(e){e.exports=JSON.parse('{"statuses":{"passed":"წარმატებული","failed":"წარუმატებელი","broken":"დამტვრეული","skipped":"გამოტოვებული","unknown":"უცნობი","total":"ჯამი","flakyTests":"არასტაბილური","newTests":"ახალი","retryTests":"ხელახალი ცდა"},"testSummary":{"all":"ყველა ტესტი","flaky":"არასტაბილური ტესტი","retry":"ხელახალი ტესტი","new":"ახალი ტესტი"},"tabs":{"total":"ყველა"},"search":{"search":"ძებნა","search-placeholder":"სახელი ან ID"},"filters":{"more-filters":"დამატებითი ფილტრები","enable-filter":"ჩართეთ ფილტრი \\"{filter}\\"","flaky":"არასტაბილური","retry":"ხელახალი","new":"ახალი"},"sort-by":{"sort-by-text":"დალაგება:","sort-by-category":"დალაგება","direction-category":"მიმართულება"},"sort-by.values":{"order":"შეკვეთა","alphabet":"ანბანი","duration":"ხანგრძლივობა","status":"სტატუსი"},"sort-by.directions":{"order-desc":"ბოლო – პირველი","order-asc":"პირველი – ბოლო","order-asc-short":"პირველი","order-desc-short":"ბოლო","alphabet-asc":"ა – ჰ","alphabet-desc":"ჰ – ა","alphabet-asc-short":"ა – ჰ","alphabet-desc-short":"ჰ – ა","duration-asc":"1 – 9","duration-desc":"9 – 1","duration-asc-short":"1 – 9","duration-desc-short":"9 – 1","status-asc":"როგორც ფილტრის სიაში","status-desc":"შებრუნებული","status-asc-short":"ჩვეულებრივი","status-desc-short":"შებრუნებული"},"empty":{"no-results":"შედეგები არ არის","no-tests-found":"შედეგები არ მოიძებნა","clear-filters":"ფილტრების გასუფთავება","no-attachments-results":"დანართების ინფორმაცია არ არის ხელმისაწვდომი","no-history-results":"ისტორიის ინფორმაცია არ არის ხელმისაწვდომი","no-retries-results":"ხელახალი ცდების ინფორმ���ცია არ არის ხელმისაწვდომი"},"severity":{"blocker":"ბლოკერი","critical":"კრიტიკული","normal":"ჩვეულებრივი","minor":"მნიშვნელობა","trivial":"უმნიშვნელო"},"execution":{"name":"შესრულება","body":"ტესტის შინაარსი","setup":"მომზადება","teardown":"დასრულება"},"ui":{"labels":"ლეიბლები","metadata":"მეტამონაცემები","parameters":"პარამეტრები","description":"აღწერა","links":"ბმულები","overview":"მიმოხილვა","history":"ისტორია","attachments":"დანართები","retries":"ხელახალი ცდები","error":"შეცდომა","goToStep":"გადადით საფეხურზე","showLess":"ნაკლების ჩვენება","showMore":"მეტის ჩვენება","copy":"კოპირება","at":"ზე"},"controls":{"newTabAttachment":"დანართის გახსნა ახალ ჩანართში","nextTR":"შემდეგი ტესტის შედეგი","prevTR":"წინა ტესტის შედეგი","downloadAttachment":"დანართის ჩამოტვირთვა","backto":"უკან დაბრუნება","clipboard":"კოპირება ბუფერში","clipboardError":"ბუფერში კოპირება ვერ მოხერხდა. შესაძლოა, ფუნქცია არ იყოს მხარდაჭერილი თქვენს ბრაუზერში","clipboardSuccess":"წარმატებით დაკოპირდა","collapse":"ჩაკეცვა","expand":"გახსნა","fullscreen":"სრულ ეკრანზე","language":"ენის შეცვლა","openInNewTab":"გახსნა ახალ ჩანართში"},"errors":{"missedAttachment":"დანართი ვერ მოიძებნა"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[406],{1406:function(e){e.exports=JSON.parse('{"statuses":{"passed":"aprobado","failed":"fallido","broken":"roto","skipped":"omitido","unknown":"desconocido","total":"total","flakyTests":"inestable","newTests":"nuevo","retryTests":"reintento"},"testSummary":{"all":"Todas las pruebas","flaky":"Pruebas inestables","retry":"Pruebas reintentadas","new":"Pruebas nuevas"},"tabs":{"total":"Todo"},"search":{"search":"Buscar","search-placeholder":"Nombre o ID"},"filters":{"more-filters":"Más filtros","enable-filter":"Habilitar filtro para \\"{filter}\\"","flaky":"Inestable","retry":"Reintento","new":"Nuevo"},"sort-by":{"sort-by-text":"Ordenar por:","sort-by-category":"Ordenar por","direction-category":"Dirección"},"sort-by.values":{"order":"Orden","alphabet":"Alfabeto","duration":"Duración","status":"Estado"},"sort-by.directions":{"order-desc":"Más reciente – Más antiguo","order-asc":"Más antiguo – Más reciente","order-asc-short":"Antiguo","order-desc-short":"Reciente","alphabet-asc":"A – Z","alphabet-desc":"Z – A","alphabet-asc-short":"A – Z","alphabet-desc-short":"Z – A","duration-asc":"1 – 9","duration-desc":"9 – 1","duration-asc-short":"1 – 9","duration-desc-short":"9 – 1","status-asc":"Como en la lista de filtros","status-desc":"Invertido","status-asc-short":"Regular","status-desc-short":"Invertido"},"empty":{"no-results":"Sin resultados","no-tests-found":"No se encontraron resultados","clear-filters":"Limpiar filtros","no-attachments-results":"No hay información de adjuntos disponible","no-history-results":"No hay información de historial disponible","no-retries-results":"No hay información de reintentos disponible"},"severity":{"blocker":"bloqueante","critical":"crítico","normal":"normal","minor":"menor","trivial":"trivial"},"execution":{"name":"Ejecución","body":"Cuerpo de la prueba","setup":"Configuración","teardown":"Desmontaje"},"ui":{"labels":"Etiquetas","metadata":"Metadatos","parameters":"Parámetros","description":"Descripción","links":"Enlaces","overview":"Resumen","history":"Historial","attachments":"Adjuntos","retries":"Reintentos","error":"Error","goToStep":"Ir al paso","showLess":"Mostrar menos","showMore":"Mostrar más","copy":"Copiar","at":"a las"},"controls":{"newTabAttachment":"Abrir adjunto en nueva pestaña","nextTR":"Siguiente resultado de prueba","prevTR":"Resultado de prueba anterior","downloadAttachment":"Descargar adjunto","backto":"Volver a","clipboard":"Copiar al portapapeles","clipboardError":"Error. Parece que esta funcionalidad no está soportada por tu navegador","clipboardSuccess":"Copiado con éxito","collapse":"Colapsar","expand":"Expandir","fullscreen":"Pantalla completa","language":"Cambiar idioma","openInNewTab":"Abrir en nueva pestaña"},"errors":{"missedAttachment":"Adjunto no encontrado"}}')}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_allurereport_web_awesome=self.webpackChunk_allurereport_web_awesome||[]).push([[476],{6476:function(e){e.exports=JSON.parse('{"statuses":{"passed":"անցած","failed":"ձախողված","broken":"կոտրված","skipped":"բաց թողնված","unknown":"անհայտ","total":"ընդհանուր","flakyTests":"անհուսալի","newTests":"նոր","retryTests":"կրկնություն"},"testSummary":{"all":"Բոլոր թեստերը","flaky":"Անհուսալի թեստեր","retry":"Կրկնված թեստեր","new":"Նոր թեստեր"},"tabs":{"total":"Բոլոր"},"search":{"search":"Որոնում","search-placeholder":"Անվանում կամ ID"},"filters":{"more-filters":"Լրացուցիչ ֆիլտրեր","enable-filter":"Միացնել \\"{filter}\\" ֆիլտրը","flaky":"Անհուսալի","retry":"Կրկնություն","new":"Նոր"},"sort-by":{"sort-by-text":"Դասավորել ըստ:","sort-by-category":"Դասավորել ըստ","direction-category":"Ուղղություն"},"sort-by.values":{"order":"Կարգ","alphabet":"Այբուբեն","duration":"Տևողություն","status":"Կարգավիճակ"},"sort-by.directions":{"order-desc":"Վերջինը – Առաջինը","order-asc":"Առաջինը – Վերջինը","order-asc-short":"Առաջինը","order-desc-short":"Վերջինը","alphabet-asc":"Ա – Ֆ","alphabet-desc":"Ֆ – Ա","alphabet-asc-short":"Ա – Ֆ","alphabet-desc-short":"Ֆ – Ա","duration-asc":"1 – 9","duration-desc":"9 – 1","duration-asc-short":"1 – 9","duration-desc-short":"9 – 1","status-asc":"Ինչպես ֆիլտրերի ցանկում","status-desc":"Հակադարձված","status-asc-short":"Սովորական","status-desc-short":"Հակադարձված"},"empty":{"no-results":"Ոչ մի արդյունք","no-tests-found":"Արդյունքներ չեն գտնվել","clear-filters":"Մաքրել ֆիլտրները","no-attachments-results":"Կցորդների մասին տեղեկություններ չկան","no-history-results":"Պատմության մասին տեղեկություններ չկան","no-retries-results":"Կրկնությունների մասին տեղեկություններ չկան"},"severity":{"blocker":"արգելափակում","critical":"կրիտիկական","normal":"նորմալ","minor":"աննշան","trivial":"աննշան"},"execution":{"name":"Կատարում","body":"Թեստի մարմին","setup":"Պատրաստում","teardown":"Ավարտում"},"ui":{"labels":"Պիտակներ","metadata":"Մետատվյալներ","parameters":"Պարամետրեր","description":"Նկարագրություն","links":"Հղումներ","overview":"Ակնարկ","history":"Պատմություն","attachments":"Կցորդներ","retries":"Կրկնություններ","error":"Սխալ","goToStep":"Գնալ քայլին","showLess":"Ցուցադրել պակաս","showMore":"Ցուցադրել ավելին","copy":"Պատճենել","at":"է"},"controls":{"newTabAttachment":"Բացել նոր ներդիրում","nextTR":"Հաջորդ թեստի արդյունքը","prevTR":"Նախորդ թեստի արդյունքը","downloadAttachment":"Ներբեռնել կցորդը","backto":"Վերադառնալ","clipboard":"Պատճենել սեղմատախտակին","clipboardError":"Սխալ. Հավանաբար ձեր զննարկիչը չի աջակցում այս գործառույթին","clipboardSuccess":"Հաջողությամբ պատճենվեց","collapse":"Կծկել","expand":"Ընդլայնել","fullscreen":"Լրիվ էկրան","language":"Փոխել լեզուն","openInNewTab":"Բացել նոր ներդիրում"},"errors":{"missedAttachment":"Կցորդը չի գտնվել"}}')}}]);