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

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 (106) hide show
  1. package/dist/multi/173.app-1e7b32b35927de455ae2.js +1 -0
  2. package/dist/multi/174.app-1e7b32b35927de455ae2.js +1 -0
  3. package/dist/multi/252.app-1e7b32b35927de455ae2.js +1 -0
  4. package/dist/multi/282.app-1e7b32b35927de455ae2.js +1 -0
  5. package/dist/multi/29.app-1e7b32b35927de455ae2.js +1 -0
  6. package/dist/multi/416.app-1e7b32b35927de455ae2.js +1 -0
  7. package/dist/multi/527.app-1e7b32b35927de455ae2.js +1 -0
  8. package/dist/multi/600.app-1e7b32b35927de455ae2.js +1 -0
  9. package/dist/multi/605.app-1e7b32b35927de455ae2.js +1 -0
  10. package/dist/multi/638.app-1e7b32b35927de455ae2.js +1 -0
  11. package/dist/multi/672.app-1e7b32b35927de455ae2.js +1 -0
  12. package/dist/multi/686.app-1e7b32b35927de455ae2.js +1 -0
  13. package/dist/multi/725.app-1e7b32b35927de455ae2.js +1 -0
  14. package/dist/multi/741.app-1e7b32b35927de455ae2.js +1 -0
  15. package/dist/multi/755.app-1e7b32b35927de455ae2.js +1 -0
  16. package/dist/multi/894.app-1e7b32b35927de455ae2.js +1 -0
  17. package/dist/multi/943.app-1e7b32b35927de455ae2.js +1 -0
  18. package/dist/multi/980.app-1e7b32b35927de455ae2.js +1 -0
  19. package/dist/multi/app-1e7b32b35927de455ae2.js +2 -0
  20. package/dist/multi/manifest.json +24 -24
  21. package/dist/multi/styles-99f5e45d3e35c8c13cd6.css +43 -0
  22. package/dist/single/app-b4be944c6ebe4a83f366.js +2 -0
  23. package/dist/single/manifest.json +1 -1
  24. package/package.json +17 -16
  25. package/src/assets/scss/day.scss +2 -0
  26. package/src/assets/scss/night.scss +2 -0
  27. package/src/assets/scss/theme.scss +4 -0
  28. package/src/components/BaseLayout/styles.scss +1 -1
  29. package/src/components/Charts/index.tsx +2 -2
  30. package/src/components/Header/styles.scss +1 -2
  31. package/src/components/MetadataButton/index.tsx +1 -1
  32. package/src/components/ReportBody/Filters.tsx +44 -63
  33. package/src/components/ReportMetadata/MetadataSummary.tsx +1 -1
  34. package/src/components/ReportMetadata/MetadataWithIcon.tsx +9 -11
  35. package/src/components/TestResult/TrDescription/index.tsx +1 -1
  36. package/src/components/TestResult/TrError/TrDiff.tsx +0 -1
  37. package/src/components/TestResult/TrHistory/TrHistoryItem.tsx +63 -34
  38. package/src/components/TestResult/TrHistory/styles.scss +2 -1
  39. package/src/components/TestResult/TrInfo/TrInfoStatuses.tsx +4 -2
  40. package/src/components/TestResult/TrOverview.tsx +0 -1
  41. package/src/components/TestResult/TrPrevStatuses/index.tsx +20 -5
  42. package/src/components/TestResult/TrPwTraces/index.tsx +6 -3
  43. package/src/components/TestResult/TrSteps/TrAttachment.tsx +14 -2
  44. package/src/components/TestResult/TrSteps/TrStep.tsx +4 -3
  45. package/src/components/TestResult/TrSteps/TrStepInfo.tsx +61 -1
  46. package/src/components/TestResult/TrSteps/styles.scss +31 -0
  47. package/src/components/Tree/index.tsx +17 -3
  48. package/src/locales/az.json +39 -16
  49. package/src/locales/de.json +39 -16
  50. package/src/locales/en.json +25 -2
  51. package/src/locales/es.json +36 -12
  52. package/src/locales/fr.json +36 -12
  53. package/src/locales/he.json +26 -2
  54. package/src/locales/hy.json +26 -2
  55. package/src/locales/it.json +29 -5
  56. package/src/locales/ja.json +29 -5
  57. package/src/locales/ka.json +36 -12
  58. package/src/locales/kr.json +26 -2
  59. package/src/locales/nl.json +36 -12
  60. package/src/locales/pl.json +46 -20
  61. package/src/locales/pt.json +37 -12
  62. package/src/locales/ru.json +47 -21
  63. package/src/locales/sv.json +36 -12
  64. package/src/locales/tr.json +36 -12
  65. package/src/locales/zh.json +36 -12
  66. package/src/stores/chart.ts +4 -2
  67. package/src/stores/env.ts +1 -1
  68. package/src/stores/envInfo.ts +2 -2
  69. package/src/stores/locale.ts +3 -0
  70. package/src/stores/stats.ts +2 -2
  71. package/src/stores/testResults.ts +6 -2
  72. package/src/stores/tree.ts +8 -2
  73. package/src/stores/variables.ts +3 -1
  74. package/src/utils/charts.ts +16 -18
  75. package/src/utils/tree.ts +25 -0
  76. package/src/utils/treeFilters.ts +14 -3
  77. package/tsconfig.json +1 -1
  78. package/types.d.ts +4 -1
  79. package/webpack.config.js +18 -4
  80. package/dist/multi/173.app-1829fb8f.js +0 -1
  81. package/dist/multi/174.app-1829fb8f.js +0 -1
  82. package/dist/multi/252.app-1829fb8f.js +0 -1
  83. package/dist/multi/282.app-1829fb8f.js +0 -1
  84. package/dist/multi/29.app-1829fb8f.js +0 -1
  85. package/dist/multi/416.app-1829fb8f.js +0 -1
  86. package/dist/multi/527.app-1829fb8f.js +0 -1
  87. package/dist/multi/600.app-1829fb8f.js +0 -1
  88. package/dist/multi/605.app-1829fb8f.js +0 -1
  89. package/dist/multi/638.app-1829fb8f.js +0 -1
  90. package/dist/multi/672.app-1829fb8f.js +0 -1
  91. package/dist/multi/686.app-1829fb8f.js +0 -1
  92. package/dist/multi/725.app-1829fb8f.js +0 -1
  93. package/dist/multi/741.app-1829fb8f.js +0 -1
  94. package/dist/multi/755.app-1829fb8f.js +0 -1
  95. package/dist/multi/894.app-1829fb8f.js +0 -1
  96. package/dist/multi/943.app-1829fb8f.js +0 -1
  97. package/dist/multi/980.app-1829fb8f.js +0 -1
  98. package/dist/multi/app-1829fb8f.js +0 -2
  99. package/dist/multi/styles-1829fb8f.css +0 -43
  100. package/dist/single/app-3a6e31c7.js +0 -2
  101. /package/dist/multi/{JetBrainsMono_vf-b9a9c326..woff → JetBrainsMono_vf.woff} +0 -0
  102. /package/dist/multi/{JetBrainsMono_vf-9e9649b6..woff2 → JetBrainsMono_vf.woff2} +0 -0
  103. /package/dist/multi/{app-1829fb8f.js.LICENSE.txt → app-1e7b32b35927de455ae2.js.LICENSE.txt} +0 -0
  104. /package/dist/multi/{pt-root-ui_vf-22fe60ca..woff → pt-root-ui_vf.woff} +0 -0
  105. /package/dist/multi/{pt-root-ui_vf-9d251e8b..woff2 → pt-root-ui_vf.woff2} +0 -0
  106. /package/dist/single/{app-3a6e31c7.js.LICENSE.txt → app-b4be944c6ebe4a83f366.js.LICENSE.txt} +0 -0
@@ -5,7 +5,10 @@
5
5
  "broken": "сломанный",
6
6
  "skipped": "пропущенный",
7
7
  "unknown": "неизвестный",
8
- "total": "все"
8
+ "total": "все",
9
+ "flakyTests": "нестабильный",
10
+ "newTests": "новый",
11
+ "retryTests": "повторный"
9
12
  },
10
13
  "testSummary": {
11
14
  "total": "Всего",
@@ -22,10 +25,21 @@
22
25
  },
23
26
  "filters": {
24
27
  "more-filters": "Фильтры",
25
- "enable-filter": "Включить фильтр по \"{filter}\"",
28
+ "enable-filter": "Включить фильтр по \"{{filter}}\"",
26
29
  "flaky": "Нестабильные",
27
30
  "retry": "Повторенные",
28
- "new": "Новые"
31
+ "new": "Новые",
32
+ "fixed": "Исправленные",
33
+ "regressed": "Регрессированные",
34
+ "malfunctioned": "Сломанные"
35
+ },
36
+ "filters.description": {
37
+ "flaky": "Показать нестабильные тесты",
38
+ "retry": "Показать результаты тестов, которые были перезапущены",
39
+ "new": "Показать результаты тестов, которые впервые появляются в этом отчёте",
40
+ "fixed": "Показать тесты, которые теперь успешны, но ранее были \"неуспешными\" или \"сломанными\" в предыдущем отчёте",
41
+ "regressed": "Показать результаты тестов, которые изменили статус на \"неуспешный\" с \"успешный\" или \"сломанный\"",
42
+ "malfunctioned": "Показать результаты тестов, которые изменили статус на \"сломанный\" с \"успешный\" или \"неуспешный\""
29
43
  },
30
44
  "sort-by": {
31
45
  "sort-by-text": "Сортировать по:",
@@ -39,26 +53,27 @@
39
53
  "status": "Статус"
40
54
  },
41
55
  "sort-by.directions": {
42
- "order-asc": "Поздние – Ранние",
43
- "order-desc": "Ранние – Поздние",
56
+ "order-desc": "Ранние – Поздние",
57
+ "order-asc": "Поздние – Ранние",
44
58
  "order-asc-short": "Поздние",
45
59
  "order-desc-short": "Ранние",
46
- "alphabet-asc": "Я – А",
47
- "alphabet-desc": "А – Я",
48
- "alphabet-asc-short": "Я – А",
49
- "alphabet-desc-short": "ЯА",
50
- "duration-asc": "9 – 1",
51
- "duration-desc": "1 – 9",
52
- "duration-asc-short": "9 – 1",
53
- "duration-desc-short": "1 – 9",
54
- "status-asc": "Инвертировано",
55
- "status-desc": "Как в списке фильтра",
56
- "status-asc-short": "Инвертировано",
57
- "status-desc-short": "По обычному"
60
+ "alphabet-asc": "А – Я",
61
+ "alphabet-desc": "Я – А",
62
+ "alphabet-asc-short": "А – Я",
63
+ "alphabet-desc-short": "Я А",
64
+ "duration-asc": "1 – 9",
65
+ "duration-desc": "9 – 1",
66
+ "duration-asc-short": "1 – 9",
67
+ "duration-desc-short": "9 – 1",
68
+ "status-asc": "Как в списке фильтра",
69
+ "status-desc": "Инвертировано",
70
+ "status-asc-short": "По обычному",
71
+ "status-desc-short": "Инвертировано"
58
72
  },
59
73
  "empty": {
60
74
  "no-results": "Нет результатов",
61
75
  "no-tests-found": "Результаты не найдены",
76
+ "no-message-provided": "Сообщение не предоставлено",
62
77
  "clear-filters": "Очистить фильтры",
63
78
  "no-attachments-results": "Информация о вложениях отсутствует",
64
79
  "no-history-results": "Информация об истории отсутствует",
@@ -68,7 +83,6 @@
68
83
  "no-environments-results": "Информация об окружениях отсутствует"
69
84
  },
70
85
  "severity": {
71
- "name": "Важность",
72
86
  "blocker": "блокер",
73
87
  "critical": "критическая",
74
88
  "normal": "обычная",
@@ -76,8 +90,8 @@
76
90
  "trivial": "минимальная"
77
91
  },
78
92
  "execution": {
79
- "body": "Тело теста",
80
93
  "name": "Выполнение",
94
+ "body": "Тело теста",
81
95
  "setup": "Подготовка",
82
96
  "teardown": "Завершение"
83
97
  },
@@ -108,9 +122,9 @@
108
122
  },
109
123
  "controls": {
110
124
  "newTabAttachment": "Открыть в новой вкладке",
111
- "downloadAttachment": "Загрузить вложение",
112
125
  "nextTR": "Следующий тест",
113
126
  "prevTR": "Предыдущий тест",
127
+ "downloadAttachment": "Загрузить вложение",
114
128
  "backto": "Вернуться на",
115
129
  "clipboard": "Скопировать в буфер обмена",
116
130
  "clipboardError": "Ошибка. Скорее всего ваш браузер не поддерживает данную функциональность",
@@ -138,7 +152,7 @@
138
152
  "missedAttachment": "Вложение не найдено"
139
153
  },
140
154
  "sections": {
141
- "report": "Report",
155
+ "report": "Отчет",
142
156
  "charts": "Графики"
143
157
  },
144
158
  "charts": {
@@ -152,5 +166,17 @@
152
166
  "pie": {
153
167
  "title": "Успешность тестирования"
154
168
  }
169
+ },
170
+ "transitions": {
171
+ "new": "Новый",
172
+ "fixed": "Исправленный",
173
+ "regressed": "Регрессированный",
174
+ "malfunctioned": "Сломанный"
175
+ },
176
+ "transitions.description": {
177
+ "new": "Первое появление этого результата теста в отчёте",
178
+ "fixed": "Ранее \"неуспешный\" или \"сломанный\" тест, который теперь \"успешный\"",
179
+ "regressed": "Ранее \"успешный\" или \"сломанный\" тест, который теперь \"неуспешный\"",
180
+ "malfunctioned": "Ранее \"успешный\" или \"неуспешный\" тест, который теперь \"сломанный\""
155
181
  }
156
182
  }
@@ -25,10 +25,21 @@
25
25
  },
26
26
  "filters": {
27
27
  "more-filters": "Fler filter",
28
- "enable-filter": "Aktivera filtret \"{filter}\"",
28
+ "enable-filter": "Aktivera filtret \"{{filter}}\"",
29
29
  "flaky": "Ostadig",
30
30
  "retry": "Försök igen",
31
- "new": "Ny"
31
+ "new": "Ny",
32
+ "fixed": "Åtgärdad",
33
+ "regressed": "Regresserad",
34
+ "malfunctioned": "Felaktig"
35
+ },
36
+ "filters.description": {
37
+ "flaky": "Visa ostadiga tester",
38
+ "retry": "Visa testresultat som kördes om",
39
+ "new": "Visa testresultat som visas för första gången i denna rapport",
40
+ "fixed": "Visa tester som nu är godkända men som tidigare var \"misslyckade\" eller \"trasiga\"",
41
+ "regressed": "Visa testresultat som ändrades från \"godkänd\" eller \"trasig\" till \"misslyckad\" status",
42
+ "malfunctioned": "Visa testresultat som ändrades från \"godkänd\" eller \"misslyckad\" till \"trasig\" status"
32
43
  },
33
44
  "sort-by": {
34
45
  "sort-by-text": "Sortera efter:",
@@ -42,18 +53,18 @@
42
53
  "status": "Status"
43
54
  },
44
55
  "sort-by.directions": {
45
- "order-desc": "SenastTidigare",
46
- "order-asc": "TidigareSenast",
56
+ "order-desc": "Senast Tidigare",
57
+ "order-asc": "Tidigare Senast",
47
58
  "order-asc-short": "Tidigare",
48
59
  "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": "19",
54
- "duration-desc": "91",
55
- "duration-asc-short": "19",
56
- "duration-desc-short": "91",
60
+ "alphabet-asc": "A Ö",
61
+ "alphabet-desc": "Ö A",
62
+ "alphabet-asc-short": "A Ö",
63
+ "alphabet-desc-short": "Ö A",
64
+ "duration-asc": "1 9",
65
+ "duration-desc": "9 1",
66
+ "duration-asc-short": "1 9",
67
+ "duration-desc-short": "9 1",
57
68
  "status-asc": "Som i filterlistan",
58
69
  "status-desc": "Omvänd",
59
70
  "status-asc-short": "Vanlig",
@@ -62,6 +73,7 @@
62
73
  "empty": {
63
74
  "no-results": "Inga resultat",
64
75
  "no-tests-found": "Inga resultat hittades",
76
+ "no-message-provided": "Inget meddelande angavs",
65
77
  "clear-filters": "Rensa filter",
66
78
  "no-attachments-results": "Ingen bilaga information tillgänglig",
67
79
  "no-history-results": "Ingen historik information tillgänglig",
@@ -154,5 +166,17 @@
154
166
  "pie": {
155
167
  "title": "Testframgångsfrekvens"
156
168
  }
169
+ },
170
+ "transitions": {
171
+ "new": "Ny",
172
+ "fixed": "Åtgärdad",
173
+ "regressed": "Regresserad",
174
+ "malfunctioned": "Felaktig"
175
+ },
176
+ "transitions.description": {
177
+ "new": "Första förekomsten av detta testresultat i rapporten",
178
+ "fixed": "Tidigare \"misslyckad\" eller \"trasig\" test som nu är \"godkänd\"",
179
+ "regressed": "Tidigare \"godkänd\" eller \"trasig\" test som nu är \"misslyckad\"",
180
+ "malfunctioned": "Tidigare \"godkänd\" eller \"misslyckad\" test som nu är \"trasig\""
157
181
  }
158
182
  }
@@ -25,10 +25,21 @@
25
25
  },
26
26
  "filters": {
27
27
  "more-filters": "Daha fazla filtre",
28
- "enable-filter": "\"{filter}\" filtresini etkinleştir",
28
+ "enable-filter": "\"{{filter}}\" filtresini etkinleştir",
29
29
  "flaky": "İstikrarsız",
30
30
  "retry": "Tekrar",
31
- "new": "Yeni"
31
+ "new": "Yeni",
32
+ "fixed": "Düzeltildi",
33
+ "regressed": "Geri Döndü",
34
+ "malfunctioned": "Bozuk"
35
+ },
36
+ "filters.description": {
37
+ "flaky": "İstikrarsız testleri göster",
38
+ "retry": "Yeniden çalıştırılan test sonuçlarını göster",
39
+ "new": "Bu raporda ilk kez görünen test sonuçlarını göster",
40
+ "fixed": "Şimdi başarılı olan ancak daha önce \"başarısız\" veya \"bozuk\" olan testleri göster",
41
+ "regressed": "\"başarılı\" veya \"bozuk\" durumundan \"başarısız\" durumuna değişen test sonuçlarını göster",
42
+ "malfunctioned": "\"başarılı\" veya \"başarısız\" durumundan \"bozuk\" durumuna değişen test sonuçlarını göster"
32
43
  },
33
44
  "sort-by": {
34
45
  "sort-by-text": "Sıralama ölçütü:",
@@ -42,18 +53,18 @@
42
53
  "status": "Durum"
43
54
  },
44
55
  "sort-by.directions": {
45
- "order-desc": "Sonİlk",
46
- "order-asc": "İlkSon",
56
+ "order-desc": "Son İlk",
57
+ "order-asc": "İlk Son",
47
58
  "order-asc-short": "İlk",
48
59
  "order-desc-short": "Son",
49
- "alphabet-asc": "AZ",
50
- "alphabet-desc": "ZA",
51
- "alphabet-asc-short": "AZ",
52
- "alphabet-desc-short": "ZA",
53
- "duration-asc": "19",
54
- "duration-desc": "91",
55
- "duration-asc-short": "19",
56
- "duration-desc-short": "91",
60
+ "alphabet-asc": "A Z",
61
+ "alphabet-desc": "Z A",
62
+ "alphabet-asc-short": "A Z",
63
+ "alphabet-desc-short": "Z A",
64
+ "duration-asc": "1 9",
65
+ "duration-desc": "9 1",
66
+ "duration-asc-short": "1 9",
67
+ "duration-desc-short": "9 1",
57
68
  "status-asc": "Filtre listesi gibi",
58
69
  "status-desc": "Ters",
59
70
  "status-asc-short": "Normal",
@@ -62,6 +73,7 @@
62
73
  "empty": {
63
74
  "no-results": "Sonuç yok",
64
75
  "no-tests-found": "Sonuç bulunamadı",
76
+ "no-message-provided": "Mesaj belirtilmedi",
65
77
  "clear-filters": "Filtreleri temizle",
66
78
  "no-attachments-results": "Ek bilgisi mevcut değil",
67
79
  "no-history-results": "Geçmiş bilgisi mevcut değil",
@@ -154,5 +166,17 @@
154
166
  "pie": {
155
167
  "title": "Test Başarı Oranı"
156
168
  }
169
+ },
170
+ "transitions": {
171
+ "new": "Yeni",
172
+ "fixed": "Düzeltildi",
173
+ "regressed": "Geri Döndü",
174
+ "malfunctioned": "Bozuk"
175
+ },
176
+ "transitions.description": {
177
+ "new": "Bu test sonucunun rapordaki ilk görünümü",
178
+ "fixed": "Daha önce \"başarısız\" veya \"bozuk\" olan test artık \"başarılı\"",
179
+ "regressed": "Daha önce \"başarılı\" veya \"bozuk\" olan test artık \"başarısız\"",
180
+ "malfunctioned": "Daha önce \"başarılı\" veya \"başarısız\" olan test artık \"bozuk\""
157
181
  }
158
182
  }
@@ -25,10 +25,21 @@
25
25
  },
26
26
  "filters": {
27
27
  "more-filters": "更多过滤器",
28
- "enable-filter": "启用 \"{filter}\" 过滤器",
28
+ "enable-filter": "启用 \"{{filter}}\" 过滤器",
29
29
  "flaky": "不稳定",
30
30
  "retry": "重试",
31
- "new": "新的"
31
+ "new": "新的",
32
+ "fixed": "已修复",
33
+ "regressed": "已回归",
34
+ "malfunctioned": "已损坏"
35
+ },
36
+ "filters.description": {
37
+ "flaky": "显示不稳定的测试",
38
+ "retry": "显示重新运行的测试结果",
39
+ "new": "显示在此报告中首次出现的测试结果",
40
+ "fixed": "显示现在通过但之前\"失败\"或\"损坏\"的测试",
41
+ "regressed": "显示从\"通过\"或\"损坏\"状态变为\"失败\"状态的测试结果",
42
+ "malfunctioned": "显示从\"通过\"或\"失败\"状态变为\"损坏\"状态的测试结果"
32
43
  },
33
44
  "sort-by": {
34
45
  "sort-by-text": "排序依据:",
@@ -42,18 +53,18 @@
42
53
  "status": "状态"
43
54
  },
44
55
  "sort-by.directions": {
45
- "order-desc": "最新最早",
46
- "order-asc": "最早最新",
56
+ "order-desc": "最新 最早",
57
+ "order-asc": "最早 最新",
47
58
  "order-asc-short": "最早",
48
59
  "order-desc-short": "最新",
49
- "alphabet-asc": "AZ",
50
- "alphabet-desc": "ZA",
51
- "alphabet-asc-short": "AZ",
52
- "alphabet-desc-short": "ZA",
53
- "duration-asc": "19",
54
- "duration-desc": "91",
55
- "duration-asc-short": "19",
56
- "duration-desc-short": "91",
60
+ "alphabet-asc": "A Z",
61
+ "alphabet-desc": "Z A",
62
+ "alphabet-asc-short": "A Z",
63
+ "alphabet-desc-short": "Z A",
64
+ "duration-asc": "1 9",
65
+ "duration-desc": "9 1",
66
+ "duration-asc-short": "1 9",
67
+ "duration-desc-short": "9 1",
57
68
  "status-asc": "按照过滤列表",
58
69
  "status-desc": "反转",
59
70
  "status-asc-short": "正常",
@@ -62,6 +73,7 @@
62
73
  "empty": {
63
74
  "no-results": "没有结果",
64
75
  "no-tests-found": "未找到结果",
76
+ "no-message-provided": "未提供消息",
65
77
  "clear-filters": "清除过滤器",
66
78
  "no-attachments-results": "没有附件信息",
67
79
  "no-history-results": "没有历史信息",
@@ -154,5 +166,17 @@
154
166
  "pie": {
155
167
  "title": "测试成功率"
156
168
  }
169
+ },
170
+ "transitions": {
171
+ "new": "新的",
172
+ "fixed": "已修复",
173
+ "regressed": "已回归",
174
+ "malfunctioned": "已损坏"
175
+ },
176
+ "transitions.description": {
177
+ "new": "此测试结果在报告中的首次出现",
178
+ "fixed": "之前\"失败\"或\"损坏\"的测试现在\"通过\"了",
179
+ "regressed": "之前\"通过\"或\"损坏\"的测试现在\"失败\"了",
180
+ "malfunctioned": "之前\"通过\"或\"失败\"的测试现在\"损坏\"了"
157
181
  }
158
182
  }
@@ -18,7 +18,9 @@ export const fetchPieChartData = async (env: string) => {
18
18
  };
19
19
 
20
20
  try {
21
- const res = await fetchReportJsonData(env ? `widgets/${env}/pie_chart.json` : "widgets/pie_chart.json");
21
+ const res = await fetchReportJsonData(env ? `widgets/${env}/pie_chart.json` : "widgets/pie_chart.json", {
22
+ bustCache: true,
23
+ });
22
24
 
23
25
  pieChartStore.value = {
24
26
  data: res,
@@ -47,7 +49,7 @@ export const fetchChartsData = async () => {
47
49
  };
48
50
 
49
51
  try {
50
- const res = await fetchReportJsonData<ChartsResponse>("widgets/charts.json");
52
+ const res = await fetchReportJsonData<ChartsResponse>("widgets/charts.json", { bustCache: true });
51
53
 
52
54
  chartsStore.value = {
53
55
  data: createCharts(res),
package/src/stores/env.ts CHANGED
@@ -32,7 +32,7 @@ export const fetchEnvironments = async () => {
32
32
  };
33
33
 
34
34
  try {
35
- const res = await fetchReportJsonData<string[]>("widgets/environments.json");
35
+ const res = await fetchReportJsonData<string[]>("widgets/environments.json", { bustCache: true });
36
36
 
37
37
  environmentsStore.value = {
38
38
  data: res,
@@ -1,7 +1,7 @@
1
1
  import type { EnvironmentItem } from "@allurereport/core-api";
2
2
  import { fetchReportJsonData } from "@allurereport/web-commons";
3
3
  import { signal } from "@preact/signals";
4
- import { StoreSignalState } from "@/stores/types";
4
+ import type { StoreSignalState } from "@/stores/types";
5
5
 
6
6
  export const envInfoStore = signal<StoreSignalState<EnvironmentItem[]>>({
7
7
  loading: false,
@@ -17,7 +17,7 @@ export const fetchEnvInfo = async () => {
17
17
  };
18
18
 
19
19
  try {
20
- const res = await fetchReportJsonData<EnvironmentItem[]>("widgets/allure_environment.json");
20
+ const res = await fetchReportJsonData<EnvironmentItem[]>("widgets/allure_environment.json", { bustCache: true });
21
21
 
22
22
  envInfoStore.value = {
23
23
  data: res,
@@ -7,6 +7,7 @@ const namespaces = [
7
7
  "empty",
8
8
  "execution",
9
9
  "filters",
10
+ "filters.description",
10
11
  "search",
11
12
  "severity",
12
13
  "sort-by",
@@ -24,6 +25,8 @@ const namespaces = [
24
25
  "environments",
25
26
  "charts",
26
27
  "sections",
28
+ "transitions",
29
+ "transitions.description",
27
30
  ];
28
31
 
29
32
  export const currentLocale = signal<LangLocale>("en" as LangLocale);
@@ -26,7 +26,7 @@ export const fetchReportStats = async () => {
26
26
  };
27
27
 
28
28
  try {
29
- const res = await fetchReportJsonData<Statistic>("widgets/statistic.json");
29
+ const res = await fetchReportJsonData<Statistic>("widgets/statistic.json", { bustCache: true });
30
30
 
31
31
  reportStatsStore.value = {
32
32
  data: res,
@@ -58,7 +58,7 @@ export const fetchEnvStats = async (envs: string[]) => {
58
58
 
59
59
  try {
60
60
  const data = await Promise.all(
61
- envsToFetch.map((env) => fetchReportJsonData<AwesomeTree>(`widgets/${env}/statistic.json`)),
61
+ envsToFetch.map((env) => fetchReportJsonData<AwesomeTree>(`widgets/${env}/statistic.json`, { bustCache: true })),
62
62
  );
63
63
 
64
64
  statsByEnvStore.value = {
@@ -21,7 +21,9 @@ export const testResultNavStore = signal<StoreSignalState<TrNavStoreState>>({
21
21
 
22
22
  export const fetchTestResultNav = async (env?: string) => {
23
23
  try {
24
- const data = await fetchReportJsonData<string[]>(env ? `widgets/${env}/nav.json` : "widgets/nav.json");
24
+ const data = await fetchReportJsonData<string[]>(env ? `widgets/${env}/nav.json` : "widgets/nav.json", {
25
+ bustCache: true,
26
+ });
25
27
 
26
28
  testResultNavStore.value = {
27
29
  data,
@@ -49,7 +51,9 @@ export const fetchTestResult = async (testResultId: string) => {
49
51
  };
50
52
 
51
53
  try {
52
- const data = await fetchReportJsonData<AwesomeTestResult>(`data/test-results/${testResultId}.json`);
54
+ const data = await fetchReportJsonData<AwesomeTestResult>(`data/test-results/${testResultId}.json`, {
55
+ bustCache: true,
56
+ });
53
57
 
54
58
  testResultStore.value = {
55
59
  data: { ...testResultStore.value.data, [testResultId]: data },
@@ -8,7 +8,7 @@ import { createRecursiveTree, isRecursiveTreeEmpty } from "@/utils/treeFilters";
8
8
 
9
9
  export type TreeSortBy = "order" | "duration" | "status" | "alphabet";
10
10
  export type TreeDirection = "asc" | "desc";
11
- export type TreeFilters = "flaky" | "retry" | "new";
11
+ export type TreeFilters = "flaky" | "retry" | "new" | "fixed" | "regressed" | "malfunctioned";
12
12
  export type TreeFiltersState = {
13
13
  query: string;
14
14
  status: AwesomeStatus;
@@ -59,6 +59,9 @@ export const treeFiltersStore = signal<TreeFiltersState>(
59
59
  flaky: false,
60
60
  retry: false,
61
61
  new: false,
62
+ fixed: false,
63
+ regressed: false,
64
+ malfunctioned: false,
62
65
  },
63
66
  sortBy: "order",
64
67
  direction: "asc",
@@ -104,6 +107,9 @@ export const clearTreeFilters = () => {
104
107
  flaky: false,
105
108
  retry: false,
106
109
  new: false,
110
+ fixed: false,
111
+ regressed: false,
112
+ malfunctioned: false,
107
113
  },
108
114
  sortBy: "order",
109
115
  direction: "asc",
@@ -164,7 +170,7 @@ export const fetchEnvTreesData = async (envs: string[]) => {
164
170
 
165
171
  try {
166
172
  const data = await Promise.all(
167
- envsToFetch.map((env) => fetchReportJsonData<AwesomeTree>(`widgets/${env}/tree.json`)),
173
+ envsToFetch.map((env) => fetchReportJsonData<AwesomeTree>(`widgets/${env}/tree.json`, { bustCache: true })),
168
174
  );
169
175
 
170
176
  const previous = treeStore.value.data;
@@ -18,7 +18,9 @@ export const fetchVariables = async (env: string = "default") => {
18
18
  };
19
19
 
20
20
  try {
21
- const res = await fetchReportJsonData<string[]>(env ? `widgets/${env}/variables.json` : "widgets/variables.json");
21
+ const res = await fetchReportJsonData<string[]>(env ? `widgets/${env}/variables.json` : "widgets/variables.json", {
22
+ bustCache: true,
23
+ });
22
24
 
23
25
  variables.value = {
24
26
  data: {
@@ -1,16 +1,5 @@
1
1
  import { type SeverityLevel, type TestStatus, severityLevels, statusesList } from "@allurereport/core-api";
2
-
3
- export enum ChartType {
4
- Trend = "trend",
5
- Pie = "pie",
6
- }
7
-
8
- export enum ChartDataType {
9
- Status = "status",
10
- Severity = "severity",
11
- }
12
-
13
- export type ChartId = string;
2
+ import { ChartDataType, type ChartId, type ChartMode, ChartType } from "@allurereport/web-commons";
14
3
 
15
4
  export interface Point {
16
5
  x: Date | string | number;
@@ -23,15 +12,18 @@ export interface Slice {
23
12
  metadata: { executionId: string };
24
13
  }
25
14
 
26
- interface ResponseTrendChartData {
15
+ export type SeriesType = TestStatus | SeverityLevel;
16
+
17
+ interface ResponseTrendChartData<GroupBy extends string = SeriesType> {
27
18
  type: ChartType.Trend;
28
19
  dataType: ChartDataType;
20
+ mode: ChartMode;
29
21
  title?: string;
30
22
  min: number;
31
23
  max: number;
32
24
  points: Record<string, Point>;
33
25
  slices: Record<string, Slice>;
34
- series: Record<TestStatus | SeverityLevel, string[]>;
26
+ series: Record<GroupBy, string[]>;
35
27
  }
36
28
 
37
29
  interface TrendChartItem {
@@ -43,6 +35,7 @@ interface TrendChartItem {
43
35
  export interface TrendChartData {
44
36
  type: ChartType.Trend;
45
37
  dataType: ChartDataType;
38
+ mode: ChartMode;
46
39
  min: number;
47
40
  max: number;
48
41
  items: TrendChartItem[];
@@ -103,10 +96,14 @@ export const createTrendChartData = <T extends TestStatus | SeverityLevel>(
103
96
 
104
97
  const items = getGroups().reduce((acc, group) => {
105
98
  const pointsByGroupBy =
106
- chart.series[group]?.map((pointId) => ({
107
- x: chart.points[pointId].x,
108
- y: chart.points[pointId].y,
109
- })) ?? [];
99
+ chart.series[group]?.map((pointId) => {
100
+ const point = chart.points[pointId];
101
+
102
+ return {
103
+ x: point.x,
104
+ y: point.y,
105
+ };
106
+ }) ?? [];
110
107
 
111
108
  if (pointsByGroupBy.length) {
112
109
  acc.push({
@@ -122,6 +119,7 @@ export const createTrendChartData = <T extends TestStatus | SeverityLevel>(
122
119
  return {
123
120
  type: chart.type,
124
121
  dataType: chart.dataType,
122
+ mode: chart.mode,
125
123
  title: chart.title,
126
124
  items,
127
125
  slices: Object.values(chart.slices),
@@ -0,0 +1,25 @@
1
+ import type { RecursiveTree } from "@allurereport/web-components/global";
2
+ import type { AwesomeTreeLeaf } from "types";
3
+
4
+ type Localizer = (data: string) => string;
5
+
6
+ type Localizers = {
7
+ value: Localizer;
8
+ tooltip: Localizer;
9
+ };
10
+
11
+ export const createLeafLocalizer =
12
+ (t: Localizers) =>
13
+ (leaf: AwesomeTreeLeaf): AwesomeTreeLeaf => ({
14
+ ...leaf,
15
+ transitionText: t.value(leaf.transition),
16
+ transitionTooltip: t.tooltip(leaf.transition),
17
+ });
18
+
19
+ export const createTreeLocalizer =
20
+ (t: Localizers) =>
21
+ (tree: RecursiveTree): RecursiveTree => ({
22
+ ...tree,
23
+ leaves: tree.leaves.length ? tree.leaves.map(createLeafLocalizer(t)) : tree.leaves,
24
+ trees: tree.trees.length ? tree.trees.map(createTreeLocalizer(t)) : tree.trees,
25
+ });
@@ -20,10 +20,21 @@ export const isIncluded = (leaf: TreeLeaf<AwesomeTreeLeaf>, filterOptions: TreeF
20
20
  !filterOptions?.status || filterOptions?.status === "total" || leaf.status === filterOptions.status;
21
21
  const flakyMatched = !filterOptions?.filter?.flaky || leaf.flaky;
22
22
  const retryMatched = !filterOptions?.filter?.retry || leaf.retry;
23
- // TODO: at this moment we don't have a new field implementation even in the generator
24
- // const newMatched = !filterOptions?.filter?.new || leaf.new;
23
+ const newMatched = !filterOptions?.filter?.new || leaf.transition === "new";
24
+ const fixedMatched = !filterOptions?.filter?.fixed || leaf.transition === "fixed";
25
+ const regressedMatched = !filterOptions?.filter?.regressed || leaf.transition === "regressed";
26
+ const malfuctionedMatched = !filterOptions?.filter?.malfunctioned || leaf.transition === "malfunctioned";
25
27
 
26
- return [queryMatched, statusMatched, flakyMatched, retryMatched].every(Boolean);
28
+ return [
29
+ queryMatched,
30
+ statusMatched,
31
+ flakyMatched,
32
+ retryMatched,
33
+ newMatched,
34
+ fixedMatched,
35
+ regressedMatched,
36
+ malfuctionedMatched,
37
+ ].every(Boolean);
27
38
  };
28
39
 
29
40
  const leafComparatorByTreeSortBy = (sortBy: TreeSortBy = "status"): Comparator<TreeLeaf<AwesomeTreeLeaf>> => {