@allurereport/web-awesome 3.0.0-beta.16 → 3.0.0-beta.18

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 (113) hide show
  1. package/dist/multi/173.app-b58a8b2733d390b78773.js +1 -0
  2. package/dist/multi/174.app-b58a8b2733d390b78773.js +1 -0
  3. package/dist/multi/252.app-b58a8b2733d390b78773.js +1 -0
  4. package/dist/multi/282.app-b58a8b2733d390b78773.js +1 -0
  5. package/dist/multi/29.app-b58a8b2733d390b78773.js +1 -0
  6. package/dist/multi/416.app-b58a8b2733d390b78773.js +1 -0
  7. package/dist/multi/527.app-b58a8b2733d390b78773.js +1 -0
  8. package/dist/multi/600.app-b58a8b2733d390b78773.js +1 -0
  9. package/dist/multi/605.app-b58a8b2733d390b78773.js +1 -0
  10. package/dist/multi/638.app-b58a8b2733d390b78773.js +1 -0
  11. package/dist/multi/672.app-b58a8b2733d390b78773.js +1 -0
  12. package/dist/multi/686.app-b58a8b2733d390b78773.js +1 -0
  13. package/dist/multi/725.app-b58a8b2733d390b78773.js +1 -0
  14. package/dist/multi/741.app-b58a8b2733d390b78773.js +1 -0
  15. package/dist/multi/755.app-b58a8b2733d390b78773.js +1 -0
  16. package/dist/multi/894.app-b58a8b2733d390b78773.js +1 -0
  17. package/dist/multi/943.app-b58a8b2733d390b78773.js +1 -0
  18. package/dist/multi/980.app-b58a8b2733d390b78773.js +1 -0
  19. package/dist/multi/app-b58a8b2733d390b78773.js +2 -0
  20. package/dist/multi/app-b58a8b2733d390b78773.js.LICENSE.txt +8 -0
  21. package/dist/multi/manifest.json +20 -20
  22. package/dist/multi/styles-3610e3d9923b6a2a1c67.css +46 -0
  23. package/dist/single/app-51defb8852956a2ff6f1.js +2 -0
  24. package/dist/single/app-51defb8852956a2ff6f1.js.LICENSE.txt +8 -0
  25. package/dist/single/manifest.json +1 -1
  26. package/package.json +17 -10
  27. package/src/components/Charts/index.tsx +12 -3
  28. package/src/components/Header/CiInfo/index.tsx +51 -0
  29. package/src/components/Header/CiInfo/styles.scss +7 -0
  30. package/src/components/Header/index.tsx +6 -1
  31. package/src/components/MainReport/index.tsx +65 -2
  32. package/src/components/MainReport/styles.scss +8 -0
  33. package/src/components/NavTabs/index.tsx +70 -0
  34. package/src/components/ReportBody/Filters.tsx +1 -1
  35. package/src/components/ReportBody/index.tsx +1 -1
  36. package/src/components/ReportBody/styles.scss +2 -2
  37. package/src/components/ReportGlobalAttachments/index.tsx +34 -0
  38. package/src/components/ReportGlobalAttachments/styles.scss +11 -0
  39. package/src/components/ReportGlobalErrors/index.tsx +30 -0
  40. package/src/components/ReportGlobalErrors/styles.scss +12 -0
  41. package/src/components/ReportHeader/index.tsx +28 -10
  42. package/src/components/ReportHeader/styles.scss +7 -1
  43. package/src/components/ReportMetadata/MetadataSummary.tsx +1 -1
  44. package/src/components/ReportMetadata/styles.scss +0 -2
  45. package/src/components/TestResult/TrAttachmentsView/index.tsx +5 -3
  46. package/src/components/TestResult/TrInfo/TrInfoStatuses.tsx +1 -1
  47. package/src/components/TestResult/TrPrevStatuses/index.tsx +1 -2
  48. package/src/components/TestResult/TrRetriesView/TrRetriesItem.tsx +24 -6
  49. package/src/components/TestResult/TrRetriesView/index.tsx +8 -1
  50. package/src/components/TestResult/TrSeverity/index.tsx +1 -1
  51. package/src/components/TestResult/TrStatus/index.tsx +1 -1
  52. package/src/components/TestResult/TrSteps/TrStepInfo.tsx +4 -4
  53. package/src/components/TestResult/TrSteps/styles.scss +10 -1
  54. package/src/components/TestResult/TrTabs/index.tsx +19 -57
  55. package/src/components/TestResult/index.tsx +0 -1
  56. package/src/components/Tree/index.tsx +1 -3
  57. package/src/index.html +14 -1
  58. package/src/index.tsx +9 -1
  59. package/src/locales/az.json +9 -8
  60. package/src/locales/de.json +9 -8
  61. package/src/locales/en.json +9 -8
  62. package/src/locales/es.json +9 -8
  63. package/src/locales/fr.json +9 -8
  64. package/src/locales/he.json +9 -8
  65. package/src/locales/hy.json +9 -8
  66. package/src/locales/it.json +9 -8
  67. package/src/locales/ja.json +9 -8
  68. package/src/locales/ka.json +9 -8
  69. package/src/locales/kr.json +9 -8
  70. package/src/locales/nl.json +9 -8
  71. package/src/locales/pl.json +9 -8
  72. package/src/locales/pt.json +9 -8
  73. package/src/locales/ru.json +9 -8
  74. package/src/locales/sv.json +9 -8
  75. package/src/locales/tr.json +9 -8
  76. package/src/locales/zh.json +9 -8
  77. package/src/stores/chart.ts +7 -7
  78. package/src/stores/globals.ts +28 -0
  79. package/src/stores/locale.ts +0 -1
  80. package/src/utils/tree.ts +0 -2
  81. package/test/components/Header/CiInfo.test.tsx +151 -0
  82. package/test/components/Header.test.tsx +127 -0
  83. package/tsconfig.json +6 -1
  84. package/tsconfig.node.json +8 -0
  85. package/types.d.ts +2 -1
  86. package/vitest.config.ts +30 -3
  87. package/vitest.setup.ts +1 -0
  88. package/dist/multi/173.app-1e7b32b35927de455ae2.js +0 -1
  89. package/dist/multi/174.app-1e7b32b35927de455ae2.js +0 -1
  90. package/dist/multi/252.app-1e7b32b35927de455ae2.js +0 -1
  91. package/dist/multi/282.app-1e7b32b35927de455ae2.js +0 -1
  92. package/dist/multi/29.app-1e7b32b35927de455ae2.js +0 -1
  93. package/dist/multi/416.app-1e7b32b35927de455ae2.js +0 -1
  94. package/dist/multi/527.app-1e7b32b35927de455ae2.js +0 -1
  95. package/dist/multi/600.app-1e7b32b35927de455ae2.js +0 -1
  96. package/dist/multi/605.app-1e7b32b35927de455ae2.js +0 -1
  97. package/dist/multi/638.app-1e7b32b35927de455ae2.js +0 -1
  98. package/dist/multi/672.app-1e7b32b35927de455ae2.js +0 -1
  99. package/dist/multi/686.app-1e7b32b35927de455ae2.js +0 -1
  100. package/dist/multi/725.app-1e7b32b35927de455ae2.js +0 -1
  101. package/dist/multi/741.app-1e7b32b35927de455ae2.js +0 -1
  102. package/dist/multi/755.app-1e7b32b35927de455ae2.js +0 -1
  103. package/dist/multi/894.app-1e7b32b35927de455ae2.js +0 -1
  104. package/dist/multi/943.app-1e7b32b35927de455ae2.js +0 -1
  105. package/dist/multi/980.app-1e7b32b35927de455ae2.js +0 -1
  106. package/dist/multi/app-1e7b32b35927de455ae2.js +0 -2
  107. package/dist/multi/app-1e7b32b35927de455ae2.js.LICENSE.txt +0 -23
  108. package/dist/multi/styles-99f5e45d3e35c8c13cd6.css +0 -43
  109. package/dist/single/app-b4be944c6ebe4a83f366.js +0 -2
  110. package/dist/single/app-b4be944c6ebe4a83f366.js.LICENSE.txt +0 -23
  111. package/src/utils/capitalize.ts +0 -6
  112. package/src/utils/charts.ts +0 -167
  113. /package/src/components/{TestResult/TrTabs → NavTabs}/styles.scss +0 -0
@@ -1,10 +1,9 @@
1
1
  import { type HistoryTestResult } from "@allurereport/core-api";
2
- import { getReportOptions } from "@allurereport/web-commons";
2
+ import { capitalize, getReportOptions } from "@allurereport/web-commons";
3
3
  import { SvgIcon, Text, TooltipWrapper, allureIcons } from "@allurereport/web-components";
4
4
  import type { FunctionalComponent } from "preact";
5
5
  import type { AwesomeReportOptions, AwesomeTestResult } from "types";
6
6
  import { useI18n } from "@/stores";
7
- import { capitalize } from "@/utils/capitalize";
8
7
  import { timestampToDate } from "@/utils/time";
9
8
  import * as styles from "./styles.scss";
10
9
 
@@ -5,27 +5,44 @@ import { useState } from "preact/hooks";
5
5
  import type { AwesomeTestResult } from "types";
6
6
  import { TrError } from "@/components/TestResult/TrError";
7
7
  import * as styles from "@/components/TestResult/TrRetriesView/styles.scss";
8
+ import { useI18n } from "@/stores/locale";
8
9
  import { navigateTo } from "@/stores/router";
9
10
  import { timestampToDate } from "@/utils/time";
10
11
 
11
- export const TrRetriesItem: FunctionalComponent<{
12
+ export type TrRetriesItemProps = {
12
13
  testResultItem: AwesomeTestResult;
13
- }> = ({ testResultItem }) => {
14
+ attempt: number;
15
+ totalAttempts: number;
16
+ };
17
+
18
+ export const TrRetriesItem: FunctionalComponent<TrRetriesItemProps> = ({ testResultItem, attempt, totalAttempts }) => {
14
19
  const { id, status, error, stop, duration } = testResultItem;
15
20
  const [isOpened, setIsOpen] = useState(false);
16
- const convertedStop = timestampToDate(stop);
21
+
22
+ const { t } = useI18n("ui");
23
+
24
+ const retryTitlePrefix = t("attempt", { attempt, total: totalAttempts });
25
+ const convertedStop = stop ? timestampToDate(stop) : undefined;
26
+ const retryTitle = convertedStop ? `${retryTitlePrefix} – ${convertedStop}` : retryTitlePrefix;
27
+
17
28
  const formattedDuration = typeof duration === "number" ? formatDuration(duration) : undefined;
18
29
  const navigateUrl = id;
19
30
 
20
31
  return (
21
- <div>
32
+ <div data-testid="test-result-retries-item">
22
33
  <div className={styles["test-result-retries-item-header"]} onClick={() => setIsOpen(!isOpened)}>
23
34
  {Boolean(error.trace || error.message) && (
24
- <ArrowButton isOpened={isOpened} icon={allureIcons.lineArrowsChevronDown} />
35
+ <ArrowButton
36
+ data-testid="test-result-retries-item-arrow-button"
37
+ isOpened={isOpened}
38
+ icon={allureIcons.lineArrowsChevronDown}
39
+ />
25
40
  )}
26
41
  <div className={styles["test-result-retries-item-wrap"]}>
27
42
  <TreeItemIcon status={status} className={styles["test-result-retries-item-status"]} />
28
- <Text className={styles["test-result-retries-item-text"]}>{convertedStop}</Text>
43
+ <Text data-testid="test-result-retries-item-text" className={styles["test-result-retries-item-text"]}>
44
+ {retryTitle}
45
+ </Text>
29
46
  <div className={styles["test-result-retries-item-info"]}>
30
47
  {Boolean(formattedDuration) && (
31
48
  <Text type="ui" size={"s"} className={styles["item-time"]}>
@@ -37,6 +54,7 @@ export const TrRetriesItem: FunctionalComponent<{
37
54
  style={"ghost"}
38
55
  size={"s"}
39
56
  className={styles["test-result-retries-item-link"]}
57
+ data-testid="test-result-retries-item-open-button"
40
58
  onClick={() => navigateTo(navigateUrl)}
41
59
  />
42
60
  </div>
@@ -13,7 +13,14 @@ export const TrRetriesView: FunctionalComponent<{
13
13
  return (
14
14
  <div className={styles["test-result-history"]}>
15
15
  {retries.length ? (
16
- retries?.map((item, key) => <TrRetriesItem testResultItem={item as unknown as AwesomeTestResult} key={key} />)
16
+ retries?.map((item, key) => (
17
+ <TrRetriesItem
18
+ testResultItem={item as unknown as AwesomeTestResult}
19
+ key={key}
20
+ attempt={retries.length - key}
21
+ totalAttempts={retries.length + 1}
22
+ />
23
+ ))
17
24
  ) : (
18
25
  <div className={styles["test-result-empty"]}>{t("no-retries-results")}</div>
19
26
  )}
@@ -1,7 +1,7 @@
1
+ import { capitalize } from "@allurereport/web-commons";
1
2
  import { SvgIcon, Text, allureIcons } from "@allurereport/web-components";
2
3
  import clsx from "clsx";
3
4
  import { useI18n } from "@/stores/locale";
4
- import { capitalize } from "@/utils/capitalize";
5
5
  import * as styles from "./styles.scss";
6
6
 
7
7
  const icons: Record<string, string> = {
@@ -1,8 +1,8 @@
1
1
  import type { TestStatus } from "@allurereport/core-api";
2
+ import { capitalize } from "@allurereport/web-commons";
2
3
  import { Text, TreeItemIcon } from "@allurereport/web-components";
3
4
  import clsx from "clsx";
4
5
  import { useI18n } from "@/stores";
5
- import { capitalize } from "@/utils/capitalize";
6
6
  import * as styles from "./styles.scss";
7
7
 
8
8
  export const TrStatus = ({ status }: { status: TestStatus }) => {
@@ -50,18 +50,18 @@ export const TrStepInfo = (props: { item: DefaultTestStepResult }) => {
50
50
  const stepLength = item.steps?.length;
51
51
  const attachmentLength = item.steps?.filter((step) => step.type === "attachment")?.length;
52
52
 
53
- const failedStepsInTree = countErrorStatuses(item);
53
+ const failedStepsInTree = countErrorStatuses(item) || {};
54
54
 
55
55
  const FailedSteps = () => (
56
- <div>
56
+ <div className={styles["failed-steps"]}>
57
57
  {Object.entries(failedStepsInTree).map(([status, count], index) => (
58
58
  <div className={styles["item-status"]} key={index}>
59
59
  <SvgIcon
60
- size="m"
60
+ size="s"
61
61
  id={icons[status as TestStatus]}
62
62
  className={clsx(styles["item-status-icon"], styles[`status-${status}`])}
63
63
  />
64
- {count && <span>{count}</span>}
64
+ {count && <Text size={"s"}>{count}</Text>}
65
65
  </div>
66
66
  ))}
67
67
  </div>
@@ -92,7 +92,7 @@
92
92
  align-items: center;
93
93
  gap: 4px;
94
94
  color: var(--on-icon-secondary);
95
- min-width: 52px;
95
+ min-width: 56px;
96
96
  justify-content: flex-end;
97
97
  }
98
98
 
@@ -253,3 +253,12 @@
253
253
  color: var(--bg-support-skat);
254
254
  }
255
255
  }
256
+
257
+ .failed-steps {
258
+ display: flex;
259
+ gap: 8px;
260
+ }
261
+
262
+ :global(.code-toolbar .toolbar) {
263
+ display: none;
264
+ }
@@ -1,57 +1,19 @@
1
- import { Text } from "@allurereport/web-components";
2
- import { type ComponentChildren, createContext } from "preact";
3
- import { useContext, useEffect, useState } from "preact/hooks";
4
- import { activeSubTab, activeTab, navigateTo, route } from "@/stores/router";
5
- import * as styles from "./styles.scss";
1
+ import { type ComponentChildren } from "preact";
2
+ import { useEffect } from "preact/hooks";
3
+ import { NavTab, NavTabs, NavTabsList, useNavTabsContext } from "@/components/NavTabs";
4
+ import { activeSubTab, navigateTo, route } from "@/stores/router";
6
5
 
7
- type TrTabsContextT = {
8
- currentTab: string | undefined;
9
- setCurrentTab: (id: string) => void;
10
- };
11
-
12
- const TestResultTabsContext = createContext<TrTabsContextT | null>(null);
13
-
14
- export const useTestResultTabsContext = () => {
15
- const context = useContext(TestResultTabsContext);
16
-
17
- if (!context) {
18
- throw new Error("TestResultTabs components must be used within a TrTabs component");
19
- }
20
-
21
- return context;
22
- };
23
-
24
- export const TestResultTabsProvider = (props: { initialTab?: string; children: ComponentChildren }) => {
25
- const { children, initialTab } = props;
26
- const [currentTab, setCurrentTab] = useState<string | undefined>(initialTab);
27
-
28
- return (
29
- <TestResultTabsContext.Provider value={{ currentTab, setCurrentTab }}>{children}</TestResultTabsContext.Provider>
30
- );
31
- };
32
-
33
- export const TrTabs = (props: { children: ComponentChildren; initialTab?: string }) => {
34
- return <TestResultTabsProvider {...props} />;
35
- };
36
-
37
- export const TrTabsList = (props: { children: ComponentChildren }) => {
38
- return <div className={styles.tabsList}>{props.children}</div>;
39
- };
6
+ export const TrTabs = NavTabs;
7
+ export const TrTabsList = NavTabsList;
8
+ export const useTestResultTabsContext = useNavTabsContext;
40
9
 
41
10
  export const TrTab = (props: { id: string; children: ComponentChildren }) => {
42
11
  const { testResultId } = route.value.params;
43
- const { currentTab, setCurrentTab } = useTestResultTabsContext();
12
+ const { currentTab, setCurrentTab } = useNavTabsContext();
44
13
  const { id, children } = props;
45
14
  const isActiveFromUrl = activeSubTab.value === id;
46
- const isCurrentTab = isActiveFromUrl ? isActiveFromUrl : currentTab === id;
47
-
48
- useEffect(() => {
49
- if (isActiveFromUrl) {
50
- setCurrentTab(id);
51
- }
52
- }, [activeSubTab.value]);
53
-
54
15
  const handleTabClick = () => {
16
+ const isCurrentTab = isActiveFromUrl ? isActiveFromUrl : currentTab === id;
55
17
  if (isCurrentTab) {
56
18
  return;
57
19
  }
@@ -64,17 +26,17 @@ export const TrTab = (props: { id: string; children: ComponentChildren }) => {
64
26
  },
65
27
  });
66
28
  };
29
+ const isCurrentTab = isActiveFromUrl ? isActiveFromUrl : currentTab === id;
30
+
31
+ useEffect(() => {
32
+ if (isActiveFromUrl) {
33
+ setCurrentTab(id);
34
+ }
35
+ }, [activeSubTab.value, id, setCurrentTab]);
67
36
 
68
37
  return (
69
- <button
70
- className={styles.tab}
71
- onClick={handleTabClick}
72
- data-testid={`test-result-tab-${id}`}
73
- aria-current={isCurrentTab ? true : undefined}
74
- >
75
- <Text type="paragraph" size="m">
76
- {children}
77
- </Text>
78
- </button>
38
+ <NavTab id={id} onClick={handleTabClick} data-testid={`test-result-tab-${id}`} isCurrentTab={isCurrentTab}>
39
+ {children}
40
+ </NavTab>
79
41
  );
80
42
  };
@@ -5,7 +5,6 @@ import type { AwesomeTestResult } from "types";
5
5
  import { TrAttachmentView } from "@/components/TestResult/TrAttachmentsView";
6
6
  import TrEmpty from "@/components/TestResult/TrEmpty";
7
7
  import { TrEnvironmentsView } from "@/components/TestResult/TrEnvironmentsView";
8
- import { TrHeader } from "@/components/TestResult/TrHeader";
9
8
  import TrHistoryView from "@/components/TestResult/TrHistory";
10
9
  import { TrInfo } from "@/components/TestResult/TrInfo";
11
10
  import { TrOverview } from "@/components/TestResult/TrOverview";
@@ -22,7 +22,6 @@ import * as styles from "./styles.scss";
22
22
  export const TreeList = () => {
23
23
  const { t } = useI18n("empty");
24
24
  const { t: tEnvironments } = useI18n("environments");
25
- const { t: tTransitions } = useI18n("transitions");
26
25
  const { t: tooltip } = useI18n("transitions.description");
27
26
  const { currentTab } = useTabsContext();
28
27
  const routeId = route.value.params?.testResultId;
@@ -30,9 +29,8 @@ export const TreeList = () => {
30
29
  const localizers = useMemo(
31
30
  () => ({
32
31
  tooltip,
33
- value: tTransitions,
34
32
  }),
35
- [tTransitions, tooltip],
33
+ [tooltip],
36
34
  );
37
35
 
38
36
  return (
package/src/index.html CHANGED
@@ -30,7 +30,20 @@
30
30
  "reportUuid": "51b36daf-614b-409c-b6a1-e8e401b2c144",
31
31
  "groupBy": ["parentSuite", "suite", "subSuite"],
32
32
  "layout": "split",
33
- "allureVersion": "3.0.0-beta.8"
33
+ "allureVersion": "3.0.0-beta.8",
34
+ "ci": {
35
+ "type": "github",
36
+ "detected": true,
37
+ "jobUid": "1234567890",
38
+ "jobUrl": "#",
39
+ "jobName": "Sample job name",
40
+ "jobRunUid": "0987654321",
41
+ "jobRunUrl": "#",
42
+ "jobRunName": "Sample job run name",
43
+ "jobRunBranch": "master",
44
+ "pullRequestName": "Pull request #123",
45
+ "pullRequestUrl": "#"
46
+ }
34
47
  };
35
48
  </script>
36
49
  <script async>
package/src/index.tsx CHANGED
@@ -14,6 +14,7 @@ import { fetchEnvStats, fetchReportStats, getLocale, getTheme, waitForI18next }
14
14
  import { fetchPieChartData } from "@/stores/chart";
15
15
  import { currentEnvironment, environmentsStore, fetchEnvironments } from "@/stores/env";
16
16
  import { fetchEnvInfo } from "@/stores/envInfo";
17
+ import { fetchGlobals } from "@/stores/globals";
17
18
  import { getLayout, isLayoutLoading, layoutStore } from "@/stores/layout";
18
19
  import { handleHashChange, route } from "@/stores/router";
19
20
  import { currentSection, getSection } from "@/stores/sections";
@@ -36,7 +37,14 @@ const App = () => {
36
37
  const [prefetched, setPrefetched] = useState(false);
37
38
  const testResultId = route.value.params?.testResultId ?? null;
38
39
  const prefetchData = async () => {
39
- const fns = [ensureReportDataReady, fetchReportStats, fetchPieChartData, fetchEnvironments, fetchEnvInfo];
40
+ const fns = [
41
+ ensureReportDataReady,
42
+ fetchReportStats,
43
+ fetchPieChartData,
44
+ fetchEnvironments,
45
+ fetchEnvInfo,
46
+ fetchGlobals,
47
+ ];
40
48
 
41
49
  if (globalThis) {
42
50
  fns.unshift(
@@ -17,7 +17,10 @@
17
17
  "new": "Yeni testlər"
18
18
  },
19
19
  "tabs": {
20
- "total": "Bütün"
20
+ "total": "Bütün",
21
+ "results": "Nəticələr",
22
+ "globalAttachments": "Qlobal Əlavələr",
23
+ "globalErrors": "Qlobal Səhvlər"
21
24
  },
22
25
  "search": {
23
26
  "search": "Axtarış",
@@ -76,6 +79,7 @@
76
79
  "no-message-provided": "Mesaj təqdim edilməyib",
77
80
  "clear-filters": "Filtrləri təmizlə",
78
81
  "no-attachments-results": "Əlavə məlumatı mövcud deyil",
82
+ "no-global-errors-results": "Qlobal səhvlər haqqında məlumat mövcud deyil",
79
83
  "no-history-results": "Tarixçə məlumatı mövcud deyil",
80
84
  "no-retries-results": "Təkrar məlumatı mövcud deyil",
81
85
  "no-test-steps-results": "Test addımları haqqında məlumat mövcud deyil",
@@ -116,9 +120,12 @@
116
120
  "showLess": "Daha az göstər",
117
121
  "showMore": "Daha çox göstər",
118
122
  "copy": "Kopyala",
123
+ "attempt": "Cəhd {{attempt}} / {{total}}",
119
124
  "at": "üçün",
120
125
  "variables": "Dəyişənlər",
121
- "openPwTrace": "Playwright Trace aç"
126
+ "openPwTrace": "Playwright Trace aç",
127
+ "finishedAtOriginal": "{{formattedCreatedAt}}, çıxış kodu {{original}} ilə",
128
+ "finishedAtBoth": "{{formattedCreatedAt}}, çıxış kodu {{actual}} ilə (əsas {{original}})"
122
129
  },
123
130
  "controls": {
124
131
  "newTabAttachment": "Yeni sekmede aç",
@@ -167,12 +174,6 @@
167
174
  "title": "Test Uğur Dərəcəsi"
168
175
  }
169
176
  },
170
- "transitions": {
171
- "new": "Yeni",
172
- "fixed": "Düzəldilmiş",
173
- "regressed": "Reqressiya",
174
- "malfunctioned": "Sınıq"
175
- },
176
177
  "transitions.description": {
177
178
  "new": "Bu test nəticəsinin hesabatda ilk dəfə görünməsi",
178
179
  "fixed": "Əvvəl \"uğursuz\" və ya \"sınıq\" olan, indi \"uğurlu\" olan test",
@@ -17,7 +17,10 @@
17
17
  "new": "Neue Tests"
18
18
  },
19
19
  "tabs": {
20
- "total": "Alle"
20
+ "total": "Alle",
21
+ "results": "Ergebnisse",
22
+ "globalAttachments": "Globale Anhänge",
23
+ "globalErrors": "Globale Fehler"
21
24
  },
22
25
  "search": {
23
26
  "search": "Suchen",
@@ -76,6 +79,7 @@
76
79
  "no-message-provided": "Keine Nachricht vorhanden",
77
80
  "clear-filters": "Filter zurücksetzen",
78
81
  "no-attachments-results": "Keine Anhängeinformationen verfügbar",
82
+ "no-global-errors-results": "Keine globalen Fehlerinformationen verfügbar",
79
83
  "no-history-results": "Keine Verlaufsinformationen verfügbar",
80
84
  "no-retries-results": "Keine Wiederholungsinformationen verfügbar",
81
85
  "no-test-steps-results": "Keine Informationen zu Testschritten verfügbar",
@@ -116,9 +120,12 @@
116
120
  "showLess": "Weniger anzeigen",
117
121
  "showMore": "Mehr anzeigen",
118
122
  "copy": "Kopieren",
123
+ "attempt": "Versuch {{attempt}} von {{total}}",
119
124
  "at": "bei",
120
125
  "variables": "Variablen",
121
- "openPwTrace": "Playwright Trace öffnen"
126
+ "openPwTrace": "Playwright Trace öffnen",
127
+ "finishedAtOriginal": "{{formattedCreatedAt}}, mit Exit-Code {{original}}",
128
+ "finishedAtBoth": "{{formattedCreatedAt}}, mit Exit-Code {{actual}} (ursprünglich {{original}})"
122
129
  },
123
130
  "controls": {
124
131
  "newTabAttachment": "Anhang in neuem Tab öffnen",
@@ -167,12 +174,6 @@
167
174
  "title": "Testerfolgsrate"
168
175
  }
169
176
  },
170
- "transitions": {
171
- "new": "Neu",
172
- "fixed": "Behoben",
173
- "regressed": "Regressiert",
174
- "malfunctioned": "Defekt"
175
- },
176
177
  "transitions.description": {
177
178
  "new": "Erstes Auftreten dieses Testergebnisses im Bericht",
178
179
  "fixed": "Zuvor \"fehlgeschlagen\" oder \"defekt\" gewesener Test, der jetzt \"erfolgreich\" ist",
@@ -17,7 +17,10 @@
17
17
  "new": "New tests"
18
18
  },
19
19
  "tabs": {
20
- "total": "All"
20
+ "total": "All",
21
+ "results": "Results",
22
+ "globalAttachments": "Global Attachments",
23
+ "globalErrors": "Global Errors"
21
24
  },
22
25
  "search": {
23
26
  "search": "Search",
@@ -76,6 +79,7 @@
76
79
  "no-message-provided": "No message is provided",
77
80
  "clear-filters": "Clear filters",
78
81
  "no-attachments-results": "No attachments information available",
82
+ "no-global-errors-results": "No global errors information available",
79
83
  "no-history-results": "No history information available",
80
84
  "no-retries-results": "No retries information available",
81
85
  "no-test-steps-results": "No test steps information available",
@@ -116,9 +120,12 @@
116
120
  "showLess": "Show less",
117
121
  "showMore": "Show more",
118
122
  "copy": "Copy",
123
+ "attempt": "Attempt {{attempt}} of {{total}}",
119
124
  "at": "at",
120
125
  "variables": "Variables",
121
- "openPwTrace": "Open Playwright Trace"
126
+ "openPwTrace": "Open Playwright Trace",
127
+ "finishedAtOriginal": "{{formattedCreatedAt}}, with exit code {{original}}",
128
+ "finishedAtBoth": "{{formattedCreatedAt}}, with exit code {{actual}} (original {{original}})"
122
129
  },
123
130
  "controls": {
124
131
  "newTabAttachment": "Open attachment in new tab",
@@ -167,12 +174,6 @@
167
174
  "title": "Test Success Rate"
168
175
  }
169
176
  },
170
- "transitions": {
171
- "new": "New",
172
- "fixed": "Fixed",
173
- "regressed": "Regressed",
174
- "malfunctioned": "Malfuctioned"
175
- },
176
177
  "transitions.description": {
177
178
  "new": "The first occurrence of this test result in the report",
178
179
  "fixed": "A previously \"failed\" or \"broken\" test that is now \"passed\"",
@@ -17,7 +17,10 @@
17
17
  "new": "Pruebas nuevas"
18
18
  },
19
19
  "tabs": {
20
- "total": "Todo"
20
+ "total": "Todo",
21
+ "results": "Resultados",
22
+ "globalAttachments": "Adjuntos Globales",
23
+ "globalErrors": "Errores Globales"
21
24
  },
22
25
  "search": {
23
26
  "search": "Buscar",
@@ -76,6 +79,7 @@
76
79
  "no-message-provided": "No se proporcionó mensaje",
77
80
  "clear-filters": "Limpiar filtros",
78
81
  "no-attachments-results": "No hay información de adjuntos disponible",
82
+ "no-global-errors-results": "No hay información de errores globales disponible",
79
83
  "no-history-results": "No hay información de historial disponible",
80
84
  "no-retries-results": "No hay información de reintentos disponible",
81
85
  "no-test-steps-results": "No hay información disponible sobre los pasos de prueba",
@@ -116,9 +120,12 @@
116
120
  "showLess": "Mostrar menos",
117
121
  "showMore": "Mostrar más",
118
122
  "copy": "Copiar",
123
+ "attempt": "Intento {{attempt}} de {{total}}",
119
124
  "at": "a las",
120
125
  "variables": "Variables",
121
- "openPwTrace": "Abrir Playwright Trace"
126
+ "openPwTrace": "Abrir Playwright Trace",
127
+ "finishedAtOriginal": "{{formattedCreatedAt}}, con código de salida {{original}}",
128
+ "finishedAtBoth": "{{formattedCreatedAt}}, con código de salida {{actual}} (original {{original}})"
122
129
  },
123
130
  "controls": {
124
131
  "newTabAttachment": "Abrir adjunto en nueva pestaña",
@@ -167,12 +174,6 @@
167
174
  "title": "Tasa de éxito de pruebas"
168
175
  }
169
176
  },
170
- "transitions": {
171
- "new": "Nuevo",
172
- "fixed": "Corregido",
173
- "regressed": "Regresado",
174
- "malfunctioned": "Defectuoso"
175
- },
176
177
  "transitions.description": {
177
178
  "new": "Primera aparición de este resultado de prueba en el informe",
178
179
  "fixed": "Prueba que anteriormente \"falló\" o estaba \"rota\" y ahora está \"aprobada\"",
@@ -17,7 +17,10 @@
17
17
  "new": "Nouveaux tests"
18
18
  },
19
19
  "tabs": {
20
- "total": "Tous"
20
+ "total": "Tous",
21
+ "results": "Résultats",
22
+ "globalAttachments": "Pièces jointes globales",
23
+ "globalErrors": "Erreurs globales"
21
24
  },
22
25
  "search": {
23
26
  "search": "Recherche",
@@ -76,6 +79,7 @@
76
79
  "no-message-provided": "Aucun message fourni",
77
80
  "clear-filters": "Effacer les filtres",
78
81
  "no-attachments-results": "Aucune information sur les pièces jointes disponible",
82
+ "no-global-errors-results": "Aucune information sur les erreurs globales disponible",
79
83
  "no-history-results": "Aucune information sur l'historique disponible",
80
84
  "no-retries-results": "Aucune information sur les réessais disponible",
81
85
  "no-test-steps-results": "Aucune information sur les étapes de test disponible",
@@ -116,9 +120,12 @@
116
120
  "showLess": "Montrer moins",
117
121
  "showMore": "Montrer plus",
118
122
  "copy": "Copier",
123
+ "attempt": "Tentative {{attempt}} sur {{total}}",
119
124
  "at": "à",
120
125
  "variables": "Variables",
121
- "openPwTrace": "Ouvrir Playwright Trace"
126
+ "openPwTrace": "Ouvrir Playwright Trace",
127
+ "finishedAtOriginal": "{{formattedCreatedAt}}, avec le code de sortie {{original}}",
128
+ "finishedAtBoth": "{{formattedCreatedAt}}, avec le code de sortie {{actual}} (original {{original}})"
122
129
  },
123
130
  "controls": {
124
131
  "newTabAttachment": "Ouvrir dans un nouvel onglet",
@@ -167,12 +174,6 @@
167
174
  "title": "Taux de réussite des tests"
168
175
  }
169
176
  },
170
- "transitions": {
171
- "new": "Nouveau",
172
- "fixed": "Corrigés",
173
- "regressed": "Régression",
174
- "malfunctioned": "Défectueux"
175
- },
176
177
  "transitions.description": {
177
178
  "new": "Première apparition de ce résultat de test dans le rapport",
178
179
  "fixed": "Test précédemment \"échoué\" ou \"cassé\" qui est maintenant \"réussi\"",
@@ -17,7 +17,10 @@
17
17
  "new": "בדיקות חדשות"
18
18
  },
19
19
  "tabs": {
20
- "total": "הכל"
20
+ "total": "הכל",
21
+ "results": "תוצאות",
22
+ "globalAttachments": "קבצים מצורפים גלובליים",
23
+ "globalErrors": "שגיאות גלובליות"
21
24
  },
22
25
  "search": {
23
26
  "search": "חפש",
@@ -76,6 +79,7 @@
76
79
  "no-message-provided": "לא סופק הודעה",
77
80
  "clear-filters": "נקה מסננים",
78
81
  "no-attachments-results": "לא נמצאה מידע על קבצים מצורפים",
82
+ "no-global-errors-results": "לא נמצא מידע על שגיאות גלובליות",
79
83
  "no-history-results": "לא נמצאה מידע על היסטוריה",
80
84
  "no-retries-results": "לא נמצאה מידע על נסיונות חוזרים",
81
85
  "no-test-steps-results": "אין מידע על שלבי הבדיקה",
@@ -116,9 +120,12 @@
116
120
  "showLess": "הצג פחות",
117
121
  "showMore": "הצג עוד",
118
122
  "copy": "העתק",
123
+ "attempt": "ניסיון {{attempt}} מתוך {{total}}",
119
124
  "at": "ב-",
120
125
  "variables": "משתנים",
121
- "openPwTrace": "פתח Playwright Trace"
126
+ "openPwTrace": "פתח Playwright Trace",
127
+ "finishedAtOriginal": "{{formattedCreatedAt}}, עם קוד יציאה {{original}}",
128
+ "finishedAtBoth": "{{formattedCreatedAt}}, עם קוד יציאה {{actual}} (מקורי {{original}})"
122
129
  },
123
130
  "controls": {
124
131
  "newTabAttachment": "פתח קובץ מצורף בלשונית חדשה",
@@ -167,12 +174,6 @@
167
174
  "title": "שיעור הצלחת הבדיקות"
168
175
  }
169
176
  },
170
- "transitions": {
171
- "new": "חדש",
172
- "fixed": "מתוקן",
173
- "regressed": "נסוג",
174
- "malfunctioned": "פגום"
175
- },
176
177
  "transitions.description": {
177
178
  "new": "הופעה ראשונה של תוצאת בדיקה זו בדוח",
178
179
  "fixed": "בדיקה שהייתה קודם \"נכשלה\" או \"שבורה\" ועכשיו \"עברה\"",
@@ -17,7 +17,10 @@
17
17
  "new": "Նոր թեստեր"
18
18
  },
19
19
  "tabs": {
20
- "total": "Բոլոր"
20
+ "total": "Բոլոր",
21
+ "results": "Արդյունքներ",
22
+ "globalAttachments": "Գլոբալ կցորդներ",
23
+ "globalErrors": "Գլոբալ սխալներ"
21
24
  },
22
25
  "search": {
23
26
  "search": "Որոնում",
@@ -76,6 +79,7 @@
76
79
  "no-message-provided": "Հաղորդագրություն չի տրամադրվել",
77
80
  "clear-filters": "Մաքրել ֆիլտրները",
78
81
  "no-attachments-results": "Կցորդների մասին տեղեկություններ չկան",
82
+ "no-global-errors-results": "Գլոբալ սխալների մասին տեղեկություններ չկան",
79
83
  "no-history-results": "Պատմության մասին տեղեկություններ չկան",
80
84
  "no-retries-results": "Կրկնությունների մասին տեղեկություններ չկան",
81
85
  "no-test-steps-results": "Թեստի քայլերի մասին տեղեկատվությունը հասանելի չէ։",
@@ -116,9 +120,12 @@
116
120
  "showLess": "Ցուցադրել պակաս",
117
121
  "showMore": "Ցուցադրել ավելին",
118
122
  "copy": "Պատճենել",
123
+ "attempt": "Փորձ {{attempt}}-ից {{total}}-ը",
119
124
  "at": "է",
120
125
  "variables": "Փոփոխականներ",
121
- "openPwTrace": "Բացել Playwright Trace"
126
+ "openPwTrace": "Բացել Playwright Trace",
127
+ "finishedAtOriginal": "{{formattedCreatedAt}}, ելքի կոդ {{original}}",
128
+ "finishedAtBoth": "{{formattedCreatedAt}}, ելքի կոդ {{actual}} (սկզբնական {{original}})"
122
129
  },
123
130
  "controls": {
124
131
  "newTabAttachment": "Բացել նոր ներդիրում",
@@ -167,12 +174,6 @@
167
174
  "title": "Թեստերի հաջողության գործակից"
168
175
  }
169
176
  },
170
- "transitions": {
171
- "new": "Նոր",
172
- "fixed": "Ուղղված",
173
- "regressed": "Ռեգրեսիա",
174
- "malfunctioned": "Կոտրված"
175
- },
176
177
  "transitions.description": {
177
178
  "new": "Այս թեստի արդյունքի առաջին հայտնվելը հաշվետվությունում",
178
179
  "fixed": "Նախկինում \"ձախողված\" կամ \"կոտրված\" թեստ, որը այժմ \"անցել\" է",