xmlui 0.10.12 → 0.10.14

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 (209) hide show
  1. package/dist/lib/{index-CDOoBf2R.mjs → index-779mp2Bm.mjs} +1508 -1287
  2. package/dist/lib/index.css +1 -1
  3. package/dist/lib/{initMock-BAV9RKui.mjs → initMock-CAXdczCj.mjs} +1 -1
  4. package/dist/lib/scss/components-core/theming/_themes.scss +1 -1
  5. package/dist/lib/xmlui.d.ts +17 -2
  6. package/dist/lib/xmlui.mjs +33 -32
  7. package/dist/metadata/{collectedComponentMetadata-Dp8BqWQO.mjs → collectedComponentMetadata-7DFXlw-J.mjs} +14957 -14751
  8. package/dist/metadata/{initMock-BvEO8W8r.mjs → initMock-AFWEftc6.mjs} +1 -1
  9. package/dist/metadata/style.css +1 -1
  10. package/dist/metadata/xmlui-metadata.mjs +1 -1
  11. package/dist/metadata/xmlui-metadata.umd.js +3 -3
  12. package/dist/scripts/bin/build-lib.js +21 -13
  13. package/dist/scripts/bin/viteConfig.js +3 -1
  14. package/dist/scripts/package.json +1 -1
  15. package/dist/scripts/src/abstractions/scripting/Token.js +2 -0
  16. package/dist/scripts/src/abstractions/scripting/TryScope.js +2 -0
  17. package/dist/scripts/src/abstractions/scripting/modules.js +2 -0
  18. package/dist/scripts/src/components/APICall/APICall.spec.js +910 -0
  19. package/dist/scripts/src/components/Accordion/Accordion.spec.js +969 -0
  20. package/dist/scripts/src/components/Animation/Animation.js +50 -0
  21. package/dist/scripts/src/components/App/App.spec.js +219 -0
  22. package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +169 -0
  23. package/dist/scripts/src/components/AppState/AppState.spec.js +268 -0
  24. package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +383 -0
  25. package/dist/scripts/src/components/Avatar/Avatar.spec.js +1543 -0
  26. package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +131 -0
  27. package/dist/scripts/src/components/Badge/Badge.spec.js +2214 -0
  28. package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +230 -0
  29. package/dist/scripts/src/components/Breakout/Breakout.spec.js +56 -0
  30. package/dist/scripts/src/components/Button/Button-style.spec.js +274 -0
  31. package/dist/scripts/src/components/Button/Button.spec.js +454 -0
  32. package/dist/scripts/src/components/Card/Card.spec.js +150 -0
  33. package/dist/scripts/src/components/Carousel/Carousel.spec.js +343 -0
  34. package/dist/scripts/src/components/Carousel/CarouselNative.js +2 -2
  35. package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +169 -0
  36. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +999 -0
  37. package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +597 -0
  38. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +608 -0
  39. package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +539 -0
  40. package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +558 -0
  41. package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +450 -0
  42. package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +584 -0
  43. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +571 -0
  44. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +449 -0
  45. package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +964 -0
  46. package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +196 -0
  47. package/dist/scripts/src/components/ColorPicker/ColorPicker.js +3 -3
  48. package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +283 -0
  49. package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +16 -5
  50. package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +53 -0
  51. package/dist/scripts/src/components/ComponentProvider.js +6 -6
  52. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +338 -0
  53. package/dist/scripts/src/components/DateInput/DateInput.spec.js +918 -0
  54. package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +362 -0
  55. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +3 -3
  56. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +331 -0
  57. package/dist/scripts/src/components/DropdownMenu/DropdownMenuNative.js +1 -1
  58. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +29 -0
  59. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +435 -0
  60. package/dist/scripts/src/components/FileInput/FileInput.spec.js +249 -0
  61. package/dist/scripts/src/components/FileInput/FileInputNative.js +14 -10
  62. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +296 -0
  63. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZoneNative.js +1 -1
  64. package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +518 -0
  65. package/dist/scripts/src/components/Footer/Footer.spec.js +991 -0
  66. package/dist/scripts/src/components/Form/Form.js +6 -0
  67. package/dist/scripts/src/components/Form/Form.spec.js +1257 -0
  68. package/dist/scripts/src/components/Form/FormNative.js +13 -3
  69. package/dist/scripts/src/components/FormItem/FormItem.spec.js +723 -0
  70. package/dist/scripts/src/components/FormItem/ItemWithLabel.js +2 -2
  71. package/dist/scripts/src/components/FormSection/FormSection.js +6 -31
  72. package/dist/scripts/src/components/Fragment/Fragment.js +5 -1
  73. package/dist/scripts/src/components/Fragment/Fragment.spec.js +50 -0
  74. package/dist/scripts/src/components/Heading/H1.spec.js +66 -0
  75. package/dist/scripts/src/components/Heading/H2.spec.js +66 -0
  76. package/dist/scripts/src/components/Heading/H3.spec.js +66 -0
  77. package/dist/scripts/src/components/Heading/H4.spec.js +66 -0
  78. package/dist/scripts/src/components/Heading/H5.spec.js +66 -0
  79. package/dist/scripts/src/components/Heading/H6.spec.js +66 -0
  80. package/dist/scripts/src/components/Heading/Heading.js +0 -12
  81. package/dist/scripts/src/components/Heading/Heading.spec.js +897 -0
  82. package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +69 -0
  83. package/dist/scripts/src/components/IFrame/IFrame.spec.js +527 -0
  84. package/dist/scripts/src/components/Icon/ArrowDropDown.js +11 -0
  85. package/dist/scripts/src/components/Icon/ArrowDropUp.js +11 -0
  86. package/dist/scripts/src/components/Icon/ArrowLeft.js +11 -0
  87. package/dist/scripts/src/components/Icon/ArrowRight.js +11 -0
  88. package/dist/scripts/src/components/Icon/ChevronDownIcon.js +7 -0
  89. package/dist/scripts/src/components/Icon/ChevronUpIcon.js +7 -0
  90. package/dist/scripts/src/components/Icon/Icon.spec.js +527 -0
  91. package/dist/scripts/src/components/Icon/SunIcon.js +10 -0
  92. package/dist/scripts/src/components/Image/Image.js +2 -1
  93. package/dist/scripts/src/components/Image/Image.spec.js +198 -0
  94. package/dist/scripts/src/components/Image/ImageNative.js +30 -2
  95. package/dist/scripts/src/components/Input/InputLabel.js +25 -0
  96. package/dist/scripts/src/components/Input/index.js +5 -0
  97. package/dist/scripts/src/components/Items/Items.spec.js +397 -0
  98. package/dist/scripts/src/components/Link/Link.spec.js +894 -0
  99. package/dist/scripts/src/components/List/List.spec.js +927 -0
  100. package/dist/scripts/src/components/List/doc-resources/list-component-data.js +53 -0
  101. package/dist/scripts/src/components/Markdown/Markdown.spec.js +188 -0
  102. package/dist/scripts/src/components/ModalDialog/ModalDialog.js +1 -1
  103. package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +162 -0
  104. package/dist/scripts/src/components/ModalDialog/ModalDialogNative.js +1 -1
  105. package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +153 -0
  106. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +2 -2
  107. package/dist/scripts/src/components/NavLink/NavLink.spec.js +864 -0
  108. package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +864 -0
  109. package/dist/scripts/src/components/NoResult/NoResult.spec.js +863 -0
  110. package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +1231 -0
  111. package/dist/scripts/src/components/Option/Option.spec.js +472 -0
  112. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +80 -0
  113. package/dist/scripts/src/components/Pagination/Pagination.spec.js +1003 -0
  114. package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +20 -0
  115. package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +166 -0
  116. package/dist/scripts/src/components/Queue/Queue.spec.js +626 -0
  117. package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +479 -0
  118. package/dist/scripts/src/components/RadioGroup/RadioGroupNative.js +17 -1
  119. package/dist/scripts/src/components/Redirect/Redirect.spec.js +527 -0
  120. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +76 -0
  121. package/dist/scripts/src/components/Select/Select.spec.js +527 -0
  122. package/dist/scripts/src/components/Slider/Slider.js +2 -0
  123. package/dist/scripts/src/components/Slider/Slider.spec.js +574 -0
  124. package/dist/scripts/src/components/Slider/SliderNative.js +62 -25
  125. package/dist/scripts/src/components/Slot/Slot.spec.js +368 -0
  126. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +184 -0
  127. package/dist/scripts/src/components/Spinner/Spinner.spec.js +161 -0
  128. package/dist/scripts/src/components/Splitter/HSplitter.spec.js +104 -0
  129. package/dist/scripts/src/components/Splitter/Splitter.spec.js +543 -0
  130. package/dist/scripts/src/components/Splitter/VSplitter.spec.js +104 -0
  131. package/dist/scripts/src/components/Stack/CHStack.spec.js +86 -0
  132. package/dist/scripts/src/components/Stack/CVStack.spec.js +86 -0
  133. package/dist/scripts/src/components/Stack/HStack.spec.js +67 -0
  134. package/dist/scripts/src/components/Stack/Stack.spec.js +654 -0
  135. package/dist/scripts/src/components/Stack/VStack.spec.js +67 -0
  136. package/dist/scripts/src/components/Switch/Switch.spec.js +829 -0
  137. package/dist/scripts/src/components/Table/Table.js +8 -5
  138. package/dist/scripts/src/components/Table/Table.spec.js +555 -0
  139. package/dist/scripts/src/components/Table/TableNative.js +1 -1
  140. package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +53 -0
  141. package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +838 -0
  142. package/dist/scripts/src/components/Tabs/Tabs.spec.js +875 -0
  143. package/dist/scripts/src/components/Text/Text.js +0 -13
  144. package/dist/scripts/src/components/Text/Text.spec.js +1075 -0
  145. package/dist/scripts/src/components/TextArea/TextArea.spec.js +714 -0
  146. package/dist/scripts/src/components/TextArea/TextAreaNative.js +8 -1
  147. package/dist/scripts/src/components/TextBox/TextBox.spec.js +643 -0
  148. package/dist/scripts/src/components/Theme/NotificationToast.js +4 -1
  149. package/dist/scripts/src/components/Theme/Theme.spec.js +124 -0
  150. package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +1122 -0
  151. package/dist/scripts/src/components/Timer/Timer.spec.js +358 -0
  152. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +414 -0
  153. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +89 -0
  154. package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +418 -0
  155. package/dist/scripts/src/components/chart-color-schemes.js +43 -0
  156. package/dist/scripts/src/components-core/CompoundComponent.js +5 -5
  157. package/dist/scripts/src/components-core/RestApiProxy.js +89 -11
  158. package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +8 -0
  159. package/dist/scripts/src/components-core/renderers.js +31 -0
  160. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +1 -1
  161. package/dist/scripts/src/components-core/rendering/Container.js +19 -8
  162. package/dist/scripts/src/components-core/rendering/reducer.js +1 -1
  163. package/dist/scripts/src/components-core/script-runner/simplify-expression.js +386 -0
  164. package/dist/scripts/src/components-core/theming/component-layout-resolver.js +153 -0
  165. package/dist/scripts/src/components-core/theming/parse-layout-props.js +98 -0
  166. package/dist/scripts/src/components-core/theming/themes/root.js +13 -20
  167. package/dist/scripts/src/components-core/theming/themes/solid.js +16 -0
  168. package/dist/scripts/src/components-core/utils/audio-utils.js +83 -0
  169. package/dist/scripts/src/index-standalone.js +61 -0
  170. package/dist/scripts/src/index.js +2 -1
  171. package/dist/scripts/src/language-server/server-common.js +151 -0
  172. package/dist/scripts/src/language-server/server-web-worker.js +47 -0
  173. package/dist/scripts/src/language-server/server.js +42 -0
  174. package/dist/scripts/src/language-server/services/common/docs-generation.js +73 -0
  175. package/dist/scripts/src/language-server/services/common/lsp-utils.js +9 -0
  176. package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +135 -0
  177. package/dist/scripts/src/language-server/services/completion.js +270 -0
  178. package/dist/scripts/src/language-server/services/diagnostic.js +19 -0
  179. package/dist/scripts/src/language-server/services/format.js +430 -0
  180. package/dist/scripts/src/language-server/services/hover.js +164 -0
  181. package/dist/scripts/src/language-server/xmlui-metadata-generated.mjs +16266 -0
  182. package/dist/scripts/src/logging/xmlui.js +21 -0
  183. package/dist/scripts/src/parsers/common/utils.js +19 -0
  184. package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +286 -0
  185. package/dist/scripts/src/syntax/monaco/index.js +14 -0
  186. package/dist/scripts/src/syntax/monaco/xmlui-dark.js +25 -0
  187. package/dist/scripts/src/syntax/monaco/xmlui-light.js +25 -0
  188. package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +310 -0
  189. package/dist/scripts/src/syntax/textMate/index.js +14 -0
  190. package/dist/scripts/src/syntax/textMate/xmlui-dark.json +631 -0
  191. package/dist/scripts/src/syntax/textMate/xmlui-light.json +565 -0
  192. package/dist/scripts/src/syntax/textMate/xmlui.json +564 -0
  193. package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +341 -0
  194. package/dist/scripts/src/testing/ComponentDrivers.js +1355 -0
  195. package/dist/scripts/src/testing/assertions.js +444 -0
  196. package/dist/scripts/src/testing/component-test-helpers.js +389 -0
  197. package/dist/scripts/src/testing/drivers/DateInputDriver.js +19 -0
  198. package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +10 -0
  199. package/dist/scripts/src/testing/drivers/TimeInputDriver.js +22 -0
  200. package/dist/scripts/src/testing/drivers/TimerDriver.js +64 -0
  201. package/dist/scripts/src/testing/fixtures.js +487 -0
  202. package/dist/scripts/src/testing/infrastructure/TestBed.js +17 -0
  203. package/dist/scripts/src/testing/infrastructure/main.js +9 -0
  204. package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +266 -0
  205. package/dist/scripts/src/testing/themed-app-test-helpers.js +139 -0
  206. package/dist/standalone/xmlui-standalone.es.d.ts +19 -2
  207. package/dist/standalone/xmlui-standalone.umd.js +36 -36
  208. package/package.json +1 -1
  209. package/dist/scripts/src/components/RadioGroup/RadioItem.js +0 -28
@@ -0,0 +1,574 @@
1
+ "use strict";
2
+ /**
3
+ * Testing Notes: the Driver needs to account for the correct positioning of the indicators on the slider
4
+ */
5
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
+ return new (P || (P = Promise))(function (resolve, reject) {
8
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
12
+ });
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const component_test_helpers_1 = require("../../testing/component-test-helpers");
16
+ const fixtures_1 = require("../../testing/fixtures");
17
+ // =============================================================================
18
+ // BASIC FUNCTIONALITY TESTS
19
+ // =============================================================================
20
+ fixtures_1.test.describe("Basic Functionality", () => {
21
+ (0, fixtures_1.test)("component renders", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
22
+ yield initTestBed(`<Slider />`);
23
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
24
+ }));
25
+ (0, fixtures_1.test)("component renders with label", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
26
+ yield initTestBed(`<Slider label="Volume" />`);
27
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
28
+ yield (0, fixtures_1.expect)(page.getByText("Volume")).toBeVisible();
29
+ }));
30
+ (0, fixtures_1.test)("sets initialValue of field", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
31
+ yield initTestBed(`
32
+ <Fragment>
33
+ <Slider id="slider" initialValue="5" />
34
+ <Text testId="slider-value" value="{slider.value}" />
35
+ </Fragment>`);
36
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("5");
37
+ }));
38
+ (0, fixtures_1.test)("accepts empty as initialValue", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
39
+ yield initTestBed(`
40
+ <Fragment>
41
+ <Slider id="slider" initialValue="" />
42
+ <Text testId="slider-value" value="{slider.value}" />
43
+ </Fragment>`);
44
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("0");
45
+ }));
46
+ [
47
+ { label: "int", value: 5, expected: "5" },
48
+ { label: "float", value: 5.5, expected: "5.5" },
49
+ ].forEach(({ label, value, expected }) => {
50
+ (0, fixtures_1.test)(`handles ${label} correctly`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
51
+ yield initTestBed(`
52
+ <Fragment>
53
+ <Slider id="slider" initialValue="${JSON.stringify(value)}" />
54
+ <Text testId="slider-value" value="{slider.value}" />
55
+ </Fragment>`);
56
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText(expected);
57
+ }));
58
+ });
59
+ [
60
+ { label: "string that resolves to int", value: "5", expected: "5" },
61
+ { label: "string that resolves to float", value: "5.5", expected: "5.5" },
62
+ ].forEach(({ label, value, expected }) => {
63
+ (0, fixtures_1.test)(`handles ${label} correctly`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
64
+ yield initTestBed(`
65
+ <Fragment>
66
+ <Slider id="slider" initialValue="${value}" />
67
+ <Text testId="slider-value" value="{slider.value}" />
68
+ </Fragment>`);
69
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText(expected);
70
+ }));
71
+ });
72
+ [
73
+ { label: "NaN", value: NaN },
74
+ { label: "null", value: null },
75
+ { label: "undefined", value: undefined },
76
+ { label: "empty string", value: "" },
77
+ { label: "string not resolving to number", value: "abc" },
78
+ ].forEach(({ label, value }) => {
79
+ (0, fixtures_1.test)(`handles ${label} gracefully`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
80
+ yield initTestBed(`
81
+ <Fragment>
82
+ <Slider id="slider" initialValue="${value}" />
83
+ <Text testId="slider-value" value="{slider.value}" />
84
+ </Fragment>`);
85
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("0");
86
+ }));
87
+ });
88
+ (0, fixtures_1.test)("minValue sets the lower bound", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
89
+ yield initTestBed(`
90
+ <Fragment>
91
+ <Slider id="slider" minValue="5" />
92
+ <Text testId="slider-value" value="{slider.value}" />
93
+ </Fragment>`);
94
+ const slider = page.getByRole("slider");
95
+ yield (0, fixtures_1.expect)(slider).toHaveAttribute("aria-valuemin", "5");
96
+ }));
97
+ (0, fixtures_1.test)("value cannot be lower than minValue", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
98
+ yield initTestBed(`
99
+ <Fragment>
100
+ <Slider id="slider" minValue="20" maxValue="30" initialValue="10" />
101
+ <Text testId="slider-value" value="{slider.value}" />
102
+ </Fragment>`);
103
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("20");
104
+ }));
105
+ (0, fixtures_1.test)("maxValue sets the upper bound", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
106
+ yield initTestBed(`<Slider maxValue="50" />`);
107
+ const slider = page.getByRole("slider");
108
+ yield (0, fixtures_1.expect)(slider).toHaveAttribute("aria-valuemax", "50");
109
+ }));
110
+ (0, fixtures_1.test)("value cannot be larger than maxValue", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
111
+ yield initTestBed(`
112
+ <Fragment>
113
+ <Slider id="slider" maxValue="30" initialValue="40" />
114
+ <Text testId="slider-value" value="{slider.value}" />
115
+ </Fragment>`);
116
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("30");
117
+ }));
118
+ (0, fixtures_1.test)("handles invalid minValue/maxValue gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
119
+ yield initTestBed(`<Slider minValue="invalid" maxValue="invalid" />`);
120
+ const slider = page.getByRole("slider");
121
+ yield (0, fixtures_1.expect)(slider).toHaveAttribute("aria-valuemin", "0");
122
+ yield (0, fixtures_1.expect)(slider).toHaveAttribute("aria-valuemax", "10");
123
+ }));
124
+ (0, fixtures_1.test)("step defines increment value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
125
+ yield initTestBed(`
126
+ <Fragment>
127
+ <Slider id="slider" step="2" initialValue="0" />
128
+ <Text testId="slider-value" value="{slider.value}" />
129
+ </Fragment>`);
130
+ const slider = page.getByRole("slider");
131
+ yield slider.press("ArrowRight");
132
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("2");
133
+ }));
134
+ (0, fixtures_1.test)("handles fractional step values", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
135
+ yield initTestBed(`
136
+ <Fragment>
137
+ <Slider id="slider" step="0.1" initialValue="0" />
138
+ <Text testId="slider-value" value="{slider.value}" />
139
+ </Fragment>`);
140
+ const slider = page.getByRole("slider");
141
+ yield slider.press("ArrowRight");
142
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("0.1");
143
+ }));
144
+ fixtures_1.test.fixme("minStepsBetweenThumbs maintains thumb separation", component_test_helpers_1.SKIP_REASON.TO_BE_IMPLEMENTED("Need to test actual thumb separation logic"), (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
145
+ yield initTestBed(`<Slider initialValue="{[2, 7]}" minStepsBetweenThumbs="5" />`);
146
+ // Test that thumbs maintain minimum separation
147
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
148
+ }));
149
+ (0, fixtures_1.test)("enabled=false disables control", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
150
+ yield initTestBed(`<Slider enabled="false" />`);
151
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeDisabled();
152
+ }));
153
+ (0, fixtures_1.test)("readOnly prevents interaction", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
154
+ yield initTestBed(`
155
+ <Fragment>
156
+ <Slider id="mySlider" readOnly="true" />
157
+ <Text testId="slider-value" value="{mySlider.value}" />
158
+ </Fragment>`);
159
+ const slider = page.getByRole("slider");
160
+ const sliderOffsetWidth = yield page.locator("[data-track]").evaluate((el) => {
161
+ return el.getBoundingClientRect().width;
162
+ });
163
+ yield slider.hover();
164
+ yield page.mouse.down({ button: "left" });
165
+ yield page.mouse.move(sliderOffsetWidth, 0); // Attempt to drag to end
166
+ yield page.mouse.up();
167
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("0"); // Value should remain unchanged
168
+ }));
169
+ fixtures_1.test.fixme("autoFocus focuses slider on mount", component_test_helpers_1.SKIP_REASON.XMLUI_BUG("autoFocus does not seem to work with radix-ui, need to double-check"), (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
170
+ yield initTestBed(`<Slider autoFocus="true" />`);
171
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeFocused();
172
+ }));
173
+ (0, fixtures_1.test)("required shows visual indicator", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
174
+ yield initTestBed(`<Slider required="true" label="Required slider" />`);
175
+ yield (0, fixtures_1.expect)(page.getByText("Required slider")).toContainText("*");
176
+ }));
177
+ (0, fixtures_1.test)("showValues=true displays current value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
178
+ yield initTestBed(`<Slider showValues="true" initialValue="10" />`);
179
+ yield page.getByRole("slider").hover();
180
+ yield (0, fixtures_1.expect)(page.getByText("10")).toBeVisible();
181
+ }));
182
+ (0, fixtures_1.test)("showValues=false hides current value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
183
+ yield initTestBed(`<Slider showValues="false" initialValue="10" />`);
184
+ yield page.getByRole("slider").hover();
185
+ yield (0, fixtures_1.expect)(page.getByText("10")).not.toBeVisible();
186
+ }));
187
+ (0, fixtures_1.test)("valueFormat customizes value display", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
188
+ yield initTestBed(`<Slider showValues="true" initialValue="10" valueFormat="{(v) => v + '%'}" />`);
189
+ yield page.getByRole("slider").hover();
190
+ yield (0, fixtures_1.expect)(page.getByText("10%")).toBeVisible();
191
+ }));
192
+ (0, fixtures_1.test)("handles array initialValue for range", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
193
+ yield initTestBed(`<Slider initialValue="{[2, 6]}" />`);
194
+ const sliders = page.getByRole("slider");
195
+ yield sliders.first().hover();
196
+ yield (0, fixtures_1.expect)(page.getByText("2")).toBeVisible();
197
+ yield (0, fixtures_1.expect)(page.getByText("6")).toBeVisible();
198
+ }));
199
+ (0, fixtures_1.test)("maintains thumb order in range mode", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
200
+ yield initTestBed(`<Slider initialValue="{[6, 2]}" />`);
201
+ const sliders = page.getByRole("slider");
202
+ // Should auto-correct to [2, 6]
203
+ yield sliders.first().hover();
204
+ yield (0, fixtures_1.expect)(page.getByText("2")).toBeVisible();
205
+ yield (0, fixtures_1.expect)(page.getByText("6")).toBeVisible();
206
+ }));
207
+ });
208
+ // =============================================================================
209
+ // ACCESSIBILITY TESTS
210
+ // =============================================================================
211
+ fixtures_1.test.describe("Accessibility", () => {
212
+ (0, fixtures_1.test)("has correct ARIA role", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
213
+ yield initTestBed(`<Slider />`);
214
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
215
+ }));
216
+ (0, fixtures_1.test)("label is properly associated", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
217
+ yield initTestBed(`<Slider label="Volume Control" />`);
218
+ yield page.getByText("Volume Control").click();
219
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeFocused();
220
+ }));
221
+ (0, fixtures_1.test)("supports keyboard navigation", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
222
+ yield initTestBed(`
223
+ <Fragment>
224
+ <Slider id="mySlider" initialValue="5" />
225
+ <Text testId="slider-value">{mySlider.value}</Text>
226
+ </Fragment>`);
227
+ const slider = page.getByRole("slider");
228
+ yield slider.focus();
229
+ yield slider.press("ArrowRight");
230
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("6");
231
+ yield slider.press("ArrowLeft");
232
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("5");
233
+ }));
234
+ (0, fixtures_1.test)("supports Home/End key navigation", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
235
+ yield initTestBed(`
236
+ <Fragment>
237
+ <Slider id="mySlider" minValue="0" maxValue="100" initialValue="50" />
238
+ <Text testId="slider-value">{mySlider.value}</Text>
239
+ </Fragment>`);
240
+ const slider = page.getByRole("slider");
241
+ yield slider.focus();
242
+ yield slider.press("Home");
243
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("0");
244
+ yield slider.press("End");
245
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("100");
246
+ }));
247
+ (0, fixtures_1.test)("disabled slider has proper ARIA attributes", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
248
+ yield initTestBed(`<Slider enabled="false" />`);
249
+ yield (0, fixtures_1.expect)(page.locator("span").first()).toHaveAttribute("aria-disabled", "true");
250
+ }));
251
+ (0, fixtures_1.test)("required slider has proper ARIA attributes", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
252
+ yield initTestBed(`<Slider required="true" />`);
253
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toHaveAttribute("aria-required", "true");
254
+ }));
255
+ (0, fixtures_1.test)("range slider has multiple slider roles", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
256
+ yield initTestBed(`<Slider initialValue="{[3, 5]}" />`);
257
+ const sliders = page.getByRole("slider");
258
+ yield (0, fixtures_1.expect)(sliders).toHaveCount(2);
259
+ }));
260
+ });
261
+ // =============================================================================
262
+ // LABEL POSITIONING TESTS
263
+ // =============================================================================
264
+ fixtures_1.test.describe("Label", () => {
265
+ (0, fixtures_1.test)("labelPosition=top positions label above slider", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
266
+ yield initTestBed(`<Slider label="test" labelPosition="top" />`);
267
+ const { top: sliderTop } = yield (0, component_test_helpers_1.getBounds)(page.getByRole("slider"));
268
+ const { bottom: labelBottom } = yield (0, component_test_helpers_1.getBounds)(page.getByText("test"));
269
+ (0, fixtures_1.expect)(labelBottom).toBeLessThan(sliderTop);
270
+ }));
271
+ (0, fixtures_1.test)("labelPosition=start positions label before slider", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
272
+ yield initTestBed(`<Slider label="test" labelPosition="start" />`);
273
+ const { left: sliderLeft } = yield (0, component_test_helpers_1.getBounds)(page.getByRole("slider"));
274
+ const { right: labelRight } = yield (0, component_test_helpers_1.getBounds)(page.getByText("test"));
275
+ (0, fixtures_1.expect)(labelRight).toBeLessThan(sliderLeft);
276
+ }));
277
+ (0, fixtures_1.test)("labelWidth applies custom label width", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
278
+ const expected = 150;
279
+ yield initTestBed(`<Slider label="test label" labelWidth="${expected}px" />`);
280
+ const { width } = yield (0, component_test_helpers_1.getBounds)(page.getByText("test label"));
281
+ (0, fixtures_1.expect)(width).toEqual(expected);
282
+ }));
283
+ (0, fixtures_1.test)("labelBreak enables label line breaks", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
284
+ const labelText = "Very long label text that should break";
285
+ yield initTestBed(`<Slider label="${labelText}" labelWidth="100px" labelBreak="true" />`);
286
+ const label = page.getByText(labelText);
287
+ const { height } = yield (0, component_test_helpers_1.getBounds)(label);
288
+ (0, fixtures_1.expect)(height).toBeGreaterThan(20); // Assumes multi-line height
289
+ }));
290
+ (0, fixtures_1.test)("handles invalid labelPosition gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
291
+ yield initTestBed(`<Slider labelPosition="invalid" label="test" />`);
292
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
293
+ yield (0, fixtures_1.expect)(page.getByText("test")).toBeVisible();
294
+ }));
295
+ });
296
+ // =============================================================================
297
+ // EVENT HANDLING TESTS
298
+ // =============================================================================
299
+ fixtures_1.test.describe("Event Handling", () => {
300
+ (0, fixtures_1.test)("didChange event fires on value change", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
301
+ const { testStateDriver } = yield initTestBed(`
302
+ <Slider onDidChange="testState = 'changed'" initialValue="0" />
303
+ `);
304
+ const slider = page.getByRole("slider");
305
+ yield slider.focus();
306
+ yield slider.press("ArrowRight");
307
+ yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("changed");
308
+ }));
309
+ (0, fixtures_1.test)("didChange event passes new value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
310
+ const { testStateDriver } = yield initTestBed(`
311
+ <Slider onDidChange="arg => testState = arg" initialValue="1" />
312
+ `);
313
+ const slider = page.getByRole("slider");
314
+ yield slider.focus();
315
+ yield slider.press("ArrowRight");
316
+ yield fixtures_1.expect.poll(testStateDriver.testState).toEqual(2);
317
+ }));
318
+ (0, fixtures_1.test)("gotFocus event fires on focus", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
319
+ const { testStateDriver } = yield initTestBed(`
320
+ <Slider onGotFocus="testState = 'focused'" />
321
+ `);
322
+ yield page.getByRole("slider").focus();
323
+ yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("focused");
324
+ }));
325
+ (0, fixtures_1.test)("lostFocus event fires on blur", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
326
+ const { testStateDriver } = yield initTestBed(`
327
+ <Slider onLostFocus="testState = 'blurred'" />
328
+ `);
329
+ const slider = page.getByRole("slider");
330
+ yield slider.focus();
331
+ yield slider.blur();
332
+ yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("blurred");
333
+ }));
334
+ (0, fixtures_1.test)("events do not fire when disabled", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
335
+ const { testStateDriver } = yield initTestBed(`
336
+ <Slider enabled="false" onDidChange="testState = 'changed'" onGotFocus="testState = 'focused'" />
337
+ `);
338
+ const slider = page.getByRole("slider");
339
+ yield slider.focus();
340
+ yield slider.press("ArrowRight");
341
+ yield fixtures_1.expect.poll(testStateDriver.testState).toEqual(null);
342
+ }));
343
+ });
344
+ // =============================================================================
345
+ // API TESTS
346
+ // =============================================================================
347
+ fixtures_1.test.describe("Api", () => {
348
+ (0, fixtures_1.test)("value API returns current state", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
349
+ yield initTestBed(`
350
+ <Fragment>
351
+ <Slider id="mySlider" initialValue="5" />
352
+ <Text testId="value">{mySlider.value}</Text>
353
+ </Fragment>
354
+ `);
355
+ yield (0, fixtures_1.expect)(page.getByTestId("value")).toHaveText("5");
356
+ }));
357
+ (0, fixtures_1.test)("value API returns state after change", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
358
+ yield initTestBed(`
359
+ <Fragment>
360
+ <Slider id="mySlider" initialValue="1" />
361
+ <Text testId="value">{mySlider.value}</Text>
362
+ </Fragment>
363
+ `);
364
+ const slider = page.getByRole("slider");
365
+ yield slider.focus();
366
+ yield slider.press("ArrowRight");
367
+ yield (0, fixtures_1.expect)(page.getByTestId("value")).toHaveText("2");
368
+ }));
369
+ (0, fixtures_1.test)("setValue API updates state", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
370
+ yield initTestBed(`
371
+ <Fragment>
372
+ <Slider id="mySlider" />
373
+ <Button testId="setBtn" onClick="mySlider.setValue(5)" label="{mySlider.value}" />
374
+ </Fragment>
375
+ `);
376
+ yield page.getByTestId("setBtn").click();
377
+ yield (0, fixtures_1.expect)(page.getByTestId("setBtn")).toHaveText("5");
378
+ }));
379
+ (0, fixtures_1.test)("setValue API triggers events", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
380
+ const { testStateDriver } = yield initTestBed(`
381
+ <Fragment>
382
+ <Slider id="mySlider" onDidChange="testState = 'api-changed'" />
383
+ <Button testId="setBtn" onClick="mySlider.setValue(75)" />
384
+ </Fragment>
385
+ `);
386
+ yield page.getByTestId("setBtn").click();
387
+ yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("api-changed");
388
+ }));
389
+ (0, fixtures_1.test)("focus API focuses the slider", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
390
+ yield initTestBed(`
391
+ <Fragment>
392
+ <Slider id="mySlider" />
393
+ <Button testId="focusBtn" onClick="mySlider.focus()" />
394
+ </Fragment>
395
+ `);
396
+ const slider = page.getByRole("slider");
397
+ yield (0, fixtures_1.expect)(slider).not.toBeFocused();
398
+ yield page.getByTestId("focusBtn").click();
399
+ yield (0, fixtures_1.expect)(slider).toBeFocused();
400
+ }));
401
+ (0, fixtures_1.test)("focus API does nothing when disabled", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
402
+ yield initTestBed(`
403
+ <Fragment>
404
+ <Slider id="mySlider" enabled="false" />
405
+ <Button testId="focusBtn" onClick="mySlider.focus()" />
406
+ </Fragment>
407
+ `);
408
+ yield page.getByTestId("focusBtn").click();
409
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).not.toBeFocused();
410
+ }));
411
+ (0, fixtures_1.test)("setValue does not update when disabled", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
412
+ yield initTestBed(`
413
+ <Fragment>
414
+ <Slider id="mySlider" enabled="false" initialValue="5" />
415
+ <Button testId="setBtn" onClick="mySlider.setValue(10)" label="{mySlider.value}" />
416
+ </Fragment>
417
+ `);
418
+ yield page.getByTestId("setBtn").click();
419
+ yield (0, fixtures_1.expect)(page.getByTestId("setBtn")).toHaveText("5");
420
+ }));
421
+ (0, fixtures_1.test)("setValue handles invalid values gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
422
+ yield initTestBed(`
423
+ <Fragment>
424
+ <Slider id="mySlider" initialValue="5" minValue="0" />
425
+ <Button testId="setBtn" onClick="mySlider.setValue('invalid')" label="{mySlider.value}" />
426
+ </Fragment>
427
+ `);
428
+ yield page.getByTestId("setBtn").click();
429
+ yield (0, fixtures_1.expect)(page.getByTestId("setBtn")).toHaveText("0");
430
+ }));
431
+ });
432
+ // =============================================================================
433
+ // THEME VARIABLE TESTS
434
+ // =============================================================================
435
+ fixtures_1.test.describe("Theme Variables", () => {
436
+ (0, fixtures_1.test)("backgroundColor-track applies correctly", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
437
+ yield initTestBed(`<Slider testId="slider" />`, {
438
+ testThemeVars: {
439
+ "backgroundColor-track-Slider": "rgb(255, 0, 0)",
440
+ },
441
+ });
442
+ const track = page.locator("[data-track]");
443
+ yield (0, fixtures_1.expect)(track).toHaveCSS("background-color", "rgb(255, 0, 0)");
444
+ }));
445
+ (0, fixtures_1.test)("backgroundColor-range applies correctly", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
446
+ yield initTestBed(`<Slider testId="slider" initialValue="5" />`, {
447
+ testThemeVars: {
448
+ "backgroundColor-range-Slider": "rgb(0, 255, 0)",
449
+ },
450
+ });
451
+ const range = page.locator("[data-range]");
452
+ yield (0, fixtures_1.expect)(range).toHaveCSS("background-color", "rgb(0, 255, 0)");
453
+ }));
454
+ (0, fixtures_1.test)("backgroundColor-thumb applies correctly", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
455
+ yield initTestBed(`<Slider testId="slider" />`, {
456
+ testThemeVars: {
457
+ "backgroundColor-thumb-Slider": "rgb(0, 0, 255)",
458
+ },
459
+ });
460
+ const thumb = page.getByRole("slider");
461
+ yield (0, fixtures_1.expect)(thumb).toHaveCSS("background-color", "rgb(0, 0, 255)");
462
+ }));
463
+ (0, fixtures_1.test)("disabled theme variables apply when disabled", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
464
+ yield initTestBed(`<Slider testId="slider" enabled="false" />`, {
465
+ testThemeVars: {
466
+ "backgroundColor-track-Slider--disabled": "rgb(200, 200, 200)",
467
+ },
468
+ });
469
+ const track = page.locator("[data-track]");
470
+ yield (0, fixtures_1.expect)(track).toHaveCSS("background-color", "rgb(200, 200, 200)");
471
+ }));
472
+ (0, fixtures_1.test)("focus theme variables apply on focus", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
473
+ yield initTestBed(`<Slider testId="slider" />`, {
474
+ testThemeVars: {
475
+ "boxShadow-thumb-Slider--focus": "rgb(0, 123, 255) 0px 0px 10px 0px",
476
+ },
477
+ });
478
+ const slider = page.getByRole("slider");
479
+ yield slider.focus();
480
+ yield (0, fixtures_1.expect)(slider).toHaveCSS("box-shadow", "rgb(0, 123, 255) 0px 0px 10px 0px");
481
+ }));
482
+ (0, fixtures_1.test)("hover theme variables apply on hover", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
483
+ yield initTestBed(`<Slider testId="slider" />`, {
484
+ testThemeVars: {
485
+ "boxShadow-thumb-Slider--hover": "rgb(0, 0, 0) 0px 0px 5px 0px",
486
+ },
487
+ });
488
+ const slider = page.getByRole("slider");
489
+ yield slider.hover();
490
+ yield (0, fixtures_1.expect)(slider).toHaveCSS("box-shadow", "rgb(0, 0, 0) 0px 0px 5px 0px");
491
+ }));
492
+ });
493
+ // =============================================================================
494
+ // VALIDATION STATUS TESTS
495
+ // =============================================================================
496
+ fixtures_1.test.describe("Validation", () => {
497
+ (0, fixtures_1.test)(`validationStatus=error applies correctly`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
498
+ yield initTestBed(`<Slider validationStatus="error" />`, {
499
+ testThemeVars: {
500
+ [`borderColor-Slider-error`]: "rgb(255, 0, 0)",
501
+ },
502
+ });
503
+ const sliderTrack = page.locator("[data-track]");
504
+ yield (0, fixtures_1.expect)(sliderTrack).toHaveCSS("border-color", "rgb(255, 0, 0)");
505
+ }));
506
+ // NOTE: warning color is not applied correctly
507
+ fixtures_1.test.fixme(`validationStatus=warning applies correctly`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
508
+ yield initTestBed(`<Slider validationStatus="warning" />`, {
509
+ testThemeVars: {
510
+ [`borderColor-Slider-warning`]: "rgb(255, 165, 0)",
511
+ },
512
+ });
513
+ const sliderTrack = page.locator("[data-track]");
514
+ yield (0, fixtures_1.expect)(sliderTrack).toHaveCSS("border-color", "rgb(218, 127, 0)");
515
+ }));
516
+ (0, fixtures_1.test)(`validationStatus=valid applies correctly`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
517
+ yield initTestBed(`<Slider validationStatus="valid" />`, {
518
+ testThemeVars: {
519
+ [`borderColor-Slider-success`]: "rgb(0, 255, 0)",
520
+ },
521
+ });
522
+ const sliderTrack = page.locator("[data-track]");
523
+ yield (0, fixtures_1.expect)(sliderTrack).toHaveCSS("border-color", "rgb(0, 255, 0)");
524
+ }));
525
+ (0, fixtures_1.test)("handles invalid validationStatus gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
526
+ yield initTestBed(`<Slider validationStatus="invalid" />`);
527
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
528
+ }));
529
+ });
530
+ // =============================================================================
531
+ // EDGE CASE TESTS
532
+ // =============================================================================
533
+ fixtures_1.test.describe("Edge Cases", () => {
534
+ (0, fixtures_1.test)("handles extremely large values", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
535
+ yield initTestBed(`
536
+ <Fragment>
537
+ <Slider id="mySlider" initialValue="${Number.MAX_SAFE_INTEGER}" maxValue="${Number.MAX_SAFE_INTEGER}" />
538
+ <Text testId="slider-value" value="{mySlider.value}" />
539
+ </Fragment>`);
540
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText(Number.MAX_SAFE_INTEGER.toString());
541
+ }));
542
+ (0, fixtures_1.test)("handles negative values", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
543
+ yield initTestBed(`
544
+ <Fragment>
545
+ <Slider id="mySlider" minValue="-100" maxValue="0" initialValue="-50" />
546
+ <Text testId="slider-value" value="{mySlider.value}" />
547
+ </Fragment>`);
548
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText("-50");
549
+ }));
550
+ (0, fixtures_1.test)("handles very small step values", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
551
+ yield initTestBed(`
552
+ <Fragment>
553
+ <Slider id="mySlider" step="0.000000001" initialValue="0" />
554
+ <Text testId="slider-value" value="{mySlider.value}" />
555
+ </Fragment>`);
556
+ const slider = page.getByRole("slider");
557
+ yield slider.focus();
558
+ yield slider.press("ArrowRight");
559
+ yield (0, fixtures_1.expect)(page.getByTestId("slider-value")).toHaveText((0.000000001).toExponential());
560
+ }));
561
+ (0, fixtures_1.test)("handles conflicting min/max values", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
562
+ yield initTestBed(`<Slider minValue="100" maxValue="50" />`);
563
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
564
+ }));
565
+ (0, fixtures_1.test)("handles zero step value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
566
+ yield initTestBed(`<Slider step="0" />`);
567
+ yield (0, fixtures_1.expect)(page.getByRole("slider")).toBeVisible();
568
+ }));
569
+ (0, fixtures_1.test)("handles range with identical values", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
570
+ yield initTestBed(`<Slider initialValue="{[50, 50]}" />`);
571
+ const sliders = page.getByRole("slider");
572
+ yield (0, fixtures_1.expect)(sliders).toHaveCount(2);
573
+ }));
574
+ });