@allurereport/web-dashboard 3.3.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/multi/310.app-c35820f9526d89a9502d.js +1 -0
- package/dist/multi/507.app-c35820f9526d89a9502d.js +1 -0
- package/dist/multi/686.app-c35820f9526d89a9502d.js +1 -0
- package/dist/multi/app-c35820f9526d89a9502d.js +2 -0
- package/dist/multi/manifest.json +23 -21
- package/dist/multi/{styles-011dd2d56853503b8210.css → styles-ba2f7910ded8751a5da3.css} +4 -4
- package/dist/single/app-31fba1f25f971fe4047e.js +2 -0
- package/dist/single/manifest.json +1 -1
- package/package.json +17 -35
- package/src/components/BaseLayout/index.tsx +2 -0
- package/src/components/Dashboard/index.tsx +3 -0
- package/src/components/EnvironmentPicker/index.tsx +78 -18
- package/src/components/EnvironmentPicker/styles.scss +19 -0
- package/src/components/Footer/FooterLogo.tsx +1 -0
- package/src/components/Footer/FooterVersion.tsx +2 -0
- package/src/components/Footer/index.tsx +3 -1
- package/src/components/Header/index.tsx +3 -0
- package/src/components/Header/styles.scss +1 -0
- package/src/index.tsx +3 -0
- package/src/locales/ar.json +227 -0
- package/src/locales/az.json +14 -14
- package/src/locales/zh-TW.json +227 -0
- package/src/stores/dashboard.ts +1 -0
- package/src/stores/env.ts +14 -3
- package/src/stores/locale.ts +1 -0
- package/tsconfig.json +2 -2
- package/.eslintrc.cjs +0 -18
- package/dist/multi/686.app-6e16634fb6316062546e.js +0 -1
- package/dist/multi/app-6e16634fb6316062546e.js +0 -2
- package/dist/single/app-a4723ecfb6c2e831c7c0.js +0 -2
- /package/dist/multi/{173.app-6e16634fb6316062546e.js → 173.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{174.app-6e16634fb6316062546e.js → 174.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{252.app-6e16634fb6316062546e.js → 252.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{282.app-6e16634fb6316062546e.js → 282.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{29.app-6e16634fb6316062546e.js → 29.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{416.app-6e16634fb6316062546e.js → 416.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{527.app-6e16634fb6316062546e.js → 527.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{600.app-6e16634fb6316062546e.js → 600.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{605.app-6e16634fb6316062546e.js → 605.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{638.app-6e16634fb6316062546e.js → 638.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{672.app-6e16634fb6316062546e.js → 672.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{725.app-6e16634fb6316062546e.js → 725.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{741.app-6e16634fb6316062546e.js → 741.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{749.app-6e16634fb6316062546e.js → 749.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{755.app-6e16634fb6316062546e.js → 755.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{894.app-6e16634fb6316062546e.js → 894.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{943.app-6e16634fb6316062546e.js → 943.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{980.app-6e16634fb6316062546e.js → 980.app-c35820f9526d89a9502d.js} +0 -0
- /package/dist/multi/{app-6e16634fb6316062546e.js.LICENSE.txt → app-c35820f9526d89a9502d.js.LICENSE.txt} +0 -0
- /package/dist/single/{app-a4723ecfb6c2e831c7c0.js.LICENSE.txt → app-31fba1f25f971fe4047e.js.LICENSE.txt} +0 -0
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@allurereport/web-dashboard",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "The static files for Allure Dashboard Report",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"allure",
|
|
7
|
-
"
|
|
7
|
+
"html",
|
|
8
8
|
"report",
|
|
9
|
-
"
|
|
9
|
+
"testing"
|
|
10
10
|
],
|
|
11
|
-
"repository": "https://github.com/allure-framework/allure3",
|
|
12
11
|
"license": "Apache-2.0",
|
|
13
12
|
"author": "Qameta Software",
|
|
13
|
+
"repository": "https://github.com/allure-framework/allure3",
|
|
14
14
|
"type": "module",
|
|
15
15
|
"types": "./types.d.ts",
|
|
16
16
|
"scripts": {
|
|
@@ -22,19 +22,15 @@
|
|
|
22
22
|
"build:prod:multi": "webpack --mode production",
|
|
23
23
|
"build:dev:single": "SINGLE_FILE_MODE=1 webpack --mode development",
|
|
24
24
|
"build:dev:multi": "webpack --mode development",
|
|
25
|
-
"lint": "
|
|
26
|
-
"test": "vitest run"
|
|
25
|
+
"lint": "oxlint --import-plugin src test features stories",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"lint:fix": "oxlint --import-plugin --fix src test features stories"
|
|
27
28
|
},
|
|
28
|
-
"browserslist": [
|
|
29
|
-
"last 1 version",
|
|
30
|
-
"> 1%",
|
|
31
|
-
"IE 11"
|
|
32
|
-
],
|
|
33
29
|
"dependencies": {
|
|
34
|
-
"@allurereport/charts-api": "3.
|
|
35
|
-
"@allurereport/core-api": "3.
|
|
36
|
-
"@allurereport/web-commons": "3.
|
|
37
|
-
"@allurereport/web-components": "3.
|
|
30
|
+
"@allurereport/charts-api": "3.4.0",
|
|
31
|
+
"@allurereport/core-api": "3.4.0",
|
|
32
|
+
"@allurereport/web-commons": "3.4.0",
|
|
33
|
+
"@allurereport/web-components": "3.4.0",
|
|
38
34
|
"@preact/signals": "^2.6.1",
|
|
39
35
|
"clsx": "^2.1.1",
|
|
40
36
|
"i18next": "^24.0.2",
|
|
@@ -45,17 +41,12 @@
|
|
|
45
41
|
"@babel/plugin-transform-react-jsx": "^7.27.1",
|
|
46
42
|
"@babel/preset-env": "^7.27.2",
|
|
47
43
|
"@babel/preset-typescript": "^7.27.1",
|
|
48
|
-
"@eslint/js": "^9.10.0",
|
|
49
44
|
"@floating-ui/dom": "^1.6.12",
|
|
50
45
|
"@preact/compat": "^18.3.1",
|
|
51
|
-
"@stylistic/eslint-plugin": "^2.6.1",
|
|
52
46
|
"@types/babel__core": "^7.20.5",
|
|
53
47
|
"@types/d3-shape": "^3.1.6",
|
|
54
48
|
"@types/diff": "^7",
|
|
55
|
-
"@types/eslint": "^8.56.11",
|
|
56
49
|
"@types/node": "^20.17.9",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
58
|
-
"@typescript-eslint/parser": "^8.0.0",
|
|
59
50
|
"@vitest/runner": "^2.1.9",
|
|
60
51
|
"@vitest/snapshot": "^2.1.9",
|
|
61
52
|
"allure-vitest": "^3.3.3",
|
|
@@ -63,19 +54,6 @@
|
|
|
63
54
|
"babel-loader": "^9.2.1",
|
|
64
55
|
"babel-plugin-prismjs": "^2.1.0",
|
|
65
56
|
"css-loader": "^7.1.2",
|
|
66
|
-
"eslint": "^8.57.0",
|
|
67
|
-
"eslint-config-preact": "^1.5.0",
|
|
68
|
-
"eslint-config-prettier": "^9.1.0",
|
|
69
|
-
"eslint-plugin-compat": "^6.0.1",
|
|
70
|
-
"eslint-plugin-import": "^2.29.1",
|
|
71
|
-
"eslint-plugin-jsdoc": "^50.0.0",
|
|
72
|
-
"eslint-plugin-jsx-a11y": "^6.10.0",
|
|
73
|
-
"eslint-plugin-n": "^17.10.1",
|
|
74
|
-
"eslint-plugin-no-null": "^1.0.2",
|
|
75
|
-
"eslint-plugin-preact": "^0.1.0",
|
|
76
|
-
"eslint-plugin-prefer-arrow": "^1.2.3",
|
|
77
|
-
"eslint-plugin-react": "^7.36.1",
|
|
78
|
-
"eslint-plugin-react-hooks": "^4.6.2",
|
|
79
57
|
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
|
80
58
|
"globals": "^15.9.0",
|
|
81
59
|
"html-webpack-plugin": "^5.6.3",
|
|
@@ -88,11 +66,15 @@
|
|
|
88
66
|
"style-loader": "^4.0.0",
|
|
89
67
|
"svg-sprite-loader": "^6.0.11",
|
|
90
68
|
"typescript": "^5.6.3",
|
|
91
|
-
"typescript-eslint": "^8.6.0",
|
|
92
69
|
"vitest": "^2.1.9",
|
|
93
70
|
"webpack": "^5.99.9",
|
|
94
71
|
"webpack-cli": "^5.1.4",
|
|
95
72
|
"webpack-dev-server": "^5.2.2",
|
|
96
73
|
"webpack-manifest-plugin": "^5.0.0"
|
|
97
|
-
}
|
|
74
|
+
},
|
|
75
|
+
"browserslist": [
|
|
76
|
+
"last 1 version",
|
|
77
|
+
"> 1%",
|
|
78
|
+
"IE 11"
|
|
79
|
+
]
|
|
98
80
|
}
|
|
@@ -22,9 +22,11 @@ import {
|
|
|
22
22
|
} from "@allurereport/web-components";
|
|
23
23
|
import { computed } from "@preact/signals";
|
|
24
24
|
import { useEffect } from "preact/hooks";
|
|
25
|
+
|
|
25
26
|
import { dashboardStore, fetchDashboardData } from "@/stores/dashboard";
|
|
26
27
|
import { currentEnvironment, fetchEnvironments } from "@/stores/env";
|
|
27
28
|
import { useI18n } from "@/stores/locale";
|
|
29
|
+
|
|
28
30
|
import * as styles from "./styles.scss";
|
|
29
31
|
|
|
30
32
|
const currentTheme = computed(() => themeStore.value.current);
|
|
@@ -97,6 +99,7 @@ const getChartWidgetByType = (
|
|
|
97
99
|
data={chartData.data}
|
|
98
100
|
keys={chartData.keys}
|
|
99
101
|
i18n={(key, props = {}) => t(`stabilityDistribution.${key}`, props)}
|
|
102
|
+
threshold={chartData.threshold}
|
|
100
103
|
/>
|
|
101
104
|
);
|
|
102
105
|
}
|
|
@@ -1,12 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
DropdownButton,
|
|
3
|
+
Menu,
|
|
4
|
+
SvgIcon,
|
|
5
|
+
Text,
|
|
6
|
+
TooltipWrapper,
|
|
7
|
+
allureIcons,
|
|
8
|
+
useElementTruncation,
|
|
9
|
+
} from "@allurereport/web-components";
|
|
10
|
+
import { useEffect, useRef, useState } from "preact/hooks";
|
|
11
|
+
|
|
12
|
+
import { currentEnvironment, environmentNameById, environmentsStore, setCurrentEnvironment } from "@/stores/env";
|
|
3
13
|
import { useI18n } from "@/stores/locale";
|
|
14
|
+
|
|
4
15
|
import * as styles from "./styles.scss";
|
|
5
16
|
|
|
17
|
+
const isOverflowing = (element: HTMLElement) => element.scrollWidth > element.clientWidth;
|
|
18
|
+
|
|
19
|
+
const EnvironmentMenuItemText = ({ value }: { value: string }) => {
|
|
20
|
+
const textRef = useRef<HTMLSpanElement>(null);
|
|
21
|
+
const [isTruncated, setIsTruncated] = useState(false);
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const element = textRef.current;
|
|
25
|
+
|
|
26
|
+
if (!element) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
setIsTruncated(isOverflowing(element));
|
|
31
|
+
}, [value]);
|
|
32
|
+
|
|
33
|
+
const textNode = (
|
|
34
|
+
<span ref={textRef} className={styles["environment-picker-item-text"]}>
|
|
35
|
+
{value}
|
|
36
|
+
</span>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
if (!isTruncated) {
|
|
40
|
+
return textNode;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return <TooltipWrapper tooltipText={value}>{textNode}</TooltipWrapper>;
|
|
44
|
+
};
|
|
45
|
+
|
|
6
46
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
7
47
|
export const EnvironmentPicker = () => {
|
|
8
48
|
const { t } = useI18n("environments");
|
|
9
|
-
const
|
|
49
|
+
const environmentId = currentEnvironment.value;
|
|
50
|
+
const selectedEnvironmentLabel = environmentId ? environmentNameById(environmentId) : t("all");
|
|
51
|
+
const { ref: selectedTextRef, isTruncated: isSelectedValueTruncated } = useElementTruncation<HTMLSpanElement>([
|
|
52
|
+
selectedEnvironmentLabel,
|
|
53
|
+
]);
|
|
54
|
+
|
|
10
55
|
const handleSelect = (selectedOption: string) => {
|
|
11
56
|
setCurrentEnvironment(selectedOption);
|
|
12
57
|
};
|
|
@@ -24,33 +69,48 @@ export const EnvironmentPicker = () => {
|
|
|
24
69
|
</Text>
|
|
25
70
|
<Menu
|
|
26
71
|
size="s"
|
|
27
|
-
menuTrigger={({ isOpened, onClick }) =>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
72
|
+
menuTrigger={({ isOpened, onClick }) => {
|
|
73
|
+
const button = (
|
|
74
|
+
<DropdownButton
|
|
75
|
+
style="ghost"
|
|
76
|
+
size="s"
|
|
77
|
+
text={selectedEnvironmentLabel}
|
|
78
|
+
textRef={selectedTextRef}
|
|
79
|
+
isExpanded={isOpened}
|
|
80
|
+
isTextTruncated
|
|
81
|
+
className={styles["environment-picker-button"]}
|
|
82
|
+
data-testid={"environment-picker-button"}
|
|
83
|
+
onClick={onClick}
|
|
84
|
+
/>
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
if (isOpened || !isSelectedValueTruncated) {
|
|
88
|
+
return button;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<TooltipWrapper tooltipText={selectedEnvironmentLabel} data-testid="environment-picker-selected-tooltip">
|
|
93
|
+
{button}
|
|
94
|
+
</TooltipWrapper>
|
|
95
|
+
);
|
|
96
|
+
}}
|
|
37
97
|
>
|
|
38
98
|
<Menu.Section>
|
|
39
99
|
<Menu.ItemWithCheckmark
|
|
40
100
|
data-testid={"environment-picker-item"}
|
|
41
101
|
onClick={() => handleSelect("")}
|
|
42
|
-
isChecked={!
|
|
102
|
+
isChecked={!environmentId}
|
|
43
103
|
>
|
|
44
104
|
{t("all")}
|
|
45
105
|
</Menu.ItemWithCheckmark>
|
|
46
106
|
{environmentsStore.value.data.map((env) => (
|
|
47
107
|
<Menu.ItemWithCheckmark
|
|
48
108
|
data-testid={"environment-picker-item"}
|
|
49
|
-
onClick={() => handleSelect(env)}
|
|
50
|
-
key={env}
|
|
51
|
-
isChecked={env ===
|
|
109
|
+
onClick={() => handleSelect(env.id)}
|
|
110
|
+
key={env.id}
|
|
111
|
+
isChecked={env.id === environmentId}
|
|
52
112
|
>
|
|
53
|
-
{env}
|
|
113
|
+
<EnvironmentMenuItemText value={env.name} />
|
|
54
114
|
</Menu.ItemWithCheckmark>
|
|
55
115
|
))}
|
|
56
116
|
</Menu.Section>
|
|
@@ -2,8 +2,27 @@
|
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
gap: 0 4px;
|
|
5
|
+
min-width: 0;
|
|
6
|
+
|
|
7
|
+
> :last-child {
|
|
8
|
+
min-width: 0;
|
|
9
|
+
max-width: 100%;
|
|
10
|
+
flex: 1 1 auto;
|
|
11
|
+
}
|
|
5
12
|
}
|
|
6
13
|
|
|
7
14
|
.environment-picker-label {
|
|
8
15
|
text-transform: capitalize;
|
|
9
16
|
}
|
|
17
|
+
|
|
18
|
+
.environment-picker-button {
|
|
19
|
+
max-width: 100%;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.environment-picker-item-text {
|
|
23
|
+
display: block;
|
|
24
|
+
max-width: 140px;
|
|
25
|
+
white-space: nowrap;
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
text-overflow: ellipsis;
|
|
28
|
+
}
|
|
@@ -2,7 +2,9 @@ import { getReportOptions } from "@allurereport/web-commons";
|
|
|
2
2
|
import { Text } from "@allurereport/web-components";
|
|
3
3
|
import { useEffect, useState } from "preact/hooks";
|
|
4
4
|
import type { DashboardReportOptions } from "types";
|
|
5
|
+
|
|
5
6
|
import { currentLocaleIso } from "@/stores/locale";
|
|
7
|
+
|
|
6
8
|
import * as styles from "./styles.scss";
|
|
7
9
|
|
|
8
10
|
export const FooterVersion = () => {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { clsx } from "clsx";
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import { FooterLogo } from "@/components/Footer/FooterLogo";
|
|
4
4
|
import { FooterVersion } from "@/components/Footer/FooterVersion";
|
|
5
5
|
|
|
6
|
+
import * as styles from "@/components/BaseLayout/styles.scss";
|
|
7
|
+
|
|
6
8
|
export const Footer = () => {
|
|
7
9
|
return (
|
|
8
10
|
<div className={clsx(styles.below)}>
|
|
@@ -3,8 +3,11 @@ import { LanguagePicker, ThemeButton } from "@allurereport/web-components";
|
|
|
3
3
|
import { computed } from "@preact/signals";
|
|
4
4
|
import type { ClassValue } from "clsx";
|
|
5
5
|
import clsx from "clsx";
|
|
6
|
+
|
|
6
7
|
import { currentLocale, setLocale } from "@/stores/locale";
|
|
8
|
+
|
|
7
9
|
import { EnvironmentPicker } from "../EnvironmentPicker";
|
|
10
|
+
|
|
8
11
|
import * as styles from "./styles.scss";
|
|
9
12
|
|
|
10
13
|
interface HeaderProps {
|
package/src/index.tsx
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { ensureReportDataReady } from "@allurereport/web-commons";
|
|
2
|
+
|
|
2
3
|
import "@allurereport/web-components/index.css";
|
|
3
4
|
import { render } from "preact";
|
|
5
|
+
|
|
4
6
|
import "@/assets/scss/index.scss";
|
|
5
7
|
import { BaseLayout } from "@/components/BaseLayout";
|
|
6
8
|
import { getLocale, waitForI18next } from "@/stores/locale";
|
|
7
9
|
import { isMac } from "@/utils/isMac";
|
|
10
|
+
|
|
8
11
|
import * as styles from "./styles.scss";
|
|
9
12
|
|
|
10
13
|
const App = () => (
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
{
|
|
2
|
+
"statuses": {
|
|
3
|
+
"passed": "ناجح",
|
|
4
|
+
"failed": "فشل",
|
|
5
|
+
"broken": "معطل",
|
|
6
|
+
"skipped": "تم تجاوزه",
|
|
7
|
+
"unknown": "غير معروف",
|
|
8
|
+
"total": "الإجمالي"
|
|
9
|
+
},
|
|
10
|
+
"empty": {
|
|
11
|
+
"no-results": "لا توجد نتائج",
|
|
12
|
+
"no-history-results": "لا تتوفر معلومات عن السجل"
|
|
13
|
+
},
|
|
14
|
+
"severity": {
|
|
15
|
+
"blocker": "مانع",
|
|
16
|
+
"critical": "خطورة عالية",
|
|
17
|
+
"normal": "عادي",
|
|
18
|
+
"minor": "ثانوي",
|
|
19
|
+
"trivial": "بسيط"
|
|
20
|
+
},
|
|
21
|
+
"environments": {
|
|
22
|
+
"environment_one": "بيئة",
|
|
23
|
+
"environment_other": "بيئات",
|
|
24
|
+
"all": "الكل"
|
|
25
|
+
},
|
|
26
|
+
"charts": {
|
|
27
|
+
"trend": {
|
|
28
|
+
"title": "مخطط الاتجاه: {{type}}",
|
|
29
|
+
"type": {
|
|
30
|
+
"status": "الحالة",
|
|
31
|
+
"severity": "الخطورة"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"currentStatus": {
|
|
35
|
+
"title": "الحالة الحالية",
|
|
36
|
+
"status": {
|
|
37
|
+
"passed": "$t(statuses:passed, capitalize)",
|
|
38
|
+
"failed": "$t(statuses:failed, capitalize)",
|
|
39
|
+
"broken": "$t(statuses:broken, capitalize)",
|
|
40
|
+
"skipped": "$t(statuses:skipped, capitalize)",
|
|
41
|
+
"unknown": "$t(statuses:unknown, capitalize)"
|
|
42
|
+
},
|
|
43
|
+
"percentage": "{{percentage}}%",
|
|
44
|
+
"of": "من {{total}}",
|
|
45
|
+
"total": "{{total}}",
|
|
46
|
+
"tests": {
|
|
47
|
+
"new_zero": "لا توجد اختبارات جديدة",
|
|
48
|
+
"new_one": "{{count}} اختبار جديد",
|
|
49
|
+
"new_other": "{{count}} اختبارات جديدة",
|
|
50
|
+
"flaky_zero": "لا توجد اختبارات غير مستقرة",
|
|
51
|
+
"flaky_one": "{{count}} اختبار غير مستقر",
|
|
52
|
+
"flaky_other": "{{count}} اختبارات غير مستقرة",
|
|
53
|
+
"retries_zero": "لا توجد اختبارات مُعاد محاولتها",
|
|
54
|
+
"retries_one": "{{count}} اختبار مُعاد محاولته",
|
|
55
|
+
"retries_other": "{{count}} اختبارات مُعاد محاولتها"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"statusDynamics": {
|
|
59
|
+
"title": "تطورات الحالة",
|
|
60
|
+
"status": {
|
|
61
|
+
"passed": "$t(statuses:passed, capitalize)",
|
|
62
|
+
"failed": "$t(statuses:failed, capitalize)",
|
|
63
|
+
"broken": "$t(statuses:broken, capitalize)",
|
|
64
|
+
"skipped": "$t(statuses:skipped, capitalize)",
|
|
65
|
+
"unknown": "$t(statuses:unknown, capitalize)"
|
|
66
|
+
},
|
|
67
|
+
"no-history": "$t(empty:no-history-results)",
|
|
68
|
+
"no-results": "$t(empty:no-results)",
|
|
69
|
+
"tooltips": {
|
|
70
|
+
"current": "أحدث تقرير ({{timestamp, timestamp_long_no_seconds}})",
|
|
71
|
+
"history": "تقرير من {{timestamp, timestamp_long_no_seconds}}"
|
|
72
|
+
},
|
|
73
|
+
"ticks": {
|
|
74
|
+
"current": "الأحدث",
|
|
75
|
+
"history": "{{timestamp, timestamp_date}}"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"statusTransitions": {
|
|
79
|
+
"title": "انتقالات الحالة",
|
|
80
|
+
"legend": {
|
|
81
|
+
"trend": "معدل الإصلاح"
|
|
82
|
+
},
|
|
83
|
+
"transitions": {
|
|
84
|
+
"new": "$t(transitions:new, capitalize)",
|
|
85
|
+
"fixed": "$t(transitions:fixed, capitalize)",
|
|
86
|
+
"regressed": "$t(transitions:regressed, capitalize)",
|
|
87
|
+
"malfunctioned": "$t(transitions:malfunctioned, capitalize)"
|
|
88
|
+
},
|
|
89
|
+
"no-history": "$t(empty:no-history-results)",
|
|
90
|
+
"no-results": "$t(empty:no-results)",
|
|
91
|
+
"tooltips": {
|
|
92
|
+
"current": "أحدث تقرير ({{timestamp, timestamp_long_no_seconds}})",
|
|
93
|
+
"history": "تقرير من {{timestamp, timestamp_long_no_seconds}}"
|
|
94
|
+
},
|
|
95
|
+
"ticks": {
|
|
96
|
+
"current": "الأحدث",
|
|
97
|
+
"history": "{{timestamp, timestamp_date}}"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"durations": {
|
|
101
|
+
"title": "مدد حسب {{groupBy}} - مخطط بياني",
|
|
102
|
+
"title_none": "مخطط بياني للمدد",
|
|
103
|
+
"no-results": "$t(empty:no-results)",
|
|
104
|
+
"groupBy": {
|
|
105
|
+
"none": "لا شيء",
|
|
106
|
+
"layer": "الطبقة"
|
|
107
|
+
},
|
|
108
|
+
"ticks": {
|
|
109
|
+
"durationRange": "{{from, format_duration}} - {{to, format_duration}}"
|
|
110
|
+
},
|
|
111
|
+
"tooltips": {
|
|
112
|
+
"durationRange": "{{from, format_duration}} - {{to, format_duration}}"
|
|
113
|
+
},
|
|
114
|
+
"legend": {
|
|
115
|
+
"value": "{{value}}",
|
|
116
|
+
"total": "عدد الاختبارات"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"stabilityDistribution": {
|
|
120
|
+
"title": "توزيع الاستقرار",
|
|
121
|
+
"no-results": "$t(empty:no-results)",
|
|
122
|
+
"legend": {
|
|
123
|
+
"stabilityRate": "معدل الاستقرار"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"testBaseGrowthDynamics": {
|
|
127
|
+
"title": "نمو قاعدة الاختبارات",
|
|
128
|
+
"status": {
|
|
129
|
+
"newpassed": "جديد $t(statuses:passed)",
|
|
130
|
+
"newfailed": "جديد $t(statuses:failed)",
|
|
131
|
+
"newbroken": "جديد $t(statuses:broken)",
|
|
132
|
+
"newskipped": "جديد $t(statuses:skipped)",
|
|
133
|
+
"newunknown": "جديد $t(statuses:unknown)",
|
|
134
|
+
"removedpassed": "محذوف $t(statuses:passed)",
|
|
135
|
+
"removedfailed": "محذوف $t(statuses:failed)",
|
|
136
|
+
"removedbroken": "محذوف $t(statuses:broken)",
|
|
137
|
+
"removedskipped": "محذوف $t(statuses:skipped)",
|
|
138
|
+
"removedunknown": "محذوف $t(statuses:unknown)"
|
|
139
|
+
},
|
|
140
|
+
"legend": {
|
|
141
|
+
"trend": "اتجاه النمو"
|
|
142
|
+
},
|
|
143
|
+
"no-history": "$t(empty:no-history-results)",
|
|
144
|
+
"no-results": "$t(empty:no-results)",
|
|
145
|
+
"tooltips": {
|
|
146
|
+
"current": "أحدث تقرير ({{timestamp, timestamp_long_no_seconds}})",
|
|
147
|
+
"history": "تقرير من {{timestamp, timestamp_long_no_seconds}}"
|
|
148
|
+
},
|
|
149
|
+
"ticks": {
|
|
150
|
+
"current": "الأحدث",
|
|
151
|
+
"history": "{{timestamp, timestamp_date}}"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"statusAgePyramid": {
|
|
155
|
+
"title": "هرم عمر الحالة",
|
|
156
|
+
"status": {
|
|
157
|
+
"passed": "$t(statuses:passed, capitalize)",
|
|
158
|
+
"failed": "$t(statuses:failed, capitalize)",
|
|
159
|
+
"broken": "$t(statuses:broken, capitalize)",
|
|
160
|
+
"skipped": "$t(statuses:skipped, capitalize)",
|
|
161
|
+
"unknown": "$t(statuses:unknown, capitalize)"
|
|
162
|
+
},
|
|
163
|
+
"no-history": "$t(empty:no-history-results)",
|
|
164
|
+
"no-results": "$t(empty:no-results)",
|
|
165
|
+
"tooltips": {
|
|
166
|
+
"current": "أحدث تقرير ({{timestamp, timestamp_long_no_seconds}})",
|
|
167
|
+
"history": "تقرير من {{timestamp, timestamp_long_no_seconds}}"
|
|
168
|
+
},
|
|
169
|
+
"ticks": {
|
|
170
|
+
"current": "الأحدث",
|
|
171
|
+
"history": "{{timestamp, timestamp_date}}"
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"trSeverities": {
|
|
175
|
+
"title": "نتائج الاختبارات حسب الخطورة",
|
|
176
|
+
"no-results": "$t(empty:no-results)",
|
|
177
|
+
"status": {
|
|
178
|
+
"passed": "$t(statuses:passed, capitalize)",
|
|
179
|
+
"failed": "$t(statuses:failed, capitalize)",
|
|
180
|
+
"broken": "$t(statuses:broken, capitalize)",
|
|
181
|
+
"skipped": "$t(statuses:skipped, capitalize)",
|
|
182
|
+
"unknown": "$t(statuses:unknown, capitalize)"
|
|
183
|
+
},
|
|
184
|
+
"severity": {
|
|
185
|
+
"blocker": "$t(severity:blocker, capitalize)",
|
|
186
|
+
"critical": "$t(severity:critical, capitalize)",
|
|
187
|
+
"normal": "$t(severity:normal, capitalize)",
|
|
188
|
+
"minor": "$t(severity:minor, capitalize)",
|
|
189
|
+
"trivial": "$t(severity:trivial, capitalize)",
|
|
190
|
+
"unset": "بدون خطورة"
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"durationDynamics": {
|
|
194
|
+
"title": "تطورات المدة",
|
|
195
|
+
"durations": {
|
|
196
|
+
"sequential": "المدة التسلسلية",
|
|
197
|
+
"duration": "مدة الاختبار",
|
|
198
|
+
"speedup": "التسريع"
|
|
199
|
+
},
|
|
200
|
+
"no-results": "$t(empty:no-results)",
|
|
201
|
+
"tooltips": {
|
|
202
|
+
"current": "أحدث تقرير ({{timestamp, timestamp_long_no_seconds}})",
|
|
203
|
+
"history": "تقرير من {{timestamp, timestamp_long_no_seconds}}"
|
|
204
|
+
},
|
|
205
|
+
"ticks": {
|
|
206
|
+
"current": "الأحدث",
|
|
207
|
+
"history": "{{timestamp, timestamp_date}}"
|
|
208
|
+
},
|
|
209
|
+
"legend": {
|
|
210
|
+
"duration": "{{duration, format_duration}}",
|
|
211
|
+
"speedup": "{{speedup}}x"
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"transitions": {
|
|
216
|
+
"description": {
|
|
217
|
+
"new": "أول ظهور لنتيجة الاختبار هذه في التقرير",
|
|
218
|
+
"fixed": "اختبار كان \"فشل\" أو \"معطل\" سابقاً وأصبح الآن \"ناجح\"",
|
|
219
|
+
"regressed": "اختبار كان \"ناجح\" أو \"معطل\" سابقاً وأصبح الآن \"فشل\"",
|
|
220
|
+
"malfunctioned": "اختبار كان \"ناجح\" أو \"فشل\" سابقاً وأصبح الآن \"معطل\""
|
|
221
|
+
},
|
|
222
|
+
"new": "جديد",
|
|
223
|
+
"fixed": "تم الإصلاح",
|
|
224
|
+
"regressed": "تراجع",
|
|
225
|
+
"malfunctioned": "خلل وظيفي"
|
|
226
|
+
}
|
|
227
|
+
}
|