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.
Files changed (251) hide show
  1. package/README.md +11 -9
  2. package/design-tokens/dist/sncf-groupe-root-scoped.css +227 -227
  3. package/design-tokens/dist/sncf-groupe.css +227 -227
  4. package/design-tokens/dist/sncf-holding-root-scoped.css +227 -227
  5. package/design-tokens/dist/sncf-holding.css +227 -227
  6. package/design-tokens/dist/sncf-reseau-root-scoped.css +227 -227
  7. package/design-tokens/dist/sncf-reseau.css +227 -227
  8. package/design-tokens/dist/sncf-voyageurs-root-scoped.css +242 -242
  9. package/design-tokens/dist/sncf-voyageurs.css +242 -242
  10. package/dist/cjs/{popper-8d6e7fca.js → popper-1b61df21.js} +10 -17
  11. package/dist/cjs/popper-1b61df21.js.map +1 -0
  12. package/dist/cjs/wcs-breadcrumb.cjs.entry.js +1 -1
  13. package/dist/cjs/wcs-breadcrumb.cjs.entry.js.map +1 -1
  14. package/dist/cjs/wcs-com-nav-item.cjs.entry.js +1 -1
  15. package/dist/cjs/wcs-com-nav-item.cjs.entry.js.map +1 -1
  16. package/dist/cjs/wcs-com-nav.cjs.entry.js +3 -3
  17. package/dist/cjs/wcs-com-nav.cjs.entry.js.map +1 -1
  18. package/dist/cjs/wcs-dropdown.cjs.entry.js +1 -1
  19. package/dist/cjs/wcs-error_3.cjs.entry.js +1 -1
  20. package/dist/cjs/wcs-error_3.cjs.entry.js.map +1 -1
  21. package/dist/cjs/wcs-galactic-menu.cjs.entry.js +1 -1
  22. package/dist/cjs/wcs-grid.cjs.entry.js +5 -4
  23. package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
  24. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +3 -2
  25. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js.map +1 -1
  26. package/dist/cjs/wcs-modal.cjs.entry.js +2 -2
  27. package/dist/cjs/wcs-modal.cjs.entry.js.map +1 -1
  28. package/dist/cjs/wcs-select_2.cjs.entry.js +59 -24
  29. package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
  30. package/dist/cjs/wcs-tabs.cjs.entry.js +1 -1
  31. package/dist/cjs/wcs-tooltip.cjs.entry.js +1 -1
  32. package/dist/collection/components/accordion/{accordion.e2e.js → accordion.e2e.playwright.js} +51 -55
  33. package/dist/collection/components/accordion/accordion.e2e.playwright.js.map +1 -0
  34. package/dist/collection/components/accordion-panel/accordion-panel.js +1 -1
  35. package/dist/collection/components/alert/alert.e2e.playwright.js +125 -0
  36. package/dist/collection/components/alert/alert.e2e.playwright.js.map +1 -0
  37. package/dist/collection/components/alert-drawer/alert-drawer.e2e.playwright.js +107 -0
  38. package/dist/collection/components/alert-drawer/alert-drawer.e2e.playwright.js.map +1 -0
  39. package/dist/collection/components/breadcrumb/breadcrumb.e2e.playwright.js +188 -0
  40. package/dist/collection/components/breadcrumb/breadcrumb.e2e.playwright.js.map +1 -0
  41. package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
  42. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  43. package/dist/collection/components/button/button.e2e.playwright.js +26 -0
  44. package/dist/collection/components/button/button.e2e.playwright.js.map +1 -0
  45. package/dist/collection/components/button/button.js +1 -1
  46. package/dist/collection/components/checkbox/checkbox.e2e.playwright.js +39 -0
  47. package/dist/collection/components/checkbox/checkbox.e2e.playwright.js.map +1 -0
  48. package/dist/collection/components/checkbox/checkbox.js +1 -1
  49. package/dist/collection/components/chip/chip.e2e.playwright.js +190 -0
  50. package/dist/collection/components/chip/chip.e2e.playwright.js.map +1 -0
  51. package/dist/collection/components/com-nav/com-nav.css +15 -0
  52. package/dist/collection/components/com-nav/{com-nav.e2e.js → com-nav.e2e.playwright.js} +60 -44
  53. package/dist/collection/components/com-nav/com-nav.e2e.playwright.js.map +1 -0
  54. package/dist/collection/components/com-nav/com-nav.js +3 -3
  55. package/dist/collection/components/com-nav/com-nav.js.map +1 -1
  56. package/dist/collection/components/com-nav-category/com-nav-category.js +1 -1
  57. package/dist/collection/components/com-nav-item/com-nav-item.css +2 -2
  58. package/dist/collection/components/com-nav-submenu/com-nav-submenu.js +1 -1
  59. package/dist/collection/components/counter/counter.e2e.playwright.js +187 -0
  60. package/dist/collection/components/counter/counter.e2e.playwright.js.map +1 -0
  61. package/dist/collection/components/counter/counter.js +1 -1
  62. package/dist/collection/components/dropdown/dropdown.e2e.playwright.js +320 -0
  63. package/dist/collection/components/dropdown/dropdown.e2e.playwright.js.map +1 -0
  64. package/dist/collection/components/dropdown/dropdown.js +1 -1
  65. package/dist/collection/components/editable-field/editable-field.e2e.playwright.js +156 -0
  66. package/dist/collection/components/editable-field/editable-field.e2e.playwright.js.map +1 -0
  67. package/dist/collection/components/form-field/form-field.e2e.playwright.js +104 -0
  68. package/dist/collection/components/form-field/form-field.e2e.playwright.js.map +1 -0
  69. package/dist/collection/components/galactic-menu/galactic-menu.js +1 -1
  70. package/dist/collection/components/grid/grid.e2e.playwright.js +153 -0
  71. package/dist/collection/components/grid/grid.e2e.playwright.js.map +1 -0
  72. package/dist/collection/components/grid/grid.js +6 -5
  73. package/dist/collection/components/grid/grid.js.map +1 -1
  74. package/dist/collection/components/grid-column/grid-column.js +1 -1
  75. package/dist/collection/components/grid-pagination/grid-pagination.js +1 -1
  76. package/dist/collection/components/header/header.js +1 -1
  77. package/dist/collection/components/horizontal-stepper/horizontal-step.js +2 -1
  78. package/dist/collection/components/horizontal-stepper/horizontal-step.js.map +1 -1
  79. package/dist/collection/components/horizontal-stepper/horizontal-stepper-interface.js.map +1 -1
  80. package/dist/collection/components/horizontal-stepper/horizontal-stepper.js +5 -1
  81. package/dist/collection/components/horizontal-stepper/horizontal-stepper.js.map +1 -1
  82. package/dist/collection/components/icon/icon.js +1 -1
  83. package/dist/collection/components/input/input.e2e.playwright.js +157 -0
  84. package/dist/collection/components/input/input.e2e.playwright.js.map +1 -0
  85. package/dist/collection/components/input/input.js +2 -2
  86. package/dist/collection/components/label/label.css +4 -6
  87. package/dist/collection/components/label/label.js +1 -1
  88. package/dist/collection/components/mat-icon/mat-icon.js +1 -1
  89. package/dist/collection/components/modal/modal.css +4 -0
  90. package/dist/collection/components/modal/modal.e2e.playwright.js +35 -0
  91. package/dist/collection/components/modal/modal.e2e.playwright.js.map +1 -0
  92. package/dist/collection/components/modal/modal.js +2 -2
  93. package/dist/collection/components/modal/modal.js.map +1 -1
  94. package/dist/collection/components/native-select/native-select.js +1 -1
  95. package/dist/collection/components/nav/nav.js +1 -1
  96. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  97. package/dist/collection/components/progress-radial/progress-radial.js +1 -1
  98. package/dist/collection/components/radio/radio.js +1 -1
  99. package/dist/collection/components/radio-group/radio-group.e2e.playwright.js +231 -0
  100. package/dist/collection/components/radio-group/radio-group.e2e.playwright.js.map +1 -0
  101. package/dist/collection/components/radio-group/radio-group.js +1 -1
  102. package/dist/collection/components/select/select.e2e.playwright.js +1702 -0
  103. package/dist/collection/components/select/select.e2e.playwright.js.map +1 -0
  104. package/dist/collection/components/select/select.js +49 -20
  105. package/dist/collection/components/select/select.js.map +1 -1
  106. package/dist/collection/components/select-option/select-option.js +3 -3
  107. package/dist/collection/components/select-option/select-option.js.map +1 -1
  108. package/dist/collection/components/switch/switch.e2e.playwright.js +40 -0
  109. package/dist/collection/components/switch/switch.e2e.playwright.js.map +1 -0
  110. package/dist/collection/components/switch/switch.js +1 -1
  111. package/dist/collection/components/tabs/tabs.e2e.playwright.js +205 -0
  112. package/dist/collection/components/tabs/tabs.e2e.playwright.js.map +1 -0
  113. package/dist/collection/components/tabs/tabs.js +1 -1
  114. package/dist/collection/components/textarea/textarea.e2e.playwright.js +133 -0
  115. package/dist/collection/components/textarea/textarea.e2e.playwright.js.map +1 -0
  116. package/dist/collection/components/textarea/textarea.js +1 -1
  117. package/dist/collection/utils/playwright/test-expect.js +2 -0
  118. package/dist/collection/utils/playwright/test-expect.js.map +1 -0
  119. package/dist/collection/utils/playwright/test.js +16 -0
  120. package/dist/collection/utils/playwright/test.js.map +1 -0
  121. package/dist/esm/{popper-e491c314.js → popper-ac238961.js} +10 -17
  122. package/dist/esm/popper-ac238961.js.map +1 -0
  123. package/dist/esm/wcs-breadcrumb.entry.js +1 -1
  124. package/dist/esm/wcs-breadcrumb.entry.js.map +1 -1
  125. package/dist/esm/wcs-com-nav-item.entry.js +1 -1
  126. package/dist/esm/wcs-com-nav-item.entry.js.map +1 -1
  127. package/dist/esm/wcs-com-nav.entry.js +3 -3
  128. package/dist/esm/wcs-com-nav.entry.js.map +1 -1
  129. package/dist/esm/wcs-dropdown.entry.js +1 -1
  130. package/dist/esm/wcs-error_3.entry.js +1 -1
  131. package/dist/esm/wcs-error_3.entry.js.map +1 -1
  132. package/dist/esm/wcs-galactic-menu.entry.js +1 -1
  133. package/dist/esm/wcs-grid.entry.js +5 -4
  134. package/dist/esm/wcs-grid.entry.js.map +1 -1
  135. package/dist/esm/wcs-horizontal-stepper.entry.js +3 -2
  136. package/dist/esm/wcs-horizontal-stepper.entry.js.map +1 -1
  137. package/dist/esm/wcs-modal.entry.js +2 -2
  138. package/dist/esm/wcs-modal.entry.js.map +1 -1
  139. package/dist/esm/wcs-select_2.entry.js +59 -24
  140. package/dist/esm/wcs-select_2.entry.js.map +1 -1
  141. package/dist/esm/wcs-tabs.entry.js +1 -1
  142. package/dist/esm/wcs-tooltip.entry.js +1 -1
  143. package/dist/types/components/accordion/accordion.e2e.playwright.d.ts +1 -0
  144. package/dist/types/components/alert/alert.e2e.playwright.d.ts +1 -0
  145. package/dist/types/components/alert-drawer/alert-drawer.e2e.playwright.d.ts +1 -0
  146. package/dist/types/components/breadcrumb/breadcrumb.e2e.playwright.d.ts +1 -0
  147. package/dist/types/components/button/button.e2e.playwright.d.ts +1 -0
  148. package/dist/types/components/checkbox/checkbox.e2e.playwright.d.ts +1 -0
  149. package/dist/types/components/chip/chip.e2e.playwright.d.ts +1 -0
  150. package/dist/types/components/com-nav/com-nav.e2e.playwright.d.ts +1 -0
  151. package/dist/types/components/counter/counter.e2e.playwright.d.ts +1 -0
  152. package/dist/types/components/dropdown/dropdown.e2e.playwright.d.ts +1 -0
  153. package/dist/types/components/editable-field/editable-field.e2e.playwright.d.ts +1 -0
  154. package/dist/types/components/form-field/form-field.e2e.playwright.d.ts +1 -0
  155. package/dist/types/components/grid/grid.e2e.playwright.d.ts +1 -0
  156. package/dist/types/components/horizontal-stepper/horizontal-stepper-interface.d.ts +2 -0
  157. package/dist/types/components/horizontal-stepper/horizontal-stepper.d.ts +4 -0
  158. package/dist/types/components/input/input.e2e.playwright.d.ts +1 -0
  159. package/dist/types/components/modal/modal.e2e.playwright.d.ts +1 -0
  160. package/dist/types/components/radio-group/radio-group.e2e.playwright.d.ts +1 -0
  161. package/dist/types/components/select/select.d.ts +7 -1
  162. package/dist/types/components/select/select.e2e.playwright.d.ts +1 -0
  163. package/dist/types/components/switch/switch.e2e.playwright.d.ts +1 -0
  164. package/dist/types/components/tabs/tabs.e2e.playwright.d.ts +1 -0
  165. package/dist/types/components/textarea/textarea.e2e.playwright.d.ts +1 -0
  166. package/dist/types/components.d.ts +12 -0
  167. package/dist/types/utils/playwright/test-expect.d.ts +33 -0
  168. package/dist/types/utils/playwright/test.d.ts +7 -0
  169. package/dist/wcs/{p-8e9bd0f1.entry.js → p-0326f834.entry.js} +2 -2
  170. package/dist/wcs/{p-8e9bd0f1.entry.js.map → p-0326f834.entry.js.map} +1 -1
  171. package/dist/wcs/p-2221bf0c.entry.js +16 -0
  172. package/dist/wcs/p-2221bf0c.entry.js.map +1 -0
  173. package/dist/wcs/p-4ae08567.entry.js +2 -0
  174. package/dist/wcs/p-4ae08567.entry.js.map +1 -0
  175. package/dist/wcs/p-4e2d6227.entry.js +2 -0
  176. package/dist/wcs/p-4e2d6227.entry.js.map +1 -0
  177. package/dist/wcs/p-8332a7e3.entry.js +2 -0
  178. package/dist/wcs/p-8332a7e3.entry.js.map +1 -0
  179. package/dist/wcs/{p-ec383729.entry.js → p-9b76b8e6.entry.js} +2 -2
  180. package/dist/wcs/{p-ec383729.entry.js.map → p-9b76b8e6.entry.js.map} +1 -1
  181. package/dist/wcs/{p-1f593d06.entry.js → p-abd8d5a0.entry.js} +2 -2
  182. package/dist/wcs/{p-622f7403.entry.js → p-c6f8c45c.entry.js} +2 -2
  183. package/dist/wcs/{p-a94e685c.entry.js → p-db7ba599.entry.js} +2 -2
  184. package/dist/wcs/p-e1fb3625.js +2 -0
  185. package/dist/wcs/p-e1fb3625.js.map +1 -0
  186. package/dist/wcs/{p-a956dc84.entry.js → p-f2f7595e.entry.js} +2 -2
  187. package/dist/wcs/{p-a956dc84.entry.js.map → p-f2f7595e.entry.js.map} +1 -1
  188. package/dist/wcs/p-fbd68522.entry.js +2 -0
  189. package/dist/wcs/p-fbd68522.entry.js.map +1 -0
  190. package/dist/wcs/{p-8c2605fd.entry.js → p-fe303f58.entry.js} +2 -2
  191. package/dist/wcs/wcs.esm.js +1 -1
  192. package/package.json +18 -24
  193. package/dist/cjs/popper-8d6e7fca.js.map +0 -1
  194. package/dist/collection/components/accordion/accordion.e2e.js.map +0 -1
  195. package/dist/collection/components/alert/alert.e2e.js +0 -142
  196. package/dist/collection/components/alert/alert.e2e.js.map +0 -1
  197. package/dist/collection/components/alert-drawer/alert-drawer.e2e.js +0 -111
  198. package/dist/collection/components/alert-drawer/alert-drawer.e2e.js.map +0 -1
  199. package/dist/collection/components/breadcrumb/breadcrumb.e2e.js +0 -223
  200. package/dist/collection/components/breadcrumb/breadcrumb.e2e.js.map +0 -1
  201. package/dist/collection/components/button/button.e2e.js +0 -25
  202. package/dist/collection/components/button/button.e2e.js.map +0 -1
  203. package/dist/collection/components/checkbox/checkbox.e2e.js +0 -45
  204. package/dist/collection/components/checkbox/checkbox.e2e.js.map +0 -1
  205. package/dist/collection/components/chip/chip.e2e.js +0 -209
  206. package/dist/collection/components/chip/chip.e2e.js.map +0 -1
  207. package/dist/collection/components/com-nav/com-nav.e2e.js.map +0 -1
  208. package/dist/collection/components/counter/counter.e2e.js +0 -206
  209. package/dist/collection/components/counter/counter.e2e.js.map +0 -1
  210. package/dist/collection/components/dropdown/dropdown.e2e.js +0 -156
  211. package/dist/collection/components/dropdown/dropdown.e2e.js.map +0 -1
  212. package/dist/collection/components/editable-field/editable-field.e2e.js +0 -176
  213. package/dist/collection/components/editable-field/editable-field.e2e.js.map +0 -1
  214. package/dist/collection/components/form-field/form-field.e2e.js +0 -122
  215. package/dist/collection/components/form-field/form-field.e2e.js.map +0 -1
  216. package/dist/collection/components/grid/grid.e2e.js +0 -147
  217. package/dist/collection/components/grid/grid.e2e.js.map +0 -1
  218. package/dist/collection/components/input/input.e2e.js +0 -152
  219. package/dist/collection/components/input/input.e2e.js.map +0 -1
  220. package/dist/collection/components/modal/modal.e2e.js +0 -36
  221. package/dist/collection/components/modal/modal.e2e.js.map +0 -1
  222. package/dist/collection/components/radio-group/radio-group.e2e.js +0 -239
  223. package/dist/collection/components/radio-group/radio-group.e2e.js.map +0 -1
  224. package/dist/collection/components/select/select.e2e.js +0 -1081
  225. package/dist/collection/components/select/select.e2e.js.map +0 -1
  226. package/dist/collection/components/switch/switch.e2e.js +0 -45
  227. package/dist/collection/components/switch/switch.e2e.js.map +0 -1
  228. package/dist/collection/components/tabs/tabs.e2e.js +0 -207
  229. package/dist/collection/components/tabs/tabs.e2e.js.map +0 -1
  230. package/dist/collection/components/textarea/textarea.e2e.js +0 -132
  231. package/dist/collection/components/textarea/textarea.e2e.js.map +0 -1
  232. package/dist/collection/utils/tests.js +0 -23
  233. package/dist/collection/utils/tests.js.map +0 -1
  234. package/dist/esm/popper-e491c314.js.map +0 -1
  235. package/dist/types/utils/tests.d.ts +0 -4
  236. package/dist/wcs/p-0dd07842.entry.js +0 -2
  237. package/dist/wcs/p-0dd07842.entry.js.map +0 -1
  238. package/dist/wcs/p-0f864e86.js +0 -2
  239. package/dist/wcs/p-0f864e86.js.map +0 -1
  240. package/dist/wcs/p-1244daa0.entry.js +0 -2
  241. package/dist/wcs/p-1244daa0.entry.js.map +0 -1
  242. package/dist/wcs/p-1fbe0328.entry.js +0 -2
  243. package/dist/wcs/p-1fbe0328.entry.js.map +0 -1
  244. package/dist/wcs/p-b94a09b6.entry.js +0 -16
  245. package/dist/wcs/p-b94a09b6.entry.js.map +0 -1
  246. package/dist/wcs/p-fd187bce.entry.js +0 -2
  247. package/dist/wcs/p-fd187bce.entry.js.map +0 -1
  248. /package/dist/wcs/{p-1f593d06.entry.js.map → p-abd8d5a0.entry.js.map} +0 -0
  249. /package/dist/wcs/{p-622f7403.entry.js.map → p-c6f8c45c.entry.js.map} +0 -0
  250. /package/dist/wcs/{p-a94e685c.entry.js.map → p-db7ba599.entry.js.map} +0 -0
  251. /package/dist/wcs/{p-8c2605fd.entry.js.map → p-fe303f58.entry.js.map} +0 -0
@@ -1,209 +0,0 @@
1
- import { newE2EPage } from "@stencil/core/testing";
2
- import { findFocusedNode, setWcsContent } from "../../utils/tests";
3
- describe('Chip component', () => {
4
- describe('Events', () => {
5
- it('should emit wcsChipSelectChange with selected=true on click (selectable by default)', async () => {
6
- // Given
7
- const page = await newE2EPage();
8
- await setWcsContent(page, `
9
- <wcs-chip value="chip-id" label="Chip"></wcs-chip>
10
- `);
11
- // When
12
- const chip = await page.find('wcs-chip');
13
- const eventSpy = await chip.spyOnEvent('wcsChipSelectChange');
14
- await chip.click();
15
- await page.waitForChanges();
16
- // Then
17
- expect(eventSpy).toHaveReceivedEventTimes(1);
18
- expect(eventSpy).toHaveReceivedEventDetail({ value: 'chip-id', selected: true });
19
- });
20
- it('should toggle selection and emit on Space/Enter (selectable)', async () => {
21
- // Given
22
- const page = await newE2EPage();
23
- await setWcsContent(page, `
24
- <wcs-chip value="chip-id" label="Chip"></wcs-chip>
25
- `);
26
- const chip = await page.find('wcs-chip');
27
- const eventSpy = await chip.spyOnEvent('wcsChipSelectChange');
28
- // When - Space selects
29
- await chip.focus();
30
- await chip.press('Space');
31
- await page.waitForChanges();
32
- // When - Enter toggles back
33
- await chip.press('Enter');
34
- await page.waitForChanges();
35
- // Then
36
- expect(eventSpy).toHaveReceivedEventTimes(2);
37
- // Last emitted detail should be selected=false
38
- const lastDetail = eventSpy.events[eventSpy.events.length - 1].detail;
39
- expect(lastDetail).toEqual({ value: 'chip-id', selected: false });
40
- });
41
- it('should emit wcsChipDismiss when clicking dismiss button (dismissible)', async () => {
42
- // Given
43
- const page = await newE2EPage();
44
- await setWcsContent(page, `
45
- <wcs-chip mode="dismissible" value="chip-id" label="Chip"></wcs-chip>
46
- `);
47
- const chip = await page.find('wcs-chip');
48
- const dismissBtn = await page.find('wcs-chip>>>button');
49
- const eventSpy = await chip.spyOnEvent('wcsChipDismiss');
50
- // When
51
- await dismissBtn.click();
52
- await page.waitForChanges();
53
- // Then
54
- expect(eventSpy).toHaveReceivedEventTimes(1);
55
- expect(eventSpy).toHaveReceivedEventDetail({ value: 'chip-id' });
56
- // open prop should be false -> attribute removed
57
- expect(chip.getAttribute('open')).toBe(null);
58
- });
59
- });
60
- describe('Keyboard', () => {
61
- it('Delete/Backspace on dismiss button dismisses the chip', async () => {
62
- // Given
63
- const page = await newE2EPage();
64
- await setWcsContent(page, `
65
- <wcs-chip mode="dismissible" value="chip-id" label="Chip"></wcs-chip>
66
- `);
67
- const chip = await page.find('wcs-chip');
68
- const dismissBtn = await page.find('wcs-chip>>>button');
69
- const eventSpy = await chip.spyOnEvent('wcsChipDismiss');
70
- // When
71
- await dismissBtn.focus();
72
- await page.keyboard.press('Delete');
73
- await page.waitForChanges();
74
- // Then
75
- expect(eventSpy).toHaveReceivedEvent();
76
- expect(chip.getAttribute('open')).toBe(null);
77
- });
78
- });
79
- describe('Accessibility', () => {
80
- it('exposes proper ARIA for selectable: role=checkbox, aria-checked toggles, tabindex respects disabled', async () => {
81
- // Given
82
- const page = await newE2EPage();
83
- await setWcsContent(page, `
84
- <wcs-chip value="chip-id" label="Chip"></wcs-chip>
85
- `);
86
- const chip = await page.find('wcs-chip');
87
- // Then default
88
- expect(chip.getAttribute('role')).toBe('checkbox');
89
- expect(chip.getAttribute('aria-checked')).toBe('false');
90
- expect(chip.getAttribute('tabindex')).toBe('0');
91
- // When
92
- await chip.click();
93
- await page.waitForChanges();
94
- // Then toggled
95
- expect(chip.getAttribute('aria-checked')).toBe('true');
96
- });
97
- it('exposes proper ARIA/disabled for dismissible: button has label and respects disabled', async () => {
98
- // Given
99
- const page = await newE2EPage();
100
- await setWcsContent(page, `
101
- <wcs-chip mode="dismissible" value="chip-id" label="Chip"></wcs-chip>
102
- `);
103
- const btn = await page.find('wcs-chip>>>button');
104
- // Then
105
- expect(btn.getAttribute('aria-label')).toBe('Supprimer Chip');
106
- // When disabled
107
- const chip = await page.find('wcs-chip');
108
- chip.setProperty('disabled', true);
109
- await page.waitForChanges();
110
- // Then
111
- expect(chip.getAttribute('aria-disabled')).toBe('true');
112
- expect(btn.getAttribute('disabled')).not.toBe(null);
113
- });
114
- });
115
- describe('Disabled state', () => {
116
- it('does not emit select event when disabled (click and Space)', async () => {
117
- // Given
118
- const page = await newE2EPage();
119
- await setWcsContent(page, `
120
- <wcs-chip disabled value="chip-id" label="Chip"></wcs-chip>
121
- `);
122
- const chip = await page.find('wcs-chip');
123
- const eventSpy = await chip.spyOnEvent('wcsChipSelectChange');
124
- // When
125
- await chip.click();
126
- await chip.press('Space');
127
- await page.waitForChanges();
128
- // Then
129
- expect(eventSpy).not.toHaveReceivedEvent();
130
- expect(chip.getAttribute('tabindex')).toBe('-1');
131
- expect(chip.getAttribute('aria-checked')).toBe('false');
132
- });
133
- it('does not emit dismiss event when disabled', async () => {
134
- // Given
135
- const page = await newE2EPage();
136
- await setWcsContent(page, `
137
- <wcs-chip disabled mode="dismissible" value="chip-id" label="Chip"></wcs-chip>
138
- `);
139
- const chip = await page.find('wcs-chip');
140
- const btn = await page.find('wcs-chip>>>button');
141
- const eventSpy = await chip.spyOnEvent('wcsChipDismiss');
142
- // When
143
- await btn.click();
144
- await page.waitForChanges();
145
- // Then
146
- expect(eventSpy).not.toHaveReceivedEvent();
147
- expect(chip.getAttribute('open')).toBe('');
148
- });
149
- });
150
- describe('Focus management', () => {
151
- it('after dismiss, focus moves to next actionable chip (selectable host)', async () => {
152
- // Given
153
- const page = await newE2EPage();
154
- await setWcsContent(page, `
155
- <div>
156
- <wcs-chip id="c1" mode="dismissible" value="c1" label="One"></wcs-chip>
157
- <wcs-chip id="c2" value="c2" label="Two"></wcs-chip>
158
- </div>
159
- `);
160
- const btn = await page.find('#c1>>>button');
161
- // When
162
- await btn.click();
163
- await page.waitForChanges();
164
- const snapshot = await page.accessibility.snapshot();
165
- const focused = findFocusedNode(snapshot);
166
- // Then
167
- expect(focused.name).toBe('Two');
168
- });
169
- it('after dismiss, focus moves to next actionable chip (dismissable host)', async () => {
170
- // Given
171
- const page = await newE2EPage();
172
- await setWcsContent(page, `
173
- <div>
174
- <wcs-chip id="c1" mode="dismissible" value="c1" label="One"></wcs-chip>
175
- <wcs-chip id="c2" mode="dismissible" value="c2" label="Two"></wcs-chip>
176
- </div>
177
- `);
178
- const btn = await page.find('#c1>>>button');
179
- // When
180
- await btn.click();
181
- await page.waitForChanges();
182
- const snapshot = await page.accessibility.snapshot();
183
- const focused = findFocusedNode(snapshot);
184
- const c2Button = await page.find('#c2>>>button');
185
- // Then
186
- expect(focused.name).toBe(c2Button.getAttribute('aria-label'));
187
- });
188
- it('skips disabled chips when moving focus after dismiss', async () => {
189
- // Given
190
- const page = await newE2EPage();
191
- await setWcsContent(page, `
192
- <div>
193
- <wcs-chip id="c1" mode="dismissible" value="c1" label="One"></wcs-chip>
194
- <wcs-chip id="c2" disabled value="c2" label="Two"></wcs-chip>
195
- <wcs-chip id="c3" value="c3" label="Three"></wcs-chip>
196
- </div>
197
- `);
198
- const btn = await page.find('#c1>>>button');
199
- // When
200
- await btn.click();
201
- await page.waitForChanges();
202
- const snapshot = await page.accessibility.snapshot();
203
- const focused = findFocusedNode(snapshot);
204
- // Then
205
- expect(focused.name).toBe('Three');
206
- });
207
- });
208
- });
209
- //# sourceMappingURL=chip.e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chip.e2e.js","sourceRoot":"","sources":["../../../src/components/chip/chip.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from '@stencil/core/testing';\nimport { findFocusedNode, setWcsContent } from '../../utils/tests';\n\ndescribe('Chip component', () => {\n describe('Events', () => {\n it('should emit wcsChipSelectChange with selected=true on click (selectable by default)', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n\n // When\n const chip = await page.find('wcs-chip');\n const eventSpy = await chip.spyOnEvent('wcsChipSelectChange');\n await chip.click();\n await page.waitForChanges();\n\n // Then\n expect(eventSpy).toHaveReceivedEventTimes(1);\n expect(eventSpy).toHaveReceivedEventDetail({ value: 'chip-id', selected: true });\n });\n\n it('should toggle selection and emit on Space/Enter (selectable)', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n const chip = await page.find('wcs-chip');\n const eventSpy = await chip.spyOnEvent('wcsChipSelectChange');\n\n // When - Space selects\n await chip.focus();\n await chip.press('Space');\n await page.waitForChanges();\n // When - Enter toggles back\n await chip.press('Enter');\n await page.waitForChanges();\n\n // Then\n expect(eventSpy).toHaveReceivedEventTimes(2);\n // Last emitted detail should be selected=false\n const lastDetail = eventSpy.events[eventSpy.events.length - 1].detail;\n expect(lastDetail).toEqual({ value: 'chip-id', selected: false });\n });\n\n it('should emit wcsChipDismiss when clicking dismiss button (dismissible)', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip mode=\"dismissible\" value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n const chip = await page.find('wcs-chip');\n const dismissBtn = await page.find('wcs-chip>>>button');\n const eventSpy = await chip.spyOnEvent('wcsChipDismiss');\n\n // When\n await dismissBtn.click();\n await page.waitForChanges();\n\n // Then\n expect(eventSpy).toHaveReceivedEventTimes(1);\n expect(eventSpy).toHaveReceivedEventDetail({ value: 'chip-id' });\n // open prop should be false -> attribute removed\n expect(chip.getAttribute('open')).toBe(null);\n });\n });\n\n describe('Keyboard', () => {\n it('Delete/Backspace on dismiss button dismisses the chip', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip mode=\"dismissible\" value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n const chip = await page.find('wcs-chip');\n const dismissBtn = await page.find('wcs-chip>>>button');\n const eventSpy = await chip.spyOnEvent('wcsChipDismiss');\n\n // When\n await dismissBtn.focus();\n await page.keyboard.press('Delete');\n await page.waitForChanges();\n\n // Then\n expect(eventSpy).toHaveReceivedEvent();\n expect(chip.getAttribute('open')).toBe(null);\n });\n });\n\n describe('Accessibility', () => {\n it('exposes proper ARIA for selectable: role=checkbox, aria-checked toggles, tabindex respects disabled', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n const chip = await page.find('wcs-chip');\n // Then default\n expect(chip.getAttribute('role')).toBe('checkbox');\n expect(chip.getAttribute('aria-checked')).toBe('false');\n expect(chip.getAttribute('tabindex')).toBe('0');\n // When\n await chip.click();\n await page.waitForChanges();\n // Then toggled\n expect(chip.getAttribute('aria-checked')).toBe('true');\n });\n\n it('exposes proper ARIA/disabled for dismissible: button has label and respects disabled', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip mode=\"dismissible\" value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n const btn = await page.find('wcs-chip>>>button');\n // Then\n expect(btn.getAttribute('aria-label')).toBe('Supprimer Chip');\n\n // When disabled\n const chip = await page.find('wcs-chip');\n chip.setProperty('disabled', true);\n await page.waitForChanges();\n // Then\n expect(chip.getAttribute('aria-disabled')).toBe('true');\n expect(btn.getAttribute('disabled')).not.toBe(null);\n });\n });\n\n describe('Disabled state', () => {\n it('does not emit select event when disabled (click and Space)', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip disabled value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n const chip = await page.find('wcs-chip');\n const eventSpy = await chip.spyOnEvent('wcsChipSelectChange');\n\n // When\n await chip.click();\n await chip.press('Space');\n await page.waitForChanges();\n\n // Then\n expect(eventSpy).not.toHaveReceivedEvent();\n expect(chip.getAttribute('tabindex')).toBe('-1');\n expect(chip.getAttribute('aria-checked')).toBe('false');\n });\n\n it('does not emit dismiss event when disabled', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <wcs-chip disabled mode=\"dismissible\" value=\"chip-id\" label=\"Chip\"></wcs-chip>\n `);\n const chip = await page.find('wcs-chip');\n const btn = await page.find('wcs-chip>>>button');\n const eventSpy = await chip.spyOnEvent('wcsChipDismiss');\n\n // When\n await btn.click();\n await page.waitForChanges();\n\n // Then\n expect(eventSpy).not.toHaveReceivedEvent();\n expect(chip.getAttribute('open')).toBe('');\n });\n });\n\n describe('Focus management', () => {\n it('after dismiss, focus moves to next actionable chip (selectable host)', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <div>\n <wcs-chip id=\"c1\" mode=\"dismissible\" value=\"c1\" label=\"One\"></wcs-chip>\n <wcs-chip id=\"c2\" value=\"c2\" label=\"Two\"></wcs-chip>\n </div>\n `);\n const btn = await page.find('#c1>>>button');\n\n // When\n await btn.click();\n await page.waitForChanges();\n const snapshot = await page.accessibility.snapshot();\n const focused = findFocusedNode(snapshot);\n\n // Then\n expect(focused.name).toBe('Two');\n });\n\n it('after dismiss, focus moves to next actionable chip (dismissable host)', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <div>\n <wcs-chip id=\"c1\" mode=\"dismissible\" value=\"c1\" label=\"One\"></wcs-chip>\n <wcs-chip id=\"c2\" mode=\"dismissible\" value=\"c2\" label=\"Two\"></wcs-chip>\n </div>\n `);\n const btn = await page.find('#c1>>>button');\n\n // When\n await btn.click();\n await page.waitForChanges();\n const snapshot = await page.accessibility.snapshot();\n const focused = findFocusedNode(snapshot);\n const c2Button = await page.find('#c2>>>button');\n\n // Then\n expect(focused.name).toBe(c2Button.getAttribute('aria-label'));\n });\n\n it('skips disabled chips when moving focus after dismiss', async () => {\n // Given\n const page = await newE2EPage();\n await setWcsContent(page, `\n <div>\n <wcs-chip id=\"c1\" mode=\"dismissible\" value=\"c1\" label=\"One\"></wcs-chip>\n <wcs-chip id=\"c2\" disabled value=\"c2\" label=\"Two\"></wcs-chip>\n <wcs-chip id=\"c3\" value=\"c3\" label=\"Three\"></wcs-chip>\n </div>\n `);\n const btn = await page.find('#c1>>>button');\n\n // When\n await btn.click();\n await page.waitForChanges();\n const snapshot = await page.accessibility.snapshot();\n const focused = findFocusedNode(snapshot);\n\n // Then\n expect(focused.name).toBe('Three');\n });\n });\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"com-nav.e2e.js","sourceRoot":"","sources":["../../../src/components/com-nav/com-nav.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport {KeyInput} from \"puppeteer\";\nimport { setWcsContent } from \"../../utils/tests\";\n\ndescribe('Com nav', () => {\n describe('Keyboard navigation', () => {\n describe('Mobile menu', () => {\n let page!: E2EPage;\n beforeEach(async () => {\n // Given\n page = await newE2EPage();\n await page.setViewport({\n width: 320,\n height: 480,\n });\n\n await setWcsContent(page, `\n <wcs-com-nav app-name=\"App Test\">\n <wcs-com-nav-submenu label=\"Sous menu\" panel-title=\"Sous Menu\"\n panel-description=\"Nullam id dolor id nibh ultricies vehicula ut id elit. Cras mattis consectetur purus sit amet fermentum. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.\">\n <wcs-com-nav-item>\n <a href=\"#\">Loisirs & Tourisme</a>\n </wcs-com-nav-item>\n <wcs-com-nav-item>\n <a href=\"#\">Toutes les lignes</a>\n </wcs-com-nav-item>\n <wcs-com-nav-item>\n <a href=\"#\">Services mobiles</a>\n </wcs-com-nav-item>\n <wcs-com-nav-item>\n <a href=\"#\">Au quotidien</a>\n </wcs-com-nav-item>\n <wcs-com-nav-item>\n <a href=\"#\">Le réseau</a>\n </wcs-com-nav-item>\n </wcs-com-nav-submenu>\n <wcs-com-nav-submenu label=\"Autre sous menu\" panel-title=\"Autre Sous Menu\"\n panel-description=\"Un autre sous menu avec des catégories. Cras mattis consectetur purus sit amet fermentum. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.\">\n <wcs-com-nav-item>\n <a href=\"#\">Le réseau</a>\n </wcs-com-nav-item>\n <wcs-com-nav-category label=\"Une catégorie\">\n <wcs-com-nav-item>\n <a href=\"#\">Services mobiles text plus long</a>\n </wcs-com-nav-item>\n <wcs-com-nav-item>\n <a href=\"#\">Au quotidien</a>\n </wcs-com-nav-item>\n <wcs-com-nav-item>\n <a href=\"#\">Le réseau</a>\n </wcs-com-nav-item>\n </wcs-com-nav-category>\n <wcs-com-nav-category label=\"Une catégorie\">\n <wcs-com-nav-item>\n <a href=\"#\">1</a>\n </wcs-com-nav-item>\n <wcs-com-nav-item>\n <a href=\"#\">2</a>\n </wcs-com-nav-item>\n </wcs-com-nav-category>\n </wcs-com-nav-submenu>\n <wcs-com-nav-item id=\"com-nav-item-last-item\">\n <a href=\"https://sncf.com\" target=\"_blank\">Ressource externe</a>\n </wcs-com-nav-item>\n <div slot=\"actions\">\n <wcs-button mode=\"clear\" class=\"wcs-dark\">Connexion</wcs-button>\n </div>\n </wcs-com-nav>\n `);\n })\n\n it.each(['Enter', 'Space'])('should open menu when press %s key on mobile menu icon', async (key: KeyInput) => {\n // Given the content is set in beforeEach method\n\n // When\n const menuIcon = await page.find('wcs-com-nav >>> #mobile-menu-icon');\n await menuIcon.focus();\n await page.keyboard.press(key);\n\n await page.waitForChanges();\n\n // Then\n const menu = await page.find('wcs-com-nav >>> .mobile-overlay');\n expect(menu).toBeDefined();\n expect(menu).toHaveAttribute('data-mobile-open');\n });\n\n it.each(['Enter', 'Space'])('should close menu when it opens and press %s key on mobile menu icon', async (key: KeyInput) => {\n // Given\n // the content is set in beforeEach method\n const menuIcon = await page.find('wcs-com-nav >>> #mobile-menu-icon');\n await menuIcon.focus();\n await page.keyboard.press(key);\n\n // Wait for menu to open\n await page.waitForChanges();\n\n // Close the menu\n await page.keyboard.press(key);\n await page.waitForChanges();\n\n // Then\n const menu = await page.find('wcs-com-nav >>> .mobile-overlay');\n expect(menu).not.toHaveAttribute('data-mobile-open');\n });\n\n it('should be touchable on mobile and open the menu', async () => {\n // Given\n // the content is set in beforeEach method\n const menuIcon = await page.find('wcs-com-nav >>> #mobile-menu-icon');\n await menuIcon.tap();\n\n // Then\n const menu = await page.find('wcs-com-nav >>> .mobile-overlay');\n expect(menu).toBeDefined();\n expect(menu).toHaveAttribute('data-mobile-open');\n });\n\n it('should close menu when it opens and press escape key anywhere', async () => {\n // Given\n // the content is set in beforeEach method\n const menuIcon = await page.find('wcs-com-nav >>> #mobile-menu-icon');\n await menuIcon.focus();\n await page.keyboard.press('Enter');\n\n // When\n // Navigate on menu\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await page.keyboard.press('Tab');\n await page.keyboard.press('Escape');\n\n await page.waitForChanges();\n\n // Then\n const menu = await page.find('wcs-com-nav >>> .mobile-overlay');\n expect(menu).not.toHaveAttribute('data-mobile-open');\n });\n\n it('should close the mobile menu when clicking on a wcs-com-nav-item', async () => {\n // Given\n const menuIcon = await page.find('wcs-com-nav >>> #mobile-menu-icon');\n await menuIcon.tap();\n\n // Wait for menu to open\n await page.waitForChanges();\n\n // When\n const navItem = await page.find('#com-nav-item-last-item');\n await navItem.click();\n\n await page.waitForChanges();\n\n // Then\n const menu = await page.find('wcs-com-nav >>> .mobile-overlay');\n expect(menu).not.toHaveAttribute('data-mobile-open');\n });\n });\n });\n});\n"]}
@@ -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"]}