dimsum-e2e-tests 3.70.0-next.6 → 3.70.0-next.60

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 (269) hide show
  1. package/CHANGELOG.md +300 -0
  2. package/ds-accordion/DSAccordion.visual.spec.js +6 -0
  3. package/ds-accordion/DSAccordionCO.js +15 -3
  4. package/ds-accordion/QA_NOTES.md +105 -0
  5. package/ds-accordion/controlled/DSAccordion.controlled.func.spec.js +23 -0
  6. package/ds-accordion/header-structure/DSAccordion.header-structure.func.spec.js +65 -0
  7. package/ds-accordion/input-inside/DSAccordion.input-inside.func.spec.js +19 -0
  8. package/ds-apppicker/DSAppPickerCO.js +1 -1
  9. package/ds-apppicker/truncation/DSAppPicker.truncation.visual.spec.js +5 -9
  10. package/ds-autocomplete/DSAutocomplete.visual.spec.js +34 -0
  11. package/ds-autocomplete/DSAutocompleteCO.js +36 -1
  12. package/ds-autocomplete/aria-busy-loading/DSAutocomplete.aria-busy-loading.axe-core.func.spec.js +50 -0
  13. package/ds-autocomplete/aria-busy-loading/DSAutocomplete.aria-busy-loading.func.spec.js +122 -0
  14. package/ds-autocomplete/aria-busy-loading/DSAutocomplete.aria-busy-loading.visual.spec.js +48 -0
  15. package/ds-autocomplete/slots/DSAutocomplete.slots.func.spec.js +6 -1
  16. package/ds-button-v3/DSButtonV3.aria-disabled-attribute.func.spec.js +33 -0
  17. package/ds-button-v3/DSButtonV3CO.js +10 -0
  18. package/ds-button-v3/theme-font/DSButtonV3.theme-font.func.spec.js +30 -0
  19. package/ds-card/DSCard.cardv2_v1.func.spec.js +54 -0
  20. package/ds-card/DSCard.cardv2_v1.visual.spec.js +29 -0
  21. package/ds-card/DSCardCO.js +50 -0
  22. package/ds-card/detail-slots/DSCard.detail-slots.axe-core.func.spec.js +29 -0
  23. package/ds-card/detail-slots/DSCard.detail-slots.func.spec.js +72 -0
  24. package/ds-card/detail-slots/DSCard.detail-slots.visual.spec.js +19 -0
  25. package/ds-card-v3/DSCardV3CO.js +93 -1
  26. package/ds-card-v3/accordion/DSCardV3.accordion-aria-structure.func.spec.js +41 -0
  27. package/ds-card-v3/accordion/DSCardV3.accordion-aria.keyboard.func.spec.js +49 -0
  28. package/ds-card-v3/accordion/DSCardV3.accordion.axe-core.func.spec.js +28 -0
  29. package/ds-card-v3/accordion/DSCardV3.accordion.visual.spec.js +4 -6
  30. package/ds-card-v3/action/DSCardV3.action.axe-core.func.spec.js +24 -0
  31. package/ds-card-v3/action/DSCardV3.action.func.spec.js +53 -0
  32. package/ds-card-v3/action/DSCardV3.action.visual.spec.js +28 -0
  33. package/ds-card-v3/drag-n-drop/DSCardV3.DnD.axe-core.func.spec.js +42 -0
  34. package/ds-card-v3/drag-n-drop/DSCardV3.DnD.func.spec.js +129 -0
  35. package/ds-card-v3/drag-n-drop/DSCardV3.DnD.reorder.func.spec.js +73 -0
  36. package/ds-card-v3/drag-n-drop/DSCardV3.DnD.visual.spec.js +5 -12
  37. package/ds-card-v3/global-attributes/DSCardV3.global-attributes.axe-core.func.spec.js +33 -0
  38. package/ds-card-v3/global-attributes/DSCardV3.global-attributes.visual.spec.js +20 -0
  39. package/ds-card-v3/multi-select/DSCardV3.multi-select.aria-grouping.func.spec.js +24 -0
  40. package/ds-card-v3/multi-select/DSCardV3.multiselect.axe-core.func.spec.js +47 -0
  41. package/ds-card-v3/multi-select/DSCardV3.multiselect.keyboard.func.spec.js +65 -0
  42. package/ds-card-v3/multi-select/DSCardV3.multiselect.visual.spec.js +17 -0
  43. package/ds-card-v3/multiple-action/DSCardV3.multiple-action.axe-core.func.spec.js +35 -0
  44. package/ds-card-v3/multiple-action/DSCardV3.multiple-action.func.spec.js +53 -0
  45. package/ds-card-v3/multiple-action/DSCardV3.multiple-action.visual.spec.js +18 -0
  46. package/ds-card-v3/multiple-control/DSCardV3.multi-control.axe-core.func.spec.js +34 -0
  47. package/ds-card-v3/multiple-control/DSCardV3.multi-control.func.spec.js +26 -0
  48. package/ds-card-v3/multiple-control/DSCardV3.multi-control.visual.spec.js +29 -0
  49. package/ds-card-v3/no-action/DSCardV3.no-action.axe-core.func.spec.js +22 -0
  50. package/ds-card-v3/no-action/DSCardV3.no-action.func.spec.js +23 -0
  51. package/ds-card-v3/no-action/DSCardV3.no-action.visual.spec.js +15 -0
  52. package/ds-card-v3/notification-badges/DSCardV3.notification-badges.axe-core.func.spec.js +33 -0
  53. package/ds-card-v3/notification-badges/DSCardV3.notification-badges.func.spec.js +19 -0
  54. package/ds-card-v3/notification-badges/DSCardV3.notification-badges.visual.spec.js +28 -0
  55. package/ds-card-v3/reflow/DSCardV3.reflow.axe-core.func.spec.js +28 -0
  56. package/ds-card-v3/reflow/DSCardV3.reflow.func.spec.js +36 -0
  57. package/ds-card-v3/reflow/DSCardV3.reflow.visual.spec.js +1 -2
  58. package/ds-card-v3/single-select/DSCardV3.single-select.aria-grouping.func.spec.js +24 -0
  59. package/ds-card-v3/single-select/DSCardV3.single-select.axe-core.func.spec.js +37 -0
  60. package/ds-card-v3/single-select/DSCardV3.single-select.visual.spec.js +1 -2
  61. package/ds-card-v3/slots/DSCardV3.slots.visual.spec.js +1 -2
  62. package/ds-card-v3/variant-accented/DSCardV3.variant-accented.axe-core.func.spec.js +45 -0
  63. package/ds-card-v3/variant-accented/DSCardV3.variant-accented.func.spec.js +28 -0
  64. package/ds-card-v3/variant-accented/DSCardV3.variant-accented.visual.spec.js +35 -0
  65. package/ds-card-v3/variant-accented-disabled/DSCardV3.variant-accented-disabled.axe-core.func.spec.js +35 -0
  66. package/ds-card-v3/variant-accented-disabled/DSCardV3.variant-accented-disabled.func.spec.js +53 -0
  67. package/ds-card-v3/variant-accented-disabled/DSCardV3.variant-accented-disabled.visual.spec.js +28 -0
  68. package/ds-card-v3/variant-disabled/DSCardV3.variant-disabled.axe-core.func.spec.js +22 -0
  69. package/ds-card-v3/variant-disabled/DSCardV3.variant-disabled.func.spec.js +61 -0
  70. package/ds-card-v3/variant-disabled/DSCardV3.variant-disabled.visual.spec.js +20 -0
  71. package/ds-card-v3/variant-disabled/DSCardV3.variantDisabled-non-interactive.func.spec.js +25 -0
  72. package/ds-chat/DSChat.axe-core.func.spec.js +2 -2
  73. package/ds-chat/DSChat.visual.spec.js +4 -4
  74. package/ds-chat/DSChatCO.js +18 -24
  75. package/ds-chat/bubbles/slots/DSChatBubble.slots.axe-core.func.spec.js +24 -0
  76. package/ds-chat/bubbles/slots/DSChatBubble.slots.func.spec.js +49 -0
  77. package/ds-chat/bubbles/slots/DSChatBubble.slots.visual.spec.js +25 -0
  78. package/ds-chat/card/slots/DSChatCard.slots.axe-core.func.spec.js +24 -0
  79. package/ds-chat/card/slots/DSChatCard.slots.func.spec.js +47 -0
  80. package/ds-chat/card/slots/DSChatCard.slots.visual.spec.js +18 -0
  81. package/ds-chat/card/truncated-text/DSChatCard.truncated-text.func.spec.js +32 -0
  82. package/ds-chat/card/truncated-text/DSChatCard.truncated-text.visual.spec.js +26 -0
  83. package/ds-chat/card/with-notification-badges/DSChatCard.with-notification-badges.axe-core.func.spec.js +23 -0
  84. package/ds-chat/card/with-notification-badges/DSChatCard.with-notification-badges.visual.spec.js +17 -0
  85. package/ds-chat/components/BubbleCO.js +46 -3
  86. package/ds-chat/components/CardCO.js +75 -0
  87. package/ds-chat/components/ComposerCO.js +6 -6
  88. package/ds-chat/components/FloatingButtonCO.js +5 -3
  89. package/ds-chat/components/HeaderCO.js +2 -2
  90. package/ds-chat/components/TileCO.js +82 -0
  91. package/ds-chat/components/index.js +3 -2
  92. package/ds-chat/floatingbutton/DSChat-floating-button.visual.spec.js +1 -1
  93. package/ds-chat/loadmore/DSChat-loadmore.func.spec.js +1 -1
  94. package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.axe-core.func.spec.js +2 -2
  95. package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.func.spec.js +1 -1
  96. package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.visual.spec.js +2 -2
  97. package/{ds-chat-tile → ds-chat/tile}/aria-disabled/DSChat-tile.aria-disabled.axe-core.func.spec.js +2 -2
  98. package/{ds-chat-tile → ds-chat/tile}/aria-disabled/DSChat-tile.aria-disabled.visual.spec.js +1 -1
  99. package/ds-chat/tile/slots/DSChatTile.slots.func.spec.js +53 -0
  100. package/ds-chat/tile/slots/DSChatTile.slots.visual.spec.js +18 -0
  101. package/ds-controlled-form/ds-combobox/DSComboboxCO.js +2 -2
  102. package/ds-controlled-form/ds-combobox/creatable/DSCombobox.creatable-tooltip.func.spec.js +47 -0
  103. package/ds-controlled-form/ds-combobox/creatable/DSCombobox.creatable.visual.spec.js +12 -21
  104. package/ds-controlled-form/ds-combobox/disabled/DSCombobox.disabled.visual.spec.js +6 -1
  105. package/ds-controlled-form/ds-controlled-checkbox/Basic/DSControlledCheckbox.axe-core.basic.func.spec.js +4 -4
  106. package/ds-controlled-form/ds-controlled-checkbox/Basic/DSControlledCheckbox.basic.visual.spec.js +56 -0
  107. package/ds-controlled-form/ds-controlled-checkbox/DSControlledCheckboxCO.js +15 -1
  108. package/ds-controlled-form/ds-controlled-checkbox/Disabled/DSControlledCheckbox.axe-core.disabled.func.spec.js +1 -1
  109. package/ds-controlled-form/ds-controlled-checkbox/Disabled/DSControlledCheckbox.disabled.visual.spec.js +1 -1
  110. package/ds-controlled-form/ds-controlled-checkbox/HasError/DSControlledCheckbox.axe-core.hasError.func.spec.js +4 -4
  111. package/ds-controlled-form/ds-controlled-checkbox/HasError/DSControlledCheckbox.has-error.visual.spec.js +71 -1
  112. package/ds-controlled-form/ds-controlled-checkbox/Mixed/DSControlledCheckbox.axe-core.mixed.func.spec.js +4 -4
  113. package/ds-controlled-form/ds-controlled-checkbox/Mixed/DSControlledCheckbox.mixed.visual.spec.js +1 -1
  114. package/ds-controlled-form/ds-controlled-checkbox/ReadOnly/DSControlledCheckbox.axe-core.read-only.func.spec.js +3 -3
  115. package/ds-controlled-form/ds-controlled-checkbox/ReadOnly/DSControlledCheckbox.read-only.visual.spec.js +1 -1
  116. package/ds-controlled-form/ds-controlled-checkbox/WithTooltip/DSControlledCheckbox.axe-core.with-tooltip.func.spec.js +1 -1
  117. package/ds-controlled-form/ds-controlled-checkbox/WithTooltip/DSControlledCheckbox.with-tooltip.visual.spec.js +1 -3
  118. package/ds-controlled-form/ds-controlled-checkbox/WrapLabel/DSControlledCheckbox.axe-core.wrap-label.func.spec.js +1 -1
  119. package/ds-controlled-form/ds-controlled-checkbox/WrapLabel/DSControlledCheckbox.wrap-label.visual.spec.js +1 -1
  120. package/ds-controlled-form/ds-controlled-checkbox/aria-disabled/DSControlledCheckbox.aria-disabled.visual.spec.js +2 -6
  121. package/ds-controlled-form/ds-controlled-checkbox/aria-disabled/DSControlledCheckbox.axe-core.aria-disabled.func.spec.js +1 -1
  122. package/ds-controlled-form/ds-controlled-checkbox/theme-font/DSControlledCheckbox.theme-font.func.spec.js +30 -0
  123. package/ds-controlled-form/ds-controlled-checkbox-group/DSControlledCheckboxGroup.axe-core.func.spec.js +4 -4
  124. package/ds-controlled-form/ds-controlled-checkbox-group/DSControlledCheckboxGroup.visual.spec.js +1 -1
  125. package/ds-controlled-form/ds-controlled-inputgroup/DSControlledInputGroupCO.js +1 -1
  126. package/ds-controlled-form/ds-controlled-radio/DSControlledRadioCO.js +10 -0
  127. package/ds-controlled-form/ds-controlled-radio/aria-disabled/DSControlledRadio.aria-disabled.axe-core.func.spec.js +16 -2
  128. package/ds-controlled-form/ds-controlled-radio/aria-disabled/DSControlledRadio.aria-disabled.func.spec.js +37 -0
  129. package/ds-controlled-form/ds-controlled-radio/theme-font/DSControlledRadio.theme-font.func.spec.js +30 -0
  130. package/ds-controlled-form/react-hook-form/ReactHook.func.spec.js +1 -3
  131. package/ds-data-table-async/DSDataTableCO.js +189 -12
  132. package/ds-data-table-async/basic/DSDataTable.basic.visual.spec.js +1 -1
  133. package/ds-data-table-async/components/FilterBarCO.js +7 -0
  134. package/ds-data-table-async/components/FiltersCO.js +1 -1
  135. package/ds-data-table-async/components/HeaderCO.js +45 -1
  136. package/ds-data-table-async/dnd/DSDataTable.dnd-keyboard-scroll.func.spec.js +51 -0
  137. package/ds-data-table-async/filter-menu-close/DSDataTable.filter-menu-close.func.spec.js +77 -0
  138. package/ds-data-table-async/filter-popover-boundary/DSDataTable.filter-popover-boundary.func.spec.js +98 -0
  139. package/ds-data-table-async/filters/DSDataTable.filters-creatable-active-descendant.func.spec.js +51 -0
  140. package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +39 -0
  141. package/ds-data-table-async/filters/DSDataTable.filters.axe-core.func.spec.js +11 -9
  142. package/ds-data-table-async/filtersV2/DSDataTable.filtersV2-creatablemultiselect.keyboard.func.spec.js +2 -2
  143. package/ds-data-table-async/filtersV2/DSDataTable.filtersV2-creatableselect.keyboard.func.spec.js +2 -2
  144. package/ds-data-table-async/filtersV2/DSDataTable.filtersV2.axe-core.func.spec.js +45 -29
  145. package/ds-data-table-async/filtersV2/pill-label/DSDataTable.pillLabel.axe-core.func.spec.js +23 -0
  146. package/ds-data-table-async/filtersV2/pill-label/DSDataTable.pillLabel.func.spec.js +50 -0
  147. package/ds-data-table-async/filtersV2/pill-label/DSDataTable.pillLabel.visual.spec.js +21 -0
  148. package/ds-data-table-async/header-affordances/DSDataTable.header-affordances.func.spec.js +92 -0
  149. package/ds-data-table-async/helpers/getInputSelection.js +6 -0
  150. package/ds-data-table-async/helpers/index.js +1 -0
  151. package/ds-data-table-async/keyboard-scroll/DSDataTable.keyboard-scroll.func.spec.js +39 -0
  152. package/ds-data-table-async/menubutton/DSDataTable.MenuButton.keyboard.func.spec.js +8 -7
  153. package/ds-data-table-async/menubutton/DSDataTable.MenuButton.mouse.func.spec.js +6 -7
  154. package/ds-data-table-async/pagination/DSDataTable.pagination.func.spec.js +3 -2
  155. package/ds-data-table-async/resizable/DSDataTable.resize-min-clamp.func.spec.js +72 -0
  156. package/ds-data-table-async/resizable/DSDataTable.resizerA11y.axe-core.func.spec.js +43 -0
  157. package/ds-data-table-async/resizable/DSDataTable.resizerA11y.func.spec.js +92 -0
  158. package/ds-data-table-async/textwrapping/DSDataTable.header-wrap-alignment.axe-core.func.spec.js +23 -0
  159. package/ds-data-table-async/textwrapping/DSDataTable.header-wrap-alignment.visual.spec.js +106 -0
  160. package/ds-data-table-async/textwrapping/DSDataTable.text-wrap-toolbar.visual.spec.js +27 -0
  161. package/ds-data-table-async/toggle-cell-focus/DSDataTable.toggle-cell-enter-focus.func.spec.js +31 -0
  162. package/ds-data-table-async/vissibility/DSDataTable.vissibility.visual.spec.js +2 -0
  163. package/ds-dataviz/DSDataVizCO.js +2 -0
  164. package/ds-dataviz/axecore/DSDataViz.axis.axe-core.func.spec.js +1 -1
  165. package/ds-floating-context/DSFloatingContextCO.js +10 -0
  166. package/ds-floating-context/placement/DSFloatingContext.placement.visual.spec.js +48 -0
  167. package/ds-form-combobox-multi/DSComboboxMultiCO.js +22 -3
  168. package/ds-form-combobox-multi/aria-busy-loading/DSComboboxMulti.aria-busy-loading.axe-core.func.spec.js +55 -0
  169. package/ds-form-combobox-multi/aria-busy-loading/DSComboboxMulti.aria-busy-loading.func.spec.js +57 -0
  170. package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +15 -0
  171. package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.axe-core.func.spec.js +24 -0
  172. package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.visual.spec.js +22 -0
  173. package/ds-form-combobox-multi/grouped/DSComboboxMulti.grouped.visual.spec.js +42 -0
  174. package/ds-form-combobox-multi/inline/DSComboboxMulti.inline.visual.spec.js +21 -0
  175. package/ds-form-combobox-multi/pills/DSComboboxMulti.pills.func.spec.js +59 -0
  176. package/ds-form-combobox-multi/pills/DSComboboxMulti.pills.visual.spec.js +39 -0
  177. package/ds-form-combobox-multi/skeleton/DSComboboxMulti.skeleton.visual.spec.js +25 -0
  178. package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.axe-core.func.spec.js +39 -0
  179. package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.func.spec.js +39 -0
  180. package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.visual.spec.js +29 -0
  181. package/ds-form-combobox-single/DSComboboxSingleCO.js +15 -3
  182. package/ds-form-combobox-single/aria-busy-loading/DSComboboxSingle.aria-busy-loading.axe-core.func.spec.js +49 -0
  183. package/ds-form-combobox-single/aria-busy-loading/DSComboboxSingle.aria-busy-loading.func.spec.js +54 -0
  184. package/ds-form-combobox-single/aria-disabled/DSComboboxSingle.aria-disabled.visual.spec.js +18 -0
  185. package/ds-form-combobox-single/creatable/DSComboboxSingle.creatable.visual.spec.js +30 -0
  186. package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.axe-core.func.spec.js +24 -0
  187. package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.visual.spec.js +22 -0
  188. package/ds-form-combobox-single/grouped/DSComboboxSingle.grouped.visual.spec.js +45 -0
  189. package/ds-form-combobox-single/inline/DSComboboxSingle.inline.visual.spec.js +23 -0
  190. package/ds-form-combobox-single/skeleton/DSComboboxSingle.skeleton.visual.spec.js +25 -0
  191. package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.axe-core.func.spec.js +39 -0
  192. package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.func.spec.js +39 -0
  193. package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.visual.spec.js +29 -0
  194. package/ds-form-date-range-picker/DateRangePicker.axe-core.spec.js +5 -0
  195. package/ds-form-date-range-picker/DateRangePicker.functional.spec.js +80 -18
  196. package/ds-form-date-range-picker/DateRangePickerCO.js +13 -0
  197. package/ds-form-date-range-picker/date-segment-aria-labels/DateRangePicker.date-segment-aria-labels.func.spec.js +66 -0
  198. package/ds-form-date-range-picker/grouped-field-error-announcement/DateRangePicker.grouped-field-error-announcement.func.spec.js +59 -0
  199. package/ds-form-date-time-picker/DSControlledDateTimePickerCO.js +7 -0
  200. package/ds-form-date-time-picker/date-time-full/DateTimeFull.axe-core.func.spec.js +8 -1
  201. package/ds-form-date-time-picker/date-time-full/DateTimePicker.DateTimeFull.visual.spec.js +9 -0
  202. package/ds-form-date-time-picker/partial-date-open-focus/DateTimePicker.partial-date-open-focus.func.spec.js +45 -0
  203. package/ds-form-native-select/NativeSelect.axe-core.func.spec.js +39 -0
  204. package/ds-form-native-select/NativeSelect.visual.spec.js +33 -0
  205. package/ds-form-native-select/NativeSelectCO.js +6 -0
  206. package/ds-form-native-select/option-selection/NativeSelect.option-selection.func.spec.js +25 -0
  207. package/ds-form-toggle/DSToggle.func.spec.js +20 -23
  208. package/ds-form-toggle/DSToggleCO.js +11 -2
  209. package/ds-global-header/GlobalHeader.announcements.func.spec.js +27 -0
  210. package/ds-global-header/GlobalHeader.axe-core.func.spec.js +15 -15
  211. package/ds-global-header/GlobalHeader.func.spec.js +70 -1
  212. package/ds-global-header/GlobalHeaderCO.js +25 -1
  213. package/ds-hooks/DSHook.usetree.func.spec.js +3 -2
  214. package/ds-hooks/DSHookCO.js +1 -22
  215. package/ds-hooks/useFocusStack/DSHook.useFocusStack.func.spec.js +83 -0
  216. package/ds-hooks/useFocusTrap/UseFocusTrapCO.js +2 -0
  217. package/ds-hooks/useFocusTrap/UseFocusTrapToggle.func.spec.js +48 -0
  218. package/ds-hooks/useMask/Number/UseNumberMask.axe-core.func.spec.js +48 -0
  219. package/ds-leftnavigation/LeftNavigationCO.js +2 -2
  220. package/ds-menu-button/DSMenuButtonCO.js +23 -0
  221. package/ds-menu-button/slots/DSMenuButton.slots.axe-core.func.spec.js +28 -0
  222. package/ds-menu-button/slots/DSMenuButton.slots.func.spec.js +59 -0
  223. package/ds-menu-button/slots/DSMenuButton.slots.visual.spec.js +26 -0
  224. package/ds-modal-slide/ModalSlideCO.js +46 -0
  225. package/ds-modal-slide/custom-header/ModalSlide.customHeader.focusRing.visual.spec.js +2 -1
  226. package/ds-modal-slide/heading-level/ModalSlide.headingLevel.axe-core.func.spec.js +25 -0
  227. package/ds-modal-slide/heading-level/ModalSlide.headingLevel.func.spec.js +25 -0
  228. package/ds-modal-slide/slots/ModalSlide.slots.func.spec.js +74 -0
  229. package/ds-modal-slide/slots/ModalSlide.slots.visual.spec.js +27 -0
  230. package/ds-notification-badge/DSNotificationBadge.visual.spec.js +17 -20
  231. package/ds-page-layout/PageLayoutCO.js +4 -4
  232. package/ds-pills-v2/DSPillsV2CO.js +12 -0
  233. package/ds-pills-v2/apply-aria-disabled/DSPills.applyAriaDisabled.func.spec.js +53 -0
  234. package/ds-pills-v2/apply-aria-disabled/DSPills.applyAriaDisabled.visual.spec.js +26 -0
  235. package/ds-pills-v2/disabled/DSPills.disabled.func.spec.js +53 -0
  236. package/ds-pills-v2/disabled/DSPills.disabled.visual.spec.js +33 -0
  237. package/ds-progress-indicator/DSProgressIndicator.axe-core.func.spec.js +2 -0
  238. package/ds-progress-indicator/DSProgressIndicatorCO.js +1 -1
  239. package/ds-shuttle-v2/DSShuttleV2CO.js +15 -1
  240. package/ds-shuttle-v2/breadcrumb-a11y/DSShuttleV2.breadcrumb-a11y.func.spec.js +43 -0
  241. package/ds-shuttle-v2/explicit-selection-ui/DSShuttleV2.explicit-selection-ui.func.spec.js +37 -0
  242. package/ds-shuttle-v2/explicit-selection-ui/DSShuttleV2.explicit-selection-ui.visual.spec.js +30 -0
  243. package/ds-shuttle-v2/extra/DSShuttleV2.extra.visual.spec.js +8 -3
  244. package/ds-shuttle-v2/items/DSShuttleV2.items.func.spec.js +4 -2
  245. package/ds-shuttle-v2/skipped/DSShuttleV2.extra.axe-core.skipped.js +1 -1
  246. package/ds-shuttle-v2/skipped/DSShuttleV2.filter.axe-core.skipped.js +1 -1
  247. package/ds-shuttle-v2/skipped/DSShuttleV2.globalcheckbox.axe-core.skipped.js +1 -1
  248. package/ds-shuttle-v2/skipped/DSShuttleV2.items.axe-core.skipped.js +3 -3
  249. package/ds-shuttle-v2/skipped/DSShuttleV2.skipped.js +5 -5
  250. package/ds-slider-v2/DSSliderV2.func.spec.js +36 -25
  251. package/ds-slider-v2/DSSliderV2CO.js +10 -0
  252. package/ds-slider-v2/min-range/DSSliderV2.min-range.func.spec.js +69 -0
  253. package/ds-tab-button/DSTabButton.func.spec.js +1 -1
  254. package/ds-tooltip-v3/DSTooltipV3CO.js +21 -0
  255. package/ds-tooltip-v3/aria-tooltip-pattern/DSTooltipV3.aria-tooltip-pattern.axe-core.func.spec.js +23 -0
  256. package/ds-tooltip-v3/aria-tooltip-pattern/DSTooltipV3.aria-tooltip-pattern.func.spec.js +29 -0
  257. package/ds-tooltip-v3/dialog/DSTooltipV3.dialog.func.spec.js +45 -0
  258. package/ds-tooltip-v3/dialog/DSTooltipV3.dialog.visual.spec.js +29 -0
  259. package/ds-treeview/DSTreeViewCO.js +25 -2
  260. package/ds-treeview/dragAndDrop/TreeView-dnd_keyboard.func.spec.js +96 -0
  261. package/ds-typography/DSTypographyCO.js +10 -0
  262. package/ds-typography/theme-font/DSTypography.theme-font.func.spec.js +30 -0
  263. package/package.json +150 -153
  264. package/paths.js +9 -6
  265. package/ds-card-v3/disabled/DSCardV3.disabled.visual.spec.js +0 -17
  266. package/ds-chat-tile/TileCO.js +0 -35
  267. package/ds-hooks/DSHook.func.spec.js +0 -60
  268. package/ds-hooks/useFocusStack/DSHook.useFocusStack.skipped.js +0 -57
  269. package/ds-treeview/dragAndDrop/TreeView-dnd_mouse.func.spec.js +0 -61
@@ -0,0 +1,82 @@
1
+ import { PATH_E2E_CHAT, PATH_E2E_CHAT_TILE } from '../../paths';
2
+ import { PageObject, Urlbuilder } from '../../helpers';
3
+
4
+ export default class TileCO extends PageObject {
5
+ static tilesURL = new Urlbuilder(PATH_E2E_CHAT, 'tile');
6
+
7
+ static sidebarURL = new Urlbuilder(PATH_E2E_CHAT, 'sidebar');
8
+
9
+ static applyAriaDisabledURL = new Urlbuilder(PATH_E2E_CHAT_TILE, 'apply-aria-disabled-test');
10
+
11
+ static slotsTestURL = new Urlbuilder(PATH_E2E_CHAT_TILE, 'slots-test');
12
+
13
+ static async getChatTile(tileId) {
14
+ return $(`[data-testid="tile-button-${tileId}"]`);
15
+ }
16
+
17
+ static async getChatTileButtonItem(tileId) {
18
+ return $(`[data-testid="tile-button-item-id-${tileId}"]`);
19
+ }
20
+
21
+ static async getSideBarSelectedTile() {
22
+ return $(`[data-testid="selected-tile"]`).getText();
23
+ }
24
+
25
+ static async getTileTooltip(id) {
26
+ return $(`[data-testid="ds-tooltip-v3-trigger-wrapper_ds-chat-tile-tooltip-button-item-id-${id}"]`);
27
+ }
28
+
29
+ static async getCounter() {
30
+ return $('[data-testid="counter"]');
31
+ }
32
+
33
+ static async getTileBadge(tileId) {
34
+ return $(`[data-testid="tile-badge-${tileId}"]`);
35
+ }
36
+
37
+ static async getTileCloseButton(tileId) {
38
+ return $(`[data-testid="tile-close-btn-${tileId}"]`);
39
+ }
40
+
41
+ // Slot selectors (used by slots func spec — one tile per story)
42
+ static async getRootSlot() {
43
+ return $('[data-dimsum-slot="dsChattilebuttonRoot"]');
44
+ }
45
+
46
+ static async getTooltipWrapperSlot() {
47
+ return $('[data-dimsum-slot="dsChattilebuttonTooltipWrapper"]');
48
+ }
49
+
50
+ static async getWrapperSlot() {
51
+ return $('[data-dimsum-slot="dsChattilebuttonWrapper"]');
52
+ }
53
+
54
+ static async getLeftBorderSlot() {
55
+ return $('[data-dimsum-slot="dsChattilebuttonLeftBorder"]');
56
+ }
57
+
58
+ static async getCentralContentSlot() {
59
+ return $('[data-dimsum-slot="dsChattilebuttonCentralContent"]');
60
+ }
61
+
62
+ static async getIconSlot() {
63
+ return $('[data-dimsum-slot="dsChattilebuttonIcon"]');
64
+ }
65
+
66
+ static async getLabelSlot() {
67
+ return $('[data-dimsum-slot="dsChattilebuttonLabel"]');
68
+ }
69
+
70
+ static async getBadgeSlot() {
71
+ return $('[data-dimsum-slot="dsChattilebuttonBadge"]');
72
+ }
73
+
74
+ static async getCloseButtonSlot() {
75
+ return $('[data-dimsum-slot="dsChattilebuttonCloseButton"]');
76
+ }
77
+
78
+ // Snapshots
79
+ static snapshotPath(example = 'basic') {
80
+ return PageObject.getSnapshotPathBuilder('Tile', example, 'ds-chat');
81
+ }
82
+ }
@@ -1,8 +1,9 @@
1
1
  import BubbleCO from './BubbleCO';
2
+ import CardCO from './CardCO';
2
3
  import FloatingButtonCO from './FloatingButtonCO';
3
- import TileCO from '../../ds-chat-tile/TileCO';
4
+ import TileCO from './TileCO';
4
5
  import HeaderCO from './HeaderCO';
5
6
  import ComposerCO from './ComposerCO';
6
7
  import ChatCO from '../DSChatCO';
7
8
  import StoryBtnsCO from './StoryBtnsCO';
8
- export { BubbleCO, FloatingButtonCO, TileCO, HeaderCO, ComposerCO, ChatCO, StoryBtnsCO };
9
+ export { BubbleCO, CardCO, FloatingButtonCO, TileCO, HeaderCO, ComposerCO, ChatCO, StoryBtnsCO };
@@ -5,7 +5,7 @@ import { mouseOver, keyboardActions, tickActions, performKeyboardAction } from '
5
5
  if (!browser.capabilities['ice:options'].isPhone) {
6
6
  describe('PUI-6669 - Chat, Floating Button, States - Visual Tests', () => {
7
7
  beforeEach('loading page', async () => {
8
- const errorOnGo = await FloatingButtonCO.floatingButtonURL.go();
8
+ const errorOnGo = await FloatingButtonCO.floatingExampleURL.go();
9
9
  if (errorOnGo) throw errorOnGo;
10
10
  });
11
11
  it('should display the floating button in default state', async () => {
@@ -21,7 +21,7 @@ if (!browser.capabilities['ice:options'].isPhone) {
21
21
  await browser.pause(2000);
22
22
  const howManyMsgs = (await DSChatCO.getBubbleContainers()).length;
23
23
  await expect(howManyMsgs).toEqual(20);
24
- await expect(bubble0).toBeDisplayedInViewport();
24
+ await expect(bubble0).toBeDisplayed();
25
25
  });
26
26
  });
27
27
  }
@@ -1,6 +1,6 @@
1
1
  import { Key } from 'webdriverio';
2
- import { axeCoreCheck } from '../helpers';
3
- import TileCO from './TileCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+ import { TileCO } from '../components';
4
4
 
5
5
  if (
6
6
  (!browser.capabilities['ice:options'].isPhone &&
@@ -1,5 +1,5 @@
1
1
  import { Key } from 'webdriverio';
2
- import TileCO from './TileCO';
2
+ import { TileCO } from '../components';
3
3
 
4
4
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
5
5
  describe('PUI-6684 - Chat, Tile, Keyboard Navigation', () => {
@@ -1,6 +1,6 @@
1
1
  import { Key } from 'webdriverio';
2
- import TileCO from './TileCO';
3
- import { mouseOver, keyboardActions, tickActions, performKeyboardAction } from '../helpers';
2
+ import { TileCO } from '../components';
3
+ import { mouseOver, keyboardActions, tickActions, performKeyboardAction } from '../../helpers';
4
4
 
5
5
  if (!browser.capabilities['ice:options'].isPhone) {
6
6
  describe('PUI-6674 - Chat, Tile, Visual Tests', () => {
@@ -1,5 +1,5 @@
1
- import { axeCoreCheck } from '../../helpers';
2
- import TileCO from '../TileCO';
1
+ import { axeCoreCheck } from '../../../helpers';
2
+ import { TileCO } from '../../components';
3
3
 
4
4
  if (
5
5
  (!browser.capabilities['ice:options'].isPhone &&
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable max-len */
2
2
  import { Key } from 'webdriverio';
3
- import TileCO from '../TileCO';
3
+ import { TileCO } from '../../components';
4
4
 
5
5
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
6
6
  describe('PUI-14368 - [Tile] applyAriaDisabled prop - visual Test', () => {
@@ -0,0 +1,53 @@
1
+ // Tests for PUI-17908 (ds-chat-tile slots implementation)
2
+ import { TileCO } from '../../components';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet &&
7
+ browser.capabilities.browserName === 'chrome') ||
8
+ browser.capabilities.browserName === 'Chrome'
9
+ ) {
10
+ describe('PUI-18465 - DSChatTile:: slot wiring - Func', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await TileCO.slotsTestURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+
16
+ it('01: should have custom aria-* for each slot', async () => {
17
+ await (await TileCO.getRootSlot()).waitForDisplayed();
18
+ await expect(await TileCO.getRootSlot()).toHaveAttribute('aria-label', 'root aria');
19
+ await expect(await TileCO.getTooltipWrapperSlot()).toHaveAttribute('aria-label', 'tooltip-wrapper aria');
20
+ await expect(await TileCO.getWrapperSlot()).toHaveAttribute('aria-label', 'wrapper aria');
21
+ await expect(await TileCO.getLeftBorderSlot()).toHaveAttribute('aria-label', 'left-border aria');
22
+ await expect(await TileCO.getCentralContentSlot()).toHaveAttribute('aria-label', 'central-content aria');
23
+ await expect(await TileCO.getIconSlot()).toHaveAttribute('aria-label', 'icon aria');
24
+ await expect(await TileCO.getLabelSlot()).toHaveAttribute('aria-label', 'label aria');
25
+ await expect(await TileCO.getBadgeSlot()).toHaveAttribute('aria-label', 'badge aria');
26
+ await expect(await TileCO.getCloseButtonSlot()).toHaveAttribute('aria-label', 'close-button aria');
27
+ });
28
+
29
+ it('02: should have custom data-testid for each slot', async () => {
30
+ await expect(await TileCO.getRootSlot()).toHaveAttribute('data-testid', 'root data');
31
+ await expect(await TileCO.getTooltipWrapperSlot()).toHaveAttribute('data-testid', 'tooltip-wrapper data');
32
+ await expect(await TileCO.getWrapperSlot()).toHaveAttribute('data-testid', 'wrapper data');
33
+ await expect(await TileCO.getLeftBorderSlot()).toHaveAttribute('data-testid', 'left-border data');
34
+ await expect(await TileCO.getCentralContentSlot()).toHaveAttribute('data-testid', 'central-content data');
35
+ await expect(await TileCO.getIconSlot()).toHaveAttribute('data-testid', 'icon data');
36
+ await expect(await TileCO.getLabelSlot()).toHaveAttribute('data-testid', 'label data');
37
+ await expect(await TileCO.getBadgeSlot()).toHaveAttribute('data-testid', 'badge data');
38
+ await expect(await TileCO.getCloseButtonSlot()).toHaveAttribute('data-testid', 'close-button data');
39
+ });
40
+
41
+ it('03: should have custom lang for each slot', async () => {
42
+ await expect(await TileCO.getRootSlot()).toHaveAttribute('lang', 'pt');
43
+ await expect(await TileCO.getTooltipWrapperSlot()).toHaveAttribute('lang', 'es');
44
+ await expect(await TileCO.getWrapperSlot()).toHaveAttribute('lang', 'de');
45
+ await expect(await TileCO.getLeftBorderSlot()).toHaveAttribute('lang', 'en');
46
+ await expect(await TileCO.getCentralContentSlot()).toHaveAttribute('lang', 'fr');
47
+ await expect(await TileCO.getIconSlot()).toHaveAttribute('lang', 'it');
48
+ await expect(await TileCO.getLabelSlot()).toHaveAttribute('lang', 'nl');
49
+ await expect(await TileCO.getBadgeSlot()).toHaveAttribute('lang', 'sv');
50
+ await expect(await TileCO.getCloseButtonSlot()).toHaveAttribute('lang', 'ja');
51
+ });
52
+ });
53
+ }
@@ -0,0 +1,18 @@
1
+ // Tests for PUI-17908 (ds-chat-tile slots implementation)
2
+ import { TileCO } from '../../components';
3
+
4
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
5
+ describe('PUI-18464 - DSChatTile:: slot variants - Visual', () => {
6
+ before(async () => {
7
+ const errorOnGo = await TileCO.slotsTestURL.go();
8
+ if (errorOnGo) throw errorOnGo;
9
+ });
10
+
11
+ it('01: should display all tile slot variants', async () => {
12
+ const firstTile = await TileCO.getRootSlot();
13
+ await firstTile.waitForDisplayed();
14
+ const snapshot = await browser.percyCheckScreenshot(TileCO.snapshotPath('tile-slot-variants'));
15
+ await expect(snapshot).toEqual(0);
16
+ });
17
+ });
18
+ }
@@ -134,7 +134,7 @@ export default class DSComboboxCO extends PageObject {
134
134
  }
135
135
 
136
136
  static async getSimpleTruncateText() {
137
- return $('[data-testid="DS-SimpleTruncateText"]');
137
+ return $('[data-testid="combobox-selected-values"]');
138
138
  }
139
139
 
140
140
  static async getNumberOptions() {
@@ -183,7 +183,7 @@ export default class DSComboboxCO extends PageObject {
183
183
  }
184
184
 
185
185
  static async getTooltip() {
186
- return $('[data-testid="popover-container"]');
186
+ return $('[data-testid="ds-floating-wrapper-root"]');
187
187
  }
188
188
 
189
189
  // actions
@@ -0,0 +1,47 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSComboboxCO from '../DSComboboxCO';
3
+ import { mouseOver } from '../../../helpers';
4
+
5
+ const longText =
6
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ' +
7
+ 'magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.';
8
+
9
+ // Tests for the fix introduced in PUI-16693 (ComboboxMulti suppresses the inaccessible
10
+ // truncated-pill tooltip via the disableTruncationTooltip flag; the full value stays
11
+ // readable from the list box). Hovering a truncated selected pill must NOT open a tooltip.
12
+ // The open menu renders its own ds-floating-wrapper-root, so it is closed before asserting.
13
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
14
+ describe('PUI-18659 - ComboboxV3:: truncated selected pill tooltip suppression - func', () => {
15
+ before('loading page and creating a truncated pill', async () => {
16
+ const errorOnGo = await DSComboboxCO.multiSelectCreatable.go();
17
+ if (errorOnGo) throw errorOnGo;
18
+
19
+ const combobox = await DSComboboxCO.getComboboxInput();
20
+ await combobox.setValue(longText);
21
+
22
+ const optionCreated = await DSComboboxCO.getOptionByIndex(0);
23
+ await optionCreated.click();
24
+
25
+ // close the menu so its FloatingWrapper (shares ds-floating-wrapper-root) is gone
26
+ await browser.keys(Key.Escape);
27
+ const menuList = await DSComboboxCO.getMenuList();
28
+ await menuList.waitForDisplayed({ reverse: true });
29
+ });
30
+
31
+ it('01: should not render a tooltip wrapper for the truncated selected pill', async () => {
32
+ const pill = await DSComboboxCO.getSelectedValues();
33
+ await expect(pill).toBeDisplayed();
34
+
35
+ const tooltip = await DSComboboxCO.getTooltip();
36
+ await expect(tooltip).not.toBeExisting();
37
+ });
38
+
39
+ it('02: should not open a tooltip when hovering the truncated pill', async () => {
40
+ const pill = await DSComboboxCO.getSimpleTruncateText();
41
+ await mouseOver(pill);
42
+
43
+ const tooltip = await DSComboboxCO.getTooltip();
44
+ await expect(tooltip).not.toBeExisting();
45
+ });
46
+ });
47
+ }
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable max-len */
3
3
  /* eslint-disable max-lines */
4
4
  import DSComboboxCO from '../DSComboboxCO';
5
- import { type, mouseOver } from '../../../helpers';
5
+ import { type } from '../../../helpers';
6
6
 
7
7
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
8
  describe('PUI-8449 - ComboboxV3:: Multi Select Creatable - basic - visual', () => {
@@ -28,30 +28,21 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
28
28
  );
29
29
  await expect(snapshot).toEqual(0);
30
30
  });
31
- // Defect PUI-16693 has been created to track this issue
32
- it.skip('03: display tooltip for new option created', async () => {
31
+ // PUI-16693 (tooltip suppression on truncated pills) is now fixed; these creatable
32
+ // snapshots are reactivated. The tooltip-absence behavior is covered separately in
33
+ // DSCombobox.creatable-tooltip.func.spec.js.
34
+ it('03: should create and display a second long option in the menu', async () => {
33
35
  await browser.eyesOpen();
34
- const pill = await DSComboboxCO.getSimpleTruncateText();
35
- await mouseOver(pill);
36
- const tooltip = await DSComboboxCO.getTooltip();
37
- await tooltip.waitForDisplayed();
38
- const snapshot = await browser.eyesCheckSnapshot(
39
- DSComboboxCO.snapshotPath('comboboxV3-createable-option-created-tooltip'),
40
- );
41
- await expect(snapshot).toEqual(0);
42
- });
43
- // Defect PUI-16693 has been created to track this issue
44
- it.skip('04: create a new long option', async () => {
45
- await browser.eyesOpen();
46
- const pill = await DSComboboxCO.getSelectedValues();
47
- await mouseOver(pill, 400, 0);
48
- const longText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit';
49
- await type(longText);
36
+ // the input keeps focus and the menu stays open after selecting in test 02, so type
37
+ // directly — clicking the input is intercepted by the overlapping aria-hidden input.
38
+ const secondLongText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit';
39
+ await type(secondLongText);
40
+ const menuList = await DSComboboxCO.getMenuList();
41
+ await menuList.waitForDisplayed();
50
42
  const snapshot = await browser.eyesCheckSnapshot(DSComboboxCO.snapshotPath('comboboxV3-createable--new-option'));
51
43
  await expect(snapshot).toEqual(0);
52
44
  });
53
- // Defect PUI-16693 has been created to track this issue
54
- it.skip('05: should select new option', async () => {
45
+ it('04: should select the second created option', async () => {
55
46
  await browser.eyesOpen();
56
47
  const optionCreated = await DSComboboxCO.getOptionByIndex(0);
57
48
  await optionCreated.click();
@@ -14,7 +14,12 @@ if (!browser.capabilities['ice:options'].isPhone) {
14
14
  await expect(snapshot).toEqual(0);
15
15
  });
16
16
  if (!browser.capabilities['ice:options'].isTablet) {
17
- it('should display tooltip when hover truncated pill', async () => {
17
+ // SKIPPED pending PUI-18660 (defect): the PUI-16693 fix applies disableTruncationTooltip
18
+ // to every ComboboxMulti selected pill, including disabled/readOnly pills. In the disabled
19
+ // state the menu cannot be opened, so suppressing the tooltip leaves the truncated value
20
+ // inaccessible. Re-enable (asserting tooltip presence) once the flag is scoped to
21
+ // interactive pills only.
22
+ it.skip('should display tooltip when hover truncated pill', async () => {
18
23
  const truncatedPill = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long');
19
24
  await mouseOver(truncatedPill, 20, 5);
20
25
  const tooltip = await DSComboboxCO.getTooltip();
@@ -19,24 +19,24 @@ if (
19
19
  const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
20
20
  await checkbox.waitForExist();
21
21
  const result = await axeCoreCheck();
22
- expect(result.length).toBe(0);
22
+ await expect(result).toHaveLength(0);
23
23
  });
24
24
  it('02: Evaluate checkbox accessibility with axe-core (focused)', async () => {
25
25
  await browser.keys(Key.Tab);
26
26
  const result = await axeCoreCheck();
27
- expect(result.length).toBe(0);
27
+ await expect(result).toHaveLength(0);
28
28
  });
29
29
  it('03: Evaluate checkbox accessibility with axe-core (hovered)', async () => {
30
30
  const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
31
31
  await mouseOver(checkbox);
32
32
  const result = await axeCoreCheck();
33
- expect(result.length).toBe(0);
33
+ await expect(result).toHaveLength(0);
34
34
  });
35
35
  it('04: Evaluate checkbox accessibility with axe-core (clicked)', async () => {
36
36
  const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
37
37
  await checkbox.click();
38
38
  const result = await axeCoreCheck();
39
- expect(result.length).toBe(0);
39
+ await expect(result).toHaveLength(0);
40
40
  });
41
41
  });
42
42
  }
@@ -0,0 +1,56 @@
1
+ import { Key } from 'webdriverio';
2
+ import { mouseOver } from '../../../helpers';
3
+ import DSControlledCheckboxCO from '../DSControlledCheckboxCO';
4
+
5
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
6
+ describe('PUI-18822 - DSControlledCheckbox: update to latest spec and typography- visual test', () => {
7
+ before('loading page', async () => {
8
+ const errorOnGo = await DSControlledCheckboxCO.basicURL.go();
9
+ if (errorOnGo) throw errorOnGo;
10
+ });
11
+
12
+ it('01: the checked checkbox is not focused', async () => {
13
+ const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
14
+ await checkbox.waitForExist();
15
+ const snapshot = await browser.percyCheckScreenshot();
16
+ await expect(snapshot).toEqual(0);
17
+ });
18
+
19
+ it('02: checkbox hover even when checked', async () => {
20
+ const controlBox = await DSControlledCheckboxCO.getCheckboxInputWrapper();
21
+ await controlBox.moveTo();
22
+ const snapshot = await browser.percyCheckScreenshot();
23
+ await expect(snapshot).toEqual(0);
24
+ });
25
+
26
+ it('03: the checked checkbox is focused', async () => {
27
+ await browser.keys(Key.Tab);
28
+ const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
29
+ await expect(checkbox).toBeFocused();
30
+ const snapshot = await browser.percyCheckScreenshot();
31
+ await expect(snapshot).toEqual(0);
32
+ });
33
+
34
+ it('04: checkbox is focused but unchecked', async () => {
35
+ await browser.keys(Key.Space);
36
+ const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
37
+ await expect(checkbox).toBeFocused();
38
+ const snapshot = await browser.percyCheckScreenshot();
39
+ await expect(snapshot).toEqual(0);
40
+ });
41
+
42
+ it('05: checkbox not focused, not hovered when unchecked', async () => {
43
+ await browser.keys(Key.Tab);
44
+ await mouseOver(null, 400, 300);
45
+ const snapshot = await browser.percyCheckScreenshot();
46
+ await expect(snapshot).toEqual(0);
47
+ });
48
+
49
+ it('06: checkbox hover even when unchecked', async () => {
50
+ const controlBox = await DSControlledCheckboxCO.getCheckboxInputWrapper();
51
+ await controlBox.moveTo();
52
+ const snapshot = await browser.percyCheckScreenshot();
53
+ await expect(snapshot).toEqual(0);
54
+ });
55
+ });
56
+ }
@@ -23,10 +23,16 @@ export default class DSControlledCheckboxCO extends PageObject {
23
23
 
24
24
  static applyAriaDisabled = new Urlbuilder(PATH_E2E_CHECKBOX, 'apply-aria-disabled-test');
25
25
 
26
+ static themeFontURL = new Urlbuilder(PATH_E2E_CHECKBOX, 'theme-font-family-test');
27
+
26
28
  static async getCheckbox() {
27
29
  return $('[data-testid="ds-checkbox"]');
28
30
  }
29
31
 
32
+ static async getCheckboxInputWrapper() {
33
+ return $('[data-testid="ds-checkbox-input-wrapper"]');
34
+ }
35
+
30
36
  static async getCustomCheckbox() {
31
37
  return $('[data-testid="custom-data-testid"]');
32
38
  }
@@ -58,7 +64,7 @@ export default class DSControlledCheckboxCO extends PageObject {
58
64
  static getCheckboxByIndex = async (index) => getElementByIndex(this.getCheckboxes, index);
59
65
 
60
66
  static async getCheckboxLabels() {
61
- return $$('[data-testid="DS-SimpleTruncateText"]');
67
+ return $$('[data-testid="ds-checkbox-label"]');
62
68
  }
63
69
 
64
70
  static getCheckboxLabelByIndex = async (index) => getElementByIndex(this.getCheckboxLabels, index);
@@ -66,4 +72,12 @@ export default class DSControlledCheckboxCO extends PageObject {
66
72
  static snapshotPath(example = 'basic') {
67
73
  return PageObject.getSnapshotPathBuilder('DSControlledCheckbox', example, 'ds-controlled-checkbox');
68
74
  }
75
+
76
+ static async getThemedCheckboxLabel() {
77
+ return $('[data-testid="theme-font-sentinel"] [data-testid="ds-checkbox-label-typography"]');
78
+ }
79
+
80
+ static async getFallbackCheckboxLabel() {
81
+ return $('[data-testid="theme-font-fallback"] [data-testid="ds-checkbox-label-typography"]');
82
+ }
69
83
  }
@@ -18,7 +18,7 @@ if (
18
18
  const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
19
19
  await checkbox.waitForExist();
20
20
  const result = await axeCoreCheck();
21
- expect(result.length).toBe(0);
21
+ await expect(result).toHaveLength(0);
22
22
  });
23
23
  });
24
24
  }
@@ -11,7 +11,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
11
11
  const checkbox = await DSControlledCheckboxCO.getCheckboxByLabel('Group');
12
12
  await checkbox.waitForDisplayed();
13
13
  await browser.keys(Key.Tab);
14
- const snapshot = await browser.checkSnapshot(DSControlledCheckboxCO.snapshotPath('checkbox-disabled'));
14
+ const snapshot = await browser.percyCheckScreenshot();
15
15
  await expect(snapshot).toEqual(0);
16
16
  });
17
17
  });
@@ -19,24 +19,24 @@ if (
19
19
  const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
20
20
  await checkbox.waitForExist();
21
21
  const result = await axeCoreCheck();
22
- expect(result.length).toBe(0);
22
+ await expect(result).toHaveLength(0);
23
23
  });
24
24
  it('02: Evaluate checkbox accessibility with axe-core (focused)', async () => {
25
25
  await browser.keys(Key.Tab);
26
26
  const result = await axeCoreCheck();
27
- expect(result.length).toBe(0);
27
+ await expect(result).toHaveLength(0);
28
28
  });
29
29
  it('03: Evaluate checkbox accessibility with axe-core (hovered)', async () => {
30
30
  const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
31
31
  await mouseOver(checkbox);
32
32
  const result = await axeCoreCheck();
33
- expect(result.length).toBe(0);
33
+ await expect(result).toHaveLength(0);
34
34
  });
35
35
  it('04: Evaluate checkbox accessibility with axe-core (clicked)', async () => {
36
36
  const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(1);
37
37
  await checkbox.click();
38
38
  const result = await axeCoreCheck();
39
- expect(result.length).toBe(0);
39
+ await expect(result).toHaveLength(0);
40
40
  });
41
41
  });
42
42
  }
@@ -1,3 +1,4 @@
1
+ import { Key } from 'webdriverio';
1
2
  import { mouseOver } from '../../../helpers';
2
3
  import DSControlledCheckboxCO from '../DSControlledCheckboxCO';
3
4
 
@@ -13,7 +14,76 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
13
14
  await checkbox1.click();
14
15
  await checkbox1.click();
15
16
  await mouseOver(checkbox2);
16
- const snapshot = await browser.checkSnapshot(DSControlledCheckboxCO.snapshotPath('checkbox-hasError'));
17
+ const snapshot = await browser.percyCheckScreenshot();
18
+ await expect(snapshot).toEqual(0);
19
+ });
20
+ });
21
+
22
+ describe('PUI-18849 - DSControlledCheckbox - hasError - Visual Test', () => {
23
+ before('loading page', async () => {
24
+ const errorOnGo = await DSControlledCheckboxCO.hasError.go();
25
+ if (errorOnGo) throw errorOnGo;
26
+ });
27
+
28
+ it('01: the partial selected checkbox is not focused', async () => {
29
+ const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
30
+ await checkbox.waitForExist();
31
+ const snapshot = await browser.percyCheckScreenshot();
32
+ await expect(snapshot).toEqual(0);
33
+ });
34
+
35
+ it('02: checkbox hover even when partial selected', async () => {
36
+ const controlBox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
37
+ await controlBox.moveTo();
38
+ const snapshot = await browser.percyCheckScreenshot();
39
+ await expect(snapshot).toEqual(0);
40
+ });
41
+
42
+ it('03: the partial selected checkbox is focused', async () => {
43
+ await browser.keys(Key.Tab);
44
+ const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
45
+ await expect(checkbox).toBeFocused();
46
+ const snapshot = await browser.percyCheckScreenshot();
47
+ await expect(snapshot).toEqual(0);
48
+ });
49
+
50
+ it('04: checkbox is focused but not selected', async () => {
51
+ await browser.keys(Key.Space);
52
+ await browser.keys(Key.Space);
53
+ const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
54
+ await expect(checkbox).toBeFocused();
55
+ const snapshot = await browser.percyCheckScreenshot();
56
+ await expect(snapshot).toEqual(0);
57
+ });
58
+
59
+ it('05: checkbox not focused, not hovered when not selected', async () => {
60
+ await browser.keys(Key.Tab);
61
+ await mouseOver(null, 400, 300);
62
+ const snapshot = await browser.percyCheckScreenshot();
63
+ await expect(snapshot).toEqual(0);
64
+ });
65
+
66
+ it('06: checkbox hover even when not selected', async () => {
67
+ const controlBox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
68
+ await controlBox.moveTo();
69
+ const snapshot = await browser.percyCheckScreenshot();
70
+ await expect(snapshot).toEqual(0);
71
+ });
72
+ it('07: the selected checkbox is focused', async () => {
73
+ await browser.keys(Key.Tab);
74
+ await browser.keys(Key.Space);
75
+ const controlBox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
76
+ await mouseOver(controlBox);
77
+ const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(2);
78
+ await expect(checkbox).toBeFocused();
79
+ const snapshot = await browser.percyCheckScreenshot();
80
+ await expect(snapshot).toEqual(0);
81
+ });
82
+ it('08: the selected checkbox is hovered', async () => {
83
+ await browser.keys(Key.Tab);
84
+ const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(2);
85
+ await mouseOver(checkbox);
86
+ const snapshot = await browser.percyCheckScreenshot();
17
87
  await expect(snapshot).toEqual(0);
18
88
  });
19
89
  });