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,73 @@
1
+ /* eslint-disable max-lines */
2
+ import { Key } from 'webdriverio';
3
+ import DSCardV3CO from '../DSCardV3CO';
4
+ import { tabStops, sendKeyRepeat } from '../../helpers';
5
+
6
+ // The "In Progress" container (list index 1) holds cards 7..12 in this order.
7
+ const IN_PROGRESS_LIST_INDEX = 1;
8
+ const INITIAL_ORDER = ['7', '8', '9', '10', '11', '12'];
9
+ const LAST_CARD_HANDLE_INDEX = 11;
10
+
11
+ if (
12
+ !browser.capabilities['ice:options'].isPhone &&
13
+ !browser.capabilities['ice:options'].isTablet &&
14
+ (browser.capabilities.browserName === 'Chrome' || browser.capabilities.browserName === 'chrome')
15
+ ) {
16
+ describe('PUI-18731 - DSCardV3:: Drag and Drop keyboard re-order - Func', () => {
17
+ beforeEach('loading page', async () => {
18
+ const errorOnGo = await DSCardV3CO.dragAndDropURL.go();
19
+ if (errorOnGo) throw errorOnGo;
20
+ });
21
+
22
+ const pickUpLastCard = async () => {
23
+ await tabStops(INITIAL_ORDER.length * 2);
24
+ const handle = await DSCardV3CO.getCardHandlerByIndex(LAST_CARD_HANDLE_INDEX);
25
+ await expect(handle).toBeFocused();
26
+ await browser.keys(Key.Return);
27
+ await expect(handle).toHaveAttribute('aria-pressed', 'true');
28
+ return handle;
29
+ };
30
+
31
+ it('01: the In Progress list renders cards 7..12 in their initial order', async () => {
32
+ await DSCardV3CO.expectCardOrderInList(IN_PROGRESS_LIST_INDEX, INITIAL_ORDER);
33
+ });
34
+
35
+ it('02: moving the last card up announces the new (decremented) position - [TAB*12][ENTER][ARROWUP]', async () => {
36
+ await pickUpLastCard();
37
+ await browser.keys(Key.ArrowUp);
38
+ const liveRegion = await DSCardV3CO.getDnDLiveRegion();
39
+ const announcement = await liveRegion.getProperty('textContent');
40
+ expect(announcement).toContain('item was moved to position 5');
41
+ });
42
+
43
+ it('03: dropping the last card after moving up re-orders it in the DOM - [...][ARROWUP][ENTER]', async () => {
44
+ await pickUpLastCard();
45
+ await browser.keys(Key.ArrowUp);
46
+ const liveRegion = await DSCardV3CO.getDnDLiveRegion();
47
+ await browser.keys(Key.Return);
48
+ const finalAnnouncement = await liveRegion.getProperty('textContent');
49
+ expect(finalAnnouncement).toContain('item was dropped at position 5');
50
+ await DSCardV3CO.expectCardOrderInList(IN_PROGRESS_LIST_INDEX, ['7', '8', '9', '10', '12', '11']);
51
+ });
52
+
53
+ it('04: moving the last card to the first position re-orders it to the top - [...][ARROWUP*5][ENTER]', async () => {
54
+ await pickUpLastCard();
55
+ const liveRegion = await DSCardV3CO.getDnDLiveRegion();
56
+ await sendKeyRepeat(Key.ArrowUp, INITIAL_ORDER.length - 1);
57
+ await browser.keys(Key.Return);
58
+ const finalAnnouncement = await liveRegion.getProperty('textContent');
59
+ expect(finalAnnouncement).toContain('item was dropped at position 1');
60
+ await DSCardV3CO.expectCardOrderInList(IN_PROGRESS_LIST_INDEX, ['12', '7', '8', '9', '10', '11']);
61
+ });
62
+
63
+ it('05: cancel after moving the last card up keeps the original order intact - [...][ARROWUP][ESC]', async () => {
64
+ await pickUpLastCard();
65
+ await browser.keys(Key.ArrowUp);
66
+ const liveRegion = await DSCardV3CO.getDnDLiveRegion();
67
+ await browser.keys(Key.Escape);
68
+ const finalAnnouncement = await liveRegion.getProperty('textContent');
69
+ expect(finalAnnouncement).toContain('Dragging was cancelled');
70
+ await DSCardV3CO.expectCardOrderInList(IN_PROGRESS_LIST_INDEX, INITIAL_ORDER);
71
+ });
72
+ });
73
+ }
@@ -9,41 +9,36 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
9
9
  if (errorOnGo) throw errorOnGo;
10
10
  });
11
11
  it('01: should focus on the drag handler', async () => {
12
- await browser.eyesOpen();
13
12
  await browser.keys(Key.Tab);
14
- const snapshot = await browser.eyesCheckSnapshot(DSCardV3CO.snapshotPath('card-v3-dnd-handler-focused'));
13
+ const snapshot = await browser.percyCheckScreenshot();
15
14
  await expect(snapshot).toEqual(0);
16
15
  });
17
16
  it('02: should drag the item and display the ghost element', async () => {
18
- await browser.eyesOpen();
19
17
  await browser.keys(Key.Tab);
20
18
  await browser.keys(Key.Return);
21
- const snapshot = await browser.eyesCheckSnapshot(DSCardV3CO.snapshotPath('card-v3-dnd-ghost-element'));
19
+ const snapshot = await browser.percyCheckScreenshot();
22
20
  await expect(snapshot).toEqual(0);
23
21
  });
24
22
  it('03: should move the item and drop it in a last position', async () => {
25
- await browser.eyesOpen();
26
23
  await browser.keys(Key.Tab);
27
24
  await browser.keys(Key.Return);
28
25
  await sendKeyRepeat(Key.ArrowDown, 5);
29
26
  await browser.keys(Key.Return);
30
- const snapshot = await browser.eyesCheckSnapshot(DSCardV3CO.snapshotPath('card-v3-dnd-drop-last-position'));
27
+ const snapshot = await browser.percyCheckScreenshot();
31
28
  await expect(snapshot).toEqual(0);
32
29
  });
33
30
  // https://jira.elliemae.io/browse/PUI-15649
34
31
  it('04: should move an item to the the first position', async () => {
35
- await browser.eyesOpen();
36
32
  await tabStops(12);
37
33
  await browser.keys(Key.Return);
38
34
  await sendKeyRepeat(Key.ArrowUp, 5);
39
35
  await browser.keys(Key.ArrowLeft);
40
36
  await browser.keys(Key.Return);
41
- const snapshot = await browser.eyesCheckSnapshot(DSCardV3CO.snapshotPath('card-v3-dnd-drop-first-position'));
37
+ const snapshot = await browser.percyCheckScreenshot();
42
38
  await expect(snapshot).toEqual(0);
43
39
  });
44
40
 
45
41
  it('05: should move an item to the first position and back to the last position diferent column', async () => {
46
- await browser.eyesOpen();
47
42
  await tabStops(12);
48
43
  await browser.keys(Key.Return);
49
44
  await sendKeyRepeat(Key.ArrowUp, 5);
@@ -53,9 +48,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
53
48
  await browser.keys(Key.Return);
54
49
  await sendKeyRepeat(Key.ArrowDown, 6);
55
50
  await browser.keys(Key.Return);
56
- const snapshot = await browser.eyesCheckSnapshot(
57
- DSCardV3CO.snapshotPath('card-v3-dnd-drop-last-position-first-column'),
58
- );
51
+ const snapshot = await browser.percyCheckScreenshot();
59
52
  await expect(snapshot).toEqual(0);
60
53
  });
61
54
  });
@@ -0,0 +1,33 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+ import { axeCoreCheck } from '../../helpers';
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-18714 - CardV3:: GlobalAttributes - axe-core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSCardV3CO.globalAttributesURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('01: should display the accordion closed and pass axecore test', async () => {
16
+ await (await DSCardV3CO.getAccordionButton()).waitForDisplayed();
17
+ const result = await axeCoreCheck();
18
+ await expect(result).toHaveLength(0);
19
+ });
20
+ it('02: should open the accordion and pass axecore test', async () => {
21
+ await (await DSCardV3CO.getAccordionButton()).click();
22
+ const getAccordionFirstElement = await DSCardV3CO.getElement(2);
23
+ await getAccordionFirstElement.waitForDisplayed();
24
+ const result = await axeCoreCheck();
25
+ await expect(result).toHaveLength(0);
26
+ });
27
+ it('03: should open the menu and pass axecore test', async () => {
28
+ await (await DSCardV3CO.getButtonByIndex(1)).click();
29
+ const result = await axeCoreCheck();
30
+ await expect(result).toHaveLength(0);
31
+ });
32
+ });
33
+ }
@@ -0,0 +1,20 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+
3
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
4
+ describe('PUI-18733 - DSCardV3:: global attributes render correctly - Visual', () => {
5
+ before('loading page', async () => {
6
+ const errorOnGo = await DSCardV3CO.globalAttributesURL.go();
7
+ if (errorOnGo) throw errorOnGo;
8
+ });
9
+ it('01: The global attributes under Accordion are passed to the story should be displayed correctly', async () => {
10
+ await (await DSCardV3CO.getAccordionButton()).click();
11
+ const snapshot = await browser.percyCheckScreenshot();
12
+ await expect(snapshot).toEqual(0);
13
+ });
14
+ it('02: The global attributes under Menu are passed to the story should be displayed correctly', async () => {
15
+ await (await DSCardV3CO.getButtonByIndex(1)).click();
16
+ const snapshot = await browser.percyCheckScreenshot();
17
+ await expect(snapshot).toEqual(0);
18
+ });
19
+ });
20
+ }
@@ -0,0 +1,24 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+
3
+ if (
4
+ (!browser.capabilities['ice:options'].isPhone &&
5
+ !browser.capabilities['ice:options'].isTablet &&
6
+ browser.capabilities.browserName === 'chrome') ||
7
+ browser.capabilities.browserName === 'Chrome'
8
+ ) {
9
+ // Tests for the fix introduced in PUI-17891 (checkbox group not programmatically grouped)
10
+ describe('PUI-18599 - DSCardV3:: multi-select ARIA group role - Func', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSCardV3CO.multiSelectURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+
16
+ it('01: wrapper container has role="group" and an accessible label', async () => {
17
+ const wrapper = await DSCardV3CO.getGroupContainer();
18
+ await expect(wrapper).toBeExisting();
19
+ await expect(wrapper).toHaveAttribute('role', 'group');
20
+ const label = await wrapper.getAttribute('aria-label');
21
+ expect(label).toBeTruthy();
22
+ });
23
+ });
24
+ }
@@ -0,0 +1,47 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+ import { axeCoreCheck } from '../../helpers';
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-18804 - DSCardV3:: multi-select checkbox states accessibility - Axe-Core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSCardV3CO.multiSelectURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+
16
+ it('01: should pass axe-core with no card selected', async () => {
17
+ const group = await DSCardV3CO.getGroupContainer();
18
+ await group.waitForDisplayed();
19
+
20
+ const result = await axeCoreCheck();
21
+ await expect(result).toHaveLength(0);
22
+ });
23
+
24
+ it('02: should pass axe-core with the first card selected', async () => {
25
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
26
+ await firstCheckbox.waitForExist();
27
+ await firstCheckbox.click();
28
+ await expect(firstCheckbox).toBeSelected();
29
+
30
+ const result = await axeCoreCheck();
31
+ await expect(result).toHaveLength(0);
32
+ });
33
+
34
+ it('03: should pass axe-core with both cards selected', async () => {
35
+ const secondCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(1);
36
+ await secondCheckbox.waitForExist();
37
+ await secondCheckbox.click();
38
+ await expect(secondCheckbox).toBeSelected();
39
+
40
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
41
+ await expect(firstCheckbox).toBeSelected();
42
+
43
+ const result = await axeCoreCheck();
44
+ await expect(result).toHaveLength(0);
45
+ });
46
+ });
47
+ }
@@ -0,0 +1,65 @@
1
+ /* eslint-disable max-lines */
2
+ import { Key } from 'webdriverio';
3
+ import DSCardV3CO from '../DSCardV3CO';
4
+
5
+ if (
6
+ (!browser.capabilities['ice:options'].isPhone &&
7
+ !browser.capabilities['ice:options'].isTablet &&
8
+ browser.capabilities.browserName === 'chrome') ||
9
+ browser.capabilities.browserName === 'Chrome'
10
+ ) {
11
+ describe('PUI-18715 - CardV3: Multi Select (keyboard) - Func Test', () => {
12
+ before('loading page', async () => {
13
+ const errorOnGo = await DSCardV3CO.multiSelectURL.go();
14
+ if (errorOnGo) throw errorOnGo;
15
+ });
16
+ it('01: first checkbox should be focused - [TAB]', async () => {
17
+ await browser.keys(Key.Tab);
18
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
19
+ await expect(firstCheckbox).toBeFocused();
20
+ await expect(firstCheckbox).toHaveAttribute('aria-label', 'First Option Card');
21
+ });
22
+ it('02: first checkbox should be selected - [SPACE]', async () => {
23
+ await browser.keys(Key.Space);
24
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
25
+ await expect(firstCheckbox).toBeSelected();
26
+ });
27
+ it('03: more options should be focused - [TAB]', async () => {
28
+ await browser.keys(Key.Tab);
29
+ const options = await DSCardV3CO.getButtonByIndex(0);
30
+ await expect(options).toBeFocused();
31
+ await expect(options).toHaveAttribute('aria-label', 'More Options');
32
+ });
33
+ it('04: second checkbox should be focused and selected - [TAB+SPACE]', async () => {
34
+ await browser.keys(Key.Tab);
35
+ const secondCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(1);
36
+ await expect(secondCheckbox).toBeFocused();
37
+ await browser.keys(Key.Space);
38
+ await expect(secondCheckbox).toBeSelected();
39
+ await expect(secondCheckbox).toHaveAttribute('aria-label', 'Second Option Card');
40
+ });
41
+ it('05: first checkbox should be deselected on toggle - [SHIFT+TAB, SPACE]', async () => {
42
+ await browser.keys([Key.Shift, Key.Tab]);
43
+ await browser.keys([Key.Shift, Key.Tab]);
44
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
45
+ await expect(firstCheckbox).toBeFocused();
46
+ await browser.keys(Key.Space);
47
+ await expect(firstCheckbox).not.toBeSelected();
48
+ });
49
+ it('06: both checkboxes should stay selected simultaneously - [SPACE]', async () => {
50
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
51
+ await browser.keys(Key.Space);
52
+ const secondCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(1);
53
+ await expect(firstCheckbox).toBeSelected();
54
+ await expect(secondCheckbox).toBeSelected();
55
+ });
56
+ it('07: deselecting one card should not affect the other - [SPACE]', async () => {
57
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
58
+ await expect(firstCheckbox).toBeFocused();
59
+ await browser.keys(Key.Space);
60
+ const secondCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(1);
61
+ await expect(firstCheckbox).not.toBeSelected();
62
+ await expect(secondCheckbox).toBeSelected();
63
+ });
64
+ });
65
+ }
@@ -0,0 +1,17 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
3
+ describe('PUI-18734 - DSCardV3:: multi-select checkbox and menu open - Visual', () => {
4
+ before('loading page', async () => {
5
+ const errorOnGo = await DSCardV3CO.multiSelectURL.go();
6
+ if (errorOnGo) throw errorOnGo;
7
+ });
8
+ it('01: first checkbox should be selected, and the dropdown menu should be opened', async () => {
9
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
10
+ const ellipsisMenuBtn = await DSCardV3CO.getButtonByIndex(0);
11
+ await firstCheckbox.click();
12
+ await ellipsisMenuBtn.click();
13
+ const snapshot = await browser.percyCheckScreenshot();
14
+ await expect(snapshot).toEqual(0);
15
+ });
16
+ });
17
+ }
@@ -0,0 +1,35 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSCardV3CO from '../DSCardV3CO';
3
+ import { axeCoreCheck } from '../../helpers';
4
+
5
+ if (
6
+ (!browser.capabilities['ice:options'].isPhone &&
7
+ !browser.capabilities['ice:options'].isTablet &&
8
+ browser.capabilities.browserName === 'chrome') ||
9
+ browser.capabilities.browserName === 'Chrome'
10
+ ) {
11
+ describe('PUI-18827 - DSCardV3:: multiple action buttons accessibility - Axe-Core', () => {
12
+ before('loading page', async () => {
13
+ const errorOnGo = await DSCardV3CO.multiActionURL.go();
14
+ if (errorOnGo) throw errorOnGo;
15
+ });
16
+
17
+ it('01: should have no accessibility violations', async () => {
18
+ const card = await DSCardV3CO.getCardContainer();
19
+ await card.waitForDisplayed();
20
+
21
+ const result = await axeCoreCheck();
22
+ await expect(result).toHaveLength(0);
23
+ });
24
+
25
+ it('02: should have no accessibility violations with the first action button focused', async () => {
26
+ await browser.keys(Key.Tab);
27
+ const flagAction = await DSCardV3CO.getButtonByIndex(0);
28
+ await expect(flagAction).toBeFocused();
29
+ await expect(flagAction).toHaveAttribute('aria-label', 'Flag action');
30
+
31
+ const result = await axeCoreCheck();
32
+ await expect(result).toHaveLength(0);
33
+ });
34
+ });
35
+ }
@@ -0,0 +1,53 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSCardV3CO from '../DSCardV3CO';
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-18716 - CardV3: Multiple Action Buttons - Func Test', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSCardV3CO.multiActionURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('01: should move focus across the action buttons in order - [TAB]', async () => {
16
+ await browser.keys(Key.Tab);
17
+ const flag = await DSCardV3CO.getButtonByIndex(0);
18
+ await expect(flag).toBeFocused();
19
+ await expect(flag).toHaveAttribute('aria-label', 'Flag action');
20
+
21
+ await browser.keys(Key.Tab);
22
+ const print = await DSCardV3CO.getButtonByIndex(1);
23
+ await expect(print).toBeFocused();
24
+ await expect(print).toHaveAttribute('aria-label', 'Print action');
25
+
26
+ await browser.keys(Key.Tab);
27
+ const download = await DSCardV3CO.getButtonByIndex(2);
28
+ await expect(download).toBeFocused();
29
+ await expect(download).toHaveAttribute('aria-label', 'Download action');
30
+
31
+ await browser.keys(Key.Tab);
32
+ const deleteAction = await DSCardV3CO.getButtonByIndex(3);
33
+ await expect(deleteAction).toBeFocused();
34
+ await expect(deleteAction).toHaveAttribute('aria-label', 'Delete action');
35
+ });
36
+ it('02: should move focus across the action buttons in reverse order - [SHIFT+TAB]', async () => {
37
+ await browser.keys([Key.Shift, Key.Tab]);
38
+ const download = await DSCardV3CO.getButtonByIndex(2);
39
+ await expect(download).toBeFocused();
40
+ await expect(download).toHaveAttribute('aria-label', 'Download action');
41
+
42
+ await browser.keys([Key.Shift, Key.Tab]);
43
+ const print = await DSCardV3CO.getButtonByIndex(1);
44
+ await expect(print).toBeFocused();
45
+ await expect(print).toHaveAttribute('aria-label', 'Print action');
46
+
47
+ await browser.keys([Key.Shift, Key.Tab]);
48
+ const flag = await DSCardV3CO.getButtonByIndex(0);
49
+ await expect(flag).toBeFocused();
50
+ await expect(flag).toHaveAttribute('aria-label', 'Flag action');
51
+ });
52
+ });
53
+ }
@@ -0,0 +1,18 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSCardV3CO from '../DSCardV3CO';
3
+
4
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
5
+ describe('PUI-18735 - DSCardV3:: multiple action button focus - Visual', () => {
6
+ before('loading page', async () => {
7
+ const errorOnGo = await DSCardV3CO.multiActionURL.go();
8
+ if (errorOnGo) throw errorOnGo;
9
+ });
10
+ it('01: should display CardV3 with the first action button focused', async () => {
11
+ await browser.keys(Key.Tab);
12
+ const flag = await DSCardV3CO.getButtonByIndex(0);
13
+ await expect(flag).toBeFocused();
14
+ const snapshot = await browser.percyCheckScreenshot();
15
+ await expect(snapshot).toEqual(0);
16
+ });
17
+ });
18
+ }
@@ -0,0 +1,34 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+ import { axeCoreCheck } from '../../helpers';
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-18826 - DSCardV3:: multiple control accessibility - Axe-Core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSCardV3CO.multipleControlURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+
16
+ it('01: should have no accessibility violations with no card selected', async () => {
17
+ const card = await DSCardV3CO.getCardContainerByIndex(0);
18
+ await card.waitForDisplayed();
19
+
20
+ const result = await axeCoreCheck();
21
+ await expect(result).toHaveLength(0);
22
+ });
23
+
24
+ it('02: should have no accessibility violations with the first card selected', async () => {
25
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
26
+ await firstCheckbox.waitForExist();
27
+ await firstCheckbox.click();
28
+ await expect(firstCheckbox).toBeSelected();
29
+
30
+ const result = await axeCoreCheck();
31
+ await expect(result).toHaveLength(0);
32
+ });
33
+ });
34
+ }
@@ -0,0 +1,26 @@
1
+ /* eslint-disable max-lines */
2
+ import { Key } from 'webdriverio';
3
+ import DSCardV3CO from '../DSCardV3CO';
4
+
5
+ if (
6
+ (!browser.capabilities['ice:options'].isPhone &&
7
+ !browser.capabilities['ice:options'].isTablet &&
8
+ browser.capabilities.browserName === 'chrome') ||
9
+ browser.capabilities.browserName === 'Chrome'
10
+ ) {
11
+ describe('PUI-18645 - CardV3: Multi Control - Func Test', () => {
12
+ before('loading page', async () => {
13
+ const errorOnGo = await DSCardV3CO.multipleControlURL.go();
14
+ if (errorOnGo) throw errorOnGo;
15
+ });
16
+ it('01: first checkbox selection should not select second checkbox - [TAB + TAB + SPACE]', async () => {
17
+ await browser.keys(Key.Tab);
18
+ await browser.keys(Key.Tab);
19
+ await browser.keys(Key.Space);
20
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
21
+ await expect(firstCheckbox).toBeSelected();
22
+ const secondCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(1);
23
+ await expect(secondCheckbox).not.toBeSelected();
24
+ });
25
+ });
26
+ }
@@ -0,0 +1,29 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+
3
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
4
+ describe('PUI-18825 - DSCardV3:: multiple control card states - Visual', () => {
5
+ before('loading page', async () => {
6
+ const errorOnGo = await DSCardV3CO.multipleControlURL.go();
7
+ if (errorOnGo) throw errorOnGo;
8
+ });
9
+
10
+ it('01: should display both cards with their controls unselected', async () => {
11
+ const firstCard = await DSCardV3CO.getCardContainerByIndex(0);
12
+ await firstCard.waitForDisplayed();
13
+ const secondCard = await DSCardV3CO.getCardContainerByIndex(1);
14
+ await expect(secondCard).toBeDisplayed();
15
+
16
+ const snapshot = await browser.percyCheckScreenshot();
17
+ await expect(snapshot).toEqual(0);
18
+ });
19
+
20
+ it('02: should display the first card selected', async () => {
21
+ const firstCheckbox = await DSCardV3CO.getCardCheckBoxByIndex(0);
22
+ await firstCheckbox.click();
23
+ await expect(firstCheckbox).toBeSelected();
24
+
25
+ const snapshot = await browser.percyCheckScreenshot();
26
+ await expect(snapshot).toEqual(0);
27
+ });
28
+ });
29
+ }
@@ -0,0 +1,22 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+ import { axeCoreCheck } from '../../helpers';
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-18717 - CardV3: No Action - axe-core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSCardV3CO.noActionURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('01: Card should display correctly and pass axecore test', async () => {
16
+ const firstElement = await DSCardV3CO.getElement(0);
17
+ await firstElement.waitForExist();
18
+ const result = await axeCoreCheck();
19
+ await expect(result).toHaveLength(0);
20
+ });
21
+ });
22
+ }
@@ -0,0 +1,23 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+
3
+ if (
4
+ (!browser.capabilities['ice:options'].isPhone &&
5
+ !browser.capabilities['ice:options'].isTablet &&
6
+ browser.capabilities.browserName === 'chrome') ||
7
+ browser.capabilities.browserName === 'Chrome'
8
+ ) {
9
+ describe('PUI-18736 - DSCardV3:: no-action title and subtitle render - Func', () => {
10
+ before('loading page', async () => {
11
+ const errorOnGo = await DSCardV3CO.noActionURL.go();
12
+ if (errorOnGo) throw errorOnGo;
13
+ });
14
+ it('01: Card should display correctly', async () => {
15
+ const firstElement = await DSCardV3CO.getElement(0);
16
+ await expect(firstElement).toHaveText('Card Title');
17
+ await expect(firstElement).toHaveAttribute('data-dimsum-slot', 'dsTypographyRoot');
18
+ const secondElement = await DSCardV3CO.getElement(1);
19
+ await expect(secondElement).toHaveText('Card Subtitle');
20
+ await expect(secondElement).toHaveAttribute('data-dimsum-slot', 'dsTypographyRoot');
21
+ });
22
+ });
23
+ }
@@ -0,0 +1,15 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
3
+ describe('PUI-18737 - DSCardV3:: no-action card renders - Visual', () => {
4
+ before('loading page', async () => {
5
+ const errorOnGo = await DSCardV3CO.noActionURL.go();
6
+ if (errorOnGo) throw errorOnGo;
7
+ });
8
+ it('01: Should load the page and pass visual test', async () => {
9
+ const firstElement = await DSCardV3CO.getElement(0);
10
+ await expect(firstElement).toBeDisplayed();
11
+ const snapshot = await browser.percyCheckScreenshot();
12
+ await expect(snapshot).toEqual(0);
13
+ });
14
+ });
15
+ }
@@ -0,0 +1,33 @@
1
+ import DSCardV3CO from '../DSCardV3CO';
2
+ import { axeCoreCheck } from '../../helpers';
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-18806 - DSCardV3:: notification badge card accessibility - Axe-Core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSCardV3CO.notificationBadgesURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+
16
+ it('01: should have no accessibility violations', async () => {
17
+ const card = await DSCardV3CO.getCardContainer();
18
+ await card.waitForDisplayed();
19
+
20
+ const result = await axeCoreCheck();
21
+ await expect(result).toHaveLength(0);
22
+ });
23
+
24
+ it('02: should have no accessibility violations with an action button focused', async () => {
25
+ const flagAction = await DSCardV3CO.getButtonByIndex(0);
26
+ await flagAction.click();
27
+ await expect(flagAction).toBeFocused();
28
+
29
+ const result = await axeCoreCheck();
30
+ await expect(result).toHaveLength(0);
31
+ });
32
+ });
33
+ }