wcs-core 7.2.2 → 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/accessibility-5f681a74.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{popper-8d6e7fca.js → popper-1b61df21.js} +10 -17
- package/dist/cjs/popper-1b61df21.js.map +1 -0
- package/dist/cjs/wcs-accordion-panel.cjs.entry.js +1 -1
- package/dist/cjs/wcs-accordion-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-accordion.cjs.entry.js +2 -1
- package/dist/cjs/wcs-accordion.cjs.entry.js.map +1 -1
- 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-checkbox.cjs.entry.js +3 -2
- package/dist/cjs/wcs-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-chip.cjs.entry.js +102 -0
- package/dist/cjs/wcs-chip.cjs.entry.js.map +1 -0
- 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/cjs/wcs.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/accordion/accordion.e2e.playwright.js +183 -0
- package/dist/collection/components/accordion/accordion.e2e.playwright.js.map +1 -0
- package/dist/collection/components/accordion/accordion.js +2 -1
- package/dist/collection/components/accordion/accordion.js.map +1 -1
- package/dist/collection/components/accordion-panel/accordion-panel.js +3 -3
- package/dist/collection/components/accordion-panel/accordion-panel.js.map +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.css +3 -0
- 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 +21 -2
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/chip/chip-interface.js +2 -0
- package/dist/collection/components/chip/chip-interface.js.map +1 -0
- package/dist/collection/components/chip/chip.css +220 -0
- 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/chip/chip.js +341 -0
- package/dist/collection/components/chip/chip.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/accessibility.js +16 -0
- package/dist/collection/utils/accessibility.js.map +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/accessibility-069640cf.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{popper-e491c314.js → popper-ac238961.js} +10 -17
- package/dist/esm/popper-ac238961.js.map +1 -0
- package/dist/esm/wcs-accordion-panel.entry.js +1 -1
- package/dist/esm/wcs-accordion-panel.entry.js.map +1 -1
- package/dist/esm/wcs-accordion.entry.js +2 -1
- package/dist/esm/wcs-accordion.entry.js.map +1 -1
- package/dist/esm/wcs-breadcrumb.entry.js +1 -1
- package/dist/esm/wcs-breadcrumb.entry.js.map +1 -1
- package/dist/esm/wcs-checkbox.entry.js +3 -2
- package/dist/esm/wcs-checkbox.entry.js.map +1 -1
- package/dist/esm/wcs-chip.entry.js +98 -0
- package/dist/esm/wcs-chip.entry.js.map +1 -0
- 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/esm/wcs.js +1 -1
- package/dist/types/components/accordion/accordion.e2e.playwright.d.ts +1 -0
- package/dist/types/components/accordion-panel/accordion-panel.d.ts +5 -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.d.ts +4 -0
- package/dist/types/components/checkbox/checkbox.e2e.playwright.d.ts +1 -0
- package/dist/types/components/chip/chip-interface.d.ts +4 -0
- package/dist/types/components/chip/chip.d.ts +132 -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 +354 -0
- package/dist/types/utils/accessibility.d.ts +7 -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-828b45b4.entry.js +2 -0
- package/dist/wcs/p-828b45b4.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-990698a7.entry.js +2 -0
- package/dist/wcs/p-990698a7.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-ed3b0709.entry.js +2 -0
- package/dist/wcs/p-ed3b0709.entry.js.map +1 -0
- package/dist/wcs/{p-6c6079ee.entry.js → p-f2eeb249.entry.js} +2 -2
- package/dist/wcs/{p-6c6079ee.entry.js.map → p-f2eeb249.entry.js.map} +1 -1
- 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-fb2751c2.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/dist/wcs/wcs.esm.js.map +1 -1
- package/package.json +18 -24
- package/dist/cjs/popper-8d6e7fca.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/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-02f31010.entry.js +0 -2
- package/dist/wcs/p-02f31010.entry.js.map +0 -1
- 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-4fb2d985.entry.js +0 -2
- package/dist/wcs/p-4fb2d985.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,206 +0,0 @@
|
|
|
1
|
-
import { newE2EPage } from "@stencil/core/testing";
|
|
2
|
-
import { setWcsContent } from "../../utils/tests";
|
|
3
|
-
describe('counter', () => {
|
|
4
|
-
it('should increment the counter when click on plus button', async () => {
|
|
5
|
-
// Given
|
|
6
|
-
const page = await newE2EPage();
|
|
7
|
-
await setWcsContent(page, `
|
|
8
|
-
<wcs-counter></wcs-counter>
|
|
9
|
-
`);
|
|
10
|
-
const counter = await page.find('wcs-counter');
|
|
11
|
-
const changeSpy = await counter.spyOnEvent('wcsChange');
|
|
12
|
-
const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
|
|
13
|
-
// When
|
|
14
|
-
await incrementButton.click();
|
|
15
|
-
await page.waitForChanges();
|
|
16
|
-
// Then
|
|
17
|
-
expect(changeSpy).toHaveReceivedEventTimes(1);
|
|
18
|
-
expect(changeSpy).toHaveReceivedEventDetail({ value: 1 });
|
|
19
|
-
});
|
|
20
|
-
it('should decrement the counter when click on minus button', async () => {
|
|
21
|
-
// Given
|
|
22
|
-
const page = await newE2EPage();
|
|
23
|
-
await setWcsContent(page, `
|
|
24
|
-
<wcs-counter></wcs-counter>
|
|
25
|
-
`);
|
|
26
|
-
const counter = await page.find('wcs-counter');
|
|
27
|
-
const changeSpy = await counter.spyOnEvent('wcsChange');
|
|
28
|
-
const incrementButton = await page.find('wcs-counter >>> wcs-button:first-child');
|
|
29
|
-
// When
|
|
30
|
-
await incrementButton.click();
|
|
31
|
-
await page.waitForChanges();
|
|
32
|
-
// Then
|
|
33
|
-
expect(changeSpy).toHaveReceivedEventTimes(1);
|
|
34
|
-
expect(changeSpy).toHaveReceivedEventDetail({ value: -1 });
|
|
35
|
-
});
|
|
36
|
-
it('should have 0 as default value', async () => {
|
|
37
|
-
// Given
|
|
38
|
-
const page = await newE2EPage();
|
|
39
|
-
await setWcsContent(page, `
|
|
40
|
-
<wcs-counter></wcs-counter>
|
|
41
|
-
`);
|
|
42
|
-
const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
|
|
43
|
-
// Then
|
|
44
|
-
expect(currentDisplayedValue).toEqualText('0');
|
|
45
|
-
});
|
|
46
|
-
it('should respect the step attribute', async () => {
|
|
47
|
-
// Given
|
|
48
|
-
const page = await newE2EPage();
|
|
49
|
-
await setWcsContent(page, `
|
|
50
|
-
<wcs-counter step="5"></wcs-counter>
|
|
51
|
-
`);
|
|
52
|
-
const counter = await page.find('wcs-counter');
|
|
53
|
-
const changeSpy = await counter.spyOnEvent('wcsChange');
|
|
54
|
-
const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
|
|
55
|
-
// When
|
|
56
|
-
await incrementButton.click();
|
|
57
|
-
await page.waitForChanges();
|
|
58
|
-
// Then
|
|
59
|
-
expect(changeSpy).toHaveReceivedEventTimes(1);
|
|
60
|
-
expect(changeSpy).toHaveReceivedEventDetail({ value: 5 });
|
|
61
|
-
});
|
|
62
|
-
it('should respect the min attribute', async () => {
|
|
63
|
-
// Given
|
|
64
|
-
const page = await newE2EPage();
|
|
65
|
-
await setWcsContent(page, `
|
|
66
|
-
<wcs-counter min="-1" value="0"></wcs-counter>
|
|
67
|
-
`);
|
|
68
|
-
const counter = await page.find('wcs-counter');
|
|
69
|
-
const changeSpy = await counter.spyOnEvent('wcsChange');
|
|
70
|
-
const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');
|
|
71
|
-
// When
|
|
72
|
-
await decrementButton.click();
|
|
73
|
-
await decrementButton.click();
|
|
74
|
-
await page.waitForChanges();
|
|
75
|
-
// Then
|
|
76
|
-
expect(changeSpy).toHaveReceivedEventTimes(1);
|
|
77
|
-
expect(changeSpy).toHaveReceivedEventDetail({ value: -1 });
|
|
78
|
-
});
|
|
79
|
-
it('should use the min attribute as default value when value is not set', async () => {
|
|
80
|
-
// Given
|
|
81
|
-
const page = await newE2EPage();
|
|
82
|
-
await setWcsContent(page, `
|
|
83
|
-
<wcs-counter min="5"></wcs-counter>
|
|
84
|
-
`);
|
|
85
|
-
const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
|
|
86
|
-
// Then
|
|
87
|
-
expect(currentDisplayedValue).toEqualText('5');
|
|
88
|
-
});
|
|
89
|
-
it('should respect the max attribute', async () => {
|
|
90
|
-
// Given
|
|
91
|
-
const page = await newE2EPage();
|
|
92
|
-
await setWcsContent(page, `
|
|
93
|
-
<wcs-counter max="1"></wcs-counter>
|
|
94
|
-
`);
|
|
95
|
-
const counter = await page.find('wcs-counter');
|
|
96
|
-
const changeSpy = await counter.spyOnEvent('wcsChange');
|
|
97
|
-
const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
|
|
98
|
-
// When
|
|
99
|
-
await incrementButton.click();
|
|
100
|
-
await incrementButton.click();
|
|
101
|
-
await page.waitForChanges();
|
|
102
|
-
// Then
|
|
103
|
-
expect(changeSpy).toHaveReceivedEventTimes(1);
|
|
104
|
-
expect(changeSpy).toHaveReceivedEventDetail({ value: 1 });
|
|
105
|
-
});
|
|
106
|
-
it('should respect the value attribute', async () => {
|
|
107
|
-
// Given
|
|
108
|
-
const page = await newE2EPage();
|
|
109
|
-
await setWcsContent(page, `
|
|
110
|
-
<wcs-counter value="5"></wcs-counter>
|
|
111
|
-
`);
|
|
112
|
-
const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
|
|
113
|
-
// Then
|
|
114
|
-
expect(currentDisplayedValue).toEqualText('5');
|
|
115
|
-
});
|
|
116
|
-
it('should use the min value as default when min is greater than 0', async () => {
|
|
117
|
-
// Given
|
|
118
|
-
const page = await newE2EPage();
|
|
119
|
-
await setWcsContent(page, `
|
|
120
|
-
<wcs-counter min="5"></wcs-counter>
|
|
121
|
-
`);
|
|
122
|
-
const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
|
|
123
|
-
// Then
|
|
124
|
-
expect(currentDisplayedValue).toEqualText('5');
|
|
125
|
-
});
|
|
126
|
-
it('should use the min value as default when min is greater than value', async () => {
|
|
127
|
-
// Given
|
|
128
|
-
const page = await newE2EPage();
|
|
129
|
-
await setWcsContent(page, `
|
|
130
|
-
<wcs-counter min="5" value="3"></wcs-counter>
|
|
131
|
-
`);
|
|
132
|
-
const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');
|
|
133
|
-
// Then
|
|
134
|
-
expect(currentDisplayedValue).toEqualText('5');
|
|
135
|
-
});
|
|
136
|
-
it('should fire wcsBlur event when the counter loose focus', async () => {
|
|
137
|
-
const page = await newE2EPage();
|
|
138
|
-
await setWcsContent(page, `
|
|
139
|
-
<button id="first">first</button>
|
|
140
|
-
<wcs-counter></wcs-counter>
|
|
141
|
-
<button id="last">last</button>
|
|
142
|
-
`);
|
|
143
|
-
const counter = await page.find('wcs-counter');
|
|
144
|
-
const blurSpy = await counter.spyOnEvent('wcsBlur');
|
|
145
|
-
const firstButton = await page.find('#first');
|
|
146
|
-
// When
|
|
147
|
-
await firstButton.click();
|
|
148
|
-
await page.keyboard.press('Tab');
|
|
149
|
-
await page.keyboard.press('Tab');
|
|
150
|
-
await page.waitForChanges();
|
|
151
|
-
// Then
|
|
152
|
-
expect(blurSpy).toHaveReceivedEventTimes(1);
|
|
153
|
-
});
|
|
154
|
-
it('should fire wcsBlur event when the user click on decrement button and leave', async () => {
|
|
155
|
-
const page = await newE2EPage();
|
|
156
|
-
await setWcsContent(page, `
|
|
157
|
-
<wcs-counter></wcs-counter>
|
|
158
|
-
<button>last</button>
|
|
159
|
-
`);
|
|
160
|
-
const counter = await page.find('wcs-counter');
|
|
161
|
-
const button = await page.find('button');
|
|
162
|
-
const blurSpy = await counter.spyOnEvent('wcsBlur');
|
|
163
|
-
const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');
|
|
164
|
-
// When
|
|
165
|
-
await decrementButton.click();
|
|
166
|
-
await button.click();
|
|
167
|
-
await page.waitForChanges();
|
|
168
|
-
// Then
|
|
169
|
-
expect(blurSpy).toHaveReceivedEventTimes(1);
|
|
170
|
-
});
|
|
171
|
-
it('should fire wcsBlur event when the user click on increment button and leave', async () => {
|
|
172
|
-
const page = await newE2EPage();
|
|
173
|
-
await setWcsContent(page, `
|
|
174
|
-
<wcs-counter></wcs-counter>
|
|
175
|
-
<button>last</button>
|
|
176
|
-
`);
|
|
177
|
-
const counter = await page.find('wcs-counter');
|
|
178
|
-
const button = await page.find('button');
|
|
179
|
-
const blurSpy = await counter.spyOnEvent('wcsBlur');
|
|
180
|
-
const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
|
|
181
|
-
// When
|
|
182
|
-
await incrementButton.click();
|
|
183
|
-
await button.click();
|
|
184
|
-
await page.waitForChanges();
|
|
185
|
-
// Then
|
|
186
|
-
expect(blurSpy).toHaveReceivedEventTimes(1);
|
|
187
|
-
});
|
|
188
|
-
it('should not be interactive when disabled', async () => {
|
|
189
|
-
// Given
|
|
190
|
-
const page = await newE2EPage();
|
|
191
|
-
await setWcsContent(page, `
|
|
192
|
-
<wcs-counter disabled="true"></wcs-counter>
|
|
193
|
-
`);
|
|
194
|
-
const counter = await page.find('wcs-counter');
|
|
195
|
-
const changeSpy = await counter.spyOnEvent('wcsChange');
|
|
196
|
-
const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');
|
|
197
|
-
// When
|
|
198
|
-
await incrementButton.click();
|
|
199
|
-
await page.waitForChanges();
|
|
200
|
-
// Then
|
|
201
|
-
expect(changeSpy).not.toHaveReceivedEvent();
|
|
202
|
-
expect(await counter.getProperty('value')).toBe(0);
|
|
203
|
-
expect(await incrementButton.getProperty('disabled')).toBe(true);
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
//# sourceMappingURL=counter.e2e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"counter.e2e.js","sourceRoot":"","sources":["../../../src/components/counter/counter.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\nimport { setWcsContent } from \"../../utils/tests\";\n\n\ndescribe('counter', () => {\n it('should increment the counter when click on plus button', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: 1});\n });\n\n it('should decrement the counter when click on minus button', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:first-child');\n // When\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: -1});\n });\n\n it('should have 0 as default value', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n\n // Then\n expect(currentDisplayedValue).toEqualText('0');\n });\n it('should respect the step attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter step=\"5\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: 5});\n });\n it('should respect the min attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"-1\" value=\"0\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');\n // When\n await decrementButton.click();\n await decrementButton.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: -1});\n });\n it('should use the min attribute as default value when value is not set', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"5\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should respect the max attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter max=\"1\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await incrementButton.click();\n await page.waitForChanges();\n // Then\n expect(changeSpy).toHaveReceivedEventTimes(1);\n expect(changeSpy).toHaveReceivedEventDetail({value: 1});\n });\n it('should respect the value attribute', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter value=\"5\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should use the min value as default when min is greater than 0', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"5\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should use the min value as default when min is greater than value', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter min=\"5\" value=\"3\"></wcs-counter>\n `);\n const currentDisplayedValue = await page.find('wcs-counter >>> .current-value');\n // Then\n expect(currentDisplayedValue).toEqualText('5');\n });\n it('should fire wcsBlur event when the counter loose focus', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <button id=\"first\">first</button>\n <wcs-counter></wcs-counter>\n <button id=\"last\">last</button>\n `);\n const counter = await page.find('wcs-counter');\n const blurSpy = await counter.spyOnEvent('wcsBlur');\n const firstButton = await page.find('#first');\n // When\n await firstButton.click();\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n // Then\n expect(blurSpy).toHaveReceivedEventTimes(1);\n });\n it('should fire wcsBlur event when the user click on decrement button and leave', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n <button>last</button>\n `);\n const counter = await page.find('wcs-counter');\n const button = await page.find('button');\n const blurSpy = await counter.spyOnEvent('wcsBlur');\n const decrementButton = await page.find('wcs-counter >>> wcs-button:first-child');\n // When\n await decrementButton.click();\n await button.click();\n await page.waitForChanges();\n\n // Then\n expect(blurSpy).toHaveReceivedEventTimes(1);\n });\n it('should fire wcsBlur event when the user click on increment button and leave', async () => {\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter></wcs-counter>\n <button>last</button>\n `);\n const counter = await page.find('wcs-counter');\n const button = await page.find('button');\n const blurSpy = await counter.spyOnEvent('wcsBlur');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n // When\n await incrementButton.click();\n await button.click();\n await page.waitForChanges();\n\n // Then\n expect(blurSpy).toHaveReceivedEventTimes(1);\n });\n it('should not be interactive when disabled', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-counter disabled=\"true\"></wcs-counter>\n `);\n const counter = await page.find('wcs-counter');\n const changeSpy = await counter.spyOnEvent('wcsChange');\n const incrementButton = await page.find('wcs-counter >>> wcs-button:last-child');\n\n // When\n await incrementButton.click();\n await page.waitForChanges();\n\n // Then\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(await counter.getProperty('value')).toBe(0);\n expect(await incrementButton.getProperty('disabled')).toBe(true);\n });\n});\n"]}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { newE2EPage } from "@stencil/core/testing";
|
|
2
|
-
import { setWcsContent } from "../../utils/tests";
|
|
3
|
-
describe('Dropdown component', () => {
|
|
4
|
-
let page;
|
|
5
|
-
let dropdown;
|
|
6
|
-
let dropdownButton;
|
|
7
|
-
let items;
|
|
8
|
-
let firstItem;
|
|
9
|
-
let lastItem;
|
|
10
|
-
beforeEach(async () => {
|
|
11
|
-
// Given
|
|
12
|
-
page = await newE2EPage();
|
|
13
|
-
await setWcsContent(page, `
|
|
14
|
-
<wcs-dropdown mode="plain" shape="normal" size="m">
|
|
15
|
-
<span slot="placeholder">Dropdown</span>
|
|
16
|
-
<wcs-dropdown-item id="first-item">Premier item</wcs-dropdown-item>
|
|
17
|
-
<wcs-dropdown-header>ACTION HEADER</wcs-dropdown-header>
|
|
18
|
-
<wcs-dropdown-item>Second item test avec un long texte</wcs-dropdown-item>
|
|
19
|
-
<wcs-dropdown-item>Dernier item</wcs-dropdown-item>
|
|
20
|
-
<wcs-dropdown-divider></wcs-dropdown-divider>
|
|
21
|
-
<wcs-dropdown-item id="last-item">Dernier item</wcs-dropdown-item>
|
|
22
|
-
</wcs-dropdown>
|
|
23
|
-
`);
|
|
24
|
-
dropdown = await page.find('wcs-dropdown');
|
|
25
|
-
dropdownButton = await page.find('wcs-dropdown >>> #dropdown-button');
|
|
26
|
-
items = await page.findAll('wcs-dropdown-item');
|
|
27
|
-
firstItem = await page.find('wcs-dropdown-item#first-item');
|
|
28
|
-
lastItem = await page.find('wcs-dropdown-item#last-item');
|
|
29
|
-
});
|
|
30
|
-
describe('keyboard interactions', () => {
|
|
31
|
-
it('Enter should open menu and move focus to the first item', async () => {
|
|
32
|
-
// When
|
|
33
|
-
await dropdown.focus();
|
|
34
|
-
await page.keyboard.press('Enter');
|
|
35
|
-
await page.waitForChanges();
|
|
36
|
-
// Then
|
|
37
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
|
|
38
|
-
const focusedItem = await page.find(':focus');
|
|
39
|
-
expect(focusedItem).toEqual(items[0]);
|
|
40
|
-
});
|
|
41
|
-
it('SPACE should open menu and move focus to the first item', async () => {
|
|
42
|
-
// When
|
|
43
|
-
await dropdown.focus();
|
|
44
|
-
await page.keyboard.press('Space');
|
|
45
|
-
await page.waitForChanges();
|
|
46
|
-
// Then
|
|
47
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
|
|
48
|
-
const focusedItem = await page.find(':focus');
|
|
49
|
-
expect(focusedItem).toEqual(items[0]);
|
|
50
|
-
});
|
|
51
|
-
it('DOWN_ARROW should open menu and move focus to the first item', async () => {
|
|
52
|
-
// When
|
|
53
|
-
await dropdown.focus();
|
|
54
|
-
await page.keyboard.press('ArrowDown');
|
|
55
|
-
await page.waitForChanges();
|
|
56
|
-
// Then
|
|
57
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
|
|
58
|
-
const focusedItem = await page.find(':focus');
|
|
59
|
-
expect(focusedItem).toEqual(items[0]);
|
|
60
|
-
});
|
|
61
|
-
it('UP_ARROW should open menu and move focus to the last item', async () => {
|
|
62
|
-
// When
|
|
63
|
-
await dropdown.focus();
|
|
64
|
-
await page.keyboard.press('ArrowUp');
|
|
65
|
-
await page.waitForChanges();
|
|
66
|
-
// Then
|
|
67
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');
|
|
68
|
-
const focusedItem = await page.find(':focus');
|
|
69
|
-
expect(focusedItem).toEqual(items[items.length - 1]);
|
|
70
|
-
});
|
|
71
|
-
it('HOME should focus the first item', async () => {
|
|
72
|
-
// When
|
|
73
|
-
await dropdownButton.click();
|
|
74
|
-
await page.waitForChanges();
|
|
75
|
-
await page.keyboard.press('Home');
|
|
76
|
-
await page.waitForChanges();
|
|
77
|
-
// Then
|
|
78
|
-
const focusedItem = await page.find(':focus');
|
|
79
|
-
expect(focusedItem).toEqual(firstItem);
|
|
80
|
-
});
|
|
81
|
-
it('END should focus the last item', async () => {
|
|
82
|
-
// When
|
|
83
|
-
await dropdownButton.click();
|
|
84
|
-
await page.waitForChanges();
|
|
85
|
-
await page.keyboard.press('End');
|
|
86
|
-
await page.waitForChanges();
|
|
87
|
-
// Then
|
|
88
|
-
const focusedItem = await page.find(':focus');
|
|
89
|
-
expect(focusedItem).toEqual(lastItem);
|
|
90
|
-
});
|
|
91
|
-
it('UP_ARROW should move focus to the previous item', async () => {
|
|
92
|
-
// When
|
|
93
|
-
await dropdownButton.click();
|
|
94
|
-
await page.keyboard.press('ArrowUp');
|
|
95
|
-
await page.waitForChanges();
|
|
96
|
-
// Then
|
|
97
|
-
const focusedItem = await page.find(':focus');
|
|
98
|
-
expect(focusedItem).toEqual(lastItem);
|
|
99
|
-
});
|
|
100
|
-
it('DOWN_ARROW should move focus to the next item', async () => {
|
|
101
|
-
// When
|
|
102
|
-
await dropdownButton.click();
|
|
103
|
-
await page.keyboard.press('ArrowDown');
|
|
104
|
-
await page.waitForChanges();
|
|
105
|
-
// Then
|
|
106
|
-
const focusedItem = await page.find(':focus');
|
|
107
|
-
expect(focusedItem).toEqual(items[1]);
|
|
108
|
-
});
|
|
109
|
-
it('ESCAPE should close the menu and set focus on the dropdown button', async () => {
|
|
110
|
-
// When
|
|
111
|
-
await dropdownButton.click();
|
|
112
|
-
await page.keyboard.press('Escape');
|
|
113
|
-
await page.waitForChanges();
|
|
114
|
-
// Then
|
|
115
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
|
|
116
|
-
const focusedElement = await page.find(':focus');
|
|
117
|
-
expect(focusedElement).toEqual(dropdown);
|
|
118
|
-
});
|
|
119
|
-
it('TAB should close the menu and set focus on the dropdown button', async () => {
|
|
120
|
-
// When
|
|
121
|
-
await dropdownButton.click();
|
|
122
|
-
await page.keyboard.press('Tab');
|
|
123
|
-
await page.waitForChanges();
|
|
124
|
-
// Then
|
|
125
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
|
|
126
|
-
const focusedElement = await page.find(':focus');
|
|
127
|
-
expect(focusedElement).toEqual(dropdown);
|
|
128
|
-
});
|
|
129
|
-
it('SHIFT+TAB should close the menu and set focus on the dropdown button', async () => {
|
|
130
|
-
// When
|
|
131
|
-
await dropdownButton.click();
|
|
132
|
-
await page.keyboard.down('Shift');
|
|
133
|
-
await page.keyboard.press('Tab');
|
|
134
|
-
await page.keyboard.up('Shift');
|
|
135
|
-
await page.waitForChanges();
|
|
136
|
-
// Then
|
|
137
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
|
|
138
|
-
const focusedElement = await page.find(':focus');
|
|
139
|
-
expect(focusedElement).toEqual(dropdown);
|
|
140
|
-
});
|
|
141
|
-
it('ENTER should activate the item, close menu, and set focus on the dropdown button', async () => {
|
|
142
|
-
const itemClickSpy = await dropdown.spyOnEvent('wcsDropdownItemClick');
|
|
143
|
-
// When
|
|
144
|
-
await dropdownButton.click();
|
|
145
|
-
await items[0].focus();
|
|
146
|
-
await page.keyboard.press('Enter');
|
|
147
|
-
await page.waitForChanges();
|
|
148
|
-
// Then
|
|
149
|
-
expect(itemClickSpy).toHaveReceivedEventTimes(1);
|
|
150
|
-
expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');
|
|
151
|
-
const focusedElement = await page.find(':focus');
|
|
152
|
-
expect(focusedElement).toEqual(dropdown);
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
//# sourceMappingURL=dropdown.e2e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.e2e.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\nimport { setWcsContent } from \"../../utils/tests\";\n\ndescribe('Dropdown component', () => {\n let page;\n let dropdown;\n let dropdownButton;\n let items;\n let firstItem;\n let lastItem;\n\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-dropdown mode=\"plain\" shape=\"normal\" size=\"m\">\n <span slot=\"placeholder\">Dropdown</span>\n <wcs-dropdown-item id=\"first-item\">Premier item</wcs-dropdown-item>\n <wcs-dropdown-header>ACTION HEADER</wcs-dropdown-header>\n <wcs-dropdown-item>Second item test avec un long texte</wcs-dropdown-item>\n <wcs-dropdown-item>Dernier item</wcs-dropdown-item>\n <wcs-dropdown-divider></wcs-dropdown-divider>\n <wcs-dropdown-item id=\"last-item\">Dernier item</wcs-dropdown-item>\n </wcs-dropdown>\n `);\n dropdown = await page.find('wcs-dropdown');\n dropdownButton = await page.find('wcs-dropdown >>> #dropdown-button');\n items = await page.findAll('wcs-dropdown-item');\n firstItem = await page.find('wcs-dropdown-item#first-item');\n lastItem = await page.find('wcs-dropdown-item#last-item');\n });\n\n describe('keyboard interactions', () => {\n it('Enter should open menu and move focus to the first item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[0]);\n });\n\n it('SPACE should open menu and move focus to the first item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('Space');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[0]);\n });\n\n it('DOWN_ARROW should open menu and move focus to the first item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[0]);\n });\n\n it('UP_ARROW should open menu and move focus to the last item', async () => {\n // When\n await dropdown.focus();\n await page.keyboard.press('ArrowUp');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'true');\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[items.length - 1]);\n });\n\n it('HOME should focus the first item', async () => {\n // When\n await dropdownButton.click();\n await page.waitForChanges();\n await page.keyboard.press('Home');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(firstItem);\n });\n\n it('END should focus the last item', async () => {\n // When\n await dropdownButton.click();\n await page.waitForChanges();\n await page.keyboard.press('End');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(lastItem);\n });\n\n it('UP_ARROW should move focus to the previous item', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('ArrowUp');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(lastItem);\n });\n\n it('DOWN_ARROW should move focus to the next item', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('ArrowDown');\n await page.waitForChanges();\n\n // Then\n const focusedItem = await page.find(':focus');\n expect(focusedItem).toEqual(items[1]);\n });\n\n it('ESCAPE should close the menu and set focus on the dropdown button', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('Escape');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n\n it('TAB should close the menu and set focus on the dropdown button', async () => {\n // When\n await dropdownButton.click();\n await page.keyboard.press('Tab');\n await page.waitForChanges();\n\n // Then\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n\n it('SHIFT+TAB should close the menu and set focus on the dropdown button', async () => {\n // When\n await dropdownButton.click();\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(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n\n it('ENTER should activate the item, close menu, and set focus on the dropdown button', async () => {\n const itemClickSpy = await dropdown.spyOnEvent('wcsDropdownItemClick');\n\n // When\n await dropdownButton.click();\n await items[0].focus();\n await page.keyboard.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(itemClickSpy).toHaveReceivedEventTimes(1);\n expect(dropdownButton).toEqualAttribute('aria-expanded', 'false');\n const focusedElement = await page.find(':focus');\n expect(focusedElement).toEqual(dropdown);\n });\n });\n});\n"]}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { newE2EPage } from "@stencil/core/testing";
|
|
2
|
-
describe('wcs-editable-field', () => {
|
|
3
|
-
it('renders with input element and default props', async () => {
|
|
4
|
-
const page = await newE2EPage();
|
|
5
|
-
await page.setContent(`
|
|
6
|
-
<wcs-editable-field label="Test Input" value="Initial value" type="input" id="test">
|
|
7
|
-
<wcs-input></wcs-input>
|
|
8
|
-
</wcs-editable-field>
|
|
9
|
-
`);
|
|
10
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
11
|
-
expect(displayContainer).not.toBeNull();
|
|
12
|
-
expect(displayContainer.textContent).toContain('Initial value');
|
|
13
|
-
const label = await page.find('wcs-editable-field >>> .label');
|
|
14
|
-
expect(label.textContent).toBe('Test Input');
|
|
15
|
-
});
|
|
16
|
-
it('transitions from DISPLAY to EDIT state when clicked', async () => {
|
|
17
|
-
const page = await newE2EPage();
|
|
18
|
-
await page.setContent(`
|
|
19
|
-
<wcs-editable-field label="Test Input" value="Initial value" type="input" id="test">
|
|
20
|
-
<wcs-input></wcs-input>
|
|
21
|
-
</wcs-editable-field>
|
|
22
|
-
`);
|
|
23
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
24
|
-
await displayContainer.click();
|
|
25
|
-
// Wait for state transition
|
|
26
|
-
await page.waitForChanges();
|
|
27
|
-
const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');
|
|
28
|
-
expect(editContainer).not.toBeNull();
|
|
29
|
-
});
|
|
30
|
-
it('properly handles validation', async () => {
|
|
31
|
-
const page = await newE2EPage();
|
|
32
|
-
await page.setContent(`
|
|
33
|
-
<wcs-editable-field id="validate-test" label="Test Validation" value="Valid" error-msg="Value is invalid" type="input">
|
|
34
|
-
<wcs-input></wcs-input>
|
|
35
|
-
</wcs-editable-field>
|
|
36
|
-
`);
|
|
37
|
-
// Set up validation function
|
|
38
|
-
await page.$eval('wcs-editable-field', (el) => {
|
|
39
|
-
el.validateFn = (val) => val === 'Valid';
|
|
40
|
-
});
|
|
41
|
-
// Go to edit mode
|
|
42
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
43
|
-
await displayContainer.click();
|
|
44
|
-
await page.waitForChanges();
|
|
45
|
-
// Input invalid value
|
|
46
|
-
const input = await page.find('wcs-input');
|
|
47
|
-
await input.type('Invalid');
|
|
48
|
-
await page.waitForChanges();
|
|
49
|
-
// Trigger validation (simulate Enter key)
|
|
50
|
-
await input.press('Enter');
|
|
51
|
-
await page.waitForChanges();
|
|
52
|
-
// Check error message is displayed
|
|
53
|
-
const errorElement = await page.find('wcs-editable-field >>> wcs-error');
|
|
54
|
-
expect(errorElement).not.toBeNull();
|
|
55
|
-
expect(errorElement.textContent).toBe('Value is invalid');
|
|
56
|
-
});
|
|
57
|
-
it('emits wcsChange event with correct data', async () => {
|
|
58
|
-
const page = await newE2EPage();
|
|
59
|
-
await page.setContent(`
|
|
60
|
-
<wcs-editable-field label="Test Events" value="Old value" type="input" id="event-test">
|
|
61
|
-
<wcs-input id="test-input"></wcs-input>
|
|
62
|
-
</wcs-editable-field>
|
|
63
|
-
`);
|
|
64
|
-
const changeEvent = await page.spyOnEvent('wcsChange');
|
|
65
|
-
// Go to edit mode
|
|
66
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
67
|
-
await displayContainer.click();
|
|
68
|
-
await page.waitForChanges();
|
|
69
|
-
// Input new value
|
|
70
|
-
const input = await page.find('wcs-input');
|
|
71
|
-
await input.press('Backspace'); // Clear value (backspace is easier than selecting all)
|
|
72
|
-
await input.press('Backspace');
|
|
73
|
-
await input.press('Backspace');
|
|
74
|
-
await input.press('Backspace');
|
|
75
|
-
await input.press('Backspace');
|
|
76
|
-
await input.press('Backspace');
|
|
77
|
-
await input.press('Backspace');
|
|
78
|
-
await input.press('Backspace');
|
|
79
|
-
await input.press('Backspace');
|
|
80
|
-
await input.type('New value');
|
|
81
|
-
await page.waitForChanges();
|
|
82
|
-
// Submit the form
|
|
83
|
-
await input.press('Enter');
|
|
84
|
-
await page.waitForChanges();
|
|
85
|
-
// Note: Functions defined in the event's detail object (successHandler and errorHandler)
|
|
86
|
-
// are not cloned by the DOM's structured clone algorithm.
|
|
87
|
-
// This means that when the event is emitted, these functions will not be present in the
|
|
88
|
-
// event.detail object when accessed in E2E tests, even though they exist in the browser.
|
|
89
|
-
expect(changeEvent).toHaveNthReceivedEventDetail(0, {
|
|
90
|
-
newValue: 'New value'
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
it('respects readonly property', async () => {
|
|
94
|
-
const page = await newE2EPage();
|
|
95
|
-
await page.setContent(`
|
|
96
|
-
<wcs-editable-field label="Read Only Field" value="Readonly value" readonly="true" type="input" id="test">
|
|
97
|
-
<wcs-input></wcs-input>
|
|
98
|
-
</wcs-editable-field>
|
|
99
|
-
`);
|
|
100
|
-
// Check readonly icon is displayed
|
|
101
|
-
const readonlyIcon = await page.find('wcs-editable-field >>> .readonly-icon');
|
|
102
|
-
expect(readonlyIcon).not.toBeNull();
|
|
103
|
-
// Try clicking
|
|
104
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
105
|
-
await displayContainer.click();
|
|
106
|
-
await page.waitForChanges();
|
|
107
|
-
// Should still be in display mode
|
|
108
|
-
const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');
|
|
109
|
-
expect(editContainer).toBeNull();
|
|
110
|
-
});
|
|
111
|
-
it('works correctly with textarea', async () => {
|
|
112
|
-
const page = await newE2EPage();
|
|
113
|
-
await page.setContent(`
|
|
114
|
-
<wcs-editable-field label="Textarea Test" type="textarea" value="Multiline\nText" id="test">
|
|
115
|
-
<wcs-textarea></wcs-textarea>
|
|
116
|
-
</wcs-editable-field>
|
|
117
|
-
`);
|
|
118
|
-
// Check it renders correctly
|
|
119
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
120
|
-
expect(displayContainer.textContent).toContain('Multiline\nText');
|
|
121
|
-
// Go to edit mode
|
|
122
|
-
await displayContainer.click();
|
|
123
|
-
await page.waitForChanges();
|
|
124
|
-
// Should need Ctrl+Enter to submit with textarea
|
|
125
|
-
const textarea = await page.find('wcs-textarea');
|
|
126
|
-
await textarea.press('Enter'); // This should NOT submit
|
|
127
|
-
await page.waitForChanges();
|
|
128
|
-
// Should still be in edit mode
|
|
129
|
-
const editContainerVisible = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');
|
|
130
|
-
expect(editContainerVisible).not.toBeNull();
|
|
131
|
-
});
|
|
132
|
-
it('works correctly with select', async () => {
|
|
133
|
-
const page = await newE2EPage();
|
|
134
|
-
await page.setContent(`
|
|
135
|
-
<wcs-editable-field label="Select Test" type="select" value="option1" id="test">
|
|
136
|
-
<wcs-select>
|
|
137
|
-
<wcs-select-option value="option1">Option 1</wcs-select-option>
|
|
138
|
-
<wcs-select-option value="option2">Option 2</wcs-select-option>
|
|
139
|
-
</wcs-select>
|
|
140
|
-
</wcs-editable-field>
|
|
141
|
-
`);
|
|
142
|
-
// Go to edit mode
|
|
143
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
144
|
-
await displayContainer.click();
|
|
145
|
-
await page.waitForChanges();
|
|
146
|
-
// We get the select element
|
|
147
|
-
const select = await page.find('wcs-select');
|
|
148
|
-
await select.focus();
|
|
149
|
-
await select.press('ArrowDown');
|
|
150
|
-
// press CTRL + ENTER (combined) to validate
|
|
151
|
-
await page.keyboard.down('Control');
|
|
152
|
-
await page.keyboard.press('Enter');
|
|
153
|
-
await page.keyboard.up('Control');
|
|
154
|
-
await page.waitForChanges();
|
|
155
|
-
// Should be in load state after change
|
|
156
|
-
const loadContainer = await page.find('wcs-editable-field >>> .load-container:not(.display-none)');
|
|
157
|
-
expect(loadContainer).not.toBeNull();
|
|
158
|
-
});
|
|
159
|
-
it('properly handles custom formatting function', async () => {
|
|
160
|
-
const page = await newE2EPage();
|
|
161
|
-
await page.setContent(`
|
|
162
|
-
<wcs-editable-field id="format-test" label="Formatting Test" value="test value" type="input">
|
|
163
|
-
<wcs-input></wcs-input>
|
|
164
|
-
</wcs-editable-field>
|
|
165
|
-
`);
|
|
166
|
-
// Set custom formatter
|
|
167
|
-
await page.$eval('wcs-editable-field', (el) => {
|
|
168
|
-
el.formatFn = (val) => val ? val.toUpperCase() : '';
|
|
169
|
-
});
|
|
170
|
-
await page.waitForChanges();
|
|
171
|
-
// Check formatted output
|
|
172
|
-
const displayContainer = await page.find('wcs-editable-field >>> .display-container');
|
|
173
|
-
expect(displayContainer.textContent).toContain('TEST VALUE');
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
//# sourceMappingURL=editable-field.e2e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editable-field.e2e.js","sourceRoot":"","sources":["../../../src/components/editable-field/editable-field.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\n\ndescribe('wcs-editable-field', () => {\n it('renders with input element and default props', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Test Input\" value=\"Initial value\" type=\"input\" id=\"test\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n expect(displayContainer).not.toBeNull();\n expect(displayContainer.textContent).toContain('Initial value');\n\n const label = await page.find('wcs-editable-field >>> .label');\n expect(label.textContent).toBe('Test Input');\n });\n\n it('transitions from DISPLAY to EDIT state when clicked', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Test Input\" value=\"Initial value\" type=\"input\" id=\"test\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n \n // Wait for state transition\n await page.waitForChanges();\n \n const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');\n expect(editContainer).not.toBeNull();\n });\n\n it('properly handles validation', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field id=\"validate-test\" label=\"Test Validation\" value=\"Valid\" error-msg=\"Value is invalid\" type=\"input\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n // Set up validation function\n await page.$eval('wcs-editable-field', (el) => {\n el.validateFn = (val) => val === 'Valid';\n });\n \n // Go to edit mode\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // Input invalid value\n const input = await page.find('wcs-input');\n await input.type('Invalid');\n await page.waitForChanges();\n \n // Trigger validation (simulate Enter key)\n await input.press('Enter');\n await page.waitForChanges();\n \n // Check error message is displayed\n const errorElement = await page.find('wcs-editable-field >>> wcs-error');\n expect(errorElement).not.toBeNull();\n expect(errorElement.textContent).toBe('Value is invalid');\n });\n\n it('emits wcsChange event with correct data', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Test Events\" value=\"Old value\" type=\"input\" id=\"event-test\">\n <wcs-input id=\"test-input\"></wcs-input>\n </wcs-editable-field>\n `);\n \n const changeEvent = await page.spyOnEvent('wcsChange');\n \n // Go to edit mode\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // Input new value\n const input = await page.find('wcs-input');\n await input.press('Backspace'); // Clear value (backspace is easier than selecting all)\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.press('Backspace');\n await input.type('New value');\n await page.waitForChanges();\n \n // Submit the form\n await input.press('Enter');\n await page.waitForChanges();\n \n // Note: Functions defined in the event's detail object (successHandler and errorHandler)\n // are not cloned by the DOM's structured clone algorithm.\n // This means that when the event is emitted, these functions will not be present in the\n // event.detail object when accessed in E2E tests, even though they exist in the browser.\n expect(changeEvent).toHaveNthReceivedEventDetail(0, {\n newValue: 'New value'\n });\n });\n\n it('respects readonly property', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Read Only Field\" value=\"Readonly value\" readonly=\"true\" type=\"input\" id=\"test\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n // Check readonly icon is displayed\n const readonlyIcon = await page.find('wcs-editable-field >>> .readonly-icon');\n expect(readonlyIcon).not.toBeNull();\n \n // Try clicking\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // Should still be in display mode\n const editContainer = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');\n expect(editContainer).toBeNull();\n });\n\n it('works correctly with textarea', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Textarea Test\" type=\"textarea\" value=\"Multiline\\nText\" id=\"test\">\n <wcs-textarea></wcs-textarea>\n </wcs-editable-field>\n `);\n \n // Check it renders correctly\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n expect(displayContainer.textContent).toContain('Multiline\\nText');\n \n // Go to edit mode\n await displayContainer.click();\n await page.waitForChanges();\n \n // Should need Ctrl+Enter to submit with textarea\n const textarea = await page.find('wcs-textarea');\n await textarea.press('Enter'); // This should NOT submit\n await page.waitForChanges();\n \n // Should still be in edit mode\n const editContainerVisible = await page.find('wcs-editable-field >>> .edit-container:not(.display-none)');\n expect(editContainerVisible).not.toBeNull();\n });\n\n it('works correctly with select', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field label=\"Select Test\" type=\"select\" value=\"option1\" id=\"test\">\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>\n </wcs-editable-field>\n `);\n \n // Go to edit mode\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n await displayContainer.click();\n await page.waitForChanges();\n \n // We get the select element\n const select = await page.find('wcs-select');\n await select.focus();\n await select.press('ArrowDown');\n \n // press CTRL + ENTER (combined) to validate\n await page.keyboard.down('Control');\n await page.keyboard.press('Enter');\n await page.keyboard.up('Control');\n\n await page.waitForChanges();\n \n // Should be in load state after change\n const loadContainer = await page.find('wcs-editable-field >>> .load-container:not(.display-none)');\n expect(loadContainer).not.toBeNull();\n });\n\n it('properly handles custom formatting function', async () => {\n const page = await newE2EPage();\n await page.setContent(`\n <wcs-editable-field id=\"format-test\" label=\"Formatting Test\" value=\"test value\" type=\"input\">\n <wcs-input></wcs-input>\n </wcs-editable-field>\n `);\n \n // Set custom formatter\n await page.$eval('wcs-editable-field', (el) => {\n el.formatFn = (val) => val ? val.toUpperCase() : '';\n });\n await page.waitForChanges();\n \n // Check formatted output\n const displayContainer = await page.find('wcs-editable-field >>> .display-container');\n expect(displayContainer.textContent).toContain('TEST VALUE');\n });\n});"]}
|