@allurereport/web-summary 3.0.0-beta.11

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 (58) hide show
  1. package/.babelrc.js +22 -0
  2. package/.eslintrc.cjs +18 -0
  3. package/README.md +0 -0
  4. package/dist/app-af9981fc.js +2 -0
  5. package/dist/app-af9981fc.js.LICENSE.txt +8 -0
  6. package/dist/manifest.json +3 -0
  7. package/package.json +88 -0
  8. package/postcss.config.js +5 -0
  9. package/src/assets/scss/_common.scss +143 -0
  10. package/src/assets/scss/day.scss +51 -0
  11. package/src/assets/scss/fonts.scss +3 -0
  12. package/src/assets/scss/index.scss +7 -0
  13. package/src/assets/scss/night.scss +61 -0
  14. package/src/assets/scss/palette.scss +393 -0
  15. package/src/assets/scss/theme.scss +119 -0
  16. package/src/assets/scss/vars.scss +8 -0
  17. package/src/components/EmptyPlaceholder/index.tsx +24 -0
  18. package/src/components/EmptyPlaceholder/styles.scss +25 -0
  19. package/src/components/Footer/index.tsx +21 -0
  20. package/src/components/Footer/styles.scss +23 -0
  21. package/src/components/Header/index.tsx +15 -0
  22. package/src/components/Header/styles.scss +8 -0
  23. package/src/components/LanguagePicker/index.tsx +40 -0
  24. package/src/components/MetadataRow/index.tsx +20 -0
  25. package/src/components/MetadataRow/styles.scss +9 -0
  26. package/src/components/ReportCard/index.tsx +70 -0
  27. package/src/components/ReportCard/styles.scss +49 -0
  28. package/src/components/ThemeButton/index.tsx +20 -0
  29. package/src/i18n/constants.ts +124 -0
  30. package/src/i18n/locales/az.json +14 -0
  31. package/src/i18n/locales/de.json +14 -0
  32. package/src/i18n/locales/en.json +14 -0
  33. package/src/i18n/locales/es.json +14 -0
  34. package/src/i18n/locales/fr.json +14 -0
  35. package/src/i18n/locales/he.json +14 -0
  36. package/src/i18n/locales/hy.json +13 -0
  37. package/src/i18n/locales/it.json +14 -0
  38. package/src/i18n/locales/ja.json +14 -0
  39. package/src/i18n/locales/ka.json +14 -0
  40. package/src/i18n/locales/kr.json +14 -0
  41. package/src/i18n/locales/nl.json +14 -0
  42. package/src/i18n/locales/pl.json +14 -0
  43. package/src/i18n/locales/pt.json +14 -0
  44. package/src/i18n/locales/ru.json +14 -0
  45. package/src/i18n/locales/sv.json +14 -0
  46. package/src/i18n/locales/tr.json +14 -0
  47. package/src/i18n/locales/zh.json +14 -0
  48. package/src/index.html +89 -0
  49. package/src/index.tsx +59 -0
  50. package/src/stores/index.ts +2 -0
  51. package/src/stores/locale.ts +54 -0
  52. package/src/stores/theme.ts +29 -0
  53. package/src/styles.scss +50 -0
  54. package/src/types/globals.d.ts +13 -0
  55. package/src/types/window.d.ts +10 -0
  56. package/tsconfig.json +27 -0
  57. package/types.d.ts +99 -0
  58. package/webpack.config.js +109 -0
@@ -0,0 +1,20 @@
1
+ import { Text } from "@allurereport/web-components";
2
+ import type { FunctionalComponent } from "preact";
3
+ import * as styles from "./styles.scss";
4
+
5
+ export type MetadataRowProps = {
6
+ label: string;
7
+ };
8
+
9
+ export const MetadataRow: FunctionalComponent<MetadataRowProps> = ({ label, children }) => {
10
+ return (
11
+ <div className={styles["metadata-row"]}>
12
+ <Text type={"ui"} size={"s"} bold className={styles.label}>
13
+ {label}
14
+ </Text>
15
+ <Text type={"ui"} size={"s"}>
16
+ {children}
17
+ </Text>
18
+ </div>
19
+ );
20
+ };
@@ -0,0 +1,9 @@
1
+ .metadata-row {
2
+ display: grid;
3
+ grid-template-columns: 1fr 1fr;
4
+ color: var(--on-text-secondary);
5
+ }
6
+
7
+ .label {
8
+ text-transform: capitalize;
9
+ }
@@ -0,0 +1,70 @@
1
+ import { type Statistic, type TestStatus, formatDuration } from "@allurereport/core-api";
2
+ import { Heading, StatusLabel, SuccessRatePieChart, Text, getChartData } from "@allurereport/web-components";
3
+ import type { FunctionalComponent } from "preact";
4
+ import { MetadataRow } from "@/components/MetadataRow";
5
+ import { useI18n } from "@/stores";
6
+ import * as styles from "./styles.scss";
7
+
8
+ export type ReportCardProps = {
9
+ href: string;
10
+ name: string;
11
+ status: TestStatus;
12
+ stats: Statistic;
13
+ duration: number;
14
+ };
15
+
16
+ export const ReportCard: FunctionalComponent<ReportCardProps> = ({ href, status, stats, name, duration }) => {
17
+ const { t } = useI18n("summary");
18
+ const { percentage, slices } = getChartData(stats);
19
+ const formattedDuration = formatDuration(duration);
20
+
21
+ return (
22
+ <a
23
+ data-testid={"summary-report-card"}
24
+ className={styles["report-card"]}
25
+ href={href}
26
+ target={"_blank"}
27
+ rel="noreferrer"
28
+ >
29
+ <div className={styles["report-card-chart-wrapper"]}>
30
+ <SuccessRatePieChart className={styles["report-card-chart"]} slices={slices} percentage={percentage} />
31
+ </div>
32
+ <div>
33
+ <div className={styles["report-card-title"]}>
34
+ <Heading tag={"h2"} size={"s"}>
35
+ {name}
36
+ </Heading>
37
+ </div>
38
+ <div className={styles["report-card-status"]}>
39
+ <StatusLabel status={status}>{t(status)}</StatusLabel>
40
+ <Text type={"ui"} size={"s"}>
41
+ {t("in")}
42
+ </Text>
43
+ <Text type={"ui"} size={"s"} bold>
44
+ {formattedDuration}
45
+ </Text>
46
+ </div>
47
+ <div className={styles["report-card-metadata"]}>
48
+ <li>
49
+ <MetadataRow label={t("passed")}>{stats?.passed ?? 0}</MetadataRow>
50
+ </li>
51
+ <li>
52
+ <MetadataRow label={t("failed")}>{stats?.failed ?? 0}</MetadataRow>
53
+ </li>
54
+ <li>
55
+ <MetadataRow label={t("broken")}>{stats?.broken ?? 0}</MetadataRow>
56
+ </li>
57
+ <li>
58
+ <MetadataRow label={t("skipped")}>{stats?.skipped ?? 0}</MetadataRow>
59
+ </li>
60
+ <li>
61
+ <MetadataRow label={t("unknown")}>{stats?.unknown ?? 0}</MetadataRow>
62
+ </li>
63
+ <li>
64
+ <MetadataRow label={t("total")}>{stats?.total ?? 0}</MetadataRow>
65
+ </li>
66
+ </div>
67
+ </div>
68
+ </a>
69
+ );
70
+ };
@@ -0,0 +1,49 @@
1
+ .report-card {
2
+ display: grid;
3
+ grid-template-columns: 1fr 2fr;
4
+ gap: 0 16px;
5
+ padding: 16px;
6
+ height: 100%;
7
+ text-decoration: none;
8
+ box-shadow: var(--shadow-small);
9
+ background: var(--bg-base-primary);
10
+ border-radius: 12px;
11
+ cursor: pointer;
12
+
13
+ &:hover {
14
+ box-shadow: none;
15
+ transition: box-shadow 0.2s;
16
+ }
17
+ }
18
+
19
+ .report-card-chart {
20
+ position: absolute;
21
+ top: 0;
22
+ left: 0;
23
+ width: 100%;
24
+ }
25
+
26
+ .report-card-chart-wrapper {
27
+ position: relative;
28
+ }
29
+
30
+ .report-card-title {
31
+ margin-bottom: 2px;
32
+ color: var(--on-text-secondary);
33
+ }
34
+
35
+ .report-card-status {
36
+ display: flex;
37
+ align-items: center;
38
+ gap: 0 4px;
39
+ margin-bottom: 4px;
40
+ color: var(--on-text-secondary);
41
+ }
42
+
43
+ .report-card-metadata {
44
+ & > li {
45
+ &:not(:last-child) {
46
+ margin-bottom: 2px;
47
+ }
48
+ }
49
+ }
@@ -0,0 +1,20 @@
1
+ import { IconButton, allureIcons } from "@allurereport/web-components";
2
+ import { useEffect } from "preact/hooks";
3
+ import { getTheme, themeStore, toggleTheme } from "@/stores/theme";
4
+
5
+ export const ThemeButton = () => {
6
+ const theme = themeStore.value;
7
+
8
+ useEffect(() => {
9
+ getTheme();
10
+ }, []);
11
+
12
+ return (
13
+ <IconButton
14
+ onClick={toggleTheme}
15
+ style="ghost"
16
+ icon={theme === "light" ? allureIcons.lineShapesMoon : allureIcons.lineShapesSun}
17
+ size="s"
18
+ />
19
+ );
20
+ };
@@ -0,0 +1,124 @@
1
+ export const AVAILABLE_LOCALES = [
2
+ "en",
3
+ "ru",
4
+ "pl",
5
+ "es",
6
+ "pt",
7
+ "de",
8
+ "hy",
9
+ "az",
10
+ "fr",
11
+ "it",
12
+ "ja",
13
+ "he",
14
+ "ka",
15
+ "kr",
16
+ "nl",
17
+ "sv",
18
+ "tr",
19
+ "zh",
20
+ ] as const;
21
+
22
+ export const DEFAULT_LOCALE = "en";
23
+
24
+ export type LangLocale = (typeof AVAILABLE_LOCALES)[number];
25
+
26
+ export const LANG_LOCALE: Record<
27
+ LangLocale,
28
+ {
29
+ short: string;
30
+ full: string;
31
+ iso: string;
32
+ }
33
+ > = {
34
+ en: {
35
+ short: "Eng",
36
+ full: "English",
37
+ iso: "en-US",
38
+ },
39
+ ru: {
40
+ short: "Ру",
41
+ full: "Русский",
42
+ iso: "ru-RU",
43
+ },
44
+ pl: {
45
+ short: "Pl",
46
+ full: "Polski",
47
+ iso: "pl-PL",
48
+ },
49
+ es: {
50
+ short: "Es",
51
+ full: "Español",
52
+ iso: "es-ES",
53
+ },
54
+ pt: {
55
+ short: "Pt",
56
+ full: "Português",
57
+ iso: "pt-PT",
58
+ },
59
+ de: {
60
+ short: "De",
61
+ full: "Deutsch",
62
+ iso: "de-DE",
63
+ },
64
+ hy: {
65
+ short: "Hy",
66
+ full: "Հայերեն",
67
+ iso: "hy-AM",
68
+ },
69
+ az: {
70
+ short: "Az",
71
+ full: "Azərbaycan",
72
+ iso: "az-AZ",
73
+ },
74
+ fr: {
75
+ short: "Fr",
76
+ full: "Français",
77
+ iso: "fr-FR",
78
+ },
79
+ it: {
80
+ short: "It",
81
+ full: "Italiano",
82
+ iso: "it-IT",
83
+ },
84
+ ja: {
85
+ short: "Ja",
86
+ full: "日本語",
87
+ iso: "ja-JP",
88
+ },
89
+ he: {
90
+ short: "He",
91
+ full: "עברית",
92
+ iso: "he-IL",
93
+ },
94
+ ka: {
95
+ short: "Ka",
96
+ full: "ქართული",
97
+ iso: "ka-GE",
98
+ },
99
+ kr: {
100
+ short: "Kr",
101
+ full: "한국어",
102
+ iso: "kr-KR",
103
+ },
104
+ nl: {
105
+ short: "Nl",
106
+ full: "Nederlands",
107
+ iso: "nl-NL",
108
+ },
109
+ sv: {
110
+ short: "Sv",
111
+ full: "Svenska",
112
+ iso: "sv-SE",
113
+ },
114
+ tr: {
115
+ short: "Tr",
116
+ full: "Türkçe",
117
+ iso: "tr-TR",
118
+ },
119
+ zh: {
120
+ short: "Zh",
121
+ full: "中文",
122
+ iso: "zh-CN",
123
+ },
124
+ };
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "keçdi",
4
+ "failed": "uğursuz",
5
+ "broken": "sınıq",
6
+ "skipped": "keçildi",
7
+ "unknown": "naməlum",
8
+ "total": "cəmi",
9
+ "in": "içində"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Hesabat tapılmadı"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "bestanden",
4
+ "failed": "fehlgeschlagen",
5
+ "broken": "defekt",
6
+ "skipped": "übersprungen",
7
+ "unknown": "unbekannt",
8
+ "total": "gesamt",
9
+ "in": "in"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Keine Berichte gefunden"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "passed",
4
+ "failed": "failed",
5
+ "broken": "broken",
6
+ "skipped": "skipped",
7
+ "unknown": "unknown",
8
+ "total": "total",
9
+ "in": "in"
10
+ },
11
+ "empty": {
12
+ "no-reports": "No reports found"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "aprobado",
4
+ "failed": "fallido",
5
+ "broken": "roto",
6
+ "skipped": "omitido",
7
+ "unknown": "desconocido",
8
+ "total": "total",
9
+ "in": "en"
10
+ },
11
+ "empty": {
12
+ "no-reports": "No se encontraron informes"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "réussi",
4
+ "failed": "échoué",
5
+ "broken": "cassé",
6
+ "skipped": "ignoré",
7
+ "unknown": "inconnu",
8
+ "total": "total",
9
+ "in": "dans"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Aucun rapport trouvé"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "עבר",
4
+ "failed": "נכשל",
5
+ "broken": "שבור",
6
+ "skipped": "דלג",
7
+ "unknown": "לא ידוע",
8
+ "total": "סה\"כ",
9
+ "in": "ב-"
10
+ },
11
+ "empty": {
12
+ "no-reports": "לא נמצאו דוחות"
13
+ }
14
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "summary": {
3
+ "passed": "անցած",
4
+ "failed": "ձախողված",
5
+ "broken": "կոտրված",
6
+ "skipped": "բաց թողնված",
7
+ "unknown": "անհայտ",
8
+ "in": "մեջ"
9
+ },
10
+ "empty": {
11
+ "no-reports": "Ոչ մի հաշվետվություն չի գտնվել"
12
+ }
13
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "superato",
4
+ "failed": "fallito",
5
+ "broken": "rotto",
6
+ "skipped": "saltato",
7
+ "unknown": "sconosciuto",
8
+ "total": "totale",
9
+ "in": "in"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Nessun report trovato"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "成功",
4
+ "failed": "失敗",
5
+ "broken": "壊れた",
6
+ "skipped": "スキップ",
7
+ "unknown": "不明",
8
+ "total": "合計",
9
+ "in": "中"
10
+ },
11
+ "empty": {
12
+ "no-reports": "レポートが見つかりません"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "წარმატებული",
4
+ "failed": "წარუმატებელი",
5
+ "broken": "დამტვრეული",
6
+ "skipped": "გამოტოვებული",
7
+ "unknown": "უცნობი",
8
+ "total": "ჯამი",
9
+ "in": "ში"
10
+ },
11
+ "empty": {
12
+ "no-reports": "არ მოიძებნა არცერთი ანგარიში"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "통과",
4
+ "failed": "실패",
5
+ "broken": "손상됨",
6
+ "skipped": "건너뜀",
7
+ "unknown": "알 수 없음",
8
+ "total": "총계",
9
+ "in": "중"
10
+ },
11
+ "empty": {
12
+ "no-reports": "보고서가 없습니다"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "geslaagd",
4
+ "failed": "mislukt",
5
+ "broken": "gebroken",
6
+ "skipped": "overgeslagen",
7
+ "unknown": "onbekend",
8
+ "total": "totaal",
9
+ "in": "in"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Geen rapporten gevonden"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "zdany",
4
+ "failed": "niezdany",
5
+ "broken": "zepsuty",
6
+ "skipped": "pominięty",
7
+ "unknown": "nieznany",
8
+ "total": "wszystkie",
9
+ "in": "za"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Brak raportów"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "aprovado",
4
+ "failed": "falhou",
5
+ "broken": "quebrado",
6
+ "skipped": "ignorado",
7
+ "unknown": "desconhecido",
8
+ "total": "total",
9
+ "in": "em"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Nenhum relatório encontrado"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "успешный",
4
+ "failed": "неуспешный",
5
+ "broken": "сломанный",
6
+ "skipped": "пропущенный",
7
+ "unknown": "неизвестный",
8
+ "total": "все",
9
+ "in": "за"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Отчеты не найдены"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "godkänd",
4
+ "failed": "misslyckad",
5
+ "broken": "trasig",
6
+ "skipped": "hoppad över",
7
+ "unknown": "okänd",
8
+ "total": "totalt",
9
+ "in": "i"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Inga rapporter"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "başarılı",
4
+ "failed": "başarısız",
5
+ "broken": "bozuk",
6
+ "skipped": "atlandı",
7
+ "unknown": "bilinmeyen",
8
+ "total": "toplam",
9
+ "in": "içinde"
10
+ },
11
+ "empty": {
12
+ "no-reports": "Rapor bulunamadı"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "summary": {
3
+ "passed": "通过",
4
+ "failed": "失败",
5
+ "broken": "损坏",
6
+ "skipped": "跳过",
7
+ "unknown": "未知",
8
+ "total": "总计",
9
+ "in": "在"
10
+ },
11
+ "empty": {
12
+ "no-reports": "未找到报告"
13
+ }
14
+ }
package/src/index.html ADDED
@@ -0,0 +1,89 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <title>Allure Report</title>
5
+ <link rel="icon" href="data:image/svg+xml,%3Csvg width='32' height='32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M22.232 4.662a3.6 3.6 0 0 1 5.09.035c2.855 2.894 4.662 6.885 4.662 11.295a3.6 3.6 0 0 1-7.2 0c0-2.406-.981-4.61-2.587-6.24a3.6 3.6 0 0 1 .035-5.09Z' fill='url(%23a)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.392 3.6a3.6 3.6 0 0 1 3.6-3.6c4.41 0 8.401 1.807 11.296 4.662a3.6 3.6 0 1 1-5.056 5.126C20.602 8.18 18.398 7.2 15.992 7.2a3.6 3.6 0 0 1-3.6-3.6Z' fill='url(%23b)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0 15.992C0 7.157 7.157 0 15.992 0a3.6 3.6 0 0 1 0 7.2A8.789 8.789 0 0 0 7.2 15.992c0 2.406.981 4.61 2.588 6.24a3.6 3.6 0 0 1-5.126 5.056C1.807 24.393 0 20.402 0 15.992Z' fill='url(%23c)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4.661 22.232a3.6 3.6 0 0 1 5.091-.035c1.63 1.606 3.834 2.587 6.24 2.587a3.6 3.6 0 0 1 0 7.2c-4.41 0-8.401-1.807-11.295-4.661a3.6 3.6 0 0 1-.036-5.091Z' fill='url(%23d)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M28.384 12.392a3.6 3.6 0 0 1 3.6 3.6c0 8.835-7.157 15.992-15.992 15.992a3.6 3.6 0 0 1 0-7.2 8.789 8.789 0 0 0 8.792-8.792 3.6 3.6 0 0 1 3.6-3.6Z' fill='url(%23e)'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M28.385 12.392a3.6 3.6 0 0 1 3.6 3.6v12.392a3.6 3.6 0 0 1-7.2 0V15.992a3.6 3.6 0 0 1 3.6-3.6Z' fill='url(%23f)'/%3E%3Cg clip-path='url(%23g)'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M22.232 4.662a3.6 3.6 0 0 1 5.091.035c2.855 2.894 4.662 6.885 4.662 11.295a3.6 3.6 0 0 1-7.2 0c0-2.406-.982-4.61-2.588-6.24a3.6 3.6 0 0 1 .035-5.09Z' fill='url(%23h)'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='a' x1='26.4' y1='9.6' x2='28.8' y2='15' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%237E22CE'/%3E%3Cstop offset='1' stop-color='%238B5CF6'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='26.8' y1='9.4' x2='17.8' y2='3.6' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23EF4444'/%3E%3Cstop offset='1' stop-color='%23DC2626'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='3.6' y1='14' x2='5.4' y2='24.8' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2322C55E'/%3E%3Cstop offset='1' stop-color='%2315803D'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='4.8' y1='22.2' x2='14.4' y2='29.2' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%2394A3B8'/%3E%3Cstop offset='.958' stop-color='%2364748B'/%3E%3Cstop offset='1' stop-color='%2364748B'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='28.4' y1='22.173' x2='22.188' y2='28.384' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23D97706'/%3E%3Cstop offset='1' stop-color='%23FBBF24'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='29.2' y1='54.4' x2='30.626' y2='54.256' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23FBBF24'/%3E%3Cstop offset='1' stop-color='%23FBBF24'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='26.4' y1='9.6' x2='28.8' y2='15' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%237E22CE'/%3E%3Cstop offset='1' stop-color='%238B5CF6'/%3E%3C/linearGradient%3E%3CclipPath id='g'%3E%3Cpath fill='%23fff' transform='translate(24.8 12)' d='M0 0h7.2v8H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E" />
6
+ <base href="http://localhost:8080" />
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script>
11
+ window.allure = window.allure || {};
12
+ </script>
13
+
14
+ <script>
15
+ const { origin, pathname } = window.location;
16
+ const url = new URL(pathname, origin);
17
+ const baseEl = document.createElement("base");
18
+
19
+ baseEl.href = url.toString();
20
+
21
+ window.document.head.appendChild(baseEl);
22
+ </script>
23
+ <script>
24
+ window.reportSummaries = [
25
+ {
26
+ name: "First sample report",
27
+ href: "#",
28
+ stats: {
29
+ passed: 100,
30
+ failed: 31,
31
+ broken: 5,
32
+ skipped: 1,
33
+ unknown: 2,
34
+ total: 139
35
+ },
36
+ duration: 1240812,
37
+ status: "failed",
38
+ },
39
+ {
40
+ name: "Second sample report with longer title",
41
+ href: "#",
42
+ stats: {
43
+ passed: 67,
44
+ total: 67
45
+ },
46
+ duration: 31290,
47
+ status: "passed",
48
+ },
49
+ {
50
+ name: "Third report",
51
+ href: "#",
52
+ stats: {
53
+ passed: 12,
54
+ broken: 48,
55
+ total: 60
56
+ },
57
+ duration: 512341,
58
+ status: "broken",
59
+ },
60
+ {
61
+ name: "Fourth report",
62
+ href: "#",
63
+ stats: {
64
+ passed: 10,
65
+ unknown: 4,
66
+ broken: 1,
67
+ total: 15
68
+ },
69
+ duration: 12341,
70
+ status: "broken",
71
+ },
72
+ {
73
+ name: "Fifth report with a very long title that should not be truncated and should be displayed in full",
74
+ href: "#",
75
+ stats: {
76
+ skipped: 1,
77
+ unknown: 1,
78
+ total: 2
79
+ },
80
+ duration: 0,
81
+ status: "unknown",
82
+ },
83
+ ]
84
+ </script>
85
+ <script async>
86
+ window.allureReportDataReady = true;
87
+ </script>
88
+ </body>
89
+ </html>