@allurereport/web-awesome 3.0.0-beta.13 → 3.0.0-beta.14

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 (90) hide show
  1. package/dist/multi/{173.app-01ff983b.js → 173.app-1829fb8f.js} +1 -1
  2. package/dist/multi/{174.app-01ff983b.js → 174.app-1829fb8f.js} +1 -1
  3. package/dist/multi/{252.app-01ff983b.js → 252.app-1829fb8f.js} +1 -1
  4. package/dist/multi/{282.app-01ff983b.js → 282.app-1829fb8f.js} +1 -1
  5. package/dist/multi/{29.app-01ff983b.js → 29.app-1829fb8f.js} +1 -1
  6. package/dist/multi/{416.app-01ff983b.js → 416.app-1829fb8f.js} +1 -1
  7. package/dist/multi/{527.app-01ff983b.js → 527.app-1829fb8f.js} +1 -1
  8. package/dist/multi/{600.app-01ff983b.js → 600.app-1829fb8f.js} +1 -1
  9. package/dist/multi/{605.app-01ff983b.js → 605.app-1829fb8f.js} +1 -1
  10. package/dist/multi/{638.app-01ff983b.js → 638.app-1829fb8f.js} +1 -1
  11. package/dist/multi/{672.app-01ff983b.js → 672.app-1829fb8f.js} +1 -1
  12. package/dist/multi/{686.app-01ff983b.js → 686.app-1829fb8f.js} +1 -1
  13. package/dist/multi/{725.app-01ff983b.js → 725.app-1829fb8f.js} +1 -1
  14. package/dist/multi/{741.app-01ff983b.js → 741.app-1829fb8f.js} +1 -1
  15. package/dist/multi/{755.app-01ff983b.js → 755.app-1829fb8f.js} +1 -1
  16. package/dist/multi/{894.app-01ff983b.js → 894.app-1829fb8f.js} +1 -1
  17. package/dist/multi/{943.app-01ff983b.js → 943.app-1829fb8f.js} +1 -1
  18. package/dist/multi/{980.app-01ff983b.js → 980.app-1829fb8f.js} +1 -1
  19. package/dist/multi/app-1829fb8f.js +2 -0
  20. package/dist/multi/manifest.json +20 -20
  21. package/dist/multi/{styles-01ff983b.css → styles-1829fb8f.css} +12 -10
  22. package/dist/single/app-3a6e31c7.js +2 -0
  23. package/dist/single/manifest.json +1 -1
  24. package/package.json +4 -4
  25. package/src/components/BaseLayout/index.tsx +1 -4
  26. package/src/components/BaseLayout/styles.scss +4 -2
  27. package/src/components/Charts/index.tsx +89 -0
  28. package/src/components/Charts/styles.scss +29 -0
  29. package/src/components/Footer/index.tsx +6 -2
  30. package/src/components/Header/index.tsx +5 -2
  31. package/src/components/Header/styles.scss +2 -0
  32. package/src/components/MainReport/index.tsx +0 -2
  33. package/src/components/MetadataButton/index.tsx +2 -2
  34. package/src/components/Report/index.tsx +7 -0
  35. package/src/components/ReportBody/index.tsx +24 -13
  36. package/src/components/ReportBody/styles.scss +1 -0
  37. package/src/components/ReportHeader/index.tsx +3 -0
  38. package/src/components/SectionPicker/index.tsx +54 -0
  39. package/src/components/SectionPicker/styles.scss +5 -0
  40. package/src/components/SectionSwitcher/index.tsx +14 -0
  41. package/src/components/SectionSwitcher/styles.scss +4 -0
  42. package/src/components/SectionTabs/index.tsx +0 -0
  43. package/src/components/SideBySide/styles.scss +1 -1
  44. package/src/components/SplitLayout/index.tsx +1 -3
  45. package/src/components/SplitLayout/styles.scss +1 -3
  46. package/src/components/TestResult/TrDropdown/index.tsx +1 -2
  47. package/src/components/TestResult/TrEnvironmentItem/index.tsx +1 -2
  48. package/src/components/TestResult/TrHistory/TrHistoryItem.tsx +1 -2
  49. package/src/components/TestResult/TrPwTraces/PwTraceButton.tsx +0 -1
  50. package/src/components/TestResult/TrRetriesView/TrRetriesItem.tsx +5 -4
  51. package/src/components/TestResult/TrSteps/TrAttachment.tsx +31 -5
  52. package/src/components/TestResult/TrSteps/TrStep.tsx +1 -2
  53. package/src/components/TestResult/TrSteps/styles.scss +4 -2
  54. package/src/components/TestResult/TrTabs/index.tsx +8 -4
  55. package/src/components/TestResult/index.tsx +0 -1
  56. package/src/components/Tree/index.tsx +6 -6
  57. package/src/components/Tree/styles.scss +0 -4
  58. package/src/index.tsx +25 -12
  59. package/src/locales/az.json +16 -0
  60. package/src/locales/de.json +17 -0
  61. package/src/locales/en.json +16 -0
  62. package/src/locales/es.json +16 -0
  63. package/src/locales/fr.json +16 -0
  64. package/src/locales/he.json +16 -0
  65. package/src/locales/hy.json +16 -0
  66. package/src/locales/it.json +16 -0
  67. package/src/locales/ja.json +16 -0
  68. package/src/locales/ka.json +16 -0
  69. package/src/locales/kr.json +16 -0
  70. package/src/locales/nl.json +16 -0
  71. package/src/locales/pl.json +16 -0
  72. package/src/locales/pt.json +16 -0
  73. package/src/locales/ru.json +16 -0
  74. package/src/locales/sv.json +16 -0
  75. package/src/locales/tr.json +16 -0
  76. package/src/locales/zh.json +16 -0
  77. package/src/stores/chart.ts +32 -0
  78. package/src/stores/locale.ts +2 -0
  79. package/src/stores/router.ts +76 -16
  80. package/src/stores/sections.ts +63 -0
  81. package/src/stores/tree.ts +9 -6
  82. package/src/styles.scss +21 -0
  83. package/src/utils/charts.ts +169 -0
  84. package/types.d.ts +3 -1
  85. package/dist/multi/app-01ff983b.js +0 -2
  86. package/dist/single/app-607f21f7.js +0 -2
  87. package/src/components/ArrowButton/index.tsx +0 -36
  88. package/src/components/ArrowButton/styles.scss +0 -35
  89. /package/dist/multi/{app-01ff983b.js.LICENSE.txt → app-1829fb8f.js.LICENSE.txt} +0 -0
  90. /package/dist/single/{app-607f21f7.js.LICENSE.txt → app-3a6e31c7.js.LICENSE.txt} +0 -0
@@ -1,8 +1,7 @@
1
1
  import type { DefaultTestStepResult, TestStepResult } from "@allurereport/core-api";
2
- import { Code, Text, TreeItemIcon, allureIcons } from "@allurereport/web-components";
2
+ import { ArrowButton, Code, Text, TreeItemIcon, allureIcons } from "@allurereport/web-components";
3
3
  import type { FunctionComponent } from "preact";
4
4
  import { useState } from "preact/hooks";
5
- import { ArrowButton } from "@/components/ArrowButton";
6
5
  import { MetadataList } from "@/components/Metadata";
7
6
  import { type MetadataItem } from "@/components/ReportMetadata";
8
7
  import { TrError } from "@/components/TestResult/TrError";
@@ -40,7 +40,6 @@
40
40
  align-items: flex-start;
41
41
  gap: 4px;
42
42
  transition: background-color 300ms;
43
- cursor: pointer;
44
43
  padding: 4px 8px 4px 6px;
45
44
  min-height: 32px;
46
45
 
@@ -121,9 +120,12 @@
121
120
  align-items: center;
122
121
  gap: 4px;
123
122
  transition: background-color 300ms;
124
- cursor: pointer;
125
123
  padding: 4px 8px 4px 6px;
126
124
 
125
+ &:not(.empty) {
126
+ cursor: pointer;
127
+ }
128
+
127
129
  &:hover {
128
130
  background: var(--bg-control-flat-medium);
129
131
  }
@@ -1,7 +1,7 @@
1
1
  import { Text } from "@allurereport/web-components";
2
2
  import { type ComponentChildren, createContext } from "preact";
3
3
  import { useContext, useEffect, useState } from "preact/hooks";
4
- import { activeTab, navigateTo, route } from "@/stores/router";
4
+ import { activeSubTab, activeTab, navigateTo, route } from "@/stores/router";
5
5
  import * as styles from "./styles.scss";
6
6
 
7
7
  type TrTabsContextT = {
@@ -39,16 +39,17 @@ export const TrTabsList = (props: { children: ComponentChildren }) => {
39
39
  };
40
40
 
41
41
  export const TrTab = (props: { id: string; children: ComponentChildren }) => {
42
+ const { testResultId } = route.value.params;
42
43
  const { currentTab, setCurrentTab } = useTestResultTabsContext();
43
44
  const { id, children } = props;
44
- const isActiveFromUrl = activeTab.value === id;
45
+ const isActiveFromUrl = activeSubTab.value === id;
45
46
  const isCurrentTab = isActiveFromUrl ? isActiveFromUrl : currentTab === id;
46
47
 
47
48
  useEffect(() => {
48
49
  if (isActiveFromUrl) {
49
50
  setCurrentTab(id);
50
51
  }
51
- }, [activeTab.value]);
52
+ }, [activeSubTab.value]);
52
53
 
53
54
  const handleTabClick = () => {
54
55
  if (isCurrentTab) {
@@ -57,7 +58,10 @@ export const TrTab = (props: { id: string; children: ComponentChildren }) => {
57
58
  setCurrentTab(id);
58
59
  navigateTo({
59
60
  ...route.value,
60
- params: { ...route.value.params, tabName: id !== "overview" ? id : "" },
61
+ params: {
62
+ testResultId,
63
+ subTab: id || null,
64
+ },
61
65
  });
62
66
  };
63
67
 
@@ -63,7 +63,6 @@ const TestResult: FunctionComponent<TrProps> = ({ testResult }) => {
63
63
 
64
64
  return (
65
65
  <>
66
- {!isSplitMode.value && <TrHeader testResult={testResult} />}
67
66
  <div className={clsx(styles.content, splitModeClass)}>
68
67
  {testResult ? <TrContent testResult={testResult} /> : <TrEmpty />}
69
68
  </div>
@@ -21,7 +21,7 @@ export const TreeList = () => {
21
21
  const { t } = useI18n("empty");
22
22
  const { t: tEnvironments } = useI18n("environments");
23
23
  const { currentTab } = useTabsContext();
24
- const { id: routeId } = route.value;
24
+ const routeId = route.value.params?.testResultId;
25
25
 
26
26
  return (
27
27
  <Loadable
@@ -31,7 +31,7 @@ export const TreeList = () => {
31
31
  // TODO: use function instead of computed
32
32
  if (noTests.value) {
33
33
  return (
34
- <div className={styles["tree-list"]}>
34
+ <div>
35
35
  <div className={styles["tree-empty-results"]}>
36
36
  <Text className={styles["tree-empty-results-title"]}>{t("no-results")}</Text>
37
37
  </div>
@@ -41,7 +41,7 @@ export const TreeList = () => {
41
41
 
42
42
  if (noTestsFound.value) {
43
43
  return (
44
- <div className={styles["tree-list"]}>
44
+ <div>
45
45
  <div className={styles["tree-empty-results"]}>
46
46
  <Text tag="p" className={styles["tree-empty-results-title"]}>
47
47
  {t("no-tests-found")}
@@ -62,7 +62,7 @@ export const TreeList = () => {
62
62
  // render single tree for single environment
63
63
  if (environmentsStore.value.data.length === 1) {
64
64
  return (
65
- <div className={styles["tree-list"]}>
65
+ <div>
66
66
  <Tree
67
67
  reportStatistic={reportStatsStore.value.data}
68
68
  statistic={statsByEnvStore.value.data[currentEnvironment.value]}
@@ -82,7 +82,7 @@ export const TreeList = () => {
82
82
 
83
83
  if (currentTree) {
84
84
  return (
85
- <div className={styles["tree-list"]}>
85
+ <div>
86
86
  <Tree
87
87
  reportStatistic={reportStatsStore.value.data}
88
88
  statistic={statsByEnvStore.value.data[currentEnvironment.value]}
@@ -133,7 +133,7 @@ export const TreeList = () => {
133
133
  />
134
134
  </div>
135
135
  {isOpened && (
136
- <div className={styles["tree-list"]} data-testid={"tree-section-env-content"}>
136
+ <div data-testid={"tree-section-env-content"}>
137
137
  <Tree
138
138
  statistic={statsByEnvStore.value.data[key]}
139
139
  reportStatistic={reportStatsStore.value.data}
@@ -6,10 +6,6 @@
6
6
  }
7
7
  }
8
8
 
9
- .tree-list {
10
- min-height: 320px;
11
- }
12
-
13
9
  .tree-header {
14
10
  display: flex;
15
11
  align-items: center;
package/src/index.tsx CHANGED
@@ -6,15 +6,17 @@ import { render } from "preact";
6
6
  import "preact/debug";
7
7
  import { useEffect, useState } from "preact/hooks";
8
8
  import "@/assets/scss/index.scss";
9
- import { BaseLayout } from "@/components/BaseLayout";
9
+ import { Footer } from "@/components/Footer";
10
+ import { Header } from "@/components/Header";
10
11
  import { ModalComponent } from "@/components/Modal";
11
- import { SplitLayout } from "@/components/SplitLayout";
12
+ import { SectionSwitcher } from "@/components/SectionSwitcher";
12
13
  import { fetchEnvStats, fetchReportStats, getLocale, getTheme, waitForI18next } from "@/stores";
13
14
  import { fetchPieChartData } from "@/stores/chart";
14
15
  import { currentEnvironment, environmentsStore, fetchEnvironments } from "@/stores/env";
15
16
  import { fetchEnvInfo } from "@/stores/envInfo";
16
- import { getLayout, isLayoutLoading, isSplitMode } from "@/stores/layout";
17
+ import { getLayout, isLayoutLoading, layoutStore } from "@/stores/layout";
17
18
  import { handleHashChange, route } from "@/stores/router";
19
+ import { currentSection, getSection } from "@/stores/sections";
18
20
  import { fetchTestResult, fetchTestResultNav } from "@/stores/testResults";
19
21
  import { fetchEnvTreesData } from "@/stores/tree";
20
22
  import { isMac } from "@/utils/isMac";
@@ -30,13 +32,19 @@ const Loader = () => {
30
32
  };
31
33
 
32
34
  const App = () => {
35
+ const className = styles[`layout-${currentSection.value !== "" ? currentSection.value : layoutStore.value}`];
33
36
  const [prefetched, setPrefetched] = useState(false);
34
- const { id: testResultId } = route.value;
37
+ const testResultId = route.value.params?.testResultId ?? null;
35
38
  const prefetchData = async () => {
36
39
  const fns = [ensureReportDataReady, fetchReportStats, fetchPieChartData, fetchEnvironments, fetchEnvInfo];
37
40
 
38
41
  if (globalThis) {
39
- fns.unshift(getLocale, getLayout as () => Promise<void>, getTheme as () => Promise<void>);
42
+ fns.unshift(
43
+ getSection as () => Promise<void>,
44
+ getLocale,
45
+ getLayout as () => Promise<void>,
46
+ getTheme as () => Promise<void>,
47
+ );
40
48
  }
41
49
 
42
50
  await waitForI18next;
@@ -44,6 +52,7 @@ const App = () => {
44
52
 
45
53
  if (currentEnvironment.value) {
46
54
  await fetchEnvTreesData([currentEnvironment.value]);
55
+ await fetchEnvStats(environmentsStore.value.data);
47
56
  } else {
48
57
  await fetchEnvTreesData(environmentsStore.value.data);
49
58
  await fetchEnvStats(environmentsStore.value.data);
@@ -64,24 +73,28 @@ const App = () => {
64
73
  }, [testResultId, currentEnvironment]);
65
74
 
66
75
  useEffect(() => {
76
+ const onHashChange = () => handleHashChange();
77
+
67
78
  handleHashChange();
68
- globalThis.addEventListener("hashchange", () => handleHashChange());
79
+ globalThis.addEventListener("hashchange", onHashChange);
69
80
 
70
81
  return () => {
71
- globalThis.removeEventListener("hashchange", () => handleHashChange());
82
+ globalThis.removeEventListener("hashchange", onHashChange);
72
83
  };
73
84
  }, []);
74
85
 
75
86
  return (
76
- <div className={styles.main}>
87
+ <>
77
88
  {!prefetched && <Loader />}
78
89
  {prefetched && (
79
- <>
80
- {isSplitMode.value ? <SplitLayout /> : <BaseLayout />}
90
+ <div className={styles.main}>
91
+ <Header className={className} />
92
+ <SectionSwitcher />
93
+ <Footer className={className} />
81
94
  <ModalComponent />
82
- </>
95
+ </div>
83
96
  )}
84
- </div>
97
+ </>
85
98
  );
86
99
  };
87
100
 
@@ -139,5 +139,21 @@
139
139
  },
140
140
  "errors": {
141
141
  "missedAttachment": "Əlavə tapılmadı"
142
+ },
143
+ "sections": {
144
+ "report": "Report",
145
+ "charts": "Qrafiklər"
146
+ },
147
+ "charts": {
148
+ "trend": {
149
+ "title": "Trend qrafiki: {{type}}",
150
+ "type": {
151
+ "status": "Status",
152
+ "severity": "Ciddilik"
153
+ }
154
+ },
155
+ "pie": {
156
+ "title": "Test Uğur Dərəcəsi"
157
+ }
142
158
  }
143
159
  }
@@ -138,5 +138,22 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Anhang nicht gefunden"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Graphen"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Trenddiagramm: {{type}}",
149
+ "type": {
150
+ "status": "Status",
151
+ "severity": "Schweregrad"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Testerfolgsrate"
156
+ }
141
157
  }
158
+
142
159
  }
@@ -139,5 +139,21 @@
139
139
  },
140
140
  "errors": {
141
141
  "missedAttachment": "Attachment not found"
142
+ },
143
+ "sections": {
144
+ "report": "Report",
145
+ "charts": "Graphs"
146
+ },
147
+ "charts": {
148
+ "trend": {
149
+ "title": "Trend Chart: {{type}}",
150
+ "type": {
151
+ "status": "Status",
152
+ "severity": "Severity"
153
+ }
154
+ },
155
+ "pie": {
156
+ "title": "Test Success Rate"
157
+ }
142
158
  }
143
159
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Adjunto no encontrado"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Gráficas"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Gráfico de tendencia: {{type}}",
149
+ "type": {
150
+ "status": "Estado",
151
+ "severity": "Severidad"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Tasa de éxito de pruebas"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Pièce jointe non trouvée"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Graphes"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Graphique de tendance: {{type}}",
149
+ "type": {
150
+ "status": "Statut",
151
+ "severity": "Sévérité"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Taux de réussite des tests"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "הקובץ המצורף לא נמצא"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "גרפים"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "תרשים מגמה: {{type}}",
149
+ "type": {
150
+ "status": "סטטוס",
151
+ "severity": "חומרה"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "שיעור הצלחת הבדיקות"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Կցորդը չի գտնվել"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Գրաֆիկներ"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Միտումների գրաֆիկ: {{type}}",
149
+ "type": {
150
+ "status": "Կարգավիճակ",
151
+ "severity": "Ծանրություն"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Թեստերի հաջողության գործակից"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Allegato non trovato"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Grafici"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Grafico di tendenza: {{type}}",
149
+ "type": {
150
+ "status": "Stato",
151
+ "severity": "Gravità"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Tasso di successo dei test"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "添付ファイルが見つかりません"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "グラフ"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "トレンドチャート: {{type}}",
149
+ "type": {
150
+ "status": "ステータス",
151
+ "severity": "重要度"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "テスト成功率"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "დანართი ვერ მოიძებნა"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "გრაფიკები"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "ტრენდის გრაფიკი: {{type}}",
149
+ "type": {
150
+ "status": "სტატუსი",
151
+ "severity": "სიმძიმე"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "ტესტების წარმატების მაჩვენებელი"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "첨부파일을 찾을 수 없습니다"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "그래프"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "트렌드 차트: {{type}}",
149
+ "type": {
150
+ "status": "상태",
151
+ "severity": "심각도"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "테스트 성공률"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Bijlage niet gevonden"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Grafieken"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Trendgrafiek: {{type}}",
149
+ "type": {
150
+ "status": "Status",
151
+ "severity": "Ernst"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Test slagingspercentage"
156
+ }
141
157
  }
142
158
  }
@@ -136,5 +136,21 @@
136
136
  },
137
137
  "errors": {
138
138
  "missedAttachment": "Nie znaleziono załącznika"
139
+ },
140
+ "sections": {
141
+ "report": "Report",
142
+ "charts": "Wykresy"
143
+ },
144
+ "charts": {
145
+ "trend": {
146
+ "title": "Wykres trendu: {{type}}",
147
+ "type": {
148
+ "status": "Status",
149
+ "severity": "Ważność"
150
+ }
151
+ },
152
+ "pie": {
153
+ "title": "Wskaźnik powodzenia testów"
154
+ }
139
155
  }
140
156
  }
@@ -137,5 +137,21 @@
137
137
  },
138
138
  "errors": {
139
139
  "missedAttachment": "Anexo não encontrado"
140
+ },
141
+ "sections": {
142
+ "report": "Report",
143
+ "charts": "Gráficos"
144
+ },
145
+ "charts": {
146
+ "trend": {
147
+ "title": "Gráfico de tendência: {{type}}",
148
+ "type": {
149
+ "status": "Estado",
150
+ "severity": "Severidade"
151
+ }
152
+ },
153
+ "pie": {
154
+ "title": "Taxa de sucesso dos testes"
155
+ }
140
156
  }
141
157
  }
@@ -136,5 +136,21 @@
136
136
  },
137
137
  "errors": {
138
138
  "missedAttachment": "Вложение не найдено"
139
+ },
140
+ "sections": {
141
+ "report": "Report",
142
+ "charts": "Графики"
143
+ },
144
+ "charts": {
145
+ "trend": {
146
+ "title": "График тренда: {{type}}",
147
+ "type": {
148
+ "status": "Статус",
149
+ "severity": "Важность"
150
+ }
151
+ },
152
+ "pie": {
153
+ "title": "Успешность тестирования"
154
+ }
139
155
  }
140
156
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Bilaga hittades inte"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Grafer"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Trenddiagram: {{type}}",
149
+ "type": {
150
+ "status": "Status",
151
+ "severity": "Allvarlighetsgrad"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Testframgångsfrekvens"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "Ek bulunamadı"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "Grafikler"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "Trend Grafiği: {{type}}",
149
+ "type": {
150
+ "status": "Durum",
151
+ "severity": "Önem Derecesi"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "Test Başarı Oranı"
156
+ }
141
157
  }
142
158
  }
@@ -138,5 +138,21 @@
138
138
  },
139
139
  "errors": {
140
140
  "missedAttachment": "未找到附件"
141
+ },
142
+ "sections": {
143
+ "report": "Report",
144
+ "charts": "图形"
145
+ },
146
+ "charts": {
147
+ "trend": {
148
+ "title": "趋势图表: {{type}}",
149
+ "type": {
150
+ "status": "状态",
151
+ "severity": "严重程度"
152
+ }
153
+ },
154
+ "pie": {
155
+ "title": "测试成功率"
156
+ }
141
157
  }
142
158
  }