wcs-core 7.3.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -9
- package/design-tokens/dist/sncf-groupe-root-scoped.css +227 -227
- package/design-tokens/dist/sncf-groupe.css +227 -227
- package/design-tokens/dist/sncf-holding-root-scoped.css +227 -227
- package/design-tokens/dist/sncf-holding.css +227 -227
- package/design-tokens/dist/sncf-reseau-root-scoped.css +227 -227
- package/design-tokens/dist/sncf-reseau.css +227 -227
- package/design-tokens/dist/sncf-voyageurs-root-scoped.css +242 -242
- package/design-tokens/dist/sncf-voyageurs.css +242 -242
- package/dist/cjs/{popper-8d6e7fca.js → popper-1b61df21.js} +10 -17
- package/dist/cjs/popper-1b61df21.js.map +1 -0
- package/dist/cjs/wcs-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/wcs-breadcrumb.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-com-nav-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-com-nav-item.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-com-nav.cjs.entry.js +3 -3
- package/dist/cjs/wcs-com-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/wcs-error_3.cjs.entry.js +1 -1
- package/dist/cjs/wcs-error_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-galactic-menu.cjs.entry.js +1 -1
- package/dist/cjs/wcs-grid.cjs.entry.js +5 -4
- package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +3 -2
- package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-modal.cjs.entry.js +2 -2
- package/dist/cjs/wcs-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-select_2.cjs.entry.js +59 -24
- package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-tabs.cjs.entry.js +1 -1
- package/dist/cjs/wcs-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/accordion/{accordion.e2e.js → accordion.e2e.playwright.js} +51 -55
- package/dist/collection/components/accordion/accordion.e2e.playwright.js.map +1 -0
- package/dist/collection/components/accordion-panel/accordion-panel.js +1 -1
- package/dist/collection/components/alert/alert.e2e.playwright.js +125 -0
- package/dist/collection/components/alert/alert.e2e.playwright.js.map +1 -0
- package/dist/collection/components/alert-drawer/alert-drawer.e2e.playwright.js +107 -0
- package/dist/collection/components/alert-drawer/alert-drawer.e2e.playwright.js.map +1 -0
- package/dist/collection/components/breadcrumb/breadcrumb.e2e.playwright.js +188 -0
- package/dist/collection/components/breadcrumb/breadcrumb.e2e.playwright.js.map +1 -0
- package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/collection/components/button/button.e2e.playwright.js +26 -0
- package/dist/collection/components/button/button.e2e.playwright.js.map +1 -0
- package/dist/collection/components/button/button.js +1 -1
- package/dist/collection/components/checkbox/checkbox.e2e.playwright.js +39 -0
- package/dist/collection/components/checkbox/checkbox.e2e.playwright.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox.js +1 -1
- package/dist/collection/components/chip/chip.e2e.playwright.js +190 -0
- package/dist/collection/components/chip/chip.e2e.playwright.js.map +1 -0
- package/dist/collection/components/com-nav/com-nav.css +15 -0
- package/dist/collection/components/com-nav/{com-nav.e2e.js → com-nav.e2e.playwright.js} +60 -44
- package/dist/collection/components/com-nav/com-nav.e2e.playwright.js.map +1 -0
- package/dist/collection/components/com-nav/com-nav.js +3 -3
- package/dist/collection/components/com-nav/com-nav.js.map +1 -1
- package/dist/collection/components/com-nav-category/com-nav-category.js +1 -1
- package/dist/collection/components/com-nav-item/com-nav-item.css +2 -2
- package/dist/collection/components/com-nav-submenu/com-nav-submenu.js +1 -1
- package/dist/collection/components/counter/counter.e2e.playwright.js +187 -0
- package/dist/collection/components/counter/counter.e2e.playwright.js.map +1 -0
- package/dist/collection/components/counter/counter.js +1 -1
- package/dist/collection/components/dropdown/dropdown.e2e.playwright.js +320 -0
- package/dist/collection/components/dropdown/dropdown.e2e.playwright.js.map +1 -0
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/editable-field/editable-field.e2e.playwright.js +156 -0
- package/dist/collection/components/editable-field/editable-field.e2e.playwright.js.map +1 -0
- package/dist/collection/components/form-field/form-field.e2e.playwright.js +104 -0
- package/dist/collection/components/form-field/form-field.e2e.playwright.js.map +1 -0
- package/dist/collection/components/galactic-menu/galactic-menu.js +1 -1
- package/dist/collection/components/grid/grid.e2e.playwright.js +153 -0
- package/dist/collection/components/grid/grid.e2e.playwright.js.map +1 -0
- package/dist/collection/components/grid/grid.js +6 -5
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/grid-column/grid-column.js +1 -1
- package/dist/collection/components/grid-pagination/grid-pagination.js +1 -1
- package/dist/collection/components/header/header.js +1 -1
- package/dist/collection/components/horizontal-stepper/horizontal-step.js +2 -1
- package/dist/collection/components/horizontal-stepper/horizontal-step.js.map +1 -1
- package/dist/collection/components/horizontal-stepper/horizontal-stepper-interface.js.map +1 -1
- package/dist/collection/components/horizontal-stepper/horizontal-stepper.js +5 -1
- package/dist/collection/components/horizontal-stepper/horizontal-stepper.js.map +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input.e2e.playwright.js +157 -0
- package/dist/collection/components/input/input.e2e.playwright.js.map +1 -0
- package/dist/collection/components/input/input.js +2 -2
- package/dist/collection/components/label/label.css +4 -6
- package/dist/collection/components/label/label.js +1 -1
- package/dist/collection/components/mat-icon/mat-icon.js +1 -1
- package/dist/collection/components/modal/modal.css +4 -0
- package/dist/collection/components/modal/modal.e2e.playwright.js +35 -0
- package/dist/collection/components/modal/modal.e2e.playwright.js.map +1 -0
- package/dist/collection/components/modal/modal.js +2 -2
- package/dist/collection/components/modal/modal.js.map +1 -1
- package/dist/collection/components/native-select/native-select.js +1 -1
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/progress-radial/progress-radial.js +1 -1
- package/dist/collection/components/radio/radio.js +1 -1
- package/dist/collection/components/radio-group/radio-group.e2e.playwright.js +231 -0
- package/dist/collection/components/radio-group/radio-group.e2e.playwright.js.map +1 -0
- package/dist/collection/components/radio-group/radio-group.js +1 -1
- package/dist/collection/components/select/select.e2e.playwright.js +1702 -0
- package/dist/collection/components/select/select.e2e.playwright.js.map +1 -0
- package/dist/collection/components/select/select.js +49 -20
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/select-option/select-option.js +3 -3
- package/dist/collection/components/select-option/select-option.js.map +1 -1
- package/dist/collection/components/switch/switch.e2e.playwright.js +40 -0
- package/dist/collection/components/switch/switch.e2e.playwright.js.map +1 -0
- package/dist/collection/components/switch/switch.js +1 -1
- package/dist/collection/components/tabs/tabs.e2e.playwright.js +205 -0
- package/dist/collection/components/tabs/tabs.e2e.playwright.js.map +1 -0
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/textarea/textarea.e2e.playwright.js +133 -0
- package/dist/collection/components/textarea/textarea.e2e.playwright.js.map +1 -0
- package/dist/collection/components/textarea/textarea.js +1 -1
- package/dist/collection/utils/playwright/test-expect.js +2 -0
- package/dist/collection/utils/playwright/test-expect.js.map +1 -0
- package/dist/collection/utils/playwright/test.js +16 -0
- package/dist/collection/utils/playwright/test.js.map +1 -0
- package/dist/esm/{popper-e491c314.js → popper-ac238961.js} +10 -17
- package/dist/esm/popper-ac238961.js.map +1 -0
- package/dist/esm/wcs-breadcrumb.entry.js +1 -1
- package/dist/esm/wcs-breadcrumb.entry.js.map +1 -1
- package/dist/esm/wcs-com-nav-item.entry.js +1 -1
- package/dist/esm/wcs-com-nav-item.entry.js.map +1 -1
- package/dist/esm/wcs-com-nav.entry.js +3 -3
- package/dist/esm/wcs-com-nav.entry.js.map +1 -1
- package/dist/esm/wcs-dropdown.entry.js +1 -1
- package/dist/esm/wcs-error_3.entry.js +1 -1
- package/dist/esm/wcs-error_3.entry.js.map +1 -1
- package/dist/esm/wcs-galactic-menu.entry.js +1 -1
- package/dist/esm/wcs-grid.entry.js +5 -4
- package/dist/esm/wcs-grid.entry.js.map +1 -1
- package/dist/esm/wcs-horizontal-stepper.entry.js +3 -2
- package/dist/esm/wcs-horizontal-stepper.entry.js.map +1 -1
- package/dist/esm/wcs-modal.entry.js +2 -2
- package/dist/esm/wcs-modal.entry.js.map +1 -1
- package/dist/esm/wcs-select_2.entry.js +59 -24
- package/dist/esm/wcs-select_2.entry.js.map +1 -1
- package/dist/esm/wcs-tabs.entry.js +1 -1
- package/dist/esm/wcs-tooltip.entry.js +1 -1
- package/dist/types/components/accordion/accordion.e2e.playwright.d.ts +1 -0
- package/dist/types/components/alert/alert.e2e.playwright.d.ts +1 -0
- package/dist/types/components/alert-drawer/alert-drawer.e2e.playwright.d.ts +1 -0
- package/dist/types/components/breadcrumb/breadcrumb.e2e.playwright.d.ts +1 -0
- package/dist/types/components/button/button.e2e.playwright.d.ts +1 -0
- package/dist/types/components/checkbox/checkbox.e2e.playwright.d.ts +1 -0
- package/dist/types/components/chip/chip.e2e.playwright.d.ts +1 -0
- package/dist/types/components/com-nav/com-nav.e2e.playwright.d.ts +1 -0
- package/dist/types/components/counter/counter.e2e.playwright.d.ts +1 -0
- package/dist/types/components/dropdown/dropdown.e2e.playwright.d.ts +1 -0
- package/dist/types/components/editable-field/editable-field.e2e.playwright.d.ts +1 -0
- package/dist/types/components/form-field/form-field.e2e.playwright.d.ts +1 -0
- package/dist/types/components/grid/grid.e2e.playwright.d.ts +1 -0
- package/dist/types/components/horizontal-stepper/horizontal-stepper-interface.d.ts +2 -0
- package/dist/types/components/horizontal-stepper/horizontal-stepper.d.ts +4 -0
- package/dist/types/components/input/input.e2e.playwright.d.ts +1 -0
- package/dist/types/components/modal/modal.e2e.playwright.d.ts +1 -0
- package/dist/types/components/radio-group/radio-group.e2e.playwright.d.ts +1 -0
- package/dist/types/components/select/select.d.ts +7 -1
- package/dist/types/components/select/select.e2e.playwright.d.ts +1 -0
- package/dist/types/components/switch/switch.e2e.playwright.d.ts +1 -0
- package/dist/types/components/tabs/tabs.e2e.playwright.d.ts +1 -0
- package/dist/types/components/textarea/textarea.e2e.playwright.d.ts +1 -0
- package/dist/types/components.d.ts +12 -0
- package/dist/types/utils/playwright/test-expect.d.ts +33 -0
- package/dist/types/utils/playwright/test.d.ts +7 -0
- package/dist/wcs/{p-8e9bd0f1.entry.js → p-0326f834.entry.js} +2 -2
- package/dist/wcs/{p-8e9bd0f1.entry.js.map → p-0326f834.entry.js.map} +1 -1
- package/dist/wcs/p-2221bf0c.entry.js +16 -0
- package/dist/wcs/p-2221bf0c.entry.js.map +1 -0
- package/dist/wcs/p-4ae08567.entry.js +2 -0
- package/dist/wcs/p-4ae08567.entry.js.map +1 -0
- package/dist/wcs/p-4e2d6227.entry.js +2 -0
- package/dist/wcs/p-4e2d6227.entry.js.map +1 -0
- package/dist/wcs/p-8332a7e3.entry.js +2 -0
- package/dist/wcs/p-8332a7e3.entry.js.map +1 -0
- package/dist/wcs/{p-ec383729.entry.js → p-9b76b8e6.entry.js} +2 -2
- package/dist/wcs/{p-ec383729.entry.js.map → p-9b76b8e6.entry.js.map} +1 -1
- package/dist/wcs/{p-1f593d06.entry.js → p-abd8d5a0.entry.js} +2 -2
- package/dist/wcs/{p-622f7403.entry.js → p-c6f8c45c.entry.js} +2 -2
- package/dist/wcs/{p-a94e685c.entry.js → p-db7ba599.entry.js} +2 -2
- package/dist/wcs/p-e1fb3625.js +2 -0
- package/dist/wcs/p-e1fb3625.js.map +1 -0
- package/dist/wcs/{p-a956dc84.entry.js → p-f2f7595e.entry.js} +2 -2
- package/dist/wcs/{p-a956dc84.entry.js.map → p-f2f7595e.entry.js.map} +1 -1
- package/dist/wcs/p-fbd68522.entry.js +2 -0
- package/dist/wcs/p-fbd68522.entry.js.map +1 -0
- package/dist/wcs/{p-8c2605fd.entry.js → p-fe303f58.entry.js} +2 -2
- package/dist/wcs/wcs.esm.js +1 -1
- package/package.json +18 -24
- package/dist/cjs/popper-8d6e7fca.js.map +0 -1
- package/dist/collection/components/accordion/accordion.e2e.js.map +0 -1
- package/dist/collection/components/alert/alert.e2e.js +0 -142
- package/dist/collection/components/alert/alert.e2e.js.map +0 -1
- package/dist/collection/components/alert-drawer/alert-drawer.e2e.js +0 -111
- package/dist/collection/components/alert-drawer/alert-drawer.e2e.js.map +0 -1
- package/dist/collection/components/breadcrumb/breadcrumb.e2e.js +0 -223
- package/dist/collection/components/breadcrumb/breadcrumb.e2e.js.map +0 -1
- package/dist/collection/components/button/button.e2e.js +0 -25
- package/dist/collection/components/button/button.e2e.js.map +0 -1
- package/dist/collection/components/checkbox/checkbox.e2e.js +0 -45
- package/dist/collection/components/checkbox/checkbox.e2e.js.map +0 -1
- package/dist/collection/components/chip/chip.e2e.js +0 -209
- package/dist/collection/components/chip/chip.e2e.js.map +0 -1
- package/dist/collection/components/com-nav/com-nav.e2e.js.map +0 -1
- package/dist/collection/components/counter/counter.e2e.js +0 -206
- package/dist/collection/components/counter/counter.e2e.js.map +0 -1
- package/dist/collection/components/dropdown/dropdown.e2e.js +0 -156
- package/dist/collection/components/dropdown/dropdown.e2e.js.map +0 -1
- package/dist/collection/components/editable-field/editable-field.e2e.js +0 -176
- package/dist/collection/components/editable-field/editable-field.e2e.js.map +0 -1
- package/dist/collection/components/form-field/form-field.e2e.js +0 -122
- package/dist/collection/components/form-field/form-field.e2e.js.map +0 -1
- package/dist/collection/components/grid/grid.e2e.js +0 -147
- package/dist/collection/components/grid/grid.e2e.js.map +0 -1
- package/dist/collection/components/input/input.e2e.js +0 -152
- package/dist/collection/components/input/input.e2e.js.map +0 -1
- package/dist/collection/components/modal/modal.e2e.js +0 -36
- package/dist/collection/components/modal/modal.e2e.js.map +0 -1
- package/dist/collection/components/radio-group/radio-group.e2e.js +0 -239
- package/dist/collection/components/radio-group/radio-group.e2e.js.map +0 -1
- package/dist/collection/components/select/select.e2e.js +0 -1081
- package/dist/collection/components/select/select.e2e.js.map +0 -1
- package/dist/collection/components/switch/switch.e2e.js +0 -45
- package/dist/collection/components/switch/switch.e2e.js.map +0 -1
- package/dist/collection/components/tabs/tabs.e2e.js +0 -207
- package/dist/collection/components/tabs/tabs.e2e.js.map +0 -1
- package/dist/collection/components/textarea/textarea.e2e.js +0 -132
- package/dist/collection/components/textarea/textarea.e2e.js.map +0 -1
- package/dist/collection/utils/tests.js +0 -23
- package/dist/collection/utils/tests.js.map +0 -1
- package/dist/esm/popper-e491c314.js.map +0 -1
- package/dist/types/utils/tests.d.ts +0 -4
- package/dist/wcs/p-0dd07842.entry.js +0 -2
- package/dist/wcs/p-0dd07842.entry.js.map +0 -1
- package/dist/wcs/p-0f864e86.js +0 -2
- package/dist/wcs/p-0f864e86.js.map +0 -1
- package/dist/wcs/p-1244daa0.entry.js +0 -2
- package/dist/wcs/p-1244daa0.entry.js.map +0 -1
- package/dist/wcs/p-1fbe0328.entry.js +0 -2
- package/dist/wcs/p-1fbe0328.entry.js.map +0 -1
- package/dist/wcs/p-b94a09b6.entry.js +0 -16
- package/dist/wcs/p-b94a09b6.entry.js.map +0 -1
- package/dist/wcs/p-fd187bce.entry.js +0 -2
- package/dist/wcs/p-fd187bce.entry.js.map +0 -1
- /package/dist/wcs/{p-1f593d06.entry.js.map → p-abd8d5a0.entry.js.map} +0 -0
- /package/dist/wcs/{p-622f7403.entry.js.map → p-c6f8c45c.entry.js.map} +0 -0
- /package/dist/wcs/{p-a94e685c.entry.js.map → p-db7ba599.entry.js.map} +0 -0
- /package/dist/wcs/{p-8c2605fd.entry.js.map → p-fe303f58.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select.e2e.js","sourceRoot":"","sources":["../../../src/components/select/select.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\nimport { setWcsContent } from \"../../utils/tests\";\n\ndescribe('Select component', () => {\n it('Expands when clicked', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.click();\n\n // Then\n expect(select).toHaveClass('expanded');\n });\n\n it('Expands using the open method', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.callMethod('open');\n await page.waitForChanges();\n\n // Then\n expect(select).toHaveClass('expanded');\n });\n\n it('Closes using the open method', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.click();\n await select.callMethod('close');\n await page.waitForChanges();\n\n // Then\n expect(select).not.toHaveClass('expanded');\n });\n\n it('Closes when user click outside', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n <div class=\"outside\"></div>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.click();\n // XXX: Page.click() doesn't work\n await page.$eval('div.outside', (elem: HTMLDivElement) => elem.click());\n await page.waitForChanges();\n\n // Then\n expect(select).not.toHaveClass('expanded');\n });\n\n it('Closes when user click on another select', async () => {\n // Given\n const page = await newE2EPage();\n await page.setViewport({width: 1024, height: 1600});\n await setWcsContent(page, `\n <div style=\"display: flex\">\n <wcs-select id=\"select-1\">\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n </wcs-select>\n <wcs-select id=\"select-2\">\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n </wcs-select>\n </div>\n `);\n const select1 = await page.find('#select-1');\n const select2 = await page.find('#select-2');\n\n // When\n await select1.click();\n await page.waitForChanges();\n\n // Then\n expect(select1).toHaveClass('expanded');\n\n await select2.click(); // select another select component in page\n expect(select1).not.toHaveClass('expanded');\n expect(select2).toHaveClass('expanded');\n });\n\n it('Let us select a value and fire event correctly', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const firstSelectOption = await page.find('wcs-select > wcs-select-option');\n const label = await page.find('wcs-select >>> label');\n const changeSpy = await select.spyOnEvent('wcsChange');\n\n // When\n await select.click();\n await firstSelectOption.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({ value: '1' });\n expect(label.innerText).toBe('One');\n });\n\n describe('select event', () => {\n it('should not emit event if we set the value in js', async () => {\n // Given\n const page = await newE2EPage({\n html: `\n <wcs-select value=\"1\">\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n </wcs-select>\n `\n });\n const select = await page.find('wcs-select');\n const changeSpy = await select.spyOnEvent('wcsChange');\n\n // When\n await select.setProperty('value', '2');\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(0);\n });\n });\n\n describe('setSelectedValue', () => {\n it('Let user change selected value programmatically', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.setProperty('value', '2');\n await page.waitForChanges();\n\n // Then\n expect(select.shadowRoot.querySelector('.wcs-select-value')).toEqualText(\"Two\");\n });\n\n it('Let user change selected values programmatically', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n const newValue = ['2', '3'];\n await select.setProperty('value', newValue);\n await page.waitForChanges();\n\n // Then\n expect(select.shadowRoot.querySelector('.wcs-select-value')).toEqualText(\"Two, Three\");\n });\n });\n\n\n it('Is focusable', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.focus();\n const focusedEl = await page.find('wcs-select:focus');\n\n // Then\n expect(focusedEl).toBeDefined();\n });\n\n it('[Autocomplete] Input field is focusable', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select autocomplete=\"true\">\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.focus();\n const focusedEl = await page.find('wcs-select > input.autocomplete-field:focus');\n\n // Then\n expect(focusedEl).toBeDefined();\n })\n\n it('[Autocomplete] filter is cleared when the select value is set to a falsy value', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select autocomplete>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n <wcs-select-option value=\"4\">Four</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.click();\n\n await page.keyboard.type('One');\n const firstSelectOption = await page.find('wcs-select > wcs-select-option');\n\n await firstSelectOption.click();\n await page.waitForChanges();\n\n select.setProperty('value', '');\n await page.waitForChanges();\n\n // Then\n await select.click();\n const availableOptions = await page.findAll('wcs-select > *:not([hidden])');\n // We check that all options are available to ensure the filter is no longer active\n expect(availableOptions.length).toBe(4);\n });\n\n it('[Autocomplete] should not opened when initial value is set', async () => {\n // Given - When\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select autocomplete value=\"1\">\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n <wcs-select-option value=\"4\">Four</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // Then\n expect(select).not.toHaveClass('expanded');\n });\n\n it('[Autocomplete] should not opened when set value programmatically', async () => {\n // Given - When\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select autocomplete value=\"1\">\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n <wcs-select-option value=\"4\">Four</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n select.setProperty('value', '1');\n await page.waitForChanges();\n\n // Then\n expect(select).not.toHaveClass('expanded');\n })\n\n it('[Autocomplete] should opened when set value with user interaction', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select autocomplete>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n <wcs-select-option value=\"4\">Four</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const autocompleteInput = await page.find('wcs-select >>> input.autocomplete-field');\n\n // When\n await autocompleteInput.focus();\n await page.keyboard.type('O');\n await page.waitForChanges();\n\n // Then\n expect(select).toHaveClass('expanded');\n })\n\n it(`Propagate wcsSelectChangeEvent when a new value is selected`, async () => {\n // Given\n const page = await newE2EPage({\n html: `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `\n });\n const select = await page.find('wcs-select');\n const opt = await page.find('wcs-select > wcs-select-option');\n const changeSpy = await select.spyOnEvent('wcsChange');\n // When\n await select.click();\n await opt.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({ value: '1' });\n });\n\n xit(`Can have pre-selected option`, async () => {\n // TODO:\n });\n\n describe('Disabled', () => {\n it('Must not expand when disabled', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select disabled>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.click();\n\n // Then\n expect(select).not.toHaveClass('expanded');\n });\n\n it('Is not focusable when disabled', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select disabled>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.focus();\n const focusedEl = await page.find('wcs-select:focus');\n\n // Then\n expect(focusedEl).toBeNull();\n });\n });\n\n describe('Options', () => {\n it('Adds selected attribute to selected option', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const option = await page.find('wcs-select > wcs-select-option');\n\n // When\n await select.click();\n await option.click();\n await page.waitForChanges();\n\n // Then\n expect(option).toHaveAttribute('selected');\n });\n\n it(`Removes selected attribute from previously selected options`, async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const [opt1, opt2] = (await page.findAll('wcs-select > wcs-select-option'));\n\n // When\n await select.click();\n await opt1.click();\n await select.click(); // As it is not multiple we need to open it once again\n await opt2.click();\n await page.waitForChanges();\n\n // Then\n expect(opt1).not.toHaveAttribute('selected');\n expect(opt2).toHaveAttribute('selected');\n });\n\n it(`Must not let a user select a disabled option`, async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"1\" disabled>One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const option = await page.find('wcs-select > wcs-select-option');\n\n // When\n await select.click();\n await option.click();\n await page.waitForChanges();\n\n // Then\n expect(select).not.toHaveAttribute('value');\n });\n });\n\n describe('Multiple', () => {\n it(`Musn't close when we select a value`, async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const firstSelectOption = await page.find('wcs-select > wcs-select-option');\n\n // When\n await select.click();\n await firstSelectOption.click();\n await page.waitForChanges();\n\n // Then\n expect(select).toHaveClass('expanded');\n });\n\n it(`Allows to select multiple values`, async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const changeSpy = await select.spyOnEvent('wcsChange');\n const [opt1, opt2] = (await page.findAll('wcs-select > wcs-select-option'));\n\n // When\n await select.click();\n await opt1.click();\n await opt2.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({ value: ['1', '2'] });\n });\n\n\n it('Allows to unselect a value', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const changeSpy = await select.spyOnEvent('wcsChange');\n const [opt1, opt2] = (await page.findAll('wcs-select > wcs-select-option'));\n\n // When\n await select.click();\n await opt1.click();\n await opt2.click();\n await opt1.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(3);\n expect(changeSpy).toHaveReceivedEventDetail({ value: ['2'] });\n });\n it(`Displays all values separated by a comma`, async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const [opt1, opt2, opt3] = (await page.findAll('wcs-select > wcs-select-option'));\n const label = await page.find('wcs-select >>> label');\n\n // When\n await select.click();\n await opt1.click();\n await opt2.click();\n await opt3.click();\n await page.waitForChanges();\n\n // Then\n expect(label.innerText).toEqual('One, Two, Three');\n });\n\n it(`Tells the option that they should display as multiple`, async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n </wcs-select>\n `);\n const option = await page.find('wcs-select > wcs-select-option');\n\n // When\n await page.waitForChanges();\n\n // Then\n expect(option).toHaveAttribute('multiple');\n });\n\n it(`Propagate event when values are select`, async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n const [opt1, opt2] = (await page.findAll('wcs-select > wcs-select-option'));\n const changeSpy = await select.spyOnEvent('wcsChange');\n\n // When\n await select.click();\n await opt1.click();\n await opt2.click();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(2);\n expect(changeSpy).toHaveReceivedEventDetail({ value: ['1', '2'] });\n });\n });\n\n describe('Keyboard navigation when select is closed and not multiple', () => {\n let page;\n let wcsSelect;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"option1\" disabled>Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n <wcs-select-option value=\"option3\">Option 3</wcs-select-option>\n </wcs-select>\n `);\n wcsSelect = await page.find('wcs-select');\n });\n\n it('select value of first option enabled on Down Arrow key pressed', async () => {\n // Given\n const firstDisplayedValueOfEnableOption = \"Option 2\";\n const firstValueOfEnableOption = \"option2\";\n const displayValue: HTMLLabelElement = await page.find('wcs-select >>> label');\n const changeSpy = await wcsSelect.spyOnEvent('wcsChange');\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n expect(displayValue.innerText).toEqual(firstDisplayedValueOfEnableOption);\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({ value: firstValueOfEnableOption });\n });\n it('select value of last option enabled on PageDown key pressed', async () => {\n // Given\n const lastValueOfEnableOption = \"Option 3\";\n const displayValue: HTMLLabelElement = await page.find('wcs-select >>> label');\n const changeSpy = await wcsSelect.spyOnEvent('wcsChange');\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('PageDown');\n await page.waitForChanges();\n\n // Then\n expect(displayValue.innerText).toEqual(lastValueOfEnableOption);\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({ value: 'option3' });\n });\n it('select value of first option enabled on PageUp key pressed', async () => {\n // Given\n const fistDisplayedValueOfEnableOption = \"Option 2\";\n const firstValueOfEnableOption = \"option2\";\n const displayValue: HTMLLabelElement = await page.find('wcs-select >>> label');\n const changeSpy = await wcsSelect.spyOnEvent('wcsChange');\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('PageUp');\n await page.waitForChanges();\n\n // Then\n expect(displayValue.innerText).toEqual(fistDisplayedValueOfEnableOption);\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({ value: firstValueOfEnableOption });\n });\n it('open the overlay on Enter key press', async () => {\n // When\n await wcsSelect.focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).toHaveClass(\"expanded\");\n });\n it('open the overlay on Alt + Down Arrow key pressed', async () => {\n // When\n await wcsSelect.focus();\n await page.keyboard.down('Alt');\n await page.keyboard.press('ArrowDown');\n await page.keyboard.up('Alt');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).toHaveClass(\"expanded\");\n\n });\n\n it('focuses last selected option when opening with keyboard after programmatic value change', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"option1\">Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n <wcs-select-option value=\"option3\">Option 3</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.setProperty('value', 'option2');\n await page.waitForChanges();\n await select.focus();\n await page.keyboard.press('Enter'); // Open select with keyboard\n await page.waitForChanges();\n\n // Then\n const focusedOption = await page.find('wcs-select-option:focus');\n expect(focusedOption.getAttribute('value')).toBe('option2');\n });\n });\n describe('Keyboard navigation when select is opened and not multiple', () => {\n let page;\n let wcsSelect;\n let selectOptions;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select>\n <wcs-select-option value=\"option1\" disabled>Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n <wcs-select-option value=\"option3\">Option 3</wcs-select-option>\n </wcs-select>\n `);\n wcsSelect = await page.find('wcs-select');\n selectOptions = await page.findAll('wcs-select > wcs-select-option');\n // Open by default the overlay for each test\n await wcsSelect.focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n });\n\n it('close the overlay on Escape key pressed and focus select control', async () => {\n // Given\n // The overlay is open (makes in beforeEach)\n\n // When\n await page.keyboard.press('Escape');\n const focusedEl = await page.find('wcs-select:focus');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n expect(focusedEl).toBeDefined();\n });\n\n it('close the overlay on Alt + ArrowUp keys pressed and focus select control', async () => {\n // Given\n // The overlay is open (makes in beforeEach)\n\n // When\n await page.keyboard.down('Alt');\n await page.keyboard.press('ArrowUp');\n await page.keyboard.up('Alt');\n const focusedEl = await page.find('wcs-select:focus');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n expect(focusedEl).toBeDefined();\n });\n it('close the overlay on Tab key pressed', async () => {\n // Given\n // The overlay is open (makes in beforeEach)\n\n // When\n await page.keyboard.press('Tab');\n const focusedEl = await page.find('wcs-select:focus');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n expect(focusedEl).toBeDefined();\n });\n it('close the overlay on Tab + Shift keys pressed', async () => {\n // Given\n // The overlay is open (makes in beforeEach)\n\n // When\n await page.keyboard.down('Shift');\n await page.keyboard.press('Tab');\n await page.keyboard.up('Shift');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n const focusedSelect = await page.find('wcs-select:focus');\n expect(focusedSelect).toBeDefined();\n });\n it('choose the current option on Enter key pressed', async () => {\n // Given\n // The overlay is open (makes in beforeEach)\n const firstDisplayedValueOfEnableOption = \"Option 2\";\n const firstValueOfEnabledOption = \"option2\";\n const displayValue: HTMLLabelElement = await page.find('wcs-select >>> label');\n const changeSpy = await wcsSelect.spyOnEvent('wcsChange');\n\n // When\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(displayValue.innerText).toEqual(firstDisplayedValueOfEnableOption);\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({ value: firstValueOfEnabledOption });\n });\n it('move focus to next option on Down Arrow key down', async () => {\n // Given\n // The overlay is open (makes in beforeEach)\n const nextValueOfEnableOption = selectOptions[2];\n const changeSpy = await wcsSelect.spyOnEvent('wcsChange');\n\n // When\n await page.keyboard.press('ArrowDown');\n const focusedOption = await page.find('wcs-select-option:focus');\n\n // Then\n expect(focusedOption.value).toEqual(nextValueOfEnableOption.value);\n expect(changeSpy).toHaveReceivedEventTimes(0)\n });\n });\n describe('Keyboard navigation when select is closed and multiple', () => {\n let page;\n let wcsSelect;\n let selectOptions;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple=\"\">\n <wcs-select-option value=\"option1\" disabled>Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n <wcs-select-option value=\"option3\">Option 3</wcs-select-option>\n </wcs-select>\n `);\n wcsSelect = await page.find('wcs-select');\n selectOptions = await page.findAll('wcs-select > wcs-select-option');\n });\n\n it('move focus into the first enabled option on Down Arrow key pressed', async () => {\n // Given\n const firstOptionEnabled = selectOptions[1];\n const changeSpy = await wcsSelect.spyOnEvent('wcsChange');\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n const focusedOption = await page.find('wcs-select-option:focus');\n expect(focusedOption).toEqual(firstOptionEnabled);\n expect(changeSpy).toHaveReceivedEventTimes(0)\n });\n it('move focus into the first enabled option on Enter key pressed', async () => {\n // Given\n const firstOptionEnabled = selectOptions[1];\n const changeSpy = await wcsSelect.spyOnEvent('wcsChange');\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n const focusedOption = await page.find('wcs-select-option:focus');\n expect(focusedOption).toEqual(firstOptionEnabled);\n expect(changeSpy).toHaveReceivedEventTimes(0)\n });\n\n it('focuses last selected option when opening with keyboard after programmatic value change', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n <wcs-select-option value=\"option1\">Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n <wcs-select-option value=\"option3\">Option 3</wcs-select-option>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n // When\n await select.setProperty('value', ['option1', 'option2']);\n await page.waitForChanges();\n await select.focus();\n await page.keyboard.press('Enter'); // Open select with keyboard\n await page.waitForChanges();\n\n // Then\n const focusedOption = await page.find('wcs-select-option:focus');\n expect(focusedOption.getAttribute('value')).toBe('option2'); // Should focus the last option in the array\n });\n });\n describe('Keyboard navigation when select opened and multiple', () => {\n let page;\n let wcsSelect;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple=\"\">\n <wcs-select-option value=\"option1\" disabled>Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n <wcs-select-option value=\"option3\">Option 3</wcs-select-option>\n </wcs-select>\n `);\n wcsSelect = await page.find('wcs-select');\n // Open by default the overlay for each test\n await wcsSelect.focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n });\n\n it('close the overlay on Tab key pressed and not focus an checkbox', async () => {\n // Given\n // The overlay is open (makes in beforeEach)\n\n // When\n await page.keyboard.press('Tab');\n const focusedEl = await page.find('wcs-select:focus');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n expect(focusedEl).toBeDefined();\n });\n });\n //region Autocomplete tests\n describe('[Autocomplete] Keyboard navigation when select closed', () => {\n let page;\n let wcsSelect;\n let selectOptions;\n let wcsAutocompleteInput;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select autocomplete=\"\">\n <wcs-select-option value=\"option1\" disabled>Option 1</wcs-select-option>\n <wcs-select-option value=\"option2\">Option 2</wcs-select-option>\n <wcs-select-option value=\"option3\">Option 3</wcs-select-option>\n </wcs-select>\n `);\n wcsSelect = await page.find('wcs-select');\n selectOptions = await page.findAll('wcs-select > wcs-select-option');\n wcsAutocompleteInput = await page.find('wcs-select >>> input.autocomplete-field');\n });\n\n it('open listbox and move focus into the first enabled option on Arrow Down pressed', async () => {\n const firstOptionEnabled = selectOptions[1];\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n const visuallyFocusedOption = await page.find('wcs-select-option[highlighted]');\n expect(visuallyFocusedOption).toEqual(firstOptionEnabled);\n expect(wcsSelect).toHaveClass(\"expanded\");\n });\n\n it('open listbox without moveing on Alt + Arrow Down pressed', async () => {\n // When\n await wcsSelect.focus();\n await page.keyboard.down('Alt');\n await page.keyboard.press('ArrowDown');\n await page.keyboard.up('Alt');\n await page.waitForChanges();\n\n // Then\n const anyVisuallyFocusedOption= await page.find('wcs-select-option[highlighted]');\n expect(wcsSelect).toHaveClass(\"expanded\");\n expect(anyVisuallyFocusedOption).toBeNull();\n });\n it('clear textbox on Escape pressed', async () => {\n // Given\n await wcsAutocompleteInput.type('test');\n await page.waitForChanges();\n\n // When\n await wcsAutocompleteInput.click();\n await page.keyboard.press('Escape');\n await page.waitForChanges();\n\n // Then\n const value = await wcsAutocompleteInput.getProperty('value');\n expect(value).toEqual('');\n });\n });\n describe('[Autocomplete] Keyboard navigation when select expanded', () => {\n let page;\n let wcsSelect;\n let selectOptions;\n let autocompleteInput;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select autocomplete=\"\">\n <wcs-select-option value=\"option1\" disabled>Apple</wcs-select-option>\n <wcs-select-option value=\"option2\">Banana</wcs-select-option>\n <wcs-select-option value=\"option3\">Peach</wcs-select-option>\n </wcs-select>\n `);\n wcsSelect = await page.find('wcs-select');\n selectOptions = await page.findAll('wcs-select > wcs-select-option');\n autocompleteInput = await page.find('wcs-select >>> input.autocomplete-field');\n });\n\n it('close listbox on Escape', async () => {\n // When\n await autocompleteInput.click();\n await page.keyboard.press('Escape');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n });\n it('stay opened on Enter when no option are highlighted', async () => {\n // When\n await autocompleteInput.click();\n await page.waitForChanges();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).toHaveClass(\"expanded\");\n });\n it('Close overlay when an highlighted option is selected with Enter keypress', async () => {\n // When\n await autocompleteInput.click();\n await page.waitForChanges();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n });\n it('focus last option on Arrow Up', async () => {\n // Given\n const lastOption = selectOptions[selectOptions.length - 1];\n\n // When\n await autocompleteInput.focus();\n await page.keyboard.press('ArrowUp');\n await page.waitForChanges();\n\n // Then\n const visuallyFocusedOption = await page.find('wcs-select-option[highlighted]');\n expect(visuallyFocusedOption).toEqual(lastOption);\n });\n it('focus first option on Arrow Down', async () => {\n // Given\n const firstOption = selectOptions[1]; // Because first option is disabled\n\n // When\n await autocompleteInput.focus();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n const visuallyFocusedOption = await page.find('wcs-select-option[highlighted]');\n expect(visuallyFocusedOption).toEqual(firstOption);\n });\n it('replace text, close listbox, focus textbox on Enter', async () => {\n // Given\n const firstOption = selectOptions[1]; // Because first option is disabled\n\n // When\n await autocompleteInput.focus();\n await page.keyboard.press('ArrowDown');\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(await autocompleteInput.getProperty('value')).toEqual(firstOption.textContent);\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n const focusedInput = await page.find('wcs-select > input.autocomplete-field:focus');\n expect(focusedInput).toBeDefined();\n });\n it('close listbox, focus textbox on Escape', async () => {\n // When\n await page.keyboard.press('Escape');\n await page.waitForChanges();\n\n // Then\n expect(wcsSelect).not.toHaveClass(\"expanded\");\n const focusedInput = await page.find('wcs-select > input.autocomplete-field:focus');\n expect(focusedInput).toBeDefined();\n });\n it('cycle to next option when Arrow Down', async () => {\n // Given\n const firstSelectableOption = selectOptions[1];\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('ArrowDown'); // Going to option[1]\n await page.keyboard.press('ArrowDown'); // Going to option[2]\n await page.keyboard.press('ArrowDown'); // Going back to option[1]\n await page.waitForChanges();\n\n // Then\n const visuallyFocusedOption = await page.find('wcs-select-option[highlighted]');\n expect(visuallyFocusedOption).toEqual(firstSelectableOption);\n });\n it('cycle to previous option when Arrow Up', async () => {\n // Given\n const lastSelectableOption = selectOptions[2];\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('ArrowUp'); // Going to option[2]\n await page.keyboard.press('ArrowUp'); // Going to option[1]\n await page.keyboard.press('ArrowUp'); // Going back to option[2]\n await page.waitForChanges();\n\n // Then\n const visuallyFocusedOption = await page.find('wcs-select-option[highlighted]');\n expect(visuallyFocusedOption).toEqual(lastSelectableOption);\n });\n it('focus textbox, move cursor when Left or Right Arrow', async () => {\n // Given\n const typedText = 'test';\n\n // When\n await wcsSelect.focus();\n await autocompleteInput.type(typedText);\n await page.keyboard.press('ArrowLeft');\n await page.keyboard.press('ArrowRight');\n await page.waitForChanges();\n\n // Then\n const cursorPositionAfter = await autocompleteInput.getProperty('selectionStart');\n expect(cursorPositionAfter).toEqual(typedText.length);\n const focusedInput = await page.find('wcs-select > input.autocomplete-field:focus');\n expect(focusedInput).toBeDefined();\n });\n it('focus textbox, move cursor to the start of the text when Home pressed', async () => {\n // Given\n const typedText = 'test';\n\n // When\n await autocompleteInput.type(typedText);\n await page.keyboard.press('Home');\n await page.waitForChanges();\n\n // Then\n const cursorPositionAfter = await autocompleteInput.getProperty('selectionStart');\n expect(cursorPositionAfter).toEqual(0);\n const focusedInput = await page.find('wcs-select > input.autocomplete-field:focus');\n expect(focusedInput).toBeDefined();\n });\n it('focus textbox, move cursor to the end of the text when End pressed', async () => {\n // Given\n const typedText = 'test';\n\n // When\n await autocompleteInput.press('t');\n await autocompleteInput.press('e');\n await autocompleteInput.press('s');\n await autocompleteInput.press('t');\n await page.keyboard.press('End');\n await page.waitForChanges();\n\n // Then\n const cursorPositionAfter = await autocompleteInput.getProperty('selectionStart');\n expect(cursorPositionAfter).toEqual(typedText.length);\n const focusedInput = await page.find('wcs-select > input.autocomplete-field:focus');\n expect(focusedInput).toBeDefined();\n });\n it('focus textbox, filter listbox, remove visual focus from listbox when any printable character', async () => {\n // Given\n const allOptions = await page.findAll('wcs-select-option');\n\n // When\n await wcsSelect.focus();\n await page.keyboard.press('a');\n await page.waitForChanges();\n\n // Then\n const focusedInput = await page.find('wcs-select > input.autocomplete-field:focus');\n expect(focusedInput).toBeDefined(); // Focus textbox\n const optionsWithFilter = await page.findAll('wcs-select-option:not([aria-hidden])');\n expect(optionsWithFilter.length).toBeLessThan(allOptions.length); // Filter listbox\n const visuallyFocusedOption = await page.find('wcs-select-option[highlighted]');\n expect(visuallyFocusedOption).toBeNull(); // Remove visual focus from listbox\n });\n });\n //endregion\n\n it('Should handle asynchronous options loading with an initial value and update the label', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select value=\"2\">\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n\n expect(select.shadowRoot.querySelector('.wcs-select-value')).toBeNull(); // Verify initial value is displayed\n\n // Add options\n await page.$eval('wcs-select', (el: HTMLElement) => {\n el.innerHTML = `\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n <wcs-select-option value=\"4\">Four</wcs-select-option>\n `;\n });\n await page.waitForChanges();\n\n expect(select.shadowRoot.querySelector('.wcs-select-value')).toEqualText(\"Two\"); // Verify initial value is displayed\n });\n\n it('[Multiple] Should handle asynchronous options loading with an initial value and update the label', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-select multiple>\n </wcs-select>\n `);\n const select = await page.find('wcs-select');\n select.setProperty('value', ['2', '3']);\n await page.waitForChanges();\n\n expect(select.shadowRoot.querySelector('.wcs-select-value')).toBeNull(); // Verify initial value is displayed\n\n // Add options\n await page.$eval('wcs-select', (el: HTMLElement) => {\n el.innerHTML = `\n <wcs-select-option value=\"1\">One</wcs-select-option>\n <wcs-select-option value=\"2\">Two</wcs-select-option>\n <wcs-select-option value=\"3\">Three</wcs-select-option>\n <wcs-select-option value=\"4\">Four</wcs-select-option>\n `;\n });\n await page.waitForChanges();\n\n expect(select.shadowRoot.querySelector('.wcs-select-value')).toEqualText(\"Two, Three\"); // Verify initial value is displayed\n });\n\n});\n\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { newE2EPage } from "@stencil/core/testing";
|
|
2
|
-
import { setWcsContent } from "../../utils/tests";
|
|
3
|
-
describe('Switch component', () => {
|
|
4
|
-
describe('Events', () => {
|
|
5
|
-
it('should emit a wcsChange event when clicked on wcs-switch', async () => {
|
|
6
|
-
// Given
|
|
7
|
-
const page = await newE2EPage();
|
|
8
|
-
await setWcsContent(page, `
|
|
9
|
-
<wcs-switch name="switch-id">
|
|
10
|
-
Switch
|
|
11
|
-
</wcs-switch>
|
|
12
|
-
`);
|
|
13
|
-
// When
|
|
14
|
-
const switchElement = await page.find('wcs-switch');
|
|
15
|
-
const eventSpy = await switchElement.spyOnEvent('wcsChange');
|
|
16
|
-
await switchElement.click();
|
|
17
|
-
await page.waitForChanges();
|
|
18
|
-
// Then
|
|
19
|
-
expect(eventSpy)
|
|
20
|
-
.toHaveReceivedEventDetail({
|
|
21
|
-
checked: true
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
it('should emit a wcsChange event when space pressed on wcs-switch', async () => {
|
|
25
|
-
// Given
|
|
26
|
-
const page = await newE2EPage();
|
|
27
|
-
await setWcsContent(page, `
|
|
28
|
-
<wcs-switch name="switch-id">
|
|
29
|
-
Switch
|
|
30
|
-
</wcs-switch>
|
|
31
|
-
`);
|
|
32
|
-
// When
|
|
33
|
-
const switchElement = await page.find('wcs-switch');
|
|
34
|
-
const eventSpy = await switchElement.spyOnEvent('wcsChange');
|
|
35
|
-
await switchElement.press('Space');
|
|
36
|
-
await page.waitForChanges();
|
|
37
|
-
// Then
|
|
38
|
-
expect(eventSpy)
|
|
39
|
-
.toHaveReceivedEventDetail({
|
|
40
|
-
checked: true
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
//# sourceMappingURL=switch.e2e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch.e2e.js","sourceRoot":"","sources":["../../../src/components/switch/switch.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACtE,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;iBAIrB,CAAC,CAAC;YAEP,OAAO;YACP,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAE7D,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,OAAO;YACP,MAAM,CAAC,QAAQ,CAAC;iBACX,yBAAyB,CAAC;gBACvB,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC5E,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;iBAIrB,CAAC,CAAC;YAEP,OAAO;YACP,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAE7D,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5B,OAAO;YACP,MAAM,CAAC,QAAQ,CAAC;iBACX,yBAAyB,CAAC;gBACvB,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { newE2EPage } from \"@stencil/core/testing\";\nimport { setWcsContent } from \"../../utils/tests\";\n\ndescribe('Switch component', () => {\n describe('Events', () => {\n it('should emit a wcsChange event when clicked on wcs-switch', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-switch name=\"switch-id\">\n Switch\n </wcs-switch>\n `);\n\n // When\n const switchElement = await page.find('wcs-switch');\n const eventSpy = await switchElement.spyOnEvent('wcsChange');\n\n await switchElement.click();\n await page.waitForChanges();\n\n // Then\n expect(eventSpy)\n .toHaveReceivedEventDetail({\n checked: true\n });\n });\n\n it('should emit a wcsChange event when space pressed on wcs-switch', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-switch name=\"switch-id\">\n Switch\n </wcs-switch>\n `);\n\n // When\n const switchElement = await page.find('wcs-switch');\n const eventSpy = await switchElement.spyOnEvent('wcsChange');\n\n await switchElement.press('Space');\n await page.waitForChanges();\n\n // Then\n expect(eventSpy)\n .toHaveReceivedEventDetail({\n checked: true\n });\n });\n });\n});\n"]}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { newE2EPage } from "@stencil/core/testing";
|
|
2
|
-
import { findFocusedNode, setWcsContent } from "../../utils/tests";
|
|
3
|
-
describe('Tabs component', () => {
|
|
4
|
-
it('Display only first tab if none are preselected', async () => {
|
|
5
|
-
// Given
|
|
6
|
-
const page = await newE2EPage();
|
|
7
|
-
await setWcsContent(page, `
|
|
8
|
-
<wcs-tabs>
|
|
9
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
10
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
11
|
-
</wcs-tabs>
|
|
12
|
-
`);
|
|
13
|
-
const [tab1, tab2] = await page.findAll('wcs-tab');
|
|
14
|
-
// Then
|
|
15
|
-
expect(await tab1.isVisible()).toBe(true);
|
|
16
|
-
expect(await tab2.isVisible()).toBe(false);
|
|
17
|
-
});
|
|
18
|
-
it('Display only second tab if users click on its header', async () => {
|
|
19
|
-
// Given
|
|
20
|
-
const page = await newE2EPage();
|
|
21
|
-
await setWcsContent(page, `
|
|
22
|
-
<wcs-tabs>
|
|
23
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
24
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
25
|
-
</wcs-tabs>
|
|
26
|
-
`);
|
|
27
|
-
const [tab1, tab2] = await page.findAll('wcs-tab');
|
|
28
|
-
const [, tabh2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');
|
|
29
|
-
// When
|
|
30
|
-
await tabh2.click();
|
|
31
|
-
// Then
|
|
32
|
-
expect(await tab1.isVisible()).toBe(false);
|
|
33
|
-
expect(await tab2.isVisible()).toBe(true);
|
|
34
|
-
});
|
|
35
|
-
it('Accept and render new tabs after creation', async () => {
|
|
36
|
-
// Given
|
|
37
|
-
const page = await newE2EPage();
|
|
38
|
-
await setWcsContent(page, `
|
|
39
|
-
<wcs-tabs>
|
|
40
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
41
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
42
|
-
</wcs-tabs>
|
|
43
|
-
`);
|
|
44
|
-
// When
|
|
45
|
-
await page.evaluate(async () => {
|
|
46
|
-
const tab = document.createElement('wcs-tab');
|
|
47
|
-
const text = document.createTextNode('Three');
|
|
48
|
-
const tabsEl = document.querySelector('wcs-tabs');
|
|
49
|
-
tab.setAttribute('header', '3');
|
|
50
|
-
tab.appendChild(text);
|
|
51
|
-
tabsEl.appendChild(tab);
|
|
52
|
-
});
|
|
53
|
-
await page.waitForChanges();
|
|
54
|
-
const [, , h3] = await page.findAll('wcs-tabs>>>.wcs-tab-header');
|
|
55
|
-
const [, , t3] = await page.findAll('wcs-tab');
|
|
56
|
-
// Expect
|
|
57
|
-
expect(h3).toBeDefined();
|
|
58
|
-
expect(t3.innerText).toEqual('Three');
|
|
59
|
-
});
|
|
60
|
-
describe('SelectedKey prop', () => {
|
|
61
|
-
it('should accept a default selected key', async () => {
|
|
62
|
-
const page = await newE2EPage();
|
|
63
|
-
await setWcsContent(page, `
|
|
64
|
-
<wcs-tabs selected-key="custom-2">
|
|
65
|
-
<wcs-tab item-key="custom-1">One</wcs-tab>
|
|
66
|
-
<wcs-tab item-key="custom-2">Two</wcs-tab>
|
|
67
|
-
</wcs-tabs>
|
|
68
|
-
`);
|
|
69
|
-
const [tab1, tab2] = await page.findAll('wcs-tab');
|
|
70
|
-
expect(await tab1.isVisible()).toBe(false);
|
|
71
|
-
expect(await tab2.isVisible()).toBe(true);
|
|
72
|
-
});
|
|
73
|
-
it('Allows to change selected tab via prop after creation', async () => {
|
|
74
|
-
// Given
|
|
75
|
-
const page = await newE2EPage();
|
|
76
|
-
await setWcsContent(page, `
|
|
77
|
-
<wcs-tabs selected-key="a">
|
|
78
|
-
<wcs-tab item-key="a">One</wcs-tab>
|
|
79
|
-
<wcs-tab item-key="b">Two</wcs-tab>
|
|
80
|
-
</wcs-tabs>
|
|
81
|
-
`);
|
|
82
|
-
const tabs = await page.find('wcs-tabs');
|
|
83
|
-
const [tab1, tab2] = await page.findAll('wcs-tab');
|
|
84
|
-
// When
|
|
85
|
-
tabs.setProperty('selectedKey', 'b');
|
|
86
|
-
await page.waitForChanges();
|
|
87
|
-
// Then
|
|
88
|
-
expect(await tab1.isVisible()).toBe(false);
|
|
89
|
-
expect(await tab2.isVisible()).toBe(true);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
describe('SelectedIndex prop', () => {
|
|
93
|
-
it('Accept a default selected tab', async () => {
|
|
94
|
-
// Given
|
|
95
|
-
const page = await newE2EPage();
|
|
96
|
-
await setWcsContent(page, `
|
|
97
|
-
<wcs-tabs selected-index="1">
|
|
98
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
99
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
100
|
-
</wcs-tabs>
|
|
101
|
-
`);
|
|
102
|
-
const [tab1, tab2] = await page.findAll('wcs-tab');
|
|
103
|
-
// Then
|
|
104
|
-
expect(await tab1.isVisible()).toBe(false);
|
|
105
|
-
expect(await tab2.isVisible()).toBe(true);
|
|
106
|
-
});
|
|
107
|
-
it('Allows to change selected tab via prop after creation', async () => {
|
|
108
|
-
// Given
|
|
109
|
-
const page = await newE2EPage();
|
|
110
|
-
await setWcsContent(page, `
|
|
111
|
-
<wcs-tabs selected-index="1">
|
|
112
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
113
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
114
|
-
</wcs-tabs>
|
|
115
|
-
`);
|
|
116
|
-
const tabs = await page.find('wcs-tabs');
|
|
117
|
-
const [tab1, tab2] = await page.findAll('wcs-tab');
|
|
118
|
-
// When
|
|
119
|
-
tabs.setProperty('selectedIndex', 0);
|
|
120
|
-
await page.waitForChanges();
|
|
121
|
-
// Then
|
|
122
|
-
expect(await tab1.isVisible()).toBe(true);
|
|
123
|
-
expect(await tab2.isVisible()).toBe(false);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
describe('Tab change event', () => {
|
|
127
|
-
it('Fires when user clicks on a header', async () => {
|
|
128
|
-
// Given
|
|
129
|
-
const page = await newE2EPage();
|
|
130
|
-
await setWcsContent(page, `
|
|
131
|
-
<wcs-tabs>
|
|
132
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
133
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
134
|
-
</wcs-tabs>
|
|
135
|
-
`);
|
|
136
|
-
const tabs = await page.find('wcs-tabs');
|
|
137
|
-
const [, tabh2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');
|
|
138
|
-
const tabsSpy = await tabs.spyOnEvent('tabChange');
|
|
139
|
-
// When
|
|
140
|
-
await tabh2.click();
|
|
141
|
-
await page.waitForChanges();
|
|
142
|
-
// Then
|
|
143
|
-
expect(tabsSpy).toHaveReceivedEventTimes(1);
|
|
144
|
-
expect(tabsSpy).toHaveReceivedEventDetail({ tabName: '2', tabIndex: 1 });
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
describe('Keyboard navigation', () => {
|
|
148
|
-
it('Change selected tab with enter', async () => {
|
|
149
|
-
// Given
|
|
150
|
-
const page = await newE2EPage();
|
|
151
|
-
await setWcsContent(page, `
|
|
152
|
-
<wcs-tabs>
|
|
153
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
154
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
155
|
-
</wcs-tabs>
|
|
156
|
-
`);
|
|
157
|
-
const [, h2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');
|
|
158
|
-
const tabs = await page.find('wcs-tabs');
|
|
159
|
-
const tabsSpy = await tabs.spyOnEvent('tabChange');
|
|
160
|
-
// When
|
|
161
|
-
await h2.focus();
|
|
162
|
-
await page.keyboard.press('Enter');
|
|
163
|
-
// Then
|
|
164
|
-
expect(tabsSpy).toHaveReceivedEventTimes(1);
|
|
165
|
-
expect(tabsSpy).toHaveReceivedEventDetail({ tabName: '2', tabIndex: 1 });
|
|
166
|
-
});
|
|
167
|
-
it('Change selected tab with space', async () => {
|
|
168
|
-
// Given
|
|
169
|
-
const page = await newE2EPage();
|
|
170
|
-
await setWcsContent(page, `
|
|
171
|
-
<wcs-tabs>
|
|
172
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
173
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
174
|
-
</wcs-tabs>
|
|
175
|
-
`);
|
|
176
|
-
const [, h2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');
|
|
177
|
-
const tabs = await page.find('wcs-tabs');
|
|
178
|
-
const tabsSpy = await tabs.spyOnEvent('tabChange');
|
|
179
|
-
// When
|
|
180
|
-
await h2.focus();
|
|
181
|
-
await page.keyboard.press('Space');
|
|
182
|
-
// Then
|
|
183
|
-
expect(tabsSpy).toHaveReceivedEventTimes(1);
|
|
184
|
-
expect(tabsSpy).toHaveReceivedEventDetail({ tabName: '2', tabIndex: 1 });
|
|
185
|
-
});
|
|
186
|
-
it('Move focus with keyboard arrows', async () => {
|
|
187
|
-
// Given
|
|
188
|
-
const page = await newE2EPage();
|
|
189
|
-
await setWcsContent(page, `
|
|
190
|
-
<wcs-tabs>
|
|
191
|
-
<wcs-tab header="1">One</wcs-tab>
|
|
192
|
-
<wcs-tab header="2">Two</wcs-tab>
|
|
193
|
-
</wcs-tabs>
|
|
194
|
-
`);
|
|
195
|
-
const [h1] = await page.findAll('wcs-tabs>>>.wcs-tab-header');
|
|
196
|
-
// When
|
|
197
|
-
await h1.focus();
|
|
198
|
-
await h1.press('ArrowRight');
|
|
199
|
-
await page.waitForChanges();
|
|
200
|
-
const accessibilitySnapshot = await page.accessibility.snapshot();
|
|
201
|
-
const focusedNode = findFocusedNode(accessibilitySnapshot);
|
|
202
|
-
// Then
|
|
203
|
-
expect(focusedNode.name).toEqual('2');
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
//# sourceMappingURL=tabs.e2e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.e2e.js","sourceRoot":"","sources":["../../../src/components/tabs/tabs.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC5D,QAAQ;QACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;SAKzB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO;QACP,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QAClE,QAAQ;QACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;SAKzB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACnE,OAAO;QACP,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO;QACP,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACvD,QAAQ;QACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;SAKzB,CAAC,CAAC;QACH,OAAO;QACP,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAClD,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAChC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,EAAE,AAAD,EAAG,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,AAAD,EAAG,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,SAAS;QACT,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACnE,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,OAAO;YACP,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO;YACP,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC3C,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,OAAO;YACP,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACnE,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,OAAO;YACP,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO;YACP,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAChD,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnD,OAAO;YACP,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC5C,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAEnD,OAAO;YACP,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC5C,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnD,OAAO;YACP,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,IAAI,EAAE;;;;;aAKzB,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAC9D,OAAO;YACP,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC7B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAClE,MAAM,WAAW,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;YAC3D,OAAO;YACP,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\r\nimport { findFocusedNode, setWcsContent } from '../../utils/tests';\r\n\r\ndescribe('Tabs component', () => {\r\n it('Display only first tab if none are preselected', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs>\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const [tab1, tab2] = await page.findAll('wcs-tab');\r\n // Then\r\n expect(await tab1.isVisible()).toBe(true);\r\n expect(await tab2.isVisible()).toBe(false);\r\n });\r\n it('Display only second tab if users click on its header', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs>\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const [tab1, tab2] = await page.findAll('wcs-tab');\r\n const [, tabh2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');\r\n // When\r\n await tabh2.click();\r\n // Then\r\n expect(await tab1.isVisible()).toBe(false);\r\n expect(await tab2.isVisible()).toBe(true);\r\n });\r\n it('Accept and render new tabs after creation', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs>\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n // When\r\n await page.evaluate(async () => {\r\n const tab = document.createElement('wcs-tab');\r\n const text = document.createTextNode('Three');\r\n const tabsEl = document.querySelector('wcs-tabs');\r\n tab.setAttribute('header', '3');\r\n tab.appendChild(text);\r\n tabsEl.appendChild(tab);\r\n });\r\n await page.waitForChanges();\r\n const [, , h3] = await page.findAll('wcs-tabs>>>.wcs-tab-header');\r\n const [, , t3] = await page.findAll('wcs-tab');\r\n // Expect\r\n expect(h3).toBeDefined();\r\n expect(t3.innerText).toEqual('Three');\r\n });\r\n describe('SelectedKey prop', () => {\r\n it('should accept a default selected key', async () => {\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs selected-key=\"custom-2\">\r\n <wcs-tab item-key=\"custom-1\">One</wcs-tab>\r\n <wcs-tab item-key=\"custom-2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const [tab1, tab2] = await page.findAll('wcs-tab');\r\n expect(await tab1.isVisible()).toBe(false);\r\n expect(await tab2.isVisible()).toBe(true);\r\n });\r\n it('Allows to change selected tab via prop after creation', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs selected-key=\"a\">\r\n <wcs-tab item-key=\"a\">One</wcs-tab>\r\n <wcs-tab item-key=\"b\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const tabs = await page.find('wcs-tabs');\r\n const [tab1, tab2] = await page.findAll('wcs-tab');\r\n // When\r\n tabs.setProperty('selectedKey', 'b');\r\n await page.waitForChanges();\r\n // Then\r\n expect(await tab1.isVisible()).toBe(false);\r\n expect(await tab2.isVisible()).toBe(true);\r\n });\r\n })\r\n describe('SelectedIndex prop', () => {\r\n it('Accept a default selected tab', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs selected-index=\"1\">\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const [tab1, tab2] = await page.findAll('wcs-tab');\r\n // Then\r\n expect(await tab1.isVisible()).toBe(false);\r\n expect(await tab2.isVisible()).toBe(true);\r\n });\r\n it('Allows to change selected tab via prop after creation', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs selected-index=\"1\">\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const tabs = await page.find('wcs-tabs');\r\n const [tab1, tab2] = await page.findAll('wcs-tab');\r\n // When\r\n tabs.setProperty('selectedIndex', 0);\r\n await page.waitForChanges();\r\n // Then\r\n expect(await tab1.isVisible()).toBe(true);\r\n expect(await tab2.isVisible()).toBe(false);\r\n });\r\n });\r\n describe('Tab change event', () => {\r\n it('Fires when user clicks on a header', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs>\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const tabs = await page.find('wcs-tabs');\r\n const [, tabh2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');\r\n const tabsSpy = await tabs.spyOnEvent('tabChange');\r\n // When\r\n await tabh2.click();\r\n await page.waitForChanges();\r\n // Then\r\n expect(tabsSpy).toHaveReceivedEventTimes(1);\r\n expect(tabsSpy).toHaveReceivedEventDetail({tabName: '2', tabIndex: 1});\r\n });\r\n });\r\n describe('Keyboard navigation', () => {\r\n it('Change selected tab with enter', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs>\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const [, h2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');\r\n const tabs = await page.find('wcs-tabs');\r\n const tabsSpy = await tabs.spyOnEvent('tabChange');\r\n\r\n // When\r\n await h2.focus();\r\n await page.keyboard.press('Enter');\r\n // Then\r\n expect(tabsSpy).toHaveReceivedEventTimes(1);\r\n expect(tabsSpy).toHaveReceivedEventDetail({tabName: '2', tabIndex: 1});\r\n });\r\n it('Change selected tab with space', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs>\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const [, h2] = await page.findAll('wcs-tabs>>>.wcs-tab-header');\r\n const tabs = await page.find('wcs-tabs');\r\n const tabsSpy = await tabs.spyOnEvent('tabChange');\r\n // When\r\n await h2.focus();\r\n await page.keyboard.press('Space');\r\n // Then\r\n expect(tabsSpy).toHaveReceivedEventTimes(1);\r\n expect(tabsSpy).toHaveReceivedEventDetail({tabName: '2', tabIndex: 1});\r\n });\r\n it('Move focus with keyboard arrows', async () => {\r\n // Given\r\n const page = await newE2EPage();\r\n await setWcsContent(page, `\r\n <wcs-tabs>\r\n <wcs-tab header=\"1\">One</wcs-tab>\r\n <wcs-tab header=\"2\">Two</wcs-tab>\r\n </wcs-tabs>\r\n `);\r\n const [h1] = await page.findAll('wcs-tabs>>>.wcs-tab-header');\r\n // When\r\n await h1.focus();\r\n await h1.press('ArrowRight');\r\n await page.waitForChanges();\r\n const accessibilitySnapshot = await page.accessibility.snapshot();\r\n const focusedNode = findFocusedNode(accessibilitySnapshot);\r\n // Then\r\n expect(focusedNode.name).toEqual('2');\r\n });\r\n });\r\n});\r\n"]}
|