@allurereport/web-awesome 3.0.0-beta.10

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 (196) hide show
  1. package/.babelrc.js +46 -0
  2. package/.eslintrc.cjs +18 -0
  3. package/CONTRIBUTING.md +34 -0
  4. package/README.md +27 -0
  5. package/dist/multi/141.app-d01d0c66.js +1 -0
  6. package/dist/multi/222.app-d01d0c66.js +1 -0
  7. package/dist/multi/335.app-d01d0c66.js +1 -0
  8. package/dist/multi/34.app-d01d0c66.js +1 -0
  9. package/dist/multi/349.app-d01d0c66.js +1 -0
  10. package/dist/multi/378.app-d01d0c66.js +1 -0
  11. package/dist/multi/406.app-d01d0c66.js +1 -0
  12. package/dist/multi/476.app-d01d0c66.js +1 -0
  13. package/dist/multi/53.app-d01d0c66.js +1 -0
  14. package/dist/multi/584.app-d01d0c66.js +1 -0
  15. package/dist/multi/690.app-d01d0c66.js +1 -0
  16. package/dist/multi/747.app-d01d0c66.js +1 -0
  17. package/dist/multi/767.app-d01d0c66.js +1 -0
  18. package/dist/multi/816.app-d01d0c66.js +1 -0
  19. package/dist/multi/83.app-d01d0c66.js +1 -0
  20. package/dist/multi/873.app-d01d0c66.js +1 -0
  21. package/dist/multi/920.app-d01d0c66.js +1 -0
  22. package/dist/multi/991.app-d01d0c66.js +1 -0
  23. package/dist/multi/JetBrainsMono_vf-9e9649b6..woff2 +0 -0
  24. package/dist/multi/JetBrainsMono_vf-b9a9c326..woff +0 -0
  25. package/dist/multi/app-d01d0c66.js +2 -0
  26. package/dist/multi/app-d01d0c66.js.LICENSE.txt +16 -0
  27. package/dist/multi/manifest.json +26 -0
  28. package/dist/multi/pt-root-ui_vf-22fe60ca..woff +0 -0
  29. package/dist/multi/pt-root-ui_vf-9d251e8b..woff2 +0 -0
  30. package/dist/multi/styles-d01d0c66.css +39 -0
  31. package/dist/single/app-6596cb08.js +2 -0
  32. package/dist/single/app-6596cb08.js.LICENSE.txt +16 -0
  33. package/dist/single/manifest.json +3 -0
  34. package/package.json +107 -0
  35. package/postcss.config.js +5 -0
  36. package/src/assets/scss/_common.scss +143 -0
  37. package/src/assets/scss/day.scss +51 -0
  38. package/src/assets/scss/fonts.scss +3 -0
  39. package/src/assets/scss/index.scss +7 -0
  40. package/src/assets/scss/night.scss +61 -0
  41. package/src/assets/scss/palette.scss +393 -0
  42. package/src/assets/scss/theme.scss +119 -0
  43. package/src/assets/scss/vars.scss +9 -0
  44. package/src/assets/svg/line-alerts-alert-circle.svg +12 -0
  45. package/src/assets/svg/line-general-eye.svg +7 -0
  46. package/src/assets/svg/line-icon-bomb-2.svg +12 -0
  47. package/src/components/ArrowButton/index.tsx +36 -0
  48. package/src/components/ArrowButton/styles.scss +35 -0
  49. package/src/components/BaseLayout/index.tsx +43 -0
  50. package/src/components/BaseLayout/styles.scss +60 -0
  51. package/src/components/Footer/FooterLogo.tsx +16 -0
  52. package/src/components/Footer/FooterVersion.tsx +37 -0
  53. package/src/components/Footer/index.tsx +13 -0
  54. package/src/components/Footer/styles.scss +14 -0
  55. package/src/components/Header/index.tsx +28 -0
  56. package/src/components/Header/styles.scss +33 -0
  57. package/src/components/LanguagePicker/index.tsx +40 -0
  58. package/src/components/MainReport/index.tsx +21 -0
  59. package/src/components/MainReport/styles.scss +11 -0
  60. package/src/components/Metadata/index.tsx +121 -0
  61. package/src/components/Metadata/styles.scss +146 -0
  62. package/src/components/MetadataButton/index.tsx +32 -0
  63. package/src/components/MetadataButton/styles.scss +53 -0
  64. package/src/components/Modal/index.tsx +22 -0
  65. package/src/components/ReportBody/Filters.tsx +90 -0
  66. package/src/components/ReportBody/HeaderActions.tsx +21 -0
  67. package/src/components/ReportBody/SortBy.tsx +132 -0
  68. package/src/components/ReportBody/context.tsx +106 -0
  69. package/src/components/ReportBody/index.tsx +72 -0
  70. package/src/components/ReportBody/styles.scss +69 -0
  71. package/src/components/ReportHeader/ReportHeaderLabelList.tsx +12 -0
  72. package/src/components/ReportHeader/ReportHeaderLogo.tsx +10 -0
  73. package/src/components/ReportHeader/ReportHeaderPie.tsx +14 -0
  74. package/src/components/ReportHeader/index.tsx +33 -0
  75. package/src/components/ReportHeader/styles.scss +51 -0
  76. package/src/components/ReportLogo/index.tsx +16 -0
  77. package/src/components/ReportLogo/styles.scss +20 -0
  78. package/src/components/ReportLogoFull/index.tsx +20 -0
  79. package/src/components/ReportLogoFull/styles.scss +7 -0
  80. package/src/components/ReportMetadata/MetadataItem.tsx +45 -0
  81. package/src/components/ReportMetadata/MetadataSummary.tsx +81 -0
  82. package/src/components/ReportMetadata/MetadataTestType.tsx +16 -0
  83. package/src/components/ReportMetadata/MetadataWithIcon.tsx +21 -0
  84. package/src/components/ReportMetadata/index.tsx +46 -0
  85. package/src/components/ReportMetadata/styles.scss +99 -0
  86. package/src/components/SideBySide/index.tsx +52 -0
  87. package/src/components/SideBySide/styles.scss +65 -0
  88. package/src/components/SplitLayout/index.tsx +77 -0
  89. package/src/components/SplitLayout/styles.scss +85 -0
  90. package/src/components/Tabs/index.tsx +62 -0
  91. package/src/components/Tabs/styles.scss +56 -0
  92. package/src/components/TestResult/TestResultAttachmentsView/index.tsx +27 -0
  93. package/src/components/TestResult/TestResultAttachmentsView/styles.scss +12 -0
  94. package/src/components/TestResult/TestResultDescription/index.tsx +27 -0
  95. package/src/components/TestResult/TestResultDescription/styles.scss +12 -0
  96. package/src/components/TestResult/TestResultDropdown/index.tsx +26 -0
  97. package/src/components/TestResult/TestResultDropdown/styles.scss +34 -0
  98. package/src/components/TestResult/TestResultEmpty/index.tsx +34 -0
  99. package/src/components/TestResult/TestResultEmpty/styles.scss +25 -0
  100. package/src/components/TestResult/TestResultHeader/TestResultBreadcrumbs.tsx +44 -0
  101. package/src/components/TestResult/TestResultHeader/index.tsx +21 -0
  102. package/src/components/TestResult/TestResultHeader/styles.scss +48 -0
  103. package/src/components/TestResult/TestResultHistory/TestResultHistoryItem.tsx +66 -0
  104. package/src/components/TestResult/TestResultHistory/index.tsx +26 -0
  105. package/src/components/TestResult/TestResultHistory/styles.scss +63 -0
  106. package/src/components/TestResult/TestResultInfo/TestResultInfoStatuses.tsx +30 -0
  107. package/src/components/TestResult/TestResultInfo/index.tsx +81 -0
  108. package/src/components/TestResult/TestResultInfo/styles.scss +68 -0
  109. package/src/components/TestResult/TestResultLinks/index.tsx +56 -0
  110. package/src/components/TestResult/TestResultLinks/styles.scss +30 -0
  111. package/src/components/TestResult/TestResultMetadata/index.tsx +27 -0
  112. package/src/components/TestResult/TestResultMetadata/styles.scss +8 -0
  113. package/src/components/TestResult/TestResultNavigation/index.tsx +80 -0
  114. package/src/components/TestResult/TestResultNavigation/styles.scss +48 -0
  115. package/src/components/TestResult/TestResultOverview.tsx +43 -0
  116. package/src/components/TestResult/TestResultParameters/index.tsx +30 -0
  117. package/src/components/TestResult/TestResultParameters/styles.scss +8 -0
  118. package/src/components/TestResult/TestResultPrevStatuses/index.tsx +49 -0
  119. package/src/components/TestResult/TestResultPrevStatuses/styles.scss +57 -0
  120. package/src/components/TestResult/TestResultRetriesView/TestResultRetriesItem.tsx +51 -0
  121. package/src/components/TestResult/TestResultRetriesView/index.tsx +24 -0
  122. package/src/components/TestResult/TestResultRetriesView/styles.scss +69 -0
  123. package/src/components/TestResult/TestResultSetup/index.tsx +58 -0
  124. package/src/components/TestResult/TestResultSeverity/index.tsx +27 -0
  125. package/src/components/TestResult/TestResultSeverity/styles.scss +29 -0
  126. package/src/components/TestResult/TestResultStatus/index.tsx +25 -0
  127. package/src/components/TestResult/TestResultStatus/styles.scss +36 -0
  128. package/src/components/TestResult/TestResultSteps/index.tsx +58 -0
  129. package/src/components/TestResult/TestResultSteps/styles.scss +225 -0
  130. package/src/components/TestResult/TestResultSteps/testResultAttachment.tsx +76 -0
  131. package/src/components/TestResult/TestResultSteps/testResultAttachmentInfo.tsx +83 -0
  132. package/src/components/TestResult/TestResultSteps/testResultStep.tsx +84 -0
  133. package/src/components/TestResult/TestResultSteps/testResultStepInfo.tsx +30 -0
  134. package/src/components/TestResult/TestResultSteps/wrongAttachment.tsx +8 -0
  135. package/src/components/TestResult/TestResultTabs/index.tsx +68 -0
  136. package/src/components/TestResult/TestResultTabs/styles.scss +76 -0
  137. package/src/components/TestResult/TestResultTeardown/index.tsx +59 -0
  138. package/src/components/TestResult/TestStepsEmpty/index.tsx +23 -0
  139. package/src/components/TestResult/TestStepsEmpty/styles.scss +25 -0
  140. package/src/components/TestResult/TrError/TrDiff.tsx +124 -0
  141. package/src/components/TestResult/TrError/index.tsx +78 -0
  142. package/src/components/TestResult/TrError/styles.scss +133 -0
  143. package/src/components/TestResult/index.tsx +62 -0
  144. package/src/components/TestResult/styles.scss +11 -0
  145. package/src/components/ThemeButton/ThemeButton.tsx +20 -0
  146. package/src/components/ToggleLayout/index.tsx +17 -0
  147. package/src/components/Tree/index.tsx +75 -0
  148. package/src/components/Tree/styles.scss +189 -0
  149. package/src/i18n/constants.ts +124 -0
  150. package/src/i18n/locales/am.json +133 -0
  151. package/src/i18n/locales/az.json +133 -0
  152. package/src/i18n/locales/de.json +133 -0
  153. package/src/i18n/locales/en.json +134 -0
  154. package/src/i18n/locales/es.json +133 -0
  155. package/src/i18n/locales/fr.json +133 -0
  156. package/src/i18n/locales/he.json +133 -0
  157. package/src/i18n/locales/it.json +133 -0
  158. package/src/i18n/locales/ja.json +133 -0
  159. package/src/i18n/locales/ka.json +133 -0
  160. package/src/i18n/locales/kr.json +133 -0
  161. package/src/i18n/locales/nl.json +133 -0
  162. package/src/i18n/locales/pl.json +131 -0
  163. package/src/i18n/locales/pt.json +133 -0
  164. package/src/i18n/locales/ru.json +131 -0
  165. package/src/i18n/locales/sv.json +133 -0
  166. package/src/i18n/locales/tr.json +133 -0
  167. package/src/i18n/locales/zh.json +133 -0
  168. package/src/index.html +40 -0
  169. package/src/index.tsx +96 -0
  170. package/src/stores/chart.ts +32 -0
  171. package/src/stores/envInfo.ts +34 -0
  172. package/src/stores/index.ts +4 -0
  173. package/src/stores/layout.ts +36 -0
  174. package/src/stores/locale.ts +75 -0
  175. package/src/stores/modal.ts +22 -0
  176. package/src/stores/router.ts +48 -0
  177. package/src/stores/stats.ts +36 -0
  178. package/src/stores/testResults.ts +66 -0
  179. package/src/stores/theme.ts +32 -0
  180. package/src/stores/tree.ts +157 -0
  181. package/src/stores/types.ts +5 -0
  182. package/src/styles.scss +45 -0
  183. package/src/types/globals.d.ts +13 -0
  184. package/src/types/window.d.ts +8 -0
  185. package/src/utils/capitalize.ts +6 -0
  186. package/src/utils/copyToClipboard.ts +16 -0
  187. package/src/utils/isMac.ts +8 -0
  188. package/src/utils/loadFromLocalStorage.ts +8 -0
  189. package/src/utils/statuses.ts +55 -0
  190. package/src/utils/time.ts +17 -0
  191. package/src/utils/treeFilters.ts +147 -0
  192. package/test/utils/treeFilters.test.ts +448 -0
  193. package/tsconfig.json +27 -0
  194. package/types.d.ts +99 -0
  195. package/vitest.config.ts +18 -0
  196. package/webpack.config.js +112 -0
@@ -0,0 +1,133 @@
1
+ {
2
+ "statuses": {
3
+ "passed": "godkänd",
4
+ "failed": "misslyckad",
5
+ "broken": "trasig",
6
+ "skipped": "hoppad över",
7
+ "unknown": "okänd",
8
+ "total": "totalt",
9
+ "flakyTests": "ostadig",
10
+ "newTests": "ny",
11
+ "retryTests": "försök igen"
12
+ },
13
+ "testSummary": {
14
+ "all": "Alla tester",
15
+ "flaky": "Ostadiga tester",
16
+ "retry": "Omtestade tester",
17
+ "new": "Nya tester"
18
+ },
19
+ "tabs": {
20
+ "total": "Alla"
21
+ },
22
+ "search": {
23
+ "search": "Sök",
24
+ "search-placeholder": "Namn eller ID"
25
+ },
26
+ "filters": {
27
+ "more-filters": "Fler filter",
28
+ "enable-filter": "Aktivera filtret \"{filter}\"",
29
+ "flaky": "Ostadig",
30
+ "retry": "Försök igen",
31
+ "new": "Ny"
32
+ },
33
+ "sort-by": {
34
+ "sort-by-text": "Sortera efter:",
35
+ "sort-by-category": "Sortera efter",
36
+ "direction-category": "Riktning"
37
+ },
38
+ "sort-by.values": {
39
+ "order": "Ordning",
40
+ "alphabet": "Alfabet",
41
+ "duration": "Varaktighet",
42
+ "status": "Status"
43
+ },
44
+ "sort-by.directions": {
45
+ "order-desc": "Senast – Tidigare",
46
+ "order-asc": "Tidigare – Senast",
47
+ "order-asc-short": "Tidigare",
48
+ "order-desc-short": "Senast",
49
+ "alphabet-asc": "A – Ö",
50
+ "alphabet-desc": "Ö – A",
51
+ "alphabet-asc-short": "A – Ö",
52
+ "alphabet-desc-short": "Ö – A",
53
+ "duration-asc": "1 – 9",
54
+ "duration-desc": "9 – 1",
55
+ "duration-asc-short": "1 – 9",
56
+ "duration-desc-short": "9 – 1",
57
+ "status-asc": "Som i filterlistan",
58
+ "status-desc": "Omvänd",
59
+ "status-asc-short": "Vanlig",
60
+ "status-desc-short": "Omvänd"
61
+ },
62
+ "empty": {
63
+ "no-results": "Inga resultat",
64
+ "no-tests-found": "Inga resultat hittades",
65
+ "clear-filters": "Rensa filter",
66
+ "no-attachments-results": "Ingen bilaga information tillgänglig",
67
+ "no-history-results": "Ingen historik information tillgänglig",
68
+ "no-retries-results": "Ingen omtagningar information tillgänglig",
69
+ "no-test-steps-results": "Ingen information om teststeg tillgänglig",
70
+ "no-test-case-results": "Inga testfallresultat"
71
+ },
72
+ "severity": {
73
+ "blocker": "blockerare",
74
+ "critical": "kritisk",
75
+ "normal": "normal",
76
+ "minor": "mindre",
77
+ "trivial": "obetydlig"
78
+ },
79
+ "execution": {
80
+ "name": "Utförande",
81
+ "body": "Testkropp",
82
+ "setup": "Förberedelse",
83
+ "teardown": "Avslutning"
84
+ },
85
+ "ui": {
86
+ "labels": "Etiketter",
87
+ "metadata": "Metadata",
88
+ "parameters": "Parametrar",
89
+ "description": "Beskrivning",
90
+ "links": "Länkar",
91
+ "overview": "Översikt",
92
+ "history": "Historik",
93
+ "attachments": "Bilagor",
94
+ "retries": "Omtagningar",
95
+ "error": "Fel",
96
+ "goToStep": "Gå till steg",
97
+ "showLess": "Visa mindre",
98
+ "showMore": "Visa mer",
99
+ "copy": "Kopiera",
100
+ "at": "vid"
101
+ },
102
+ "controls": {
103
+ "newTabAttachment": "Öppna bilaga i ny flik",
104
+ "nextTR": "Nästa testresultat",
105
+ "prevTR": "Föregående testresultat",
106
+ "downloadAttachment": "Ladda ner bilaga",
107
+ "backto": "Tillbaka till",
108
+ "clipboard": "Kopiera till urklipp",
109
+ "clipboardError": "Kan inte kopiera värde till urklipp. Det verkar som om den här funktionen inte stöds av din webbläsare",
110
+ "clipboardSuccess": "Kopierat framgångsrikt",
111
+ "collapse": "Minimera",
112
+ "expand": "Expandera",
113
+ "fullscreen": "Helskärm",
114
+ "language": "Byt språk",
115
+ "openInNewTab": "Öppna i ny flik",
116
+ "openPreview": "Öppna förhandsgranskning",
117
+ "noSelectedTR": "Inget valt testresultat",
118
+ "comparison": "Jämförelse",
119
+ "showDiff": "Visa skillnad",
120
+ "viewMode": "Visningsläge",
121
+ "unified": "Enhetligt",
122
+ "side-by-side": "Sida vid sida",
123
+ "compareBy": "Jämför efter",
124
+ "chars": "tecken",
125
+ "words": "ord",
126
+ "lines": "rader",
127
+ "actual": "Faktisk",
128
+ "expected": "Förväntad"
129
+ },
130
+ "errors": {
131
+ "missedAttachment": "Bilaga hittades inte"
132
+ }
133
+ }
@@ -0,0 +1,133 @@
1
+ {
2
+ "statuses": {
3
+ "passed": "başarılı",
4
+ "failed": "başarısız",
5
+ "broken": "bozuk",
6
+ "skipped": "atlandı",
7
+ "unknown": "bilinmeyen",
8
+ "total": "toplam",
9
+ "flakyTests": "istikrarsız",
10
+ "newTests": "yeni",
11
+ "retryTests": "tekrar dene"
12
+ },
13
+ "testSummary": {
14
+ "all": "Tüm Testler",
15
+ "flaky": "İstikrarsız Testler",
16
+ "retry": "Tekrarlanan Testler",
17
+ "new": "Yeni Testler"
18
+ },
19
+ "tabs": {
20
+ "total": "Tümü"
21
+ },
22
+ "search": {
23
+ "search": "Ara",
24
+ "search-placeholder": "Ad veya ID"
25
+ },
26
+ "filters": {
27
+ "more-filters": "Daha fazla filtre",
28
+ "enable-filter": "\"{filter}\" filtresini etkinleştir",
29
+ "flaky": "İstikrarsız",
30
+ "retry": "Tekrar",
31
+ "new": "Yeni"
32
+ },
33
+ "sort-by": {
34
+ "sort-by-text": "Sıralama ölçütü:",
35
+ "sort-by-category": "Sıralama",
36
+ "direction-category": "Yön"
37
+ },
38
+ "sort-by.values": {
39
+ "order": "Sıra",
40
+ "alphabet": "Alfabe",
41
+ "duration": "Süre",
42
+ "status": "Durum"
43
+ },
44
+ "sort-by.directions": {
45
+ "order-desc": "Son – İlk",
46
+ "order-asc": "İlk – Son",
47
+ "order-asc-short": "İlk",
48
+ "order-desc-short": "Son",
49
+ "alphabet-asc": "A – Z",
50
+ "alphabet-desc": "Z – A",
51
+ "alphabet-asc-short": "A – Z",
52
+ "alphabet-desc-short": "Z – A",
53
+ "duration-asc": "1 – 9",
54
+ "duration-desc": "9 – 1",
55
+ "duration-asc-short": "1 – 9",
56
+ "duration-desc-short": "9 – 1",
57
+ "status-asc": "Filtre listesi gibi",
58
+ "status-desc": "Ters",
59
+ "status-asc-short": "Normal",
60
+ "status-desc-short": "Ters"
61
+ },
62
+ "empty": {
63
+ "no-results": "Sonuç yok",
64
+ "no-tests-found": "Sonuç bulunamadı",
65
+ "clear-filters": "Filtreleri temizle",
66
+ "no-attachments-results": "Ek bilgisi mevcut değil",
67
+ "no-history-results": "Geçmiş bilgisi mevcut değil",
68
+ "no-retries-results": "Tekrar deneme bilgisi mevcut değil",
69
+ "no-test-steps-results": "Test adımları hakkında bilgi mevcut değil",
70
+ "no-test-case-results": "Test vakası sonuçları yok"
71
+ },
72
+ "severity": {
73
+ "blocker": "engelleyici",
74
+ "critical": "kritik",
75
+ "normal": "normal",
76
+ "minor": "küçük",
77
+ "trivial": "önemsiz"
78
+ },
79
+ "execution": {
80
+ "name": "Yürütme",
81
+ "body": "Test içeriği",
82
+ "setup": "Kurulum",
83
+ "teardown": "Kapatma"
84
+ },
85
+ "ui": {
86
+ "labels": "Etiketler",
87
+ "metadata": "Meta Veriler",
88
+ "parameters": "Parametreler",
89
+ "description": "Açıklama",
90
+ "links": "Bağlantılar",
91
+ "overview": "Genel Bakış",
92
+ "history": "Geçmiş",
93
+ "attachments": "Ekler",
94
+ "retries": "Tekrar Denemeler",
95
+ "error": "Hata",
96
+ "goToStep": "Adıma git",
97
+ "showLess": "Daha az göster",
98
+ "showMore": "Daha fazla göster",
99
+ "copy": "Kopyala",
100
+ "at": "tarihinde"
101
+ },
102
+ "controls": {
103
+ "newTabAttachment": "Eki yeni sekmede aç",
104
+ "nextTR": "Sonraki test sonucu",
105
+ "prevTR": "Önceki test sonucu",
106
+ "downloadAttachment": "Eki indir",
107
+ "backto": "Geri dön",
108
+ "clipboard": "Panoya kopyala",
109
+ "clipboardError": "Değer panoya kopyalanamıyor. Bu özellik tarayıcınız tarafından desteklenmiyor olabilir",
110
+ "clipboardSuccess": "Başarıyla kopyalandı",
111
+ "collapse": "Daralt",
112
+ "expand": "Genişlet",
113
+ "fullscreen": "Tam ekran",
114
+ "language": "Dili değiştir",
115
+ "openInNewTab": "Yeni sekmede aç",
116
+ "openPreview": "Önizlemeyi aç",
117
+ "noSelectedTR": "Seçilen test sonucu yok",
118
+ "comparison": "Karşılaştırma",
119
+ "showDiff": "Farkı göster",
120
+ "viewMode": "Görünüm modu",
121
+ "unified": "Birleştirilmiş",
122
+ "side-by-side": "Yan yana",
123
+ "compareBy": "Karşılaştırma ölçütü",
124
+ "chars": "karakterler",
125
+ "words": "kelimeler",
126
+ "lines": "satırlar",
127
+ "actual": "Gerçek",
128
+ "expected": "Beklenen"
129
+ },
130
+ "errors": {
131
+ "missedAttachment": "Ek bulunamadı"
132
+ }
133
+ }
@@ -0,0 +1,133 @@
1
+ {
2
+ "statuses": {
3
+ "passed": "通过",
4
+ "failed": "失败",
5
+ "broken": "损坏",
6
+ "skipped": "跳过",
7
+ "unknown": "未知",
8
+ "total": "总计",
9
+ "flakyTests": "不稳定",
10
+ "newTests": "新的",
11
+ "retryTests": "重试"
12
+ },
13
+ "testSummary": {
14
+ "all": "所有测试",
15
+ "flaky": "不稳定的测试",
16
+ "retry": "重试的测试",
17
+ "new": "新的测试"
18
+ },
19
+ "tabs": {
20
+ "total": "所有"
21
+ },
22
+ "search": {
23
+ "search": "搜索",
24
+ "search-placeholder": "名称或ID"
25
+ },
26
+ "filters": {
27
+ "more-filters": "更多过滤器",
28
+ "enable-filter": "启用 \"{filter}\" 过滤器",
29
+ "flaky": "不稳定",
30
+ "retry": "重试",
31
+ "new": "新的"
32
+ },
33
+ "sort-by": {
34
+ "sort-by-text": "排序依据:",
35
+ "sort-by-category": "排序类别",
36
+ "direction-category": "方向"
37
+ },
38
+ "sort-by.values": {
39
+ "order": "顺序",
40
+ "alphabet": "字母",
41
+ "duration": "持续时间",
42
+ "status": "状态"
43
+ },
44
+ "sort-by.directions": {
45
+ "order-desc": "最新 – 最早",
46
+ "order-asc": "最早 – 最新",
47
+ "order-asc-short": "最早",
48
+ "order-desc-short": "最新",
49
+ "alphabet-asc": "A – Z",
50
+ "alphabet-desc": "Z – A",
51
+ "alphabet-asc-short": "A – Z",
52
+ "alphabet-desc-short": "Z – A",
53
+ "duration-asc": "1 – 9",
54
+ "duration-desc": "9 – 1",
55
+ "duration-asc-short": "1 – 9",
56
+ "duration-desc-short": "9 – 1",
57
+ "status-asc": "按照过滤列表",
58
+ "status-desc": "反转",
59
+ "status-asc-short": "正常",
60
+ "status-desc-short": "反转"
61
+ },
62
+ "empty": {
63
+ "no-results": "没有结果",
64
+ "no-tests-found": "未找到结果",
65
+ "clear-filters": "清除过滤器",
66
+ "no-attachments-results": "没有附件信息",
67
+ "no-history-results": "没有历史信息",
68
+ "no-retries-results": "没有重试信息",
69
+ "no-test-steps-results": "没有可用的测试步骤信息",
70
+ "no-test-case-results": "没有测试用例结果"
71
+ },
72
+ "severity": {
73
+ "blocker": "阻断",
74
+ "critical": "严重",
75
+ "normal": "正常",
76
+ "minor": "次要",
77
+ "trivial": "轻微"
78
+ },
79
+ "execution": {
80
+ "name": "执行",
81
+ "body": "测试内容",
82
+ "setup": "设置",
83
+ "teardown": "拆解"
84
+ },
85
+ "ui": {
86
+ "labels": "标签",
87
+ "metadata": "元数据",
88
+ "parameters": "参数",
89
+ "description": "描述",
90
+ "links": "链接",
91
+ "overview": "概览",
92
+ "history": "历史",
93
+ "attachments": "附件",
94
+ "retries": "重试",
95
+ "error": "错误",
96
+ "goToStep": "跳转到步骤",
97
+ "showLess": "显示更少",
98
+ "showMore": "显示更多",
99
+ "copy": "复制",
100
+ "at": "在"
101
+ },
102
+ "controls": {
103
+ "newTabAttachment": "在新标签页中打开附件",
104
+ "nextTR": "下一个测试结果",
105
+ "prevTR": "上一个测试结果",
106
+ "downloadAttachment": "下载附件",
107
+ "backto": "返回",
108
+ "clipboard": "复制到剪贴板",
109
+ "clipboardError": "无法复制到剪贴板。可能是浏览器不支持此功能",
110
+ "clipboardSuccess": "复制成功",
111
+ "collapse": "折叠",
112
+ "expand": "展开",
113
+ "fullscreen": "全屏",
114
+ "language": "更改语言",
115
+ "openInNewTab": "在新标签页中打开",
116
+ "openPreview": "打开预览",
117
+ "noSelectedTR": "没有选择的测试结果",
118
+ "comparison": "对比",
119
+ "showDiff": "显示差异",
120
+ "viewMode": "查看模式",
121
+ "unified": "统一",
122
+ "side-by-side": "并排",
123
+ "compareBy": "比较方式",
124
+ "chars": "字符",
125
+ "words": "单词",
126
+ "lines": "行",
127
+ "actual": "实际",
128
+ "expected": "预期"
129
+ },
130
+ "errors": {
131
+ "missedAttachment": "未找到附件"
132
+ }
133
+ }
package/src/index.html ADDED
@@ -0,0 +1,40 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <title>Allure Awesome</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.allureReportOptions = {
25
+ "reportName": "Allure Report",
26
+ "logo": "",
27
+ "theme": "light",
28
+ "reportLanguage": "en",
29
+ "createdAt": 1739819870336,
30
+ "reportUuid": "51b36daf-614b-409c-b6a1-e8e401b2c144",
31
+ "groupBy": ["parentSuite", "suite", "subSuite"],
32
+ "layout": "split",
33
+ "allureVersion": "3.0.0-beta.8"
34
+ };
35
+ </script>
36
+ <script async>
37
+ window.allureReportDataReady = true;
38
+ </script>
39
+ </body>
40
+ </html>
package/src/index.tsx ADDED
@@ -0,0 +1,96 @@
1
+ import { ensureReportDataReady } from "@allurereport/web-commons";
2
+ import { Spinner, SvgIcon, allureIcons } from "@allurereport/web-components";
3
+ import "@allurereport/web-components/index.css";
4
+ import clsx from "clsx";
5
+ import { render } from "preact";
6
+ import { useEffect } from "preact/hooks";
7
+ import "@/assets/scss/index.scss";
8
+ import { BaseLayout } from "@/components/BaseLayout";
9
+ import { ModalComponent } from "@/components/Modal";
10
+ import { SplitLayout } from "@/components/SplitLayout";
11
+ import { fetchStats, getLocale, getTheme, waitForI18next } from "@/stores";
12
+ import { fetchPieChartData } from "@/stores/chart";
13
+ import { fetchEnvInfo } from "@/stores/envInfo";
14
+ import { getLayout, isLayoutLoading, isSplitMode } from "@/stores/layout";
15
+ import { handleHashChange, route } from "@/stores/router";
16
+ import { fetchTestResult, fetchTestResultNav } from "@/stores/testResults";
17
+ import { fetchTreeData } from "@/stores/tree";
18
+ import { isMac } from "@/utils/isMac";
19
+ import * as styles from "./styles.scss";
20
+
21
+ const Loader = () => {
22
+ return (
23
+ <div className={clsx(styles.loader, isLayoutLoading.value ? styles.loading : "")} data-testid="loader">
24
+ <SvgIcon id={allureIcons.reportLogo} size={"m"} />
25
+ <Spinner />
26
+ </div>
27
+ );
28
+ };
29
+ const App = () => {
30
+ const { id: testResultId } = route.value;
31
+
32
+ useEffect(() => {
33
+ if (globalThis) {
34
+ getLocale();
35
+ getLayout();
36
+ getTheme();
37
+ }
38
+ ensureReportDataReady();
39
+ fetchStats();
40
+ fetchEnvInfo();
41
+ fetchPieChartData();
42
+ fetchTreeData();
43
+ }, []);
44
+
45
+ useEffect(() => {
46
+ if (testResultId) {
47
+ fetchTestResult(testResultId);
48
+ fetchTestResultNav();
49
+ }
50
+ }, [testResultId]);
51
+
52
+ useEffect(() => {
53
+ handleHashChange();
54
+ globalThis.addEventListener("hashchange", () => handleHashChange());
55
+
56
+ return () => {
57
+ globalThis.removeEventListener("hashchange", () => handleHashChange());
58
+ };
59
+ }, []);
60
+
61
+ return (
62
+ <div className={styles.main}>
63
+ <Loader />
64
+ {isSplitMode.value ? <SplitLayout /> : <BaseLayout />}
65
+ <ModalComponent />
66
+ </div>
67
+ );
68
+ };
69
+
70
+ export const openInNewTab = (path: string) => {
71
+ window.open(`#${path}`, "_blank");
72
+ };
73
+
74
+ const rootElement = document.getElementById("app");
75
+
76
+ document.addEventListener("DOMContentLoaded", () => {
77
+ if (isMac) {
78
+ document.documentElement.setAttribute("data-os", "mac");
79
+ }
80
+ });
81
+
82
+ (async () => {
83
+ await waitForI18next;
84
+ if (globalThis) {
85
+ await getLocale();
86
+ getLayout();
87
+ getTheme();
88
+ }
89
+ await ensureReportDataReady();
90
+ await fetchStats();
91
+ await fetchEnvInfo();
92
+ await fetchPieChartData();
93
+ await fetchTreeData();
94
+
95
+ render(<App />, rootElement);
96
+ })();
@@ -0,0 +1,32 @@
1
+ import { fetchReportJsonData } from "@allurereport/web-commons";
2
+ import { signal } from "@preact/signals";
3
+ import { StoreSignalState } from "@/stores/types";
4
+
5
+ export const pieChartStore = signal<StoreSignalState<any>>({
6
+ loading: true,
7
+ error: undefined,
8
+ data: undefined,
9
+ });
10
+
11
+ export const fetchPieChartData = async () => {
12
+ pieChartStore.value = {
13
+ ...pieChartStore.value,
14
+ loading: true,
15
+ error: undefined,
16
+ };
17
+
18
+ try {
19
+ const res = await fetchReportJsonData("widgets/allure_pie_chart.json");
20
+
21
+ pieChartStore.value = {
22
+ data: res,
23
+ error: undefined,
24
+ loading: false,
25
+ };
26
+ } catch (err) {
27
+ pieChartStore.value = {
28
+ error: err.message,
29
+ loading: false,
30
+ };
31
+ }
32
+ };
@@ -0,0 +1,34 @@
1
+ import type { EnvironmentItem } from "@allurereport/core-api";
2
+ import { fetchReportJsonData } from "@allurereport/web-commons";
3
+ import { signal } from "@preact/signals";
4
+ import { StoreSignalState } from "@/stores/types";
5
+
6
+ export const envInfoStore = signal<StoreSignalState<EnvironmentItem[]>>({
7
+ loading: false,
8
+ error: undefined,
9
+ data: undefined,
10
+ });
11
+
12
+ export const fetchEnvInfo = async () => {
13
+ envInfoStore.value = {
14
+ ...envInfoStore.value,
15
+ loading: true,
16
+ error: undefined,
17
+ };
18
+
19
+ try {
20
+ const res = await fetchReportJsonData<EnvironmentItem[]>("widgets/allure_environment.json");
21
+
22
+ envInfoStore.value = {
23
+ data: res,
24
+ error: undefined,
25
+ loading: false,
26
+ };
27
+ } catch (e) {
28
+ envInfoStore.value = {
29
+ ...envInfoStore.value,
30
+ error: e.message,
31
+ loading: false,
32
+ };
33
+ }
34
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./theme";
2
+ export type * from "./types";
3
+ export * from "./stats";
4
+ export * from "./locale";
@@ -0,0 +1,36 @@
1
+ import { getReportOptions } from "@allurereport/web-commons";
2
+ import { computed, signal } from "@preact/signals";
3
+ import type { AwesomeReportOptions, Layout } from "types";
4
+
5
+ export const layoutStore = signal<Layout>("base");
6
+ export const isLayoutLoading = signal(false);
7
+
8
+ export const setLayout = (newLayout: Layout): void => {
9
+ layoutStore.value = newLayout;
10
+ document.documentElement.setAttribute("data-layout", newLayout as string);
11
+ window.localStorage.setItem("layout", newLayout as string);
12
+ };
13
+
14
+ export const toggleLayout = () => {
15
+ isLayoutLoading.value = true;
16
+
17
+ setTimeout(() => {
18
+ setLayout(layoutStore.value === "base" ? "split" : "base");
19
+
20
+ setTimeout(() => {
21
+ isLayoutLoading.value = false;
22
+ }, 300);
23
+ }, 200);
24
+ };
25
+
26
+ export const isSplitMode = computed(() => layoutStore.value === "split");
27
+
28
+ export const getLayout = () => {
29
+ const { layout } = getReportOptions<AwesomeReportOptions>() ?? {};
30
+ const layoutFromLS = window.localStorage.getItem("layout") || (layout as Layout) || "base";
31
+
32
+ if (layoutFromLS) {
33
+ setLayout(layoutFromLS as Layout);
34
+ return;
35
+ }
36
+ };