@allurereport/web-awesome 3.0.1 → 3.2.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.
Files changed (155) hide show
  1. package/dist/multi/173.app-d0210ed2e64d38a2ee8e.js +1 -0
  2. package/dist/multi/174.app-d0210ed2e64d38a2ee8e.js +1 -0
  3. package/dist/multi/252.app-d0210ed2e64d38a2ee8e.js +1 -0
  4. package/dist/multi/282.app-d0210ed2e64d38a2ee8e.js +1 -0
  5. package/dist/multi/29.app-d0210ed2e64d38a2ee8e.js +1 -0
  6. package/dist/multi/416.app-d0210ed2e64d38a2ee8e.js +1 -0
  7. package/dist/multi/527.app-d0210ed2e64d38a2ee8e.js +1 -0
  8. package/dist/multi/600.app-d0210ed2e64d38a2ee8e.js +1 -0
  9. package/dist/multi/605.app-d0210ed2e64d38a2ee8e.js +1 -0
  10. package/dist/multi/638.app-d0210ed2e64d38a2ee8e.js +1 -0
  11. package/dist/multi/672.app-d0210ed2e64d38a2ee8e.js +1 -0
  12. package/dist/multi/686.app-d0210ed2e64d38a2ee8e.js +1 -0
  13. package/dist/multi/725.app-d0210ed2e64d38a2ee8e.js +1 -0
  14. package/dist/multi/741.app-d0210ed2e64d38a2ee8e.js +1 -0
  15. package/dist/multi/749.app-d0210ed2e64d38a2ee8e.js +1 -0
  16. package/dist/multi/755.app-d0210ed2e64d38a2ee8e.js +1 -0
  17. package/dist/multi/894.app-d0210ed2e64d38a2ee8e.js +1 -0
  18. package/dist/multi/943.app-d0210ed2e64d38a2ee8e.js +1 -0
  19. package/dist/multi/980.app-d0210ed2e64d38a2ee8e.js +1 -0
  20. package/dist/multi/app-d0210ed2e64d38a2ee8e.js +2 -0
  21. package/dist/multi/{app-bae2a0fe5738d77cd976.js.LICENSE.txt → app-d0210ed2e64d38a2ee8e.js.LICENSE.txt} +7 -0
  22. package/dist/multi/manifest.json +21 -21
  23. package/dist/multi/styles-13107bbe6906beabc50f.css +49 -0
  24. package/dist/single/app-01fed10ad5f9083fd39c.js +2 -0
  25. package/dist/single/{app-996d3b5869f8fc942b66.js.LICENSE.txt → app-01fed10ad5f9083fd39c.js.LICENSE.txt} +7 -0
  26. package/dist/single/manifest.json +1 -1
  27. package/package.json +9 -11
  28. package/src/assets/scss/vars.scss +3 -0
  29. package/src/components/BaseLayout/index.tsx +25 -21
  30. package/src/components/BaseLayout/styles.scss +1 -0
  31. package/src/components/Charts/index.tsx +10 -7
  32. package/src/components/Footer/FooterVersion.tsx +14 -8
  33. package/src/components/Header/index.tsx +9 -7
  34. package/src/components/HeaderControls/index.tsx +5 -2
  35. package/src/components/MainReport/index.tsx +52 -47
  36. package/src/components/MainReport/styles.scss +1 -0
  37. package/src/components/Metadata/index.tsx +98 -7
  38. package/src/components/Metadata/styles.scss +10 -0
  39. package/src/components/ReportBody/HeaderActions.tsx +4 -13
  40. package/src/components/ReportBody/SortBy.tsx +27 -13
  41. package/src/components/ReportBody/index.tsx +1 -1
  42. package/src/components/ReportBody/styles.scss +4 -1
  43. package/src/components/ReportFilters/BaseFilters.tsx +345 -0
  44. package/src/components/ReportFilters/RetryFlaky.tsx +29 -0
  45. package/src/components/ReportFilters/TagsFilter.tsx +41 -0
  46. package/src/components/ReportFilters/TransitionFilter.tsx +49 -0
  47. package/src/components/ReportFilters/index.tsx +44 -0
  48. package/src/components/ReportFilters/styles.scss +55 -0
  49. package/src/components/ReportQualityGateResults/index.tsx +77 -19
  50. package/src/components/ReportQualityGateResults/styles.scss +13 -0
  51. package/src/components/ReportSearch/index.tsx +29 -0
  52. package/src/components/ReportTabs/index.tsx +1 -1
  53. package/src/components/SectionPicker/index.tsx +1 -1
  54. package/src/components/SplitLayout/index.tsx +7 -3
  55. package/src/components/TestResult/TrDescription/index.tsx +60 -10
  56. package/src/components/TestResult/TrDescription/styles.scss +4 -0
  57. package/src/components/TestResult/TrEnvironmentItem/index.tsx +2 -2
  58. package/src/components/TestResult/TrError/TrDiff.tsx +2 -6
  59. package/src/components/TestResult/TrError/styles.scss +4 -0
  60. package/src/components/TestResult/TrHeader/TrBreadcrumbs.tsx +2 -2
  61. package/src/components/TestResult/TrHistory/TrHistoryItem.tsx +38 -7
  62. package/src/components/TestResult/TrHistory/index.tsx +18 -8
  63. package/src/components/TestResult/TrHistory/styles.scss +4 -7
  64. package/src/components/TestResult/TrInfo/styles.scss +1 -0
  65. package/src/components/TestResult/TrLinks/index.tsx +4 -4
  66. package/src/components/TestResult/TrNavigation/index.tsx +109 -68
  67. package/src/components/TestResult/TrNavigation/styles.scss +15 -25
  68. package/src/components/TestResult/TrOverview.tsx +3 -2
  69. package/src/components/TestResult/TrPwTraces/PwTraceButton.tsx +1 -8
  70. package/src/components/TestResult/TrRetriesView/TrRetriesItem.tsx +2 -3
  71. package/src/components/TestResult/TrRetriesView/index.tsx +4 -3
  72. package/src/components/TestResult/TrSteps/TrAttachment.tsx +5 -3
  73. package/src/components/TestResult/TrSteps/TrAttachmentInfo.tsx +10 -3
  74. package/src/components/TestResult/TrTabs/index.tsx +7 -23
  75. package/src/components/TestResult/index.tsx +9 -4
  76. package/src/components/TestResult/styles.scss +1 -0
  77. package/src/components/Timeline/index.tsx +2 -5
  78. package/src/components/Tree/index.tsx +14 -9
  79. package/src/index.html +19 -18
  80. package/src/index.tsx +20 -27
  81. package/src/locales/az.json +42 -13
  82. package/src/locales/de.json +42 -13
  83. package/src/locales/en.json +42 -13
  84. package/src/locales/es.json +42 -13
  85. package/src/locales/fr.json +42 -13
  86. package/src/locales/he.json +42 -13
  87. package/src/locales/hy.json +42 -13
  88. package/src/locales/it.json +42 -13
  89. package/src/locales/ja.json +42 -13
  90. package/src/locales/ka.json +42 -13
  91. package/src/locales/kr.json +42 -13
  92. package/src/locales/nl.json +42 -13
  93. package/src/locales/pl.json +42 -13
  94. package/src/locales/pt.json +42 -13
  95. package/src/locales/ru.json +42 -13
  96. package/src/locales/sv.json +42 -13
  97. package/src/locales/tr.json +42 -13
  98. package/src/locales/{ua.json → uk.json} +42 -13
  99. package/src/locales/zh.json +42 -13
  100. package/src/stores/chart.ts +2 -2
  101. package/src/stores/env.ts +6 -6
  102. package/src/stores/envInfo.ts +2 -2
  103. package/src/stores/globals.ts +1 -1
  104. package/src/stores/index.ts +0 -1
  105. package/src/stores/layout.ts +20 -11
  106. package/src/stores/locale.ts +71 -38
  107. package/src/stores/qualityGate.ts +4 -4
  108. package/src/stores/router.ts +25 -91
  109. package/src/stores/sections.ts +32 -45
  110. package/src/stores/stats.ts +4 -4
  111. package/src/stores/testResult.ts +5 -0
  112. package/src/stores/testResults.ts +7 -5
  113. package/src/stores/timeline.ts +5 -2
  114. package/src/stores/tree.ts +20 -13
  115. package/src/stores/treeFilters/actions.ts +48 -52
  116. package/src/stores/treeFilters/constants.ts +11 -5
  117. package/src/stores/treeFilters/model.ts +51 -0
  118. package/src/stores/treeFilters/store.ts +260 -60
  119. package/src/stores/treeFilters/utils.ts +132 -0
  120. package/src/stores/treeSort.ts +71 -0
  121. package/src/stores/variables.ts +3 -3
  122. package/src/utils/ownerAddress.ts +92 -0
  123. package/src/utils/time.ts +16 -2
  124. package/src/utils/treeFilters.ts +48 -66
  125. package/test/components/Header.test.tsx +49 -58
  126. package/test/utils/ownerAddress.test.ts +89 -0
  127. package/test/utils/treeFilters.test.ts +18 -321
  128. package/types.d.ts +3 -2
  129. package/dist/multi/173.app-bae2a0fe5738d77cd976.js +0 -1
  130. package/dist/multi/174.app-bae2a0fe5738d77cd976.js +0 -1
  131. package/dist/multi/252.app-bae2a0fe5738d77cd976.js +0 -1
  132. package/dist/multi/282.app-bae2a0fe5738d77cd976.js +0 -1
  133. package/dist/multi/29.app-bae2a0fe5738d77cd976.js +0 -1
  134. package/dist/multi/416.app-bae2a0fe5738d77cd976.js +0 -1
  135. package/dist/multi/527.app-bae2a0fe5738d77cd976.js +0 -1
  136. package/dist/multi/600.app-bae2a0fe5738d77cd976.js +0 -1
  137. package/dist/multi/605.app-bae2a0fe5738d77cd976.js +0 -1
  138. package/dist/multi/638.app-bae2a0fe5738d77cd976.js +0 -1
  139. package/dist/multi/672.app-bae2a0fe5738d77cd976.js +0 -1
  140. package/dist/multi/686.app-bae2a0fe5738d77cd976.js +0 -1
  141. package/dist/multi/725.app-bae2a0fe5738d77cd976.js +0 -1
  142. package/dist/multi/741.app-bae2a0fe5738d77cd976.js +0 -1
  143. package/dist/multi/755.app-bae2a0fe5738d77cd976.js +0 -1
  144. package/dist/multi/894.app-bae2a0fe5738d77cd976.js +0 -1
  145. package/dist/multi/91.app-bae2a0fe5738d77cd976.js +0 -1
  146. package/dist/multi/943.app-bae2a0fe5738d77cd976.js +0 -1
  147. package/dist/multi/980.app-bae2a0fe5738d77cd976.js +0 -1
  148. package/dist/multi/app-bae2a0fe5738d77cd976.js +0 -2
  149. package/dist/multi/styles-bbf68b2ba63c38b53c38.css +0 -48
  150. package/dist/single/app-996d3b5869f8fc942b66.js +0 -2
  151. package/src/components/ReportBody/Filters.tsx +0 -122
  152. package/src/stores/theme.ts +0 -30
  153. package/src/stores/treeFilters/index.ts +0 -3
  154. package/src/stores/treeFilters/types.ts +0 -12
  155. package/test/stores/treeFilters.test.ts +0 -302
@@ -1,122 +0,0 @@
1
- import { Button, Menu, Toggle, TooltipWrapper, allureIcons } from "@allurereport/web-components";
2
- import { computed } from "@preact/signals";
3
- import { For } from "@preact/signals/utils";
4
- import { useEffect } from "preact/hooks";
5
- import { useI18n } from "@/stores/locale";
6
- import {
7
- type TreeFilters,
8
- setFilters,
9
- setTestTypeFilter,
10
- setTransitionFilter,
11
- testTypeFilters,
12
- transitionFilters,
13
- } from "@/stores/treeFilters";
14
- import { filtersList } from "@/stores/treeFilters/constants";
15
- import * as styles from "./styles.scss";
16
-
17
- const filterIcons: Record<TreeFilters, string> = {
18
- flaky: allureIcons.lineIconBomb2,
19
- retry: allureIcons.lineArrowsRefreshCcw1,
20
- new: allureIcons.lineAlertsNew,
21
- fixed: allureIcons.lineAlertsFixed,
22
- regressed: allureIcons.lineAlertsRegressed,
23
- malfunctioned: allureIcons.lineAlertsMalfunctioned,
24
- };
25
-
26
- const FilterItem = (props: { filter: TreeFilters; value: boolean; onChange: (value: boolean) => void }) => {
27
- const { filter, value, onChange } = props;
28
- const { t: tooltip } = useI18n("filters.description");
29
- const { t } = useI18n("filters");
30
-
31
- return (
32
- <TooltipWrapper data-testid="filter-tooltip" tooltipText={tooltip(filter)}>
33
- <Menu.Item
34
- closeMenuOnClick={false}
35
- ariaLabel={t("enable-filter", { filter: t(filter) })}
36
- onClick={() => onChange(!value)}
37
- leadingIcon={filterIcons[filter]}
38
- rightSlot={
39
- <div className={styles.filterToggle}>
40
- <Toggle
41
- focusable={false}
42
- value={value}
43
- label={t("enable-filter", { filter: t(filter) })}
44
- data-testid={`${filter}-filter`}
45
- onChange={(changeValue) => onChange(changeValue)}
46
- />
47
- </div>
48
- }
49
- >
50
- {t(filter)}
51
- </Menu.Item>
52
- </TooltipWrapper>
53
- );
54
- };
55
-
56
- const hasFilter = computed(
57
- () => transitionFilters.value.some(([, value]) => value) || testTypeFilters.value.some(([, value]) => value),
58
- );
59
-
60
- export const Filters = () => {
61
- const { t } = useI18n("filters");
62
-
63
- useEffect(() => {
64
- const params = new URLSearchParams(window.location.search);
65
- const filtersParams = params.getAll("filter");
66
-
67
- if (filtersParams.length > 0) {
68
- const activeFilters = filtersList.reduce(
69
- (acc, key) => ({
70
- ...acc,
71
- [key]: filtersParams.includes(key),
72
- }),
73
- {} as Record<string, boolean>,
74
- );
75
-
76
- setFilters(activeFilters);
77
- }
78
- }, []);
79
-
80
- return (
81
- <Menu
82
- menuTrigger={({ isOpened, onClick }) => (
83
- <div className={hasFilter.value && styles.filtersBtnWithFilters}>
84
- <Button
85
- icon={allureIcons.lineGeneralSettings1}
86
- text={t("more-filters")}
87
- size="m"
88
- style="outline"
89
- isActive={isOpened}
90
- data-testid="filters-button"
91
- onClick={onClick}
92
- />
93
- </div>
94
- )}
95
- >
96
- <Menu.Section>
97
- <For each={testTypeFilters}>
98
- {([filter, value]) => (
99
- <FilterItem
100
- key={filter}
101
- filter={filter}
102
- value={value}
103
- onChange={(newValue) => setTestTypeFilter(filter, newValue)}
104
- />
105
- )}
106
- </For>
107
- </Menu.Section>
108
- <Menu.Section data-testid="filters-menu">
109
- <For each={transitionFilters}>
110
- {([filter, value]) => (
111
- <FilterItem
112
- key={filter}
113
- filter={filter}
114
- value={value}
115
- onChange={(newValue) => setTransitionFilter(filter, newValue)}
116
- />
117
- )}
118
- </For>
119
- </Menu.Section>
120
- </Menu>
121
- );
122
- };
@@ -1,30 +0,0 @@
1
- import { getReportOptions } from "@allurereport/web-commons";
2
- import type { Theme } from "@allurereport/web-components";
3
- import { signal } from "@preact/signals";
4
- import type { AwesomeReportOptions } from "../../types.js";
5
-
6
- export const themeStore = signal<Theme>("auto");
7
-
8
- export const setTheme = (mode: "light" | "dark" | "auto") => {
9
- themeStore.value = mode;
10
-
11
- try {
12
- window.localStorage.setItem("theme", mode);
13
- } catch {}
14
-
15
- document.documentElement.setAttribute("data-theme", mode);
16
- };
17
-
18
- export const toggleTheme = () => {
19
- const order = ["light", "dark", "auto"];
20
- const current = themeStore.value;
21
- const next = order[(order.indexOf(current) + 1) % order.length] as Theme;
22
- setTheme(next);
23
- };
24
-
25
- export const getTheme = () => {
26
- const { theme } = getReportOptions<AwesomeReportOptions>() ?? {};
27
- const themeFromLS = (window.localStorage.getItem("theme") as Theme | null) || (theme as Theme);
28
-
29
- setTheme(themeFromLS);
30
- };
@@ -1,3 +0,0 @@
1
- export * from "./store";
2
- export * from "./actions";
3
- export type * from "./types";
@@ -1,12 +0,0 @@
1
- import type { AwesomeStatus } from "types";
2
-
3
- export type TreeSortBy = "order" | "duration" | "status" | "alphabet";
4
- export type TreeDirection = "asc" | "desc";
5
- export type TreeFilters = "flaky" | "retry" | "new" | "fixed" | "regressed" | "malfunctioned";
6
- export type TreeFiltersState = {
7
- query: string;
8
- status: AwesomeStatus;
9
- filter: Record<TreeFilters, boolean>;
10
- sortBy: TreeSortBy;
11
- direction: TreeDirection;
12
- };
@@ -1,302 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
- import {
3
- clearTreeFilters,
4
- setTestTypeFilter,
5
- setTransitionFilter,
6
- setTreeDirection,
7
- setTreeQuery,
8
- setTreeSortBy,
9
- setTreeStatus,
10
- treeDirection,
11
- treeFilter,
12
- treeQuery,
13
- treeSortBy,
14
- treeStatus,
15
- } from "@/stores/treeFilters";
16
-
17
- const defaultFilter = {
18
- flaky: false,
19
- retry: false,
20
- new: false,
21
- fixed: false,
22
- regressed: false,
23
- malfunctioned: false,
24
- };
25
-
26
- describe("stores > treeFilters", () => {
27
- beforeEach(() => {
28
- // Reset all signals to default state before each test
29
- treeQuery.value = "";
30
- treeStatus.value = "total";
31
- treeSortBy.value = "order";
32
- treeDirection.value = "asc";
33
- treeFilter.value = { ...defaultFilter };
34
- });
35
-
36
- afterEach(() => {
37
- vi.clearAllMocks();
38
- });
39
-
40
- describe("clearTreeFilters", () => {
41
- it("should reset query, status and filters to default state", () => {
42
- // Set some non-default values
43
- treeQuery.value = "test query";
44
- treeStatus.value = "passed";
45
- treeFilter.value = {
46
- flaky: true,
47
- retry: true,
48
- new: true,
49
- fixed: true,
50
- regressed: true,
51
- malfunctioned: true,
52
- };
53
-
54
- clearTreeFilters();
55
-
56
- expect(treeQuery.value).toBe("");
57
- expect(treeStatus.value).toBe("total");
58
- expect(treeFilter.value).toEqual(defaultFilter);
59
- });
60
-
61
- it("should not reset sortBy and direction", () => {
62
- treeSortBy.value = "duration";
63
- treeDirection.value = "desc";
64
-
65
- clearTreeFilters();
66
-
67
- expect(treeSortBy.value).toBe("duration");
68
- expect(treeDirection.value).toBe("desc");
69
- });
70
- });
71
-
72
- describe("setTreeQuery", () => {
73
- it("should update query", () => {
74
- setTreeQuery("search term");
75
-
76
- expect(treeQuery.value).toBe("search term");
77
- });
78
-
79
- it("should update query to empty string", () => {
80
- treeQuery.value = "some query";
81
-
82
- setTreeQuery("");
83
-
84
- expect(treeQuery.value).toBe("");
85
- });
86
- });
87
-
88
- describe("setTreeStatus", () => {
89
- it("should update status to passed", () => {
90
- setTreeStatus("passed");
91
-
92
- expect(treeStatus.value).toBe("passed");
93
- });
94
-
95
- it("should update status to failed", () => {
96
- setTreeStatus("failed");
97
-
98
- expect(treeStatus.value).toBe("failed");
99
- });
100
-
101
- it("should update status to broken", () => {
102
- setTreeStatus("broken");
103
-
104
- expect(treeStatus.value).toBe("broken");
105
- });
106
-
107
- it("should update status to skipped", () => {
108
- setTreeStatus("skipped");
109
-
110
- expect(treeStatus.value).toBe("skipped");
111
- });
112
-
113
- it("should update status to total", () => {
114
- treeStatus.value = "passed";
115
-
116
- setTreeStatus("total");
117
-
118
- expect(treeStatus.value).toBe("total");
119
- });
120
- });
121
-
122
- describe("setTreeSortBy", () => {
123
- it("should update sortBy to duration", () => {
124
- setTreeSortBy("duration");
125
-
126
- expect(treeSortBy.value).toBe("duration");
127
- });
128
-
129
- it("should update sortBy to status", () => {
130
- setTreeSortBy("status");
131
-
132
- expect(treeSortBy.value).toBe("status");
133
- });
134
-
135
- it("should update sortBy to alphabet", () => {
136
- setTreeSortBy("alphabet");
137
-
138
- expect(treeSortBy.value).toBe("alphabet");
139
- });
140
-
141
- it("should update sortBy to order", () => {
142
- treeSortBy.value = "duration";
143
-
144
- setTreeSortBy("order");
145
-
146
- expect(treeSortBy.value).toBe("order");
147
- });
148
- });
149
-
150
- describe("setTreeDirection", () => {
151
- it("should update direction to desc", () => {
152
- setTreeDirection("desc");
153
-
154
- expect(treeDirection.value).toBe("desc");
155
- });
156
-
157
- it("should update direction to asc", () => {
158
- treeDirection.value = "desc";
159
-
160
- setTreeDirection("asc");
161
-
162
- expect(treeDirection.value).toBe("asc");
163
- });
164
- });
165
-
166
- describe("setTestTypeFilter", () => {
167
- it("should enable flaky filter", () => {
168
- setTestTypeFilter("flaky", true);
169
-
170
- expect(treeFilter.value.flaky).toBe(true);
171
- });
172
-
173
- it("should disable flaky filter", () => {
174
- treeFilter.value = { ...defaultFilter, flaky: true };
175
-
176
- setTestTypeFilter("flaky", false);
177
-
178
- expect(treeFilter.value.flaky).toBe(false);
179
- });
180
-
181
- it("should enable retry filter", () => {
182
- setTestTypeFilter("retry", true);
183
-
184
- expect(treeFilter.value.retry).toBe(true);
185
- });
186
-
187
- it("should disable retry filter", () => {
188
- treeFilter.value = { ...defaultFilter, retry: true };
189
-
190
- setTestTypeFilter("retry", false);
191
-
192
- expect(treeFilter.value.retry).toBe(false);
193
- });
194
-
195
- it("should enable both flaky and retry filters independently", () => {
196
- setTestTypeFilter("flaky", true);
197
- setTestTypeFilter("retry", true);
198
-
199
- expect(treeFilter.value.flaky).toBe(true);
200
- expect(treeFilter.value.retry).toBe(true);
201
- });
202
-
203
- it("should not affect transition filters", () => {
204
- treeFilter.value = { ...defaultFilter, new: true };
205
-
206
- setTestTypeFilter("flaky", true);
207
-
208
- expect(treeFilter.value.new).toBe(true);
209
- expect(treeFilter.value.flaky).toBe(true);
210
- });
211
- });
212
-
213
- describe("setTransitionFilter", () => {
214
- it("should enable new filter", () => {
215
- setTransitionFilter("new", true);
216
-
217
- expect(treeFilter.value.new).toBe(true);
218
- });
219
-
220
- it("should enable fixed filter", () => {
221
- setTransitionFilter("fixed", true);
222
-
223
- expect(treeFilter.value.fixed).toBe(true);
224
- });
225
-
226
- it("should enable regressed filter", () => {
227
- setTransitionFilter("regressed", true);
228
-
229
- expect(treeFilter.value.regressed).toBe(true);
230
- });
231
-
232
- it("should enable malfunctioned filter", () => {
233
- setTransitionFilter("malfunctioned", true);
234
-
235
- expect(treeFilter.value.malfunctioned).toBe(true);
236
- });
237
-
238
- it("should disable the previous transition when enabling a new one", () => {
239
- setTransitionFilter("new", true);
240
- expect(treeFilter.value.new).toBe(true);
241
-
242
- setTransitionFilter("fixed", true);
243
-
244
- expect(treeFilter.value.new).toBe(false);
245
- expect(treeFilter.value.fixed).toBe(true);
246
- expect(treeFilter.value.regressed).toBe(false);
247
- expect(treeFilter.value.malfunctioned).toBe(false);
248
- });
249
-
250
- it("should disable all other transitions when enabling regressed", () => {
251
- treeFilter.value = { ...defaultFilter, new: true, fixed: true };
252
-
253
- setTransitionFilter("regressed", true);
254
-
255
- expect(treeFilter.value.new).toBe(false);
256
- expect(treeFilter.value.fixed).toBe(false);
257
- expect(treeFilter.value.regressed).toBe(true);
258
- expect(treeFilter.value.malfunctioned).toBe(false);
259
- });
260
-
261
- it("should allow only one transition to be enabled at a time", () => {
262
- setTransitionFilter("new", true);
263
- setTransitionFilter("fixed", true);
264
- setTransitionFilter("regressed", true);
265
- setTransitionFilter("malfunctioned", true);
266
-
267
- expect(treeFilter.value.new).toBe(false);
268
- expect(treeFilter.value.fixed).toBe(false);
269
- expect(treeFilter.value.regressed).toBe(false);
270
- expect(treeFilter.value.malfunctioned).toBe(true);
271
- });
272
-
273
- it("should disable the transition when value is false", () => {
274
- treeFilter.value = { ...defaultFilter, new: true };
275
-
276
- setTransitionFilter("new", false);
277
-
278
- expect(treeFilter.value.new).toBe(false);
279
- });
280
-
281
- it("should disable all transitions when disabling the active one", () => {
282
- setTransitionFilter("fixed", true);
283
-
284
- setTransitionFilter("fixed", false);
285
-
286
- expect(treeFilter.value.new).toBe(false);
287
- expect(treeFilter.value.fixed).toBe(false);
288
- expect(treeFilter.value.regressed).toBe(false);
289
- expect(treeFilter.value.malfunctioned).toBe(false);
290
- });
291
-
292
- it("should not affect test type filters (flaky, retry)", () => {
293
- treeFilter.value = { ...defaultFilter, flaky: true, retry: true };
294
-
295
- setTransitionFilter("new", true);
296
-
297
- expect(treeFilter.value.flaky).toBe(true);
298
- expect(treeFilter.value.retry).toBe(true);
299
- expect(treeFilter.value.new).toBe(true);
300
- });
301
- });
302
- });