dimsum-e2e-tests 3.70.0-next.7 → 3.70.0-next.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1079 -721
- package/ds-accordion/DSAccordion.visual.spec.js +6 -0
- package/ds-accordion/DSAccordionCO.js +15 -3
- package/ds-accordion/QA_NOTES.md +105 -0
- package/ds-accordion/controlled/DSAccordion.controlled.func.spec.js +23 -0
- package/ds-accordion/header-structure/DSAccordion.header-structure.func.spec.js +65 -0
- package/ds-accordion/input-inside/DSAccordion.input-inside.func.spec.js +19 -0
- package/ds-apppicker/DSAppPickerCO.js +101 -3
- package/ds-apppicker/aria-pattern/DSAppPicker.aria-pattern.func.spec.js +100 -0
- package/ds-apppicker/basic/DSAppPicker.basic.keyboard-nav.func.spec.js +18 -7
- package/ds-apppicker/closeAfterSelection/DSAppPicker.closeAfterSelection.func.spec.js +1 -1
- package/ds-apppicker/custom-trigger-focus/DSAppPicker.custom-trigger-focus.func.spec.js +82 -0
- package/ds-apppicker/label-expansion-dismissal/DSAppPicker.label-expansion-dismissal.visual.spec.js +108 -0
- package/ds-apppicker/reflow/DSAppPicker.reflow.func.spec.js +32 -0
- package/ds-apppicker/reflow/DSAppPicker.reflow.visual.spec.js +5 -6
- package/ds-apppicker/truncation/DSAppPicker.truncation.visual.spec.js +5 -9
- package/ds-autocomplete/DSAutocomplete.visual.spec.js +34 -0
- package/ds-autocomplete/DSAutocompleteCO.js +36 -1
- package/ds-autocomplete/aria-busy-loading/DSAutocomplete.aria-busy-loading.axe-core.func.spec.js +50 -0
- package/ds-autocomplete/aria-busy-loading/DSAutocomplete.aria-busy-loading.func.spec.js +122 -0
- package/ds-autocomplete/aria-busy-loading/DSAutocomplete.aria-busy-loading.visual.spec.js +48 -0
- package/ds-autocomplete/slots/DSAutocomplete.slots.func.spec.js +6 -1
- package/ds-banner/DSBanner.text-resize.visual.spec.js +5 -2
- package/ds-banner/DSBannerCO.js +4 -0
- package/ds-button-v3/DSButtonV3.aria-disabled-attribute.func.spec.js +33 -0
- package/ds-button-v3/DSButtonV3CO.js +10 -0
- package/ds-button-v3/theme-font/DSButtonV3.theme-font.func.spec.js +30 -0
- package/ds-card/DSCard.cardv2_v1.func.spec.js +54 -0
- package/ds-card/DSCard.cardv2_v1.visual.spec.js +29 -0
- package/ds-card/DSCardCO.js +50 -0
- package/ds-card/detail-slots/DSCard.detail-slots.axe-core.func.spec.js +29 -0
- package/ds-card/detail-slots/DSCard.detail-slots.func.spec.js +72 -0
- package/ds-card/detail-slots/DSCard.detail-slots.visual.spec.js +19 -0
- package/ds-card-v3/DSCardV3CO.js +93 -1
- package/ds-card-v3/accordion/DSCardV3.accordion-aria-structure.func.spec.js +41 -0
- package/ds-card-v3/accordion/DSCardV3.accordion-aria.keyboard.func.spec.js +49 -0
- package/ds-card-v3/accordion/DSCardV3.accordion.axe-core.func.spec.js +28 -0
- package/ds-card-v3/accordion/DSCardV3.accordion.visual.spec.js +4 -6
- package/ds-card-v3/action/DSCardV3.action.axe-core.func.spec.js +24 -0
- package/ds-card-v3/action/DSCardV3.action.func.spec.js +53 -0
- package/ds-card-v3/action/DSCardV3.action.visual.spec.js +28 -0
- package/ds-card-v3/drag-n-drop/DSCardV3.DnD.axe-core.func.spec.js +42 -0
- package/ds-card-v3/drag-n-drop/DSCardV3.DnD.func.spec.js +129 -0
- package/ds-card-v3/drag-n-drop/DSCardV3.DnD.reorder.func.spec.js +73 -0
- package/ds-card-v3/drag-n-drop/DSCardV3.DnD.visual.spec.js +5 -12
- package/ds-card-v3/global-attributes/DSCardV3.global-attributes.axe-core.func.spec.js +33 -0
- package/ds-card-v3/global-attributes/DSCardV3.global-attributes.visual.spec.js +20 -0
- package/ds-card-v3/multi-select/DSCardV3.multi-select.aria-grouping.func.spec.js +24 -0
- package/ds-card-v3/multi-select/DSCardV3.multiselect.axe-core.func.spec.js +47 -0
- package/ds-card-v3/multi-select/DSCardV3.multiselect.keyboard.func.spec.js +65 -0
- package/ds-card-v3/multi-select/DSCardV3.multiselect.visual.spec.js +17 -0
- package/ds-card-v3/multiple-action/DSCardV3.multiple-action.axe-core.func.spec.js +35 -0
- package/ds-card-v3/multiple-action/DSCardV3.multiple-action.func.spec.js +53 -0
- package/ds-card-v3/multiple-action/DSCardV3.multiple-action.visual.spec.js +18 -0
- package/ds-card-v3/multiple-control/DSCardV3.multi-control.axe-core.func.spec.js +34 -0
- package/ds-card-v3/multiple-control/DSCardV3.multi-control.func.spec.js +26 -0
- package/ds-card-v3/multiple-control/DSCardV3.multi-control.visual.spec.js +29 -0
- package/ds-card-v3/no-action/DSCardV3.no-action.axe-core.func.spec.js +22 -0
- package/ds-card-v3/no-action/DSCardV3.no-action.func.spec.js +23 -0
- package/ds-card-v3/no-action/DSCardV3.no-action.visual.spec.js +15 -0
- package/ds-card-v3/notification-badges/DSCardV3.notification-badges.axe-core.func.spec.js +33 -0
- package/ds-card-v3/notification-badges/DSCardV3.notification-badges.func.spec.js +19 -0
- package/ds-card-v3/notification-badges/DSCardV3.notification-badges.visual.spec.js +28 -0
- package/ds-card-v3/reflow/DSCardV3.reflow.axe-core.func.spec.js +28 -0
- package/ds-card-v3/reflow/DSCardV3.reflow.func.spec.js +36 -0
- package/ds-card-v3/reflow/DSCardV3.reflow.visual.spec.js +3 -2
- package/ds-card-v3/single-select/DSCardV3.single-select.aria-grouping.func.spec.js +24 -0
- package/ds-card-v3/single-select/DSCardV3.single-select.axe-core.func.spec.js +37 -0
- package/ds-card-v3/single-select/DSCardV3.single-select.visual.spec.js +1 -2
- package/ds-card-v3/slots/DSCardV3.slots.visual.spec.js +1 -2
- package/ds-card-v3/variant-accented/DSCardV3.variant-accented.axe-core.func.spec.js +45 -0
- package/ds-card-v3/variant-accented/DSCardV3.variant-accented.func.spec.js +28 -0
- package/ds-card-v3/variant-accented/DSCardV3.variant-accented.visual.spec.js +35 -0
- package/ds-card-v3/variant-accented-disabled/DSCardV3.variant-accented-disabled.axe-core.func.spec.js +35 -0
- package/ds-card-v3/variant-accented-disabled/DSCardV3.variant-accented-disabled.func.spec.js +53 -0
- package/ds-card-v3/variant-accented-disabled/DSCardV3.variant-accented-disabled.visual.spec.js +28 -0
- package/ds-card-v3/variant-disabled/DSCardV3.variant-disabled.axe-core.func.spec.js +22 -0
- package/ds-card-v3/variant-disabled/DSCardV3.variant-disabled.func.spec.js +61 -0
- package/ds-card-v3/variant-disabled/DSCardV3.variant-disabled.visual.spec.js +20 -0
- package/ds-card-v3/variant-disabled/DSCardV3.variantDisabled-non-interactive.func.spec.js +25 -0
- package/ds-chat/DSChat.axe-core.func.spec.js +2 -2
- package/ds-chat/DSChat.visual.spec.js +4 -4
- package/ds-chat/DSChatCO.js +18 -24
- package/ds-chat/bubbles/slots/DSChatBubble.slots.axe-core.func.spec.js +24 -0
- package/ds-chat/bubbles/slots/DSChatBubble.slots.func.spec.js +49 -0
- package/ds-chat/bubbles/slots/DSChatBubble.slots.visual.spec.js +25 -0
- package/ds-chat/card/slots/DSChatCard.slots.axe-core.func.spec.js +24 -0
- package/ds-chat/card/slots/DSChatCard.slots.func.spec.js +47 -0
- package/ds-chat/card/slots/DSChatCard.slots.visual.spec.js +18 -0
- package/ds-chat/card/truncated-text/DSChatCard.truncated-text.func.spec.js +32 -0
- package/ds-chat/card/truncated-text/DSChatCard.truncated-text.visual.spec.js +26 -0
- package/ds-chat/card/with-notification-badges/DSChatCard.with-notification-badges.axe-core.func.spec.js +23 -0
- package/ds-chat/card/with-notification-badges/DSChatCard.with-notification-badges.visual.spec.js +17 -0
- package/ds-chat/components/BubbleCO.js +46 -3
- package/ds-chat/components/CardCO.js +75 -0
- package/ds-chat/components/ComposerCO.js +6 -6
- package/ds-chat/components/FloatingButtonCO.js +5 -3
- package/ds-chat/components/HeaderCO.js +2 -2
- package/ds-chat/components/TileCO.js +82 -0
- package/ds-chat/components/index.js +3 -2
- package/ds-chat/floatingbutton/DSChat-floating-button.visual.spec.js +1 -1
- package/ds-chat/loadmore/DSChat-loadmore.func.spec.js +1 -1
- package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.axe-core.func.spec.js +2 -2
- package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.func.spec.js +1 -1
- package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.visual.spec.js +2 -2
- package/{ds-chat-tile → ds-chat/tile}/aria-disabled/DSChat-tile.aria-disabled.axe-core.func.spec.js +2 -2
- package/{ds-chat-tile → ds-chat/tile}/aria-disabled/DSChat-tile.aria-disabled.visual.spec.js +1 -1
- package/ds-chat/tile/slots/DSChatTile.slots.func.spec.js +53 -0
- package/ds-chat/tile/slots/DSChatTile.slots.visual.spec.js +18 -0
- package/ds-chip/label-expansion-dismissal/DSChip.label-expansion-dismissal.visual.spec.js +84 -0
- package/ds-controlled-form/ds-combobox/creatable/DSCombobox.creatable-tooltip.func.spec.js +47 -0
- package/ds-controlled-form/ds-combobox/creatable/DSCombobox.creatable.visual.spec.js +12 -21
- package/ds-controlled-form/ds-combobox/disabled/DSCombobox.disabled.visual.spec.js +6 -1
- package/ds-controlled-form/ds-controlled-checkbox/Basic/DSControlledCheckbox.axe-core.basic.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox/Basic/DSControlledCheckbox.basic.visual.spec.js +56 -0
- package/ds-controlled-form/ds-controlled-checkbox/DSControlledCheckboxCO.js +54 -1
- package/ds-controlled-form/ds-controlled-checkbox/Disabled/DSControlledCheckbox.axe-core.disabled.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/Disabled/DSControlledCheckbox.disabled.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/HasError/DSControlledCheckbox.axe-core.hasError.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox/HasError/DSControlledCheckbox.has-error.visual.spec.js +71 -1
- package/ds-controlled-form/ds-controlled-checkbox/Mixed/DSControlledCheckbox.axe-core.mixed.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox/Mixed/DSControlledCheckbox.mixed.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/ReadOnly/DSControlledCheckbox.axe-core.read-only.func.spec.js +3 -3
- package/ds-controlled-form/ds-controlled-checkbox/ReadOnly/DSControlledCheckbox.read-only.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/WithTooltip/DSControlledCheckbox.axe-core.with-tooltip.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/WithTooltip/DSControlledCheckbox.with-tooltip.visual.spec.js +1 -3
- package/ds-controlled-form/ds-controlled-checkbox/WrapLabel/DSControlledCheckbox.axe-core.wrap-label.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/WrapLabel/DSControlledCheckbox.wrap-label.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/aria-disabled/DSControlledCheckbox.aria-disabled.visual.spec.js +2 -6
- package/ds-controlled-form/ds-controlled-checkbox/aria-disabled/DSControlledCheckbox.axe-core.aria-disabled.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/slots/DSControlledCheckbox.slots.func.spec.js +78 -0
- package/ds-controlled-form/ds-controlled-checkbox/theme-font/DSControlledCheckbox.theme-font.func.spec.js +30 -0
- package/ds-controlled-form/ds-controlled-checkbox-group/DSControlledCheckboxGroup.axe-core.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox-group/DSControlledCheckboxGroup.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-radio/DSControlledRadioCO.js +50 -1
- package/ds-controlled-form/ds-controlled-radio/aria-disabled/DSControlledRadio.aria-disabled.axe-core.func.spec.js +16 -2
- package/ds-controlled-form/ds-controlled-radio/aria-disabled/DSControlledRadio.aria-disabled.func.spec.js +37 -0
- package/ds-controlled-form/ds-controlled-radio/slots/DSControlledRadio.slots.func.spec.js +78 -0
- package/ds-controlled-form/ds-controlled-radio/theme-font/DSControlledRadio.theme-font.func.spec.js +30 -0
- package/ds-controlled-form/react-hook-form/ReactHook.func.spec.js +1 -3
- package/ds-data-table-async/DSDataTableCO.js +187 -10
- package/ds-data-table-async/basic/DSDataTable.basic.visual.spec.js +1 -1
- package/ds-data-table-async/components/FilterBarCO.js +7 -0
- package/ds-data-table-async/components/FiltersCO.js +1 -1
- package/ds-data-table-async/components/HeaderCO.js +37 -1
- package/ds-data-table-async/dnd/DSDataTable.dnd-keyboard-scroll.func.spec.js +51 -0
- package/ds-data-table-async/filter-menu-close/DSDataTable.filter-menu-close.func.spec.js +77 -0
- package/ds-data-table-async/filter-popover-boundary/DSDataTable.filter-popover-boundary.func.spec.js +98 -0
- package/ds-data-table-async/filters/DSDataTable.filters-creatable-active-descendant.func.spec.js +51 -0
- package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +55 -0
- package/ds-data-table-async/filters/DSDataTable.filters.axe-core.func.spec.js +11 -9
- package/ds-data-table-async/filtersV2/DSDataTable.filtersV2-creatablemultiselect.keyboard.func.spec.js +2 -2
- package/ds-data-table-async/filtersV2/DSDataTable.filtersV2-creatableselect.keyboard.func.spec.js +2 -2
- package/ds-data-table-async/filtersV2/DSDataTable.filtersV2.axe-core.func.spec.js +45 -29
- package/ds-data-table-async/filtersV2/pill-label/DSDataTable.pillLabel.axe-core.func.spec.js +23 -0
- package/ds-data-table-async/filtersV2/pill-label/DSDataTable.pillLabel.func.spec.js +50 -0
- package/ds-data-table-async/filtersV2/pill-label/DSDataTable.pillLabel.visual.spec.js +21 -0
- package/ds-data-table-async/header-affordances/DSDataTable.header-affordances.func.spec.js +92 -0
- package/ds-data-table-async/helpers/getInputSelection.js +6 -0
- package/ds-data-table-async/helpers/index.js +1 -0
- package/ds-data-table-async/keyboard-scroll/DSDataTable.keyboard-scroll.func.spec.js +39 -0
- package/ds-data-table-async/menubutton/DSDataTable.MenuButton.keyboard.func.spec.js +8 -7
- package/ds-data-table-async/menubutton/DSDataTable.MenuButton.mouse.func.spec.js +6 -7
- package/ds-data-table-async/pagination/DSDataTable.pagination.func.spec.js +3 -2
- package/ds-data-table-async/resizable/DSDataTable.resize-min-clamp.func.spec.js +72 -0
- package/ds-data-table-async/resizable/DSDataTable.resizerA11y.axe-core.func.spec.js +42 -0
- package/ds-data-table-async/resizable/DSDataTable.resizerA11y.func.spec.js +98 -0
- package/ds-data-table-async/textwrapping/DSDataTable.header-wrap-alignment.axe-core.func.spec.js +23 -0
- package/ds-data-table-async/textwrapping/DSDataTable.header-wrap-alignment.visual.spec.js +106 -0
- package/ds-data-table-async/textwrapping/DSDataTable.text-wrap-toolbar.visual.spec.js +27 -0
- package/ds-data-table-async/toggle-cell-focus/DSDataTable.toggle-cell-enter-focus.func.spec.js +31 -0
- package/ds-data-table-async/vissibility/DSDataTable.vissibility.visual.spec.js +2 -0
- package/ds-dataviz/DSDataViz.axis.visual.spec.js +1 -2
- package/ds-dataviz/DSDataViz.ticks.visual.spec.js +1 -2
- package/ds-dataviz/DSDataVizCO.js +2 -0
- package/ds-dataviz/axecore/DSDataViz.axis.axe-core.func.spec.js +1 -1
- package/ds-floating-context/DSFloatingContextCO.js +10 -0
- package/ds-floating-context/placement/DSFloatingContext.placement.visual.spec.js +48 -0
- package/ds-form-combobox-multi/DSComboboxMultiCO.js +36 -9
- package/ds-form-combobox-multi/aria-busy-loading/DSComboboxMulti.aria-busy-loading.axe-core.func.spec.js +55 -0
- package/ds-form-combobox-multi/aria-busy-loading/DSComboboxMulti.aria-busy-loading.func.spec.js +57 -0
- package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +19 -2
- package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.axe-core.func.spec.js +24 -0
- package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.mouse.func.spec.js +0 -2
- package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.visual.spec.js +22 -0
- package/ds-form-combobox-multi/grouped/DSComboboxMulti.grouped.visual.spec.js +42 -0
- package/ds-form-combobox-multi/inline/DSComboboxMulti.inline.visual.spec.js +21 -0
- package/ds-form-combobox-multi/pills/DSComboboxMulti.pills.func.spec.js +59 -0
- package/ds-form-combobox-multi/pills/DSComboboxMulti.pills.visual.spec.js +39 -0
- package/ds-form-combobox-multi/skeleton/DSComboboxMulti.skeleton.visual.spec.js +25 -0
- package/ds-form-combobox-multi/theme-font/DSComboboxMulti.theme-font.func.spec.js +38 -0
- package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.axe-core.func.spec.js +39 -0
- package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.func.spec.js +39 -0
- package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.visual.spec.js +29 -0
- package/ds-form-combobox-single/DSComboboxSingleCO.js +25 -9
- package/ds-form-combobox-single/aria-busy-loading/DSComboboxSingle.aria-busy-loading.axe-core.func.spec.js +49 -0
- package/ds-form-combobox-single/aria-busy-loading/DSComboboxSingle.aria-busy-loading.func.spec.js +54 -0
- package/ds-form-combobox-single/aria-disabled/DSComboboxSingle.aria-disabled.visual.spec.js +18 -0
- package/ds-form-combobox-single/creatable/DSComboboxSingle.creatable.visual.spec.js +30 -0
- package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.axe-core.func.spec.js +24 -0
- package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.mouse.func.spec.js +0 -2
- package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.visual.spec.js +22 -0
- package/ds-form-combobox-single/grouped/DSComboboxSingle.grouped.visual.spec.js +45 -0
- package/ds-form-combobox-single/inline/DSComboboxSingle.inline.visual.spec.js +23 -0
- package/ds-form-combobox-single/skeleton/DSComboboxSingle.skeleton.visual.spec.js +25 -0
- package/ds-form-combobox-single/theme-font/DSComboboxSingle.theme-font.func.spec.js +34 -0
- package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.axe-core.func.spec.js +39 -0
- package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.func.spec.js +39 -0
- package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.visual.spec.js +29 -0
- package/ds-form-date-range-picker/DateRangePicker.axe-core.spec.js +5 -0
- package/ds-form-date-range-picker/DateRangePicker.functional.spec.js +80 -18
- package/ds-form-date-range-picker/DateRangePickerCO.js +19 -0
- package/ds-form-date-range-picker/date-segment-aria-labels/DateRangePicker.date-segment-aria-labels.func.spec.js +66 -0
- package/ds-form-date-range-picker/grouped-field-error-announcement/DateRangePicker.grouped-field-error-announcement.func.spec.js +59 -0
- package/ds-form-date-range-picker/picker-callbacks/DateRangePicker.picker-callbacks.func.spec.js +36 -0
- package/ds-form-date-time-picker/DSControlledDateTimePickerCO.js +7 -0
- package/ds-form-date-time-picker/date-time-full/DateTimeFull.axe-core.func.spec.js +8 -1
- package/ds-form-date-time-picker/date-time-full/DateTimePicker.DateTimeFull.visual.spec.js +9 -0
- package/ds-form-date-time-picker/partial-date-open-focus/DateTimePicker.partial-date-open-focus.func.spec.js +45 -0
- package/ds-form-native-select/NativeSelect.axe-core.func.spec.js +39 -0
- package/ds-form-native-select/NativeSelect.visual.spec.js +33 -0
- package/ds-form-native-select/NativeSelectCO.js +6 -0
- package/ds-form-native-select/option-selection/NativeSelect.option-selection.func.spec.js +25 -0
- package/ds-form-toggle/DSToggle.func.spec.js +20 -23
- package/ds-form-toggle/DSToggleCO.js +11 -2
- package/ds-global-header/GlobalHeader.announcements.func.spec.js +27 -0
- package/ds-global-header/GlobalHeader.axe-core.func.spec.js +15 -15
- package/ds-global-header/GlobalHeader.func.spec.js +70 -1
- package/ds-global-header/GlobalHeaderCO.js +120 -2
- package/ds-global-header/app-picker-passthrough/GlobalHeader.app-picker-passthrough.func.spec.js +113 -0
- package/ds-global-header/popup-menu-focus/GlobalHeader.popup-menu-focus.func.spec.js +63 -0
- package/ds-global-header/popup-menu-slots/GlobalHeader.popup-menu-slots.func.spec.js +70 -0
- package/ds-global-header/search-toggle-slots/GlobalHeader.search-toggle-slots.func.spec.js +118 -0
- package/ds-global-header/toolbar-item-attributes/GlobalHeader.toolbar-item-attributes.func.spec.js +53 -0
- package/ds-grid/DSGridCO.js +20 -0
- package/ds-grid/layout-mode/DSGrid.layout-mode.func.spec.js +51 -0
- package/ds-grid/layout-mode/DSGrid.layout-mode.visual.spec.js +22 -0
- package/ds-hooks/DSHook.UseFontSizeMedia.visual.spec.js +5 -2
- package/ds-hooks/DSHook.usetree.func.spec.js +3 -2
- package/ds-hooks/DSHookCO.js +56 -23
- package/ds-hooks/useFocusStack/DSHook.useFocusStack.func.spec.js +83 -0
- package/ds-hooks/useFocusTrap/UseFocusTrapCO.js +2 -0
- package/ds-hooks/useFocusTrap/UseFocusTrapToggle.func.spec.js +48 -0
- package/ds-hooks/useMask/Number/UseNumberMask.axe-core.func.spec.js +48 -0
- package/ds-menu-button/DSMenuButtonCO.js +23 -0
- package/ds-menu-button/slots/DSMenuButton.slots.axe-core.func.spec.js +28 -0
- package/ds-menu-button/slots/DSMenuButton.slots.func.spec.js +59 -0
- package/ds-menu-button/slots/DSMenuButton.slots.visual.spec.js +26 -0
- package/ds-modal-slide/ModalSlideCO.js +7 -0
- package/ds-modal-slide/custom-header/ModalSlide.customHeader.focusRing.visual.spec.js +2 -1
- package/ds-modal-slide/heading-level/ModalSlide.headingLevel.axe-core.func.spec.js +25 -0
- package/ds-modal-slide/heading-level/ModalSlide.headingLevel.func.spec.js +25 -0
- package/ds-modal-slide/slots/ModalSlide.slots.func.spec.js +18 -0
- package/ds-notification-badge/DSNotificationBadge.visual.spec.js +17 -20
- package/ds-page-layout/PageLayoutCO.js +4 -4
- package/ds-pills-v2/DSPillsV2CO.js +12 -0
- package/ds-pills-v2/apply-aria-disabled/DSPills.applyAriaDisabled.func.spec.js +53 -0
- package/ds-pills-v2/apply-aria-disabled/DSPills.applyAriaDisabled.visual.spec.js +26 -0
- package/ds-pills-v2/disabled/DSPills.disabled.func.spec.js +53 -0
- package/ds-pills-v2/disabled/DSPills.disabled.visual.spec.js +33 -0
- package/ds-progress-indicator/DSProgressIndicator.axe-core.func.spec.js +2 -0
- package/ds-progress-indicator/DSProgressIndicatorCO.js +1 -1
- package/ds-query-builder/DSQueryBuilder.visual.spec.js +6 -6
- package/ds-shuttle-v2/DSShuttleV2CO.js +15 -1
- package/ds-shuttle-v2/breadcrumb-a11y/DSShuttleV2.breadcrumb-a11y.func.spec.js +43 -0
- package/ds-shuttle-v2/explicit-selection-ui/DSShuttleV2.explicit-selection-ui.func.spec.js +37 -0
- package/ds-shuttle-v2/explicit-selection-ui/DSShuttleV2.explicit-selection-ui.visual.spec.js +30 -0
- package/ds-shuttle-v2/extra/DSShuttleV2.extra.visual.spec.js +8 -3
- package/ds-shuttle-v2/items/DSShuttleV2.items.func.spec.js +4 -2
- package/ds-shuttle-v2/skipped/DSShuttleV2.extra.axe-core.skipped.js +1 -1
- package/ds-shuttle-v2/skipped/DSShuttleV2.filter.axe-core.skipped.js +1 -1
- package/ds-shuttle-v2/skipped/DSShuttleV2.globalcheckbox.axe-core.skipped.js +1 -1
- package/ds-shuttle-v2/skipped/DSShuttleV2.items.axe-core.skipped.js +3 -3
- package/ds-shuttle-v2/skipped/DSShuttleV2.skipped.js +5 -5
- package/ds-slider-v2/DSSliderV2.func.spec.js +36 -25
- package/ds-slider-v2/DSSliderV2CO.js +10 -0
- package/ds-slider-v2/min-range/DSSliderV2.min-range.func.spec.js +69 -0
- package/ds-tab-button/DSTabButton.func.spec.js +1 -1
- package/ds-tabs/DSTabsCO.js +4 -0
- package/ds-tabs/notification-badge/DSTabs.notification-badge.axe-core.func.spec.js +28 -0
- package/ds-tabs/notification-badge/DSTabs.notification-badge.func.spec.js +51 -0
- package/ds-tooltip-v3/DSTooltipV3CO.js +21 -0
- package/ds-tooltip-v3/aria-tooltip-pattern/DSTooltipV3.aria-tooltip-pattern.axe-core.func.spec.js +23 -0
- package/ds-tooltip-v3/aria-tooltip-pattern/DSTooltipV3.aria-tooltip-pattern.func.spec.js +29 -0
- package/ds-tooltip-v3/dialog/DSTooltipV3.dialog.func.spec.js +45 -0
- package/ds-tooltip-v3/dialog/DSTooltipV3.dialog.visual.spec.js +29 -0
- package/ds-treeview/DSTreeViewCO.js +23 -0
- package/ds-treeview/dragAndDrop/TreeView-dnd_keyboard.func.spec.js +96 -0
- package/ds-typography/DSTypographyCO.js +10 -0
- package/ds-typography/theme-font/DSTypography.theme-font.func.spec.js +30 -0
- package/package.json +150 -153
- package/paths.js +16 -6
- package/ds-card-v3/disabled/DSCardV3.disabled.visual.spec.js +0 -17
- package/ds-chat-tile/TileCO.js +0 -35
- package/ds-hooks/DSHook.func.spec.js +0 -60
- package/ds-hooks/useFocusStack/DSHook.useFocusStack.skipped.js +0 -57
- package/ds-treeview/dragAndDrop/TreeView-dnd_mouse.func.spec.js +0 -61
|
@@ -0,0 +1,28 @@
|
|
|
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-18801 - DSCardV3:: action button card default and focus states - Visual', () => {
|
|
6
|
+
before('loading page', async () => {
|
|
7
|
+
const errorOnGo = await DSCardV3CO.actionURL.go();
|
|
8
|
+
if (errorOnGo) throw errorOnGo;
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('01: should display the card with a single action button in the header', async () => {
|
|
12
|
+
const card = await DSCardV3CO.getCardContainer();
|
|
13
|
+
await card.waitForDisplayed();
|
|
14
|
+
|
|
15
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('02: should display the action button with its focus ring - [TAB]', async () => {
|
|
20
|
+
await browser.keys(Key.Tab);
|
|
21
|
+
const deleteAction = await DSCardV3CO.getButtonByIndex(0);
|
|
22
|
+
await expect(deleteAction).toBeFocused();
|
|
23
|
+
|
|
24
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
25
|
+
await expect(snapshot).toEqual(0);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DSCardV3CO from '../DSCardV3CO';
|
|
3
|
+
import { axeCoreCheck } from '../../helpers';
|
|
4
|
+
|
|
5
|
+
// axe-core coverage for the PUI-17889 accessibility fix on the CardV3 Drag and Drop example.
|
|
6
|
+
if (
|
|
7
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
8
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
9
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
10
|
+
browser.capabilities.browserName === 'Chrome'
|
|
11
|
+
) {
|
|
12
|
+
describe('PUI-18732 - DSCardV3:: Drag and Drop accessibility - axe-core', () => {
|
|
13
|
+
beforeEach('loading page', async () => {
|
|
14
|
+
const errorOnGo = await DSCardV3CO.dragAndDropURL.go();
|
|
15
|
+
if (errorOnGo) throw errorOnGo;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('01: should pass axe-core in the idle (resting) state', async () => {
|
|
19
|
+
const result = await axeCoreCheck();
|
|
20
|
+
await expect(result).toHaveLength(0);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('02: should pass axe-core while an item is being dragged and cancelled - [TAB][ENTER][ESC]', async () => {
|
|
24
|
+
await browser.keys(Key.Tab);
|
|
25
|
+
const handle = await DSCardV3CO.getCardHandlerByIndex(0);
|
|
26
|
+
await expect(handle).toBeFocused();
|
|
27
|
+
await browser.keys(Key.Return);
|
|
28
|
+
await browser.keys(Key.Escape);
|
|
29
|
+
const result = await axeCoreCheck();
|
|
30
|
+
await expect(result).toHaveLength(0);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('03: should pass axe-core after an item has been dropped - [TAB][ENTER][ARROWDOWN][ENTER]', async () => {
|
|
34
|
+
await browser.keys(Key.Tab);
|
|
35
|
+
await browser.keys(Key.Return);
|
|
36
|
+
await browser.keys(Key.ArrowDown);
|
|
37
|
+
await browser.keys(Key.Return);
|
|
38
|
+
const result = await axeCoreCheck();
|
|
39
|
+
await expect(result).toHaveLength(0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSCardV3CO from '../DSCardV3CO';
|
|
4
|
+
|
|
5
|
+
// Functional coverage - no interaction for the PUI-17889 accessibility fix on the CardV3 Drag and Drop example.
|
|
6
|
+
if (
|
|
7
|
+
!browser.capabilities['ice:options'].isPhone &&
|
|
8
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
9
|
+
(browser.capabilities.browserName === 'Chrome' || browser.capabilities.browserName === 'chrome')
|
|
10
|
+
) {
|
|
11
|
+
describe('PUI-18685 - DSCardV3:: Drag and Drop accessibility - Func', () => {
|
|
12
|
+
before('loading page', async () => {
|
|
13
|
+
const errorOnGo = await DSCardV3CO.dragAndDropURL.go();
|
|
14
|
+
if (errorOnGo) throw errorOnGo;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('01: sortable containers are exposed as lists with an accessible name', async () => {
|
|
18
|
+
const lists = await DSCardV3CO.getDnDLists();
|
|
19
|
+
await expect(lists).toHaveLength(2);
|
|
20
|
+
const [backlog, inProgress] = lists;
|
|
21
|
+
await expect(backlog).toHaveAttribute('aria-labelledby', 'dnd-heading-container1');
|
|
22
|
+
await expect(inProgress).toHaveAttribute('aria-labelledby', 'dnd-heading-container2');
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('02: list accessible-name targets exist and expose readable headings', async () => {
|
|
26
|
+
const backlogHeading = await DSCardV3CO.getElementById('dnd-heading-container1');
|
|
27
|
+
const inProgressHeading = await DSCardV3CO.getElementById('dnd-heading-container2');
|
|
28
|
+
await expect(backlogHeading).toBeExisting();
|
|
29
|
+
await expect(inProgressHeading).toBeExisting();
|
|
30
|
+
await expect(backlogHeading).toHaveText('Backlog');
|
|
31
|
+
await expect(inProgressHeading).toHaveText('In Progress');
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('03: every card is programmatically exposed as a list item', async () => {
|
|
35
|
+
const listItems = await DSCardV3CO.getDnDListItems();
|
|
36
|
+
await expect(listItems).toHaveLength(12);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('04: drag handle exposes aria-roledescription="sortable"', async () => {
|
|
40
|
+
const handle = await DSCardV3CO.getCardHandlerByIndex(0);
|
|
41
|
+
await expect(handle).toHaveAttribute('aria-roledescription', 'sortable');
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('05: drag handle references existing, non-empty drag instructions', async () => {
|
|
45
|
+
const handle = await DSCardV3CO.getCardHandlerByIndex(0);
|
|
46
|
+
const describedBy = await handle.getAttribute('aria-describedby');
|
|
47
|
+
expect(describedBy).toContain('DndDescribedBy');
|
|
48
|
+
|
|
49
|
+
const instructions = await DSCardV3CO.getDnDInstructions();
|
|
50
|
+
await expect(instructions).toBeExisting();
|
|
51
|
+
const instructionText = await instructions.getProperty('textContent');
|
|
52
|
+
expect(instructionText).toBeTruthy();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('06: a live region is present to announce drag operations', async () => {
|
|
56
|
+
const liveRegion = await DSCardV3CO.getDnDLiveRegion();
|
|
57
|
+
await liveRegion.waitForExist();
|
|
58
|
+
await expect(liveRegion).toHaveAttribute('role', 'status');
|
|
59
|
+
await expect(liveRegion).toHaveAttribute('aria-live', 'assertive');
|
|
60
|
+
await expect(liveRegion).toHaveAttribute('aria-atomic', 'true');
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Functional coverage for the PUI-17889 accessibility fix on the CardV3 Drag and Drop example.
|
|
65
|
+
describe('PUI-18730 - DSCardV3:: Drag and Drop keyboard announcements - Func', () => {
|
|
66
|
+
beforeEach('loading page', async () => {
|
|
67
|
+
const errorOnGo = await DSCardV3CO.dragAndDropURL.go();
|
|
68
|
+
if (errorOnGo) throw errorOnGo;
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('01: picking up an item sets aria-pressed - [TAB][ENTER]', async () => {
|
|
72
|
+
await browser.keys(Key.Tab);
|
|
73
|
+
const handle = await DSCardV3CO.getCardHandlerByIndex(0);
|
|
74
|
+
await expect(handle).toBeFocused();
|
|
75
|
+
await browser.keys(Key.Return);
|
|
76
|
+
await expect(handle).toHaveAttribute('aria-pressed', 'true');
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('02: moving an item announces its new position - [TAB][ENTER][ARROWDOWN]', async () => {
|
|
80
|
+
await browser.keys(Key.Tab);
|
|
81
|
+
const handle = await DSCardV3CO.getCardHandlerByIndex(0);
|
|
82
|
+
await expect(handle).toBeFocused();
|
|
83
|
+
await browser.keys(Key.Space);
|
|
84
|
+
await expect(handle).toHaveAttribute('aria-pressed', 'true');
|
|
85
|
+
await browser.keys(Key.ArrowDown);
|
|
86
|
+
const liveRegion = await DSCardV3CO.getDnDLiveRegion();
|
|
87
|
+
await browser.waitUntil(
|
|
88
|
+
async () => (await liveRegion.getProperty('textContent')).includes('was moved to position'),
|
|
89
|
+
{ timeoutMsg: 'Expected the live region to announce the new position' },
|
|
90
|
+
);
|
|
91
|
+
const announcement = await liveRegion.getProperty('textContent');
|
|
92
|
+
expect(announcement).toContain('was moved to position');
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('03: dropping an item announces the resulting position - [TAB][ENTER][ARROWDOWN][ENTER]', async () => {
|
|
96
|
+
await browser.keys(Key.Tab);
|
|
97
|
+
const handle = await DSCardV3CO.getCardHandlerByIndex(0);
|
|
98
|
+
await expect(handle).toBeFocused();
|
|
99
|
+
await browser.keys(Key.Space);
|
|
100
|
+
await expect(handle).toHaveAttribute('aria-pressed', 'true');
|
|
101
|
+
await browser.keys(Key.ArrowDown);
|
|
102
|
+
const liveRegion = await DSCardV3CO.getDnDLiveRegion();
|
|
103
|
+
await browser.keys(Key.Space);
|
|
104
|
+
await browser.waitUntil(
|
|
105
|
+
async () => (await liveRegion.getProperty('textContent')).includes('was dropped at position'),
|
|
106
|
+
{ timeoutMsg: 'Expected the live region to announce the drop' },
|
|
107
|
+
);
|
|
108
|
+
const announcement = await liveRegion.getProperty('textContent');
|
|
109
|
+
expect(announcement).toContain('was dropped at position');
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('04: cancelling a drag is announced and clears aria-pressed - [TAB][ENTER][ESCAPE]', async () => {
|
|
113
|
+
await browser.keys(Key.Tab);
|
|
114
|
+
const handle = await DSCardV3CO.getCardHandlerByIndex(0);
|
|
115
|
+
await expect(handle).toBeFocused();
|
|
116
|
+
await browser.keys(Key.Return);
|
|
117
|
+
await expect(handle).toHaveAttribute('aria-pressed', 'true');
|
|
118
|
+
await browser.keys(Key.Escape);
|
|
119
|
+
const liveRegion = await DSCardV3CO.getDnDLiveRegion();
|
|
120
|
+
await browser.waitUntil(
|
|
121
|
+
async () => (await liveRegion.getProperty('textContent')).includes('Dragging was cancelled'),
|
|
122
|
+
{ timeoutMsg: 'Expected the live region to announce the cancellation' },
|
|
123
|
+
);
|
|
124
|
+
const announcement = await liveRegion.getProperty('textContent');
|
|
125
|
+
expect(announcement).toContain('Dragging was cancelled');
|
|
126
|
+
await expect(handle).not.toHaveAttribute('aria-pressed', 'true');
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
+
}
|