@siemens/ix 0.0.0-pr-1974-20250627115746 → 0.0.0-pr-1974-20250627142646
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.
- package/package.json +2 -2
- package/dist/collection/components/application-header/test/application-header.ct.js +0 -389
- package/dist/collection/components/application-header/test/application-header.ct.js.map +0 -1
- package/dist/collection/components/avatar/test/avatar.ct.js +0 -85
- package/dist/collection/components/avatar/test/avatar.ct.js.map +0 -1
- package/dist/collection/components/blind/test/blind.ct.js +0 -16
- package/dist/collection/components/blind/test/blind.ct.js.map +0 -1
- package/dist/collection/components/breadcrumb/test/breadcrumb.ct.js +0 -98
- package/dist/collection/components/breadcrumb/test/breadcrumb.ct.js.map +0 -1
- package/dist/collection/components/button/test/button.ct.js +0 -153
- package/dist/collection/components/button/test/button.ct.js.map +0 -1
- package/dist/collection/components/category-filter/test/category-filter.ct.js +0 -62
- package/dist/collection/components/category-filter/test/category-filter.ct.js.map +0 -1
- package/dist/collection/components/checkbox/tests/checkbox.ct.js +0 -86
- package/dist/collection/components/checkbox/tests/checkbox.ct.js.map +0 -1
- package/dist/collection/components/checkbox-group/test/checkbox-group.ct.js +0 -48
- package/dist/collection/components/checkbox-group/test/checkbox-group.ct.js.map +0 -1
- package/dist/collection/components/chip/test/chip.ct.js +0 -76
- package/dist/collection/components/chip/test/chip.ct.js.map +0 -1
- package/dist/collection/components/custom-field/tests/custom-field.ct.js +0 -68
- package/dist/collection/components/custom-field/tests/custom-field.ct.js.map +0 -1
- package/dist/collection/components/date-dropdown/test/date-dropdown.ct.js +0 -215
- package/dist/collection/components/date-dropdown/test/date-dropdown.ct.js.map +0 -1
- package/dist/collection/components/date-input/tests/date-input.ct.js +0 -117
- package/dist/collection/components/date-input/tests/date-input.ct.js.map +0 -1
- package/dist/collection/components/date-picker/test/date-picker.ct.js +0 -221
- package/dist/collection/components/date-picker/test/date-picker.ct.js.map +0 -1
- package/dist/collection/components/datetime-picker/test/datetime-picker.ct.js +0 -55
- package/dist/collection/components/datetime-picker/test/datetime-picker.ct.js.map +0 -1
- package/dist/collection/components/drawer/test/drawer.ct.js +0 -67
- package/dist/collection/components/drawer/test/drawer.ct.js.map +0 -1
- package/dist/collection/components/dropdown/test/dropdown.ct.js +0 -624
- package/dist/collection/components/dropdown/test/dropdown.ct.js.map +0 -1
- package/dist/collection/components/dropdown-button/dropdown-button.ct.js +0 -51
- package/dist/collection/components/dropdown-button/dropdown-button.ct.js.map +0 -1
- package/dist/collection/components/event-list/test/event-list.ct.js +0 -88
- package/dist/collection/components/event-list/test/event-list.ct.js.map +0 -1
- package/dist/collection/components/expanding-search/test/expanding-search.ct.js +0 -56
- package/dist/collection/components/expanding-search/test/expanding-search.ct.js.map +0 -1
- package/dist/collection/components/field-label/tests/field-label.ct.js +0 -121
- package/dist/collection/components/field-label/tests/field-label.ct.js.map +0 -1
- package/dist/collection/components/field-wrapper/tests/field-wrapper.ct.js +0 -63
- package/dist/collection/components/field-wrapper/tests/field-wrapper.ct.js.map +0 -1
- package/dist/collection/components/flip-tile/test/flip-tile.ct.js +0 -89
- package/dist/collection/components/flip-tile/test/flip-tile.ct.js.map +0 -1
- package/dist/collection/components/group/test/group.ct.js +0 -115
- package/dist/collection/components/group/test/group.ct.js.map +0 -1
- package/dist/collection/components/icon-button/test/icon-button.ct.js +0 -30
- package/dist/collection/components/icon-button/test/icon-button.ct.js.map +0 -1
- package/dist/collection/components/input/tests/form-ready.ct.js +0 -73
- package/dist/collection/components/input/tests/form-ready.ct.js.map +0 -1
- package/dist/collection/components/input/tests/validation.ct.js +0 -84
- package/dist/collection/components/input/tests/validation.ct.js.map +0 -1
- package/dist/collection/components/input-group/tests/input-group.ct.js +0 -161
- package/dist/collection/components/input-group/tests/input-group.ct.js.map +0 -1
- package/dist/collection/components/menu/test/menu.ct.js +0 -256
- package/dist/collection/components/menu/test/menu.ct.js.map +0 -1
- package/dist/collection/components/menu-about/test/menu-about.ct.js +0 -65
- package/dist/collection/components/menu-about/test/menu-about.ct.js.map +0 -1
- package/dist/collection/components/menu-avatar-item/test/menu-avatar-item.ct.js +0 -47
- package/dist/collection/components/menu-avatar-item/test/menu-avatar-item.ct.js.map +0 -1
- package/dist/collection/components/menu-category/test/menu-category.ct.js +0 -274
- package/dist/collection/components/menu-category/test/menu-category.ct.js.map +0 -1
- package/dist/collection/components/menu-item/test/menu-item.ct.js +0 -67
- package/dist/collection/components/menu-item/test/menu-item.ct.js.map +0 -1
- package/dist/collection/components/menu-settings/test/menu-settings.ct.js +0 -32
- package/dist/collection/components/menu-settings/test/menu-settings.ct.js.map +0 -1
- package/dist/collection/components/message-bar/test/message-bar.ct.js +0 -28
- package/dist/collection/components/message-bar/test/message-bar.ct.js.map +0 -1
- package/dist/collection/components/modal/test/modal.ct.js +0 -204
- package/dist/collection/components/modal/test/modal.ct.js.map +0 -1
- package/dist/collection/components/pagination/test/pagination.ct.js +0 -68
- package/dist/collection/components/pagination/test/pagination.ct.js.map +0 -1
- package/dist/collection/components/pane/test/panes.ct.js +0 -59
- package/dist/collection/components/pane/test/panes.ct.js.map +0 -1
- package/dist/collection/components/pane-layout/test/pane-layout.ct.js +0 -60
- package/dist/collection/components/pane-layout/test/pane-layout.ct.js.map +0 -1
- package/dist/collection/components/pill/test/pill.ct.js +0 -63
- package/dist/collection/components/pill/test/pill.ct.js.map +0 -1
- package/dist/collection/components/radio/test/radio.ct.js +0 -77
- package/dist/collection/components/radio/test/radio.ct.js.map +0 -1
- package/dist/collection/components/radio-group/test/radio-group.ct.js +0 -117
- package/dist/collection/components/radio-group/test/radio-group.ct.js.map +0 -1
- package/dist/collection/components/select/test/select-keyboard.ct.js +0 -380
- package/dist/collection/components/select/test/select-keyboard.ct.js.map +0 -1
- package/dist/collection/components/select/test/select.ct.js +0 -594
- package/dist/collection/components/select/test/select.ct.js.map +0 -1
- package/dist/collection/components/slider/test/slider.ct.js +0 -65
- package/dist/collection/components/slider/test/slider.ct.js.map +0 -1
- package/dist/collection/components/tabs/test/tabs.ct.js +0 -134
- package/dist/collection/components/tabs/test/tabs.ct.js.map +0 -1
- package/dist/collection/components/time-input/test/time-input.ct.js +0 -62
- package/dist/collection/components/time-input/test/time-input.ct.js.map +0 -1
- package/dist/collection/components/time-picker/test/time-picker.ct.js +0 -172
- package/dist/collection/components/time-picker/test/time-picker.ct.js.map +0 -1
- package/dist/collection/components/toggle/test/toggle.ct.js +0 -84
- package/dist/collection/components/toggle/test/toggle.ct.js.map +0 -1
- package/dist/collection/components/tooltip/test/tooltip.ct.js +0 -243
- package/dist/collection/components/tooltip/test/tooltip.ct.js.map +0 -1
- package/dist/collection/components/tree/test/tree.ct.js +0 -355
- package/dist/collection/components/tree/test/tree.ct.js.map +0 -1
- package/dist/collection/components/upload/test/upload.ct.js +0 -17
- package/dist/collection/components/upload/test/upload.ct.js.map +0 -1
- package/dist/collection/components/workflow-steps/test/workflow-steps.ct.js +0 -74
- package/dist/collection/components/workflow-steps/test/workflow-steps.ct.js.map +0 -1
- package/dist/collection/tests/utils/test/matchMedia.mock.js +0 -22
- package/dist/types/components/application-header/test/application-header.ct.d.ts +0 -1
- package/dist/types/components/avatar/test/avatar.ct.d.ts +0 -1
- package/dist/types/components/blind/test/blind.ct.d.ts +0 -1
- package/dist/types/components/breadcrumb/test/breadcrumb.ct.d.ts +0 -1
- package/dist/types/components/button/test/button.ct.d.ts +0 -7
- package/dist/types/components/category-filter/test/category-filter.ct.d.ts +0 -1
- package/dist/types/components/checkbox/tests/checkbox.ct.d.ts +0 -1
- package/dist/types/components/checkbox-group/test/checkbox-group.ct.d.ts +0 -1
- package/dist/types/components/chip/test/chip.ct.d.ts +0 -1
- package/dist/types/components/custom-field/tests/custom-field.ct.d.ts +0 -1
- package/dist/types/components/date-dropdown/test/date-dropdown.ct.d.ts +0 -1
- package/dist/types/components/date-input/tests/date-input.ct.d.ts +0 -1
- package/dist/types/components/date-picker/test/date-picker.ct.d.ts +0 -1
- package/dist/types/components/datetime-picker/test/datetime-picker.ct.d.ts +0 -1
- package/dist/types/components/drawer/test/drawer.ct.d.ts +0 -1
- package/dist/types/components/dropdown/test/dropdown.ct.d.ts +0 -1
- package/dist/types/components/dropdown-button/dropdown-button.ct.d.ts +0 -1
- package/dist/types/components/event-list/test/event-list.ct.d.ts +0 -1
- package/dist/types/components/expanding-search/test/expanding-search.ct.d.ts +0 -1
- package/dist/types/components/field-label/tests/field-label.ct.d.ts +0 -1
- package/dist/types/components/field-wrapper/tests/field-wrapper.ct.d.ts +0 -1
- package/dist/types/components/flip-tile/test/flip-tile.ct.d.ts +0 -1
- package/dist/types/components/group/test/group.ct.d.ts +0 -1
- package/dist/types/components/icon-button/test/icon-button.ct.d.ts +0 -1
- package/dist/types/components/input/tests/form-ready.ct.d.ts +0 -1
- package/dist/types/components/input/tests/validation.ct.d.ts +0 -1
- package/dist/types/components/input-group/tests/input-group.ct.d.ts +0 -1
- package/dist/types/components/menu/test/menu.ct.d.ts +0 -1
- package/dist/types/components/menu-about/test/menu-about.ct.d.ts +0 -1
- package/dist/types/components/menu-avatar-item/test/menu-avatar-item.ct.d.ts +0 -1
- package/dist/types/components/menu-category/test/menu-category.ct.d.ts +0 -1
- package/dist/types/components/menu-item/test/menu-item.ct.d.ts +0 -1
- package/dist/types/components/menu-settings/test/menu-settings.ct.d.ts +0 -1
- package/dist/types/components/message-bar/test/message-bar.ct.d.ts +0 -1
- package/dist/types/components/modal/test/modal.ct.d.ts +0 -8
- package/dist/types/components/pagination/test/pagination.ct.d.ts +0 -1
- package/dist/types/components/pane/test/panes.ct.d.ts +0 -1
- package/dist/types/components/pane-layout/test/pane-layout.ct.d.ts +0 -1
- package/dist/types/components/pill/test/pill.ct.d.ts +0 -1
- package/dist/types/components/radio/test/radio.ct.d.ts +0 -1
- package/dist/types/components/radio-group/test/radio-group.ct.d.ts +0 -1
- package/dist/types/components/select/test/select-keyboard.ct.d.ts +0 -1
- package/dist/types/components/select/test/select.ct.d.ts +0 -1
- package/dist/types/components/slider/test/slider.ct.d.ts +0 -1
- package/dist/types/components/tabs/test/tabs.ct.d.ts +0 -1
- package/dist/types/components/time-input/test/time-input.ct.d.ts +0 -1
- package/dist/types/components/time-picker/test/time-picker.ct.d.ts +0 -1
- package/dist/types/components/toggle/test/toggle.ct.d.ts +0 -1
- package/dist/types/components/tooltip/test/tooltip.ct.d.ts +0 -1
- package/dist/types/components/tree/test/tree.ct.d.ts +0 -1
- package/dist/types/components/upload/test/upload.ct.d.ts +0 -1
- package/dist/types/components/workflow-steps/test/workflow-steps.ct.d.ts +0 -1
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* SPDX-FileCopyrightText: 2024 Siemens AG
|
|
3
|
-
*
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/
|
|
9
|
-
import { expect } from "@playwright/test";
|
|
10
|
-
import { regressionTest } from "../../../tests/utils/test/index";
|
|
11
|
-
regressionTest('renders', async ({ mount, page }) => {
|
|
12
|
-
await mount(`
|
|
13
|
-
<ix-radio-group>
|
|
14
|
-
<ix-radio label="Option 1" value="option1"></ix-radio>
|
|
15
|
-
<ix-radio label="Option 2" value="option2"></ix-radio>
|
|
16
|
-
<ix-radio label="Option 3" value="option3"></ix-radio>
|
|
17
|
-
</ix-radio-group>
|
|
18
|
-
`);
|
|
19
|
-
const radioGroupElement = page.locator('ix-radio-group');
|
|
20
|
-
const radioOption1 = page.locator('ix-radio').nth(0);
|
|
21
|
-
const radioOption2 = page.locator('ix-radio').nth(1);
|
|
22
|
-
const radioOption3 = page.locator('ix-radio').nth(2);
|
|
23
|
-
await expect(radioGroupElement).toHaveClass(/hydrated/);
|
|
24
|
-
await expect(radioOption1).toHaveClass(/hydrated/);
|
|
25
|
-
await expect(radioOption2).toHaveClass(/hydrated/);
|
|
26
|
-
await expect(radioOption3).toHaveClass(/hydrated/);
|
|
27
|
-
});
|
|
28
|
-
regressionTest('required', async ({ mount, page }) => {
|
|
29
|
-
await mount(`
|
|
30
|
-
<ix-radio-group label="example">
|
|
31
|
-
<ix-radio label="Option 1" value="option1"></ix-radio>
|
|
32
|
-
<ix-radio label="Option 2" value="option2" required></ix-radio>
|
|
33
|
-
<ix-radio label="Option 3" value="option3"></ix-radio>
|
|
34
|
-
</ix-radio-group>
|
|
35
|
-
`);
|
|
36
|
-
const radioGroupElement = page.locator('ix-radio-group');
|
|
37
|
-
await expect(radioGroupElement).toHaveClass(/hydrated/);
|
|
38
|
-
await expect(radioGroupElement).toHaveText(/example\*/);
|
|
39
|
-
const radioOption1 = page.locator('ix-radio').nth(0);
|
|
40
|
-
await page.keyboard.press('Tab');
|
|
41
|
-
await page.keyboard.press('Tab');
|
|
42
|
-
await expect(radioGroupElement).toHaveClass(/ix-invalid--required/);
|
|
43
|
-
await expect(radioOption1).toHaveClass(/ix-invalid--required/);
|
|
44
|
-
});
|
|
45
|
-
regressionTest('initial checked', async ({ mount, page }) => {
|
|
46
|
-
await mount(`
|
|
47
|
-
<ix-radio-group>
|
|
48
|
-
<ix-radio label="Option 1" value="option1"></ix-radio>
|
|
49
|
-
<ix-radio label="Option 2" value="option2" checked></ix-radio>
|
|
50
|
-
<ix-radio label="Option 3" value="option3"></ix-radio>
|
|
51
|
-
</ix-radio-group>
|
|
52
|
-
`);
|
|
53
|
-
const radioGroupElement = page.locator('ix-radio-group');
|
|
54
|
-
const radioOption1 = page.locator('ix-radio').nth(0);
|
|
55
|
-
const radioOption2 = page.locator('ix-radio').nth(1);
|
|
56
|
-
const radioOption3 = page.locator('ix-radio').nth(2);
|
|
57
|
-
await expect(radioGroupElement).toHaveClass(/hydrated/);
|
|
58
|
-
await expect(radioOption1).toHaveClass(/hydrated/);
|
|
59
|
-
await expect(radioOption2).toHaveClass(/hydrated/);
|
|
60
|
-
await expect(radioOption3).toHaveClass(/hydrated/);
|
|
61
|
-
await expect(radioOption2.locator('.checkmark')).toBeVisible();
|
|
62
|
-
});
|
|
63
|
-
regressionTest('change checked', async ({ mount, page }) => {
|
|
64
|
-
await mount(`
|
|
65
|
-
<ix-radio-group>
|
|
66
|
-
<ix-radio label="Option 1" value="option1"></ix-radio>
|
|
67
|
-
<ix-radio label="Option 2" value="option2" checked></ix-radio>
|
|
68
|
-
<ix-radio label="Option 3" value="option3"></ix-radio>
|
|
69
|
-
</ix-radio-group>
|
|
70
|
-
`);
|
|
71
|
-
const radioGroupElement = page.locator('ix-radio-group');
|
|
72
|
-
const radioOption1 = page.locator('ix-radio').nth(0);
|
|
73
|
-
const radioOption2 = page.locator('ix-radio').nth(1);
|
|
74
|
-
const radioOption3 = page.locator('ix-radio').nth(2);
|
|
75
|
-
await expect(radioGroupElement).toHaveClass(/hydrated/);
|
|
76
|
-
await expect(radioOption1).toHaveClass(/hydrated/);
|
|
77
|
-
await expect(radioOption2).toHaveClass(/hydrated/);
|
|
78
|
-
await expect(radioOption2.locator('.checkmark')).toBeVisible();
|
|
79
|
-
await expect(radioOption3).toHaveClass(/hydrated/);
|
|
80
|
-
await radioOption3.click();
|
|
81
|
-
await expect(radioOption2).not.toHaveAttribute('checked');
|
|
82
|
-
await expect(radioOption2.locator('.checkmark')).not.toBeVisible();
|
|
83
|
-
await expect(radioOption3.locator('.checkmark')).toBeVisible();
|
|
84
|
-
await expect(radioOption3).toHaveAttribute('checked');
|
|
85
|
-
});
|
|
86
|
-
regressionTest('emit group changed change', async ({ mount, page }) => {
|
|
87
|
-
await mount(`
|
|
88
|
-
<ix-radio-group>
|
|
89
|
-
<ix-radio label="Option 1" value="option1"></ix-radio>
|
|
90
|
-
<ix-radio label="Option 2" value="option2" checked></ix-radio>
|
|
91
|
-
<ix-radio label="Option 3" value="option3"></ix-radio>
|
|
92
|
-
</ix-radio-group>
|
|
93
|
-
`);
|
|
94
|
-
const radioGroupElement = page.locator('ix-radio-group');
|
|
95
|
-
const radioOption3 = page.locator('ix-radio').nth(2);
|
|
96
|
-
const onValueChange = radioGroupElement.evaluate((el) => new Promise((resolve) => {
|
|
97
|
-
el.addEventListener('valueChange', (event) => {
|
|
98
|
-
const customEvent = event;
|
|
99
|
-
resolve(customEvent.detail);
|
|
100
|
-
});
|
|
101
|
-
}));
|
|
102
|
-
await radioOption3.click();
|
|
103
|
-
expect(await onValueChange).toEqual('option3');
|
|
104
|
-
});
|
|
105
|
-
regressionTest('disabled', async ({ mount, page }) => {
|
|
106
|
-
await mount(`
|
|
107
|
-
<ix-radio-group>
|
|
108
|
-
<ix-radio label="Option 1" value="option1"></ix-radio>
|
|
109
|
-
<ix-radio label="Option 2" value="option2" checked></ix-radio>
|
|
110
|
-
<ix-radio label="Option 3" value="option3" disabled></ix-radio>
|
|
111
|
-
</ix-radio-group>
|
|
112
|
-
`);
|
|
113
|
-
const radioOption3 = page.locator('ix-radio').nth(2);
|
|
114
|
-
await expect(radioOption3).not.toBeEnabled();
|
|
115
|
-
await expect(radioOption3.locator('.checkmark')).not.toBeVisible();
|
|
116
|
-
});
|
|
117
|
-
//# sourceMappingURL=radio-group.ct.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.ct.js","sourceRoot":"","sources":["../../../../src/components/radio-group/test/radio-group.ct.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { expect } from '@playwright/test';\nimport { regressionTest } from '@utils/test';\n\nregressionTest('renders', async ({ mount, page }) => {\n await mount(\n `\n <ix-radio-group>\n <ix-radio label=\"Option 1\" value=\"option1\"></ix-radio>\n <ix-radio label=\"Option 2\" value=\"option2\"></ix-radio>\n <ix-radio label=\"Option 3\" value=\"option3\"></ix-radio>\n </ix-radio-group>\n `\n );\n const radioGroupElement = page.locator('ix-radio-group');\n const radioOption1 = page.locator('ix-radio').nth(0);\n const radioOption2 = page.locator('ix-radio').nth(1);\n const radioOption3 = page.locator('ix-radio').nth(2);\n await expect(radioGroupElement).toHaveClass(/hydrated/);\n await expect(radioOption1).toHaveClass(/hydrated/);\n await expect(radioOption2).toHaveClass(/hydrated/);\n await expect(radioOption3).toHaveClass(/hydrated/);\n});\n\nregressionTest('required', async ({ mount, page }) => {\n await mount(\n `\n <ix-radio-group label=\"example\">\n <ix-radio label=\"Option 1\" value=\"option1\"></ix-radio>\n <ix-radio label=\"Option 2\" value=\"option2\" required></ix-radio>\n <ix-radio label=\"Option 3\" value=\"option3\"></ix-radio>\n </ix-radio-group>\n `\n );\n const radioGroupElement = page.locator('ix-radio-group');\n await expect(radioGroupElement).toHaveClass(/hydrated/);\n await expect(radioGroupElement).toHaveText(/example\\*/);\n\n const radioOption1 = page.locator('ix-radio').nth(0);\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n\n await expect(radioGroupElement).toHaveClass(/ix-invalid--required/);\n await expect(radioOption1).toHaveClass(/ix-invalid--required/);\n});\n\nregressionTest('initial checked', async ({ mount, page }) => {\n await mount(\n `\n <ix-radio-group>\n <ix-radio label=\"Option 1\" value=\"option1\"></ix-radio>\n <ix-radio label=\"Option 2\" value=\"option2\" checked></ix-radio>\n <ix-radio label=\"Option 3\" value=\"option3\"></ix-radio>\n </ix-radio-group>\n `\n );\n const radioGroupElement = page.locator('ix-radio-group');\n const radioOption1 = page.locator('ix-radio').nth(0);\n const radioOption2 = page.locator('ix-radio').nth(1);\n const radioOption3 = page.locator('ix-radio').nth(2);\n await expect(radioGroupElement).toHaveClass(/hydrated/);\n await expect(radioOption1).toHaveClass(/hydrated/);\n await expect(radioOption2).toHaveClass(/hydrated/);\n await expect(radioOption3).toHaveClass(/hydrated/);\n\n await expect(radioOption2.locator('.checkmark')).toBeVisible();\n});\n\nregressionTest('change checked', async ({ mount, page }) => {\n await mount(\n `\n <ix-radio-group>\n <ix-radio label=\"Option 1\" value=\"option1\"></ix-radio>\n <ix-radio label=\"Option 2\" value=\"option2\" checked></ix-radio>\n <ix-radio label=\"Option 3\" value=\"option3\"></ix-radio>\n </ix-radio-group>\n `\n );\n const radioGroupElement = page.locator('ix-radio-group');\n const radioOption1 = page.locator('ix-radio').nth(0);\n const radioOption2 = page.locator('ix-radio').nth(1);\n const radioOption3 = page.locator('ix-radio').nth(2);\n await expect(radioGroupElement).toHaveClass(/hydrated/);\n await expect(radioOption1).toHaveClass(/hydrated/);\n await expect(radioOption2).toHaveClass(/hydrated/);\n await expect(radioOption2.locator('.checkmark')).toBeVisible();\n await expect(radioOption3).toHaveClass(/hydrated/);\n\n await radioOption3.click();\n\n await expect(radioOption2).not.toHaveAttribute('checked');\n await expect(radioOption2.locator('.checkmark')).not.toBeVisible();\n await expect(radioOption3.locator('.checkmark')).toBeVisible();\n await expect(radioOption3).toHaveAttribute('checked');\n});\n\nregressionTest('emit group changed change', async ({ mount, page }) => {\n await mount(\n `\n <ix-radio-group>\n <ix-radio label=\"Option 1\" value=\"option1\"></ix-radio>\n <ix-radio label=\"Option 2\" value=\"option2\" checked></ix-radio>\n <ix-radio label=\"Option 3\" value=\"option3\"></ix-radio>\n </ix-radio-group>\n `\n );\n const radioGroupElement = page.locator('ix-radio-group');\n const radioOption3 = page.locator('ix-radio').nth(2);\n\n const onValueChange = radioGroupElement.evaluate<string>(\n (el) =>\n new Promise((resolve) => {\n el.addEventListener('valueChange', (event) => {\n const customEvent = event as CustomEvent<string>;\n resolve(customEvent.detail);\n });\n })\n );\n\n await radioOption3.click();\n\n expect(await onValueChange).toEqual('option3');\n});\n\nregressionTest('disabled', async ({ mount, page }) => {\n await mount(\n `\n <ix-radio-group>\n <ix-radio label=\"Option 1\" value=\"option1\"></ix-radio>\n <ix-radio label=\"Option 2\" value=\"option2\" checked></ix-radio>\n <ix-radio label=\"Option 3\" value=\"option3\" disabled></ix-radio>\n </ix-radio-group>\n `\n );\n const radioOption3 = page.locator('ix-radio').nth(2);\n await expect(radioOption3).not.toBeEnabled();\n await expect(radioOption3.locator('.checkmark')).not.toBeVisible();\n});\n"]}
|
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* SPDX-FileCopyrightText: 2024 Siemens AG
|
|
3
|
-
*
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/
|
|
9
|
-
import { expect } from "@playwright/test";
|
|
10
|
-
import { test } from "../../../tests/utils/test/index";
|
|
11
|
-
function selectController(select) {
|
|
12
|
-
const input = select.locator('input');
|
|
13
|
-
const dropdown = select.locator('ix-dropdown');
|
|
14
|
-
const dropdownChevron = select.locator('ix-icon-button');
|
|
15
|
-
const dropdownVisible = async () => {
|
|
16
|
-
const element = await dropdown.elementHandle();
|
|
17
|
-
if (!element) {
|
|
18
|
-
throw new Error('Dropdown has no open handle');
|
|
19
|
-
}
|
|
20
|
-
await element.waitForElementState('stable');
|
|
21
|
-
await expect(dropdown).toBeVisible();
|
|
22
|
-
};
|
|
23
|
-
return {
|
|
24
|
-
async clickDropdownChevron() {
|
|
25
|
-
await dropdownChevron.click();
|
|
26
|
-
await dropdownVisible();
|
|
27
|
-
},
|
|
28
|
-
async fillInput(text) {
|
|
29
|
-
await input.fill(text);
|
|
30
|
-
},
|
|
31
|
-
async focusInput() {
|
|
32
|
-
await input.click();
|
|
33
|
-
await expect(input).toBeFocused();
|
|
34
|
-
},
|
|
35
|
-
async arrowDown(skipDropdownCheck = false) {
|
|
36
|
-
if (!skipDropdownCheck) {
|
|
37
|
-
await dropdownVisible();
|
|
38
|
-
}
|
|
39
|
-
await select.page().keyboard.press('ArrowDown', { delay: 50 });
|
|
40
|
-
},
|
|
41
|
-
async arrowUp(skipDropdownCheck = false) {
|
|
42
|
-
if (!skipDropdownCheck) {
|
|
43
|
-
await dropdownVisible();
|
|
44
|
-
}
|
|
45
|
-
await select.page().keyboard.press('ArrowUp', { delay: 50 });
|
|
46
|
-
},
|
|
47
|
-
async pressEnter() {
|
|
48
|
-
await select.page().keyboard.press('Enter');
|
|
49
|
-
},
|
|
50
|
-
async getDropdownItemsLocator(onlyVisible = false) {
|
|
51
|
-
let selector = 'ix-select-item';
|
|
52
|
-
if (onlyVisible) {
|
|
53
|
-
selector += ':not(.display-none)';
|
|
54
|
-
}
|
|
55
|
-
await dropdownVisible();
|
|
56
|
-
return select.locator(selector).all();
|
|
57
|
-
},
|
|
58
|
-
async getFocusDropdownItemLocator() {
|
|
59
|
-
await dropdownVisible();
|
|
60
|
-
const focusDropdownItem = select.locator('ix-select-item .dropdown-item:focus-visible');
|
|
61
|
-
return focusDropdownItem;
|
|
62
|
-
},
|
|
63
|
-
async getAddItemDropdownItemLocator() {
|
|
64
|
-
await dropdownVisible();
|
|
65
|
-
const addItem = dropdown.locator('ix-dropdown-item.add-item');
|
|
66
|
-
const addItemHandle = await addItem.elementHandle();
|
|
67
|
-
if (!addItemHandle) {
|
|
68
|
-
throw new Error('Dropdown has no open handle');
|
|
69
|
-
}
|
|
70
|
-
await addItemHandle.waitForElementState('stable');
|
|
71
|
-
return addItem;
|
|
72
|
-
},
|
|
73
|
-
async getItemCheckedLocator() {
|
|
74
|
-
await dropdownVisible();
|
|
75
|
-
const itemChecked = select.locator('ix-select-item .checkmark');
|
|
76
|
-
const itemCheckedHandle = await itemChecked.elementHandle();
|
|
77
|
-
if (!itemCheckedHandle) {
|
|
78
|
-
throw new Error('Dropdown has no open handle');
|
|
79
|
-
}
|
|
80
|
-
expect(itemCheckedHandle.waitForElementState('stable'));
|
|
81
|
-
return itemChecked;
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
test.describe.configure({ mode: 'serial' });
|
|
86
|
-
test.describe('arrow key navigation', () => {
|
|
87
|
-
test.describe('ArrowDown', () => {
|
|
88
|
-
test('input -> slotted item', async ({ mount, page }) => {
|
|
89
|
-
await mount(`
|
|
90
|
-
<ix-select>
|
|
91
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
92
|
-
<ix-select-item value="2" label="Item 2"></ix-select-item>
|
|
93
|
-
</ix-select>
|
|
94
|
-
`);
|
|
95
|
-
const select = page.locator('ix-select');
|
|
96
|
-
const selectCtrl = selectController(select);
|
|
97
|
-
await selectCtrl.focusInput();
|
|
98
|
-
await selectCtrl.arrowDown();
|
|
99
|
-
await selectCtrl.arrowDown();
|
|
100
|
-
const dropdownItems = await selectCtrl.getDropdownItemsLocator();
|
|
101
|
-
const focusItem = await selectCtrl.getFocusDropdownItemLocator();
|
|
102
|
-
expect(dropdownItems).toHaveLength(2);
|
|
103
|
-
await expect(focusItem).toBeFocused();
|
|
104
|
-
await expect(focusItem).toHaveText('Item 2');
|
|
105
|
-
});
|
|
106
|
-
test('slot -> dynamic item', async ({ mount, page }) => {
|
|
107
|
-
await mount(`
|
|
108
|
-
<ix-select editable>
|
|
109
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
110
|
-
<ix-select-item value="2" label="Item 2"></ix-select-item>
|
|
111
|
-
</ix-select>
|
|
112
|
-
`);
|
|
113
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
114
|
-
await selectCtrl.focusInput();
|
|
115
|
-
await selectCtrl.fillInput('New Item');
|
|
116
|
-
await selectCtrl.pressEnter();
|
|
117
|
-
await selectCtrl.clickDropdownChevron();
|
|
118
|
-
await selectCtrl.arrowDown();
|
|
119
|
-
await selectCtrl.arrowDown();
|
|
120
|
-
await selectCtrl.arrowDown();
|
|
121
|
-
const dropdownItems = await selectCtrl.getDropdownItemsLocator();
|
|
122
|
-
const focusItem = await selectCtrl.getFocusDropdownItemLocator();
|
|
123
|
-
expect(dropdownItems).toHaveLength(3);
|
|
124
|
-
await expect(focusItem).toBeFocused();
|
|
125
|
-
await expect(focusItem).toHaveText('New Item');
|
|
126
|
-
});
|
|
127
|
-
test('input -> dynamic item', async ({ mount, page }) => {
|
|
128
|
-
await mount(`
|
|
129
|
-
<ix-select editable></ix-select>
|
|
130
|
-
`);
|
|
131
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
132
|
-
await selectCtrl.focusInput();
|
|
133
|
-
await selectCtrl.fillInput('New Item');
|
|
134
|
-
await selectCtrl.arrowDown();
|
|
135
|
-
const visibleDropdownItems = await selectCtrl.getDropdownItemsLocator(true);
|
|
136
|
-
expect(visibleDropdownItems).toHaveLength(0);
|
|
137
|
-
const addItem = await selectCtrl.getAddItemDropdownItemLocator();
|
|
138
|
-
await expect(addItem).toBeFocused();
|
|
139
|
-
await expect(addItem).toHaveText('New Item');
|
|
140
|
-
});
|
|
141
|
-
test('input -> add item', async ({ mount, page }) => {
|
|
142
|
-
await mount(`
|
|
143
|
-
<ix-select editable></ix-select>
|
|
144
|
-
`);
|
|
145
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
146
|
-
await selectCtrl.focusInput();
|
|
147
|
-
await selectCtrl.fillInput('New Item');
|
|
148
|
-
await selectCtrl.pressEnter();
|
|
149
|
-
await selectCtrl.clickDropdownChevron();
|
|
150
|
-
await selectCtrl.arrowDown();
|
|
151
|
-
const items = await selectCtrl.getDropdownItemsLocator();
|
|
152
|
-
expect(items).toHaveLength(1);
|
|
153
|
-
const focusItem = await selectCtrl.getFocusDropdownItemLocator();
|
|
154
|
-
await expect(focusItem).toBeFocused();
|
|
155
|
-
await expect(focusItem).toHaveText('New Item');
|
|
156
|
-
});
|
|
157
|
-
test('slot -> add item', async ({ mount, page }) => {
|
|
158
|
-
await mount(`
|
|
159
|
-
<ix-select editable>
|
|
160
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
161
|
-
<ix-select-item value="2" label="Item 2"></ix-select-item>
|
|
162
|
-
</ix-select>
|
|
163
|
-
`);
|
|
164
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
165
|
-
await selectCtrl.focusInput();
|
|
166
|
-
await selectCtrl.fillInput('Item');
|
|
167
|
-
expect(await selectCtrl.getDropdownItemsLocator()).toHaveLength(2);
|
|
168
|
-
await selectCtrl.arrowDown();
|
|
169
|
-
await selectCtrl.arrowDown();
|
|
170
|
-
await selectCtrl.arrowDown();
|
|
171
|
-
await expect(await selectCtrl.getAddItemDropdownItemLocator()).toBeFocused();
|
|
172
|
-
});
|
|
173
|
-
test('dynamic item -> add item', async ({ mount, page }) => {
|
|
174
|
-
await mount(`
|
|
175
|
-
<ix-select editable>
|
|
176
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
177
|
-
</ix-select>
|
|
178
|
-
`);
|
|
179
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
180
|
-
await selectCtrl.focusInput();
|
|
181
|
-
await selectCtrl.fillInput('Item 2');
|
|
182
|
-
await selectCtrl.pressEnter();
|
|
183
|
-
await selectCtrl.clickDropdownChevron();
|
|
184
|
-
await selectCtrl.getItemCheckedLocator();
|
|
185
|
-
await selectCtrl.fillInput('');
|
|
186
|
-
await selectCtrl.fillInput('I');
|
|
187
|
-
await selectCtrl.arrowDown();
|
|
188
|
-
await selectCtrl.arrowDown();
|
|
189
|
-
await selectCtrl.arrowDown();
|
|
190
|
-
await expect(await selectCtrl.getAddItemDropdownItemLocator()).toBeFocused();
|
|
191
|
-
});
|
|
192
|
-
test('wrap - dynamic item -> slot', async ({ mount, page }) => {
|
|
193
|
-
await mount(`
|
|
194
|
-
<ix-select editable>
|
|
195
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
196
|
-
</ix-select>
|
|
197
|
-
`);
|
|
198
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
199
|
-
await selectCtrl.focusInput();
|
|
200
|
-
await selectCtrl.fillInput('Item 2');
|
|
201
|
-
await selectCtrl.pressEnter();
|
|
202
|
-
await selectCtrl.clickDropdownChevron();
|
|
203
|
-
expect(await selectCtrl.getDropdownItemsLocator()).toHaveLength(2);
|
|
204
|
-
await selectCtrl.arrowDown();
|
|
205
|
-
await selectCtrl.arrowDown();
|
|
206
|
-
const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
207
|
-
await expect(itemsBeforeNavigation.at(1)).toHaveText('Item 2');
|
|
208
|
-
await expect(itemsBeforeNavigation.at(0)).not.toBeFocused();
|
|
209
|
-
await expect(itemsBeforeNavigation.at(1)).toBeFocused();
|
|
210
|
-
await selectCtrl.arrowDown();
|
|
211
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
212
|
-
await expect(itemsAfterNavigation.at(0)).toHaveText('Item 1');
|
|
213
|
-
await expect(itemsAfterNavigation.at(0)).toBeFocused();
|
|
214
|
-
await expect(itemsAfterNavigation.at(1)).not.toBeFocused();
|
|
215
|
-
});
|
|
216
|
-
test('wrap - add item -> slot', async ({ mount, page }) => {
|
|
217
|
-
await mount(`
|
|
218
|
-
<ix-select editable>
|
|
219
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
220
|
-
</ix-select>
|
|
221
|
-
`);
|
|
222
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
223
|
-
await selectCtrl.focusInput();
|
|
224
|
-
await selectCtrl.fillInput('I');
|
|
225
|
-
const addItem = await selectCtrl.getAddItemDropdownItemLocator();
|
|
226
|
-
await selectCtrl.arrowDown();
|
|
227
|
-
await selectCtrl.arrowDown();
|
|
228
|
-
await expect(addItem).toBeFocused();
|
|
229
|
-
await selectCtrl.arrowDown();
|
|
230
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
231
|
-
await expect(itemsAfterNavigation.at(0)).toBeFocused();
|
|
232
|
-
await expect(itemsAfterNavigation.at(0)).toHaveText('Item 1');
|
|
233
|
-
});
|
|
234
|
-
test('wrap - add item -> dynamic item', async ({ mount, page }) => {
|
|
235
|
-
await mount(`
|
|
236
|
-
<ix-select editable></ix-select>
|
|
237
|
-
`);
|
|
238
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
239
|
-
await selectCtrl.focusInput();
|
|
240
|
-
await selectCtrl.fillInput('Item 1');
|
|
241
|
-
await selectCtrl.pressEnter();
|
|
242
|
-
await selectCtrl.clickDropdownChevron();
|
|
243
|
-
await selectCtrl.getItemCheckedLocator();
|
|
244
|
-
await selectCtrl.fillInput('');
|
|
245
|
-
await selectCtrl.fillInput('I');
|
|
246
|
-
const addItem = await selectCtrl.getAddItemDropdownItemLocator();
|
|
247
|
-
await selectCtrl.arrowDown();
|
|
248
|
-
await selectCtrl.arrowDown();
|
|
249
|
-
await expect(addItem).toBeFocused();
|
|
250
|
-
await selectCtrl.arrowDown();
|
|
251
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
252
|
-
await expect(itemsAfterNavigation.at(0)).toBeFocused();
|
|
253
|
-
await expect(itemsAfterNavigation.at(0)).toHaveText('Item 1');
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
test.describe('ArrowUp', () => {
|
|
257
|
-
test('dynamic item -> slot', async ({ mount, page }) => {
|
|
258
|
-
await mount(`
|
|
259
|
-
<ix-select editable>
|
|
260
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
261
|
-
</ix-select>
|
|
262
|
-
`);
|
|
263
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
264
|
-
await selectCtrl.focusInput();
|
|
265
|
-
await selectCtrl.fillInput('I');
|
|
266
|
-
await selectCtrl.pressEnter();
|
|
267
|
-
await selectCtrl.clickDropdownChevron();
|
|
268
|
-
await selectCtrl.getItemCheckedLocator();
|
|
269
|
-
await selectCtrl.arrowDown();
|
|
270
|
-
await selectCtrl.arrowDown();
|
|
271
|
-
const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
272
|
-
await expect(itemsBeforeNavigation.at(1)).toBeFocused();
|
|
273
|
-
await expect(itemsBeforeNavigation.at(1)).toHaveText('I');
|
|
274
|
-
await selectCtrl.arrowUp();
|
|
275
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
276
|
-
await expect(itemsAfterNavigation.at(0)).toBeFocused();
|
|
277
|
-
await expect(itemsAfterNavigation.at(0)).toHaveText('Item 1');
|
|
278
|
-
});
|
|
279
|
-
test('add item -> slot', async ({ mount, page }) => {
|
|
280
|
-
await mount(`
|
|
281
|
-
<ix-select editable>
|
|
282
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
283
|
-
</ix-select>
|
|
284
|
-
`);
|
|
285
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
286
|
-
await selectCtrl.focusInput();
|
|
287
|
-
await selectCtrl.fillInput('I');
|
|
288
|
-
const addItem = await selectCtrl.getAddItemDropdownItemLocator();
|
|
289
|
-
await selectCtrl.arrowDown();
|
|
290
|
-
await selectCtrl.arrowDown();
|
|
291
|
-
await expect(addItem).toBeFocused();
|
|
292
|
-
await selectCtrl.arrowUp();
|
|
293
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
294
|
-
await expect(itemsAfterNavigation.at(0)).toBeFocused();
|
|
295
|
-
await expect(itemsAfterNavigation.at(0)).toHaveText('Item 1');
|
|
296
|
-
});
|
|
297
|
-
test('add item -> dynamic item', async ({ mount, page }) => {
|
|
298
|
-
await mount(`
|
|
299
|
-
<ix-select editable></ix-select>
|
|
300
|
-
`);
|
|
301
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
302
|
-
await selectCtrl.focusInput();
|
|
303
|
-
await selectCtrl.fillInput('Item 1');
|
|
304
|
-
await selectCtrl.pressEnter();
|
|
305
|
-
await selectCtrl.clickDropdownChevron();
|
|
306
|
-
await selectCtrl.getItemCheckedLocator();
|
|
307
|
-
await selectCtrl.fillInput('');
|
|
308
|
-
await selectCtrl.fillInput('I');
|
|
309
|
-
const addItem = await selectCtrl.getAddItemDropdownItemLocator();
|
|
310
|
-
await selectCtrl.arrowDown();
|
|
311
|
-
await selectCtrl.arrowDown();
|
|
312
|
-
await expect(addItem).toBeFocused();
|
|
313
|
-
await selectCtrl.arrowUp();
|
|
314
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
315
|
-
await expect(itemsAfterNavigation.at(0)).toBeFocused();
|
|
316
|
-
await expect(itemsAfterNavigation.at(0)).toHaveText('Item 1');
|
|
317
|
-
});
|
|
318
|
-
test('wrap - slot -> dynamic item', async ({ mount, page }) => {
|
|
319
|
-
await mount(`
|
|
320
|
-
<ix-select editable>
|
|
321
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
322
|
-
</ix-select>
|
|
323
|
-
`);
|
|
324
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
325
|
-
await selectCtrl.focusInput();
|
|
326
|
-
await selectCtrl.fillInput('Item 2');
|
|
327
|
-
await selectCtrl.pressEnter();
|
|
328
|
-
await selectCtrl.clickDropdownChevron();
|
|
329
|
-
expect(await selectCtrl.getDropdownItemsLocator()).toHaveLength(2);
|
|
330
|
-
await selectCtrl.arrowDown();
|
|
331
|
-
const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
332
|
-
await expect(itemsBeforeNavigation.at(0)).toHaveText('Item 1');
|
|
333
|
-
await expect(itemsBeforeNavigation.at(0)).toBeFocused();
|
|
334
|
-
await expect(itemsBeforeNavigation.at(1)).not.toBeFocused();
|
|
335
|
-
await selectCtrl.arrowUp();
|
|
336
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
337
|
-
await expect(itemsAfterNavigation.at(1)).toHaveText('Item 2');
|
|
338
|
-
await expect(itemsAfterNavigation.at(0)).not.toBeFocused();
|
|
339
|
-
await expect(itemsAfterNavigation.at(1)).toBeFocused();
|
|
340
|
-
});
|
|
341
|
-
test('wrap - slot -> add-item', async ({ mount, page }) => {
|
|
342
|
-
await mount(`
|
|
343
|
-
<ix-select editable>
|
|
344
|
-
<ix-select-item value="1" label="Item 1"></ix-select-item>
|
|
345
|
-
</ix-select>
|
|
346
|
-
`);
|
|
347
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
348
|
-
await selectCtrl.focusInput();
|
|
349
|
-
await selectCtrl.fillInput('I');
|
|
350
|
-
const addItem = await selectCtrl.getAddItemDropdownItemLocator();
|
|
351
|
-
await selectCtrl.arrowDown();
|
|
352
|
-
const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
353
|
-
await expect(itemsBeforeNavigation.at(0)).toHaveText('Item 1');
|
|
354
|
-
await expect(itemsBeforeNavigation.at(0)).toBeFocused();
|
|
355
|
-
await selectCtrl.arrowUp();
|
|
356
|
-
await expect(addItem).toBeFocused();
|
|
357
|
-
});
|
|
358
|
-
test('wrap - dynamic item -> add item', async ({ mount, page }) => {
|
|
359
|
-
await mount(`
|
|
360
|
-
<ix-select editable></ix-select>
|
|
361
|
-
`);
|
|
362
|
-
const selectCtrl = selectController(page.locator('ix-select'));
|
|
363
|
-
await selectCtrl.focusInput();
|
|
364
|
-
await selectCtrl.fillInput('Item 1');
|
|
365
|
-
await selectCtrl.pressEnter();
|
|
366
|
-
await selectCtrl.clickDropdownChevron();
|
|
367
|
-
await selectCtrl.getItemCheckedLocator();
|
|
368
|
-
await selectCtrl.fillInput('');
|
|
369
|
-
await selectCtrl.fillInput('I');
|
|
370
|
-
const addItem = await selectCtrl.getAddItemDropdownItemLocator();
|
|
371
|
-
await selectCtrl.arrowDown();
|
|
372
|
-
const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();
|
|
373
|
-
await expect(itemsAfterNavigation.at(0)).toBeFocused();
|
|
374
|
-
await expect(itemsAfterNavigation.at(0)).toHaveText('Item 1');
|
|
375
|
-
await selectCtrl.arrowUp();
|
|
376
|
-
await expect(addItem).toBeFocused();
|
|
377
|
-
});
|
|
378
|
-
});
|
|
379
|
-
});
|
|
380
|
-
//# sourceMappingURL=select-keyboard.ct.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-keyboard.ct.js","sourceRoot":"","sources":["../../../../src/components/select/test/select-keyboard.ct.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { expect, Locator } from '@playwright/test';\nimport { test } from '@utils/test';\n\nfunction selectController(select: Locator) {\n const input = select.locator('input');\n const dropdown = select.locator('ix-dropdown');\n const dropdownChevron = select.locator('ix-icon-button');\n\n const dropdownVisible = async () => {\n const element = await dropdown.elementHandle();\n if (!element) {\n throw new Error('Dropdown has no open handle');\n }\n await element.waitForElementState('stable');\n await expect(dropdown).toBeVisible();\n };\n\n return {\n async clickDropdownChevron() {\n await dropdownChevron.click();\n await dropdownVisible();\n },\n async fillInput(text: string) {\n await input.fill(text);\n },\n async focusInput() {\n await input.click();\n await expect(input).toBeFocused();\n },\n async arrowDown(skipDropdownCheck = false) {\n if (!skipDropdownCheck) {\n await dropdownVisible();\n }\n await select.page().keyboard.press('ArrowDown', { delay: 50 });\n },\n async arrowUp(skipDropdownCheck = false) {\n if (!skipDropdownCheck) {\n await dropdownVisible();\n }\n await select.page().keyboard.press('ArrowUp', { delay: 50 });\n },\n async pressEnter() {\n await select.page().keyboard.press('Enter');\n },\n async getDropdownItemsLocator(onlyVisible = false) {\n let selector = 'ix-select-item';\n\n if (onlyVisible) {\n selector += ':not(.display-none)';\n }\n\n await dropdownVisible();\n return select.locator(selector).all();\n },\n async getFocusDropdownItemLocator() {\n await dropdownVisible();\n\n const focusDropdownItem = select.locator(\n 'ix-select-item .dropdown-item:focus-visible'\n );\n return focusDropdownItem;\n },\n\n async getAddItemDropdownItemLocator() {\n await dropdownVisible();\n\n const addItem = dropdown.locator('ix-dropdown-item.add-item');\n const addItemHandle = await addItem.elementHandle();\n\n if (!addItemHandle) {\n throw new Error('Dropdown has no open handle');\n }\n await addItemHandle.waitForElementState('stable');\n return addItem;\n },\n\n async getItemCheckedLocator() {\n await dropdownVisible();\n const itemChecked = select.locator('ix-select-item .checkmark');\n const itemCheckedHandle = await itemChecked.elementHandle();\n\n if (!itemCheckedHandle) {\n throw new Error('Dropdown has no open handle');\n }\n\n expect(itemCheckedHandle.waitForElementState('stable'));\n\n return itemChecked;\n },\n };\n}\n\ntest.describe.configure({ mode: 'serial' });\n\ntest.describe('arrow key navigation', () => {\n test.describe('ArrowDown', () => {\n test('input -> slotted item', async ({ mount, page }) => {\n await mount(`\n <ix-select>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n <ix-select-item value=\"2\" label=\"Item 2\"></ix-select-item>\n </ix-select>\n `);\n\n const select = page.locator('ix-select');\n const selectCtrl = selectController(select);\n\n await selectCtrl.focusInput();\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n const dropdownItems = await selectCtrl.getDropdownItemsLocator();\n const focusItem = await selectCtrl.getFocusDropdownItemLocator();\n\n expect(dropdownItems).toHaveLength(2);\n await expect(focusItem).toBeFocused();\n await expect(focusItem).toHaveText('Item 2');\n });\n\n test('slot -> dynamic item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n <ix-select-item value=\"2\" label=\"Item 2\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('New Item');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n const dropdownItems = await selectCtrl.getDropdownItemsLocator();\n const focusItem = await selectCtrl.getFocusDropdownItemLocator();\n\n expect(dropdownItems).toHaveLength(3);\n await expect(focusItem).toBeFocused();\n await expect(focusItem).toHaveText('New Item');\n });\n\n test('input -> dynamic item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable></ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('New Item');\n\n await selectCtrl.arrowDown();\n\n const visibleDropdownItems =\n await selectCtrl.getDropdownItemsLocator(true);\n expect(visibleDropdownItems).toHaveLength(0);\n\n const addItem = await selectCtrl.getAddItemDropdownItemLocator();\n await expect(addItem).toBeFocused();\n await expect(addItem).toHaveText('New Item');\n });\n\n test('input -> add item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable></ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('New Item');\n await selectCtrl.pressEnter();\n await selectCtrl.clickDropdownChevron();\n await selectCtrl.arrowDown();\n\n const items = await selectCtrl.getDropdownItemsLocator();\n expect(items).toHaveLength(1);\n\n const focusItem = await selectCtrl.getFocusDropdownItemLocator();\n await expect(focusItem).toBeFocused();\n await expect(focusItem).toHaveText('New Item');\n });\n\n test('slot -> add item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n <ix-select-item value=\"2\" label=\"Item 2\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('Item');\n\n expect(await selectCtrl.getDropdownItemsLocator()).toHaveLength(2);\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n await expect(\n await selectCtrl.getAddItemDropdownItemLocator()\n ).toBeFocused();\n });\n\n test('dynamic item -> add item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('Item 2');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n await selectCtrl.getItemCheckedLocator();\n\n await selectCtrl.fillInput('');\n await selectCtrl.fillInput('I');\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n await expect(\n await selectCtrl.getAddItemDropdownItemLocator()\n ).toBeFocused();\n });\n\n test('wrap - dynamic item -> slot', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('Item 2');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n\n expect(await selectCtrl.getDropdownItemsLocator()).toHaveLength(2);\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsBeforeNavigation.at(1)!).toHaveText('Item 2');\n await expect(itemsBeforeNavigation.at(0)!).not.toBeFocused();\n await expect(itemsBeforeNavigation.at(1)!).toBeFocused();\n\n await selectCtrl.arrowDown();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(0)!).toHaveText('Item 1');\n await expect(itemsAfterNavigation.at(0)!).toBeFocused();\n await expect(itemsAfterNavigation.at(1)!).not.toBeFocused();\n });\n\n test('wrap - add item -> slot', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('I');\n\n const addItem = await selectCtrl.getAddItemDropdownItemLocator();\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n await expect(addItem).toBeFocused();\n\n await selectCtrl.arrowDown();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(0)!).toBeFocused();\n await expect(itemsAfterNavigation.at(0)!).toHaveText('Item 1');\n });\n\n test('wrap - add item -> dynamic item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable></ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('Item 1');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n await selectCtrl.getItemCheckedLocator();\n\n await selectCtrl.fillInput('');\n await selectCtrl.fillInput('I');\n\n const addItem = await selectCtrl.getAddItemDropdownItemLocator();\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n await expect(addItem).toBeFocused();\n\n await selectCtrl.arrowDown();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(0)!).toBeFocused();\n await expect(itemsAfterNavigation.at(0)!).toHaveText('Item 1');\n });\n });\n\n test.describe('ArrowUp', () => {\n test('dynamic item -> slot', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('I');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n await selectCtrl.getItemCheckedLocator();\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsBeforeNavigation.at(1)!).toBeFocused();\n await expect(itemsBeforeNavigation.at(1)!).toHaveText('I');\n\n await selectCtrl.arrowUp();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(0)!).toBeFocused();\n await expect(itemsAfterNavigation.at(0)!).toHaveText('Item 1');\n });\n\n test('add item -> slot', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('I');\n\n const addItem = await selectCtrl.getAddItemDropdownItemLocator();\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n await expect(addItem).toBeFocused();\n\n await selectCtrl.arrowUp();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(0)!).toBeFocused();\n await expect(itemsAfterNavigation.at(0)!).toHaveText('Item 1');\n });\n\n test('add item -> dynamic item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable></ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('Item 1');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n await selectCtrl.getItemCheckedLocator();\n\n await selectCtrl.fillInput('');\n await selectCtrl.fillInput('I');\n\n const addItem = await selectCtrl.getAddItemDropdownItemLocator();\n\n await selectCtrl.arrowDown();\n await selectCtrl.arrowDown();\n\n await expect(addItem).toBeFocused();\n\n await selectCtrl.arrowUp();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(0)!).toBeFocused();\n await expect(itemsAfterNavigation.at(0)!).toHaveText('Item 1');\n });\n\n test('wrap - slot -> dynamic item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('Item 2');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n\n expect(await selectCtrl.getDropdownItemsLocator()).toHaveLength(2);\n\n await selectCtrl.arrowDown();\n\n const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsBeforeNavigation.at(0)!).toHaveText('Item 1');\n await expect(itemsBeforeNavigation.at(0)!).toBeFocused();\n await expect(itemsBeforeNavigation.at(1)!).not.toBeFocused();\n\n await selectCtrl.arrowUp();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(1)!).toHaveText('Item 2');\n await expect(itemsAfterNavigation.at(0)!).not.toBeFocused();\n await expect(itemsAfterNavigation.at(1)!).toBeFocused();\n });\n\n test('wrap - slot -> add-item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable>\n <ix-select-item value=\"1\" label=\"Item 1\"></ix-select-item>\n </ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('I');\n\n const addItem = await selectCtrl.getAddItemDropdownItemLocator();\n\n await selectCtrl.arrowDown();\n\n const itemsBeforeNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsBeforeNavigation.at(0)!).toHaveText('Item 1');\n await expect(itemsBeforeNavigation.at(0)!).toBeFocused();\n\n await selectCtrl.arrowUp();\n\n await expect(addItem).toBeFocused();\n });\n\n test('wrap - dynamic item -> add item', async ({ mount, page }) => {\n await mount(`\n <ix-select editable></ix-select>\n `);\n\n const selectCtrl = selectController(page.locator('ix-select'));\n await selectCtrl.focusInput();\n await selectCtrl.fillInput('Item 1');\n await selectCtrl.pressEnter();\n\n await selectCtrl.clickDropdownChevron();\n await selectCtrl.getItemCheckedLocator();\n\n await selectCtrl.fillInput('');\n await selectCtrl.fillInput('I');\n\n const addItem = await selectCtrl.getAddItemDropdownItemLocator();\n\n await selectCtrl.arrowDown();\n\n const itemsAfterNavigation = await selectCtrl.getDropdownItemsLocator();\n await expect(itemsAfterNavigation.at(0)!).toBeFocused();\n await expect(itemsAfterNavigation.at(0)!).toHaveText('Item 1');\n\n await selectCtrl.arrowUp();\n\n await expect(addItem).toBeFocused();\n });\n });\n});\n"]}
|