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,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-18720 - CardV3:: Variant Disabled - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSCardV3CO.variantDisabledURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('01: should display card disabled and pass axecore scan', async () => {
|
|
16
|
+
const firstItem = await DSCardV3CO.getCardHeader();
|
|
17
|
+
await firstItem.waitForDisplayed();
|
|
18
|
+
const result = await axeCoreCheck();
|
|
19
|
+
await expect(result).toHaveLength(0);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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-18810 - DSCardV3:: variant disabled cards non-interactive structure - Func', () => {
|
|
10
|
+
before('loading page', async () => {
|
|
11
|
+
const errorOnGo = await DSCardV3CO.variantDisabledURL.go();
|
|
12
|
+
if (errorOnGo) throw errorOnGo;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('01: should render both disabled cards as divs without the HTML disabled attribute', async () => {
|
|
16
|
+
const disabledCard = await DSCardV3CO.getCardContainerByIndex(0);
|
|
17
|
+
await disabledCard.waitForDisplayed();
|
|
18
|
+
expect((await disabledCard.getTagName()).toLowerCase()).toBe('div');
|
|
19
|
+
expect(await disabledCard.getAttribute('disabled')).toBeNull();
|
|
20
|
+
|
|
21
|
+
const accentedDisabledCard = await DSCardV3CO.getCardContainerByIndex(1);
|
|
22
|
+
await expect(accentedDisabledCard).toBeDisplayed();
|
|
23
|
+
expect((await accentedDisabledCard.getTagName()).toLowerCase()).toBe('div');
|
|
24
|
+
expect(await accentedDisabledCard.getAttribute('disabled')).toBeNull();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('02: should keep both cards visible to assistive technology', async () => {
|
|
28
|
+
const disabledCard = await DSCardV3CO.getCardContainerByIndex(0);
|
|
29
|
+
expect(await disabledCard.getAttribute('aria-hidden')).toBeNull();
|
|
30
|
+
|
|
31
|
+
const accentedDisabledCard = await DSCardV3CO.getCardContainerByIndex(1);
|
|
32
|
+
expect(await accentedDisabledCard.getAttribute('aria-hidden')).toBeNull();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('03: should expose the title and description of both cards', async () => {
|
|
36
|
+
const firstHeading = await DSCardV3CO.getHByLevelAndIndex(3, 0);
|
|
37
|
+
await expect(firstHeading).toBeExisting();
|
|
38
|
+
await expect(firstHeading).toHaveText('Disabled Card');
|
|
39
|
+
|
|
40
|
+
const firstDescription = await DSCardV3CO.getElement(1);
|
|
41
|
+
await expect(firstDescription).toHaveText('Description card');
|
|
42
|
+
|
|
43
|
+
const secondHeading = await DSCardV3CO.getHByLevelAndIndex(3, 1);
|
|
44
|
+
await expect(secondHeading).toBeExisting();
|
|
45
|
+
await expect(secondHeading).toHaveText('Disabled Card');
|
|
46
|
+
|
|
47
|
+
const secondDescription = await DSCardV3CO.getElement(3);
|
|
48
|
+
await expect(secondDescription).toHaveText('Description card');
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('04: should contain no focusable controls in either card', async () => {
|
|
52
|
+
const disabledCard = await DSCardV3CO.getCardContainerByIndex(0);
|
|
53
|
+
const firstCardControls = await disabledCard.$$('button, a[href], input, select, textarea, [tabindex]');
|
|
54
|
+
expect(firstCardControls).toHaveLength(0);
|
|
55
|
+
|
|
56
|
+
const accentedDisabledCard = await DSCardV3CO.getCardContainerByIndex(1);
|
|
57
|
+
const secondCardControls = await accentedDisabledCard.$$('button, a[href], input, select, textarea, [tabindex]');
|
|
58
|
+
expect(secondCardControls).toHaveLength(0);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
@@ -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-18811 - DSCardV3:: variant disabled and accented-disabled render - Visual', () => {
|
|
5
|
+
before('loading page', async () => {
|
|
6
|
+
const errorOnGo = await DSCardV3CO.variantDisabledURL.go();
|
|
7
|
+
if (errorOnGo) throw errorOnGo;
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('01: should display the disabled and accented-disabled cards', async () => {
|
|
11
|
+
const disabledCard = await DSCardV3CO.getCardContainerByIndex(0);
|
|
12
|
+
await disabledCard.waitForDisplayed();
|
|
13
|
+
const accentedDisabledCard = await DSCardV3CO.getCardContainerByIndex(1);
|
|
14
|
+
await expect(accentedDisabledCard).toBeDisplayed();
|
|
15
|
+
|
|
16
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
17
|
+
await expect(snapshot).toEqual(0);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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-17888 (disabled attribute on non-interactive card)
|
|
10
|
+
describe('PUI-18598 - DSCardV3:: disabled variant has no HTML disabled attribute - Func', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSCardV3CO.variantDisabledURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('01: disabled and accented-disabled cards do not have the HTML disabled attribute', async () => {
|
|
17
|
+
const card1 = await DSCardV3CO.getCardContainerByIndex(0);
|
|
18
|
+
const card2 = await DSCardV3CO.getCardContainerByIndex(1);
|
|
19
|
+
const disabledAttr1 = await card1.getAttribute('disabled');
|
|
20
|
+
const disabledAttr2 = await card2.getAttribute('disabled');
|
|
21
|
+
expect(disabledAttr1).toBeNull();
|
|
22
|
+
expect(disabledAttr2).toBeNull();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-plusplus */
|
|
2
2
|
/* eslint-disable max-lines */
|
|
3
|
-
import { ChatCO, BubbleCO, TileCO } from './components';
|
|
3
|
+
import { ChatCO, CardCO, BubbleCO, TileCO } from './components';
|
|
4
4
|
import { axeCoreCheck } from '../helpers';
|
|
5
5
|
|
|
6
6
|
if (
|
|
@@ -41,7 +41,7 @@ if (
|
|
|
41
41
|
|
|
42
42
|
describe('PUI-12504 - Chat, Chat Card -AxeCore', () => {
|
|
43
43
|
before('loading page', async () => {
|
|
44
|
-
const errorOnGo = await
|
|
44
|
+
const errorOnGo = await CardCO.cardBasicURL.go();
|
|
45
45
|
if (errorOnGo) throw errorOnGo;
|
|
46
46
|
});
|
|
47
47
|
it('01: should have a chat card and pass axe-core scan', async () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-plusplus */
|
|
2
2
|
/* eslint-disable max-lines */
|
|
3
3
|
import { Key } from 'webdriverio';
|
|
4
|
-
import { ChatCO, BubbleCO, FloatingButtonCO, ComposerCO, TileCO } from './components';
|
|
4
|
+
import { ChatCO, CardCO, BubbleCO, FloatingButtonCO, ComposerCO, TileCO } from './components';
|
|
5
5
|
import { type } from '../helpers';
|
|
6
6
|
import DSBannerCO from '../ds-banner/DSBannerCO';
|
|
7
7
|
|
|
@@ -76,7 +76,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
76
76
|
|
|
77
77
|
describe('PUI-6712 - Chat, Chat Card, Visual Tests', () => {
|
|
78
78
|
before('loading page', async () => {
|
|
79
|
-
const errorOnGo = await
|
|
79
|
+
const errorOnGo = await CardCO.cardBasicURL.go();
|
|
80
80
|
if (errorOnGo) throw errorOnGo;
|
|
81
81
|
});
|
|
82
82
|
it('should display the chat card properly', async () => {
|
|
@@ -245,7 +245,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
245
245
|
|
|
246
246
|
describe('PUI-9222 - Chat, Long Words, Visual Tests', () => {
|
|
247
247
|
before('loading page', async () => {
|
|
248
|
-
const errorOnGo = await ChatCO.
|
|
248
|
+
const errorOnGo = await ChatCO.basicTestURL.go();
|
|
249
249
|
if (errorOnGo) throw errorOnGo;
|
|
250
250
|
});
|
|
251
251
|
it('should display long words breaking at composer', async () => {
|
|
@@ -268,7 +268,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
268
268
|
});
|
|
269
269
|
});
|
|
270
270
|
|
|
271
|
-
describe('PUI-9333 - Chat, Scroll on send and not on enter
|
|
271
|
+
describe('PUI-9333 - Chat, Scroll on send and not on enter - Visual Tests', () => {
|
|
272
272
|
before('loading page', async () => {
|
|
273
273
|
const errorOnGo = await ChatCO.sidePanelIntegrationURL.go();
|
|
274
274
|
if (errorOnGo) throw errorOnGo;
|
package/ds-chat/DSChatCO.js
CHANGED
|
@@ -1,51 +1,49 @@
|
|
|
1
1
|
/* eslint-disable import/no-relative-packages */
|
|
2
|
-
import {
|
|
2
|
+
import { PATH_E2E_CHAT } from '../paths';
|
|
3
3
|
import { PageObject, Urlbuilder, getElementByIndex } from '../helpers';
|
|
4
4
|
|
|
5
5
|
export default class DSChatCO extends PageObject {
|
|
6
6
|
static TEST_STR = 'this is a test string';
|
|
7
7
|
|
|
8
|
-
static systemMessageURL = new Urlbuilder(
|
|
8
|
+
static systemMessageURL = new Urlbuilder(PATH_E2E_CHAT, 'chat-system-message-test');
|
|
9
9
|
|
|
10
|
-
static messageDelimiterURL = new Urlbuilder(
|
|
10
|
+
static messageDelimiterURL = new Urlbuilder(PATH_E2E_CHAT, 'chat-message-delimiter');
|
|
11
11
|
|
|
12
|
-
static containerURL = new Urlbuilder(
|
|
12
|
+
static containerURL = new Urlbuilder(PATH_E2E_CHAT, 'container');
|
|
13
13
|
|
|
14
|
-
static loadMoreURL = new Urlbuilder(
|
|
14
|
+
static loadMoreURL = new Urlbuilder(PATH_E2E_CHAT, 'container-load-more-test');
|
|
15
15
|
|
|
16
|
-
static loadingURL = new Urlbuilder(
|
|
16
|
+
static loadingURL = new Urlbuilder(PATH_E2E_CHAT, 'loading-container-test');
|
|
17
17
|
|
|
18
|
-
static loadingErrorURL = new Urlbuilder(
|
|
18
|
+
static loadingErrorURL = new Urlbuilder(PATH_E2E_CHAT, 'loading-error-test');
|
|
19
19
|
|
|
20
|
-
static floatingExampleURL = new Urlbuilder(
|
|
20
|
+
static floatingExampleURL = new Urlbuilder(PATH_E2E_CHAT, 'floating-example-test');
|
|
21
21
|
|
|
22
|
-
static focusCasesURL = new Urlbuilder(
|
|
22
|
+
static focusCasesURL = new Urlbuilder(PATH_E2E_CHAT, 'container-focus-cases-test');
|
|
23
23
|
|
|
24
|
-
static mobileContainerURL = new Urlbuilder(
|
|
24
|
+
static mobileContainerURL = new Urlbuilder(PATH_E2E_CHAT, 'mobile-container-test');
|
|
25
25
|
|
|
26
26
|
static sidePanelIntegrationURL = new Urlbuilder(PATH_E2E_CHAT, 'side-panel-integration-test');
|
|
27
27
|
|
|
28
|
-
static
|
|
28
|
+
static tooltipPosition = new Urlbuilder(PATH_E2E_CHAT, 'tooltip-position-test');
|
|
29
29
|
|
|
30
|
-
static
|
|
30
|
+
static focuseableBanners = new Urlbuilder(PATH_E2E_CHAT, 'focus-on-banner-test');
|
|
31
31
|
|
|
32
|
-
static
|
|
32
|
+
static newMessages = new Urlbuilder(PATH_E2E_CHAT, 'container-new-messages-test');
|
|
33
33
|
|
|
34
|
-
static
|
|
34
|
+
static nonDeliveredURL = new Urlbuilder(PATH_E2E_CHAT, 'non-delivered-messages-test');
|
|
35
35
|
|
|
36
|
-
static
|
|
36
|
+
static nonGridInfluencerURL = new Urlbuilder(PATH_E2E_CHAT, 'non-grid-influencer-integration-test');
|
|
37
37
|
|
|
38
|
-
static
|
|
38
|
+
static customBanner = new Urlbuilder(PATH_E2E_CHAT, 'custom-banner-test');
|
|
39
39
|
|
|
40
|
-
static
|
|
41
|
-
|
|
42
|
-
static emptyState = new Urlbuilder(PATH_CHAT_EXAMPLES, 'empty-state');
|
|
40
|
+
static emptyState = new Urlbuilder(PATH_E2E_CHAT, 'empty-state-test');
|
|
43
41
|
|
|
44
42
|
static globalLineHeight = new Urlbuilder(PATH_E2E_CHAT, 'global-line-height');
|
|
45
43
|
|
|
46
44
|
static unreadMessagesBanner = new Urlbuilder(PATH_E2E_CHAT, 'unread-messages-banner');
|
|
47
45
|
|
|
48
|
-
static
|
|
46
|
+
static basicTestURL = new Urlbuilder(PATH_E2E_CHAT, 'basic-test');
|
|
49
47
|
|
|
50
48
|
// selector
|
|
51
49
|
static async isTyping() {
|
|
@@ -72,10 +70,6 @@ export default class DSChatCO extends PageObject {
|
|
|
72
70
|
return $('[data-testid="chat-thread-container"]');
|
|
73
71
|
}
|
|
74
72
|
|
|
75
|
-
static async getCards() {
|
|
76
|
-
return $$('[data-testid="chat-card-wrapper"]');
|
|
77
|
-
}
|
|
78
|
-
|
|
79
73
|
static async getSidebarFooterButton() {
|
|
80
74
|
return $('[data-testid="sidebar-button-sidebar_footer"]');
|
|
81
75
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Tests for PUI-17908 (ds-chat-bubble slots implementation)
|
|
2
|
+
import { BubbleCO } from '../../components';
|
|
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-18460 - DSChatBubble:: axe-core - Axe-Core', () => {
|
|
12
|
+
before(async () => {
|
|
13
|
+
const errorOnGo = await BubbleCO.bubbleSlotsURL.go();
|
|
14
|
+
if (errorOnGo) throw errorOnGo;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('01: should pass axe-core on sender and recipient bubble variants', async () => {
|
|
18
|
+
const senderWrapper = await BubbleCO.getWrapperSlot();
|
|
19
|
+
await senderWrapper.waitForDisplayed();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Tests for PUI-17908 (ds-chat-bubble slots implementation)
|
|
2
|
+
import { BubbleCO } from '../../components';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
7
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
8
|
+
browser.capabilities.browserName === 'Chrome'
|
|
9
|
+
) {
|
|
10
|
+
describe('PUI-18459 - DSChatBubble:: slot wiring - Func', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await BubbleCO.bubbleSlotsURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('01: should have custom aria-* for each slot', async () => {
|
|
17
|
+
await (await BubbleCO.getWrapperSlot()).waitForDisplayed();
|
|
18
|
+
await expect(await BubbleCO.getWrapperSlot()).toHaveAttribute('aria-label', 'wrapper aria');
|
|
19
|
+
await expect(await BubbleCO.getColoredBubbleSlot()).toHaveAttribute('aria-label', 'colored-bubble aria');
|
|
20
|
+
await expect(await BubbleCO.getHeaderSlot()).toHaveAttribute('aria-label', 'header aria');
|
|
21
|
+
await expect(await BubbleCO.getHeaderLeftSlot()).toHaveAttribute('aria-label', 'header-left aria');
|
|
22
|
+
await expect(await BubbleCO.getHeaderRightSlot()).toHaveAttribute('aria-label', 'header-right aria');
|
|
23
|
+
await expect(await BubbleCO.getBodyWrapperSlot()).toHaveAttribute('aria-label', 'body-wrapper aria');
|
|
24
|
+
await expect(await BubbleCO.getErrorMessageSlot()).toHaveAttribute('aria-label', 'error-message aria');
|
|
25
|
+
await expect(await BubbleCO.getHelpMessageSlot()).toHaveAttribute('aria-label', 'help-message aria');
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('02: should have custom data-testid for each slot', async () => {
|
|
29
|
+
await expect(await BubbleCO.getWrapperSlot()).toHaveAttribute('data-testid', 'wrapper data');
|
|
30
|
+
await expect(await BubbleCO.getColoredBubbleSlot()).toHaveAttribute('data-testid', 'colored-bubble data');
|
|
31
|
+
await expect(await BubbleCO.getHeaderSlot()).toHaveAttribute('data-testid', 'header data');
|
|
32
|
+
await expect(await BubbleCO.getHeaderLeftSlot()).toHaveAttribute('data-testid', 'header-left data');
|
|
33
|
+
await expect(await BubbleCO.getHeaderRightSlot()).toHaveAttribute('data-testid', 'header-right data');
|
|
34
|
+
await expect(await BubbleCO.getBodyWrapperSlot()).toHaveAttribute('data-testid', 'body-wrapper data');
|
|
35
|
+
await expect(await BubbleCO.getErrorMessageSlot()).toHaveAttribute('data-testid', 'error-message data');
|
|
36
|
+
await expect(await BubbleCO.getHelpMessageSlot()).toHaveAttribute('data-testid', 'help-message data');
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('03: should have custom lang for each slot', async () => {
|
|
40
|
+
await expect(await BubbleCO.getWrapperSlot()).toHaveAttribute('lang', 'pt');
|
|
41
|
+
await expect(await BubbleCO.getHeaderSlot()).toHaveAttribute('lang', 'de');
|
|
42
|
+
await expect(await BubbleCO.getHeaderLeftSlot()).toHaveAttribute('lang', 'en');
|
|
43
|
+
await expect(await BubbleCO.getHeaderRightSlot()).toHaveAttribute('lang', 'fr');
|
|
44
|
+
await expect(await BubbleCO.getBodyWrapperSlot()).toHaveAttribute('lang', 'it');
|
|
45
|
+
await expect(await BubbleCO.getErrorMessageSlot()).toHaveAttribute('lang', 'sv');
|
|
46
|
+
await expect(await BubbleCO.getHelpMessageSlot()).toHaveAttribute('lang', 'ja');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Tests for PUI-17908 (ds-chat-bubble slots implementation)
|
|
2
|
+
import { BubbleCO } from '../../components';
|
|
3
|
+
|
|
4
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
5
|
+
describe('PUI-18458 - DSChatBubble:: bubble slot variants - Visual', () => {
|
|
6
|
+
before(async () => {
|
|
7
|
+
const errorOnGo = await BubbleCO.bubbleSlotsURL.go();
|
|
8
|
+
if (errorOnGo) throw errorOnGo;
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('01: should display sender and recipient bubble variants', async () => {
|
|
12
|
+
const senderWrapper = await BubbleCO.getWrapperSlot();
|
|
13
|
+
await senderWrapper.waitForDisplayed();
|
|
14
|
+
const snapshot = await browser.percyCheckScreenshot(BubbleCO.snapshotPath('bubble-slots-sender-recipient'));
|
|
15
|
+
await expect(snapshot).toEqual(0);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('02: should display bubble with errorMessage and helpMessage', async () => {
|
|
19
|
+
const errorBubble = await BubbleCO.getErrorMessageSlot();
|
|
20
|
+
await errorBubble.waitForDisplayed();
|
|
21
|
+
const snapshot = await browser.percyCheckScreenshot(BubbleCO.snapshotPath('bubble-slots-error-help'));
|
|
22
|
+
await expect(snapshot).toEqual(0);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Tests for PUI-17908 (ds-chat-card slots implementation)
|
|
2
|
+
import { CardCO } from '../../components';
|
|
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-18463 - DSChatCard:: axe-core - Axe-Core', () => {
|
|
12
|
+
before(async () => {
|
|
13
|
+
const errorOnGo = await CardCO.cardSlotsURL.go();
|
|
14
|
+
if (errorOnGo) throw errorOnGo;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('01: should pass axe-core on all card variants', async () => {
|
|
18
|
+
const titleCard = await CardCO.getRootSlot();
|
|
19
|
+
await titleCard.waitForDisplayed();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Tests for PUI-17908 (ds-chat-card slots implementation)
|
|
2
|
+
import { CardCO } from '../../components';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
7
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
8
|
+
browser.capabilities.browserName === 'Chrome'
|
|
9
|
+
) {
|
|
10
|
+
describe('PUI-18462 - DSChatCard:: slot wiring - Func', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await CardCO.cardSlotsURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('01: should have custom aria-* for each slot', async () => {
|
|
17
|
+
await (await CardCO.getRootSlot()).waitForDisplayed();
|
|
18
|
+
await expect(await CardCO.getRootSlot()).toHaveAttribute('aria-label', 'root aria');
|
|
19
|
+
await expect(await CardCO.getMainContentSlot()).toHaveAttribute('aria-label', 'main-content aria');
|
|
20
|
+
await expect(await CardCO.getTitleSlot()).toHaveAttribute('aria-label', 'title aria');
|
|
21
|
+
await expect(await CardCO.getContentSlot()).toHaveAttribute('aria-label', 'content aria');
|
|
22
|
+
await expect(await CardCO.getTimeSlot()).toHaveAttribute('aria-label', 'time aria');
|
|
23
|
+
await expect(await CardCO.getRightAddonSlot()).toHaveAttribute('aria-label', 'right-addon aria');
|
|
24
|
+
await expect(await CardCO.getTruncatedSpanSlot()).toHaveAttribute('aria-label', 'truncated-span aria');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('02: should have custom data-testid for each slot', async () => {
|
|
28
|
+
await expect(await CardCO.getRootSlot()).toHaveAttribute('data-testid', 'root data');
|
|
29
|
+
await expect(await CardCO.getMainContentSlot()).toHaveAttribute('data-testid', 'main-content data');
|
|
30
|
+
await expect(await CardCO.getTitleSlot()).toHaveAttribute('data-testid', 'title data');
|
|
31
|
+
await expect(await CardCO.getContentSlot()).toHaveAttribute('data-testid', 'content data');
|
|
32
|
+
await expect(await CardCO.getTimeSlot()).toHaveAttribute('data-testid', 'time data');
|
|
33
|
+
await expect(await CardCO.getRightAddonSlot()).toHaveAttribute('data-testid', 'right-addon data');
|
|
34
|
+
await expect(await CardCO.getTruncatedSpanSlot()).toHaveAttribute('data-testid', 'truncated-span data');
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('03: should have custom lang for each slot', async () => {
|
|
38
|
+
await expect(await CardCO.getRootSlot()).toHaveAttribute('lang', 'pt');
|
|
39
|
+
await expect(await CardCO.getMainContentSlot()).toHaveAttribute('lang', 'es');
|
|
40
|
+
await expect(await CardCO.getTitleSlot()).toHaveAttribute('lang', 'de');
|
|
41
|
+
await expect(await CardCO.getContentSlot()).toHaveAttribute('lang', 'en');
|
|
42
|
+
await expect(await CardCO.getTimeSlot()).toHaveAttribute('lang', 'fr');
|
|
43
|
+
await expect(await CardCO.getRightAddonSlot()).toHaveAttribute('lang', 'it');
|
|
44
|
+
await expect(await CardCO.getTruncatedSpanSlot()).toHaveAttribute('lang', 'nl');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Tests for PUI-17908 (ds-chat-card slots implementation)
|
|
2
|
+
import { CardCO } from '../../components';
|
|
3
|
+
|
|
4
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
5
|
+
describe('PUI-18461 - DSChatCard:: card slot variants - Visual', () => {
|
|
6
|
+
before(async () => {
|
|
7
|
+
const errorOnGo = await CardCO.cardSlotsURL.go();
|
|
8
|
+
if (errorOnGo) throw errorOnGo;
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('01: should display card with all slot props and style customization', async () => {
|
|
12
|
+
const root = await CardCO.getRootSlot();
|
|
13
|
+
await root.waitForDisplayed();
|
|
14
|
+
const snapshot = await browser.percyCheckScreenshot(CardCO.snapshotPath('card-slot-variants'));
|
|
15
|
+
await expect(snapshot).toEqual(0);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CardCO } from '../../components';
|
|
2
|
+
import { mouseOver } 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-18484 - DSChatCard:: truncated text - Func', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await CardCO.cardTruncatedURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('01: should render TruncatedSpan for each card with long content', async () => {
|
|
17
|
+
const span = await CardCO.getTruncatedSpan(0);
|
|
18
|
+
await span.waitForDisplayed();
|
|
19
|
+
await expect(span).toBeDisplayed();
|
|
20
|
+
await expect(await CardCO.getTruncatedSpan(1)).toBeDisplayed();
|
|
21
|
+
await expect(await CardCO.getTruncatedSpan(2)).toBeDisplayed();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('02: should show tooltip on hover when content overflows', async () => {
|
|
25
|
+
const span = await CardCO.getTruncatedSpan(0);
|
|
26
|
+
await mouseOver(span);
|
|
27
|
+
const tooltip = await CardCO.getTooltipContainer();
|
|
28
|
+
await tooltip.waitForDisplayed({ timeout: 3000 });
|
|
29
|
+
await expect(tooltip).toBeDisplayed();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CardCO } from '../../components';
|
|
2
|
+
|
|
3
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
4
|
+
describe('PUI-18483 - DSChatCard:: truncated text - Visual', () => {
|
|
5
|
+
before('loading page', async () => {
|
|
6
|
+
const errorOnGo = await CardCO.cardTruncatedURL.go();
|
|
7
|
+
if (errorOnGo) throw errorOnGo;
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('01: should display cards with truncated content at rest', async () => {
|
|
11
|
+
const span = await CardCO.getTruncatedSpan(0);
|
|
12
|
+
await span.waitForDisplayed();
|
|
13
|
+
const snapshot = await browser.percyCheckScreenshot(CardCO.snapshotPath('truncated-text'));
|
|
14
|
+
await expect(snapshot).toEqual(0);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('02: should display tooltip on hover over truncated content', async () => {
|
|
18
|
+
const span = await CardCO.getTruncatedSpan(0);
|
|
19
|
+
await span.moveTo();
|
|
20
|
+
const tooltip = await CardCO.getTooltipContainer();
|
|
21
|
+
await tooltip.waitForDisplayed({ timeout: 3000 });
|
|
22
|
+
const snapshot = await browser.percyCheckScreenshot(CardCO.snapshotPath('truncated-text-tooltip'));
|
|
23
|
+
await expect(snapshot).toEqual(0);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CardCO } from '../../components';
|
|
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-18486 - DSChatCard:: with notification badges - Axe-Core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await CardCO.cardWithNotificationBadgesURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('01: should pass axe-core with notification badge variants', async () => {
|
|
17
|
+
const cards = await CardCO.getCards();
|
|
18
|
+
await cards[0].waitForDisplayed();
|
|
19
|
+
const result = await axeCoreCheck();
|
|
20
|
+
expect(result.length).toBe(0);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
package/ds-chat/card/with-notification-badges/DSChatCard.with-notification-badges.visual.spec.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CardCO } from '../../components';
|
|
2
|
+
|
|
3
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
4
|
+
describe('PUI-18485 - DSChatCard:: with notification badges - Visual', () => {
|
|
5
|
+
before('loading page', async () => {
|
|
6
|
+
const errorOnGo = await CardCO.cardWithNotificationBadgesURL.go();
|
|
7
|
+
if (errorOnGo) throw errorOnGo;
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('01: should display cards with notification badges', async () => {
|
|
11
|
+
const cards = await CardCO.getCards();
|
|
12
|
+
await cards[0].waitForDisplayed();
|
|
13
|
+
const snapshot = await browser.percyCheckScreenshot(CardCO.snapshotPath('with-notification-badges'));
|
|
14
|
+
await expect(snapshot).toEqual(0);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { PATH_E2E_CHAT } from '../../paths';
|
|
1
|
+
import { PATH_E2E_CHAT, PATH_E2E_CHAT_BUBBLE } from '../../paths';
|
|
2
2
|
import { PageObject, Urlbuilder } from '../../helpers';
|
|
3
3
|
|
|
4
4
|
export default class BubbleCO extends PageObject {
|
|
5
|
-
static bubbleURL = new Urlbuilder(
|
|
5
|
+
static bubbleURL = new Urlbuilder(PATH_E2E_CHAT_BUBBLE, 'bubble-test');
|
|
6
6
|
|
|
7
|
-
static bubbleWrapping = new Urlbuilder(
|
|
7
|
+
static bubbleWrapping = new Urlbuilder(PATH_E2E_CHAT_BUBBLE, 'bubble-wrapping-test');
|
|
8
8
|
|
|
9
9
|
static systemMessageInContainerUCURL = new Urlbuilder(PATH_E2E_CHAT, 'system-message-in-container');
|
|
10
10
|
|
|
11
|
+
static bubbleSlotsURL = new Urlbuilder(PATH_E2E_CHAT_BUBBLE, 'slots-test');
|
|
12
|
+
|
|
11
13
|
// selectors
|
|
12
14
|
static async getErrorMessage(bubbleId) {
|
|
13
15
|
return $(`[data-testid="chat-bubble-error-message-${bubbleId}"]`);
|
|
@@ -56,6 +58,47 @@ export default class BubbleCO extends PageObject {
|
|
|
56
58
|
}, bubbleId);
|
|
57
59
|
}
|
|
58
60
|
|
|
61
|
+
static async getBubbleWrapper(bubbleId) {
|
|
62
|
+
return $(`[data-testid="ds-chat-bubble-${bubbleId}"]`);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Slot selectors (used by slots func spec — one bubble per story)
|
|
66
|
+
static async getWrapperSlot() {
|
|
67
|
+
return $('[data-dimsum-slot="dsBubbleWrapper"]');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static async getColoredBubbleSlot() {
|
|
71
|
+
return $('[data-dimsum-slot="dsBubbleColoredBubble"]');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static async getHeaderSlot() {
|
|
75
|
+
return $('[data-dimsum-slot="dsBubbleHeader"]');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static async getHeaderLeftSlot() {
|
|
79
|
+
return $('[data-dimsum-slot="dsBubbleHeaderLeft"]');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static async getHeaderRightSlot() {
|
|
83
|
+
return $('[data-dimsum-slot="dsBubbleHeaderRight"]');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static async getBodyWrapperSlot() {
|
|
87
|
+
return $('[data-dimsum-slot="dsBubbleBodyWrapper"]');
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static async getArrowSlot() {
|
|
91
|
+
return $('[data-dimsum-slot="dsBubbleArrow"]');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
static async getErrorMessageSlot() {
|
|
95
|
+
return $('[data-dimsum-slot="dsBubbleErrorMessage"]');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static async getHelpMessageSlot() {
|
|
99
|
+
return $('[data-dimsum-slot="dsBubbleHelpMessage"]');
|
|
100
|
+
}
|
|
101
|
+
|
|
59
102
|
// Snapshots
|
|
60
103
|
static snapshotPath(example = 'basic') {
|
|
61
104
|
return PageObject.getSnapshotPathBuilder('Bubble', example, 'ds-chat');
|