dimsum-e2e-tests 3.62.1 → 3.70.0-alpha.10
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 +2238 -286
- 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/DSComboboxCO.js +2 -2
- 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 +55 -2
- 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-inputgroup/DSControlledInputGroupCO.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 +189 -12
- 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 +59 -11
- 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-dialog/DSDialog.visual.spec.js +16 -31
- package/ds-dialog/DSDialogCO.js +58 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-critical.axe-core.func.spec.js +27 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-critical.func.spec.js +56 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-critical.visual.spec.js +20 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-dismissible.axe-core.func.spec.js +25 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-dismissible.func.spec.js +52 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-dismissible.visual.spec.js +20 -0
- package/ds-dialog/axe-core/DSDialog.accessible-form.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.basic.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.centered.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.decision.axe-core.func.spec.js +57 -0
- package/ds-dialog/axe-core/DSDialog.long-body.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.warning.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.wizard.axe-core.func.spec.js +28 -0
- package/ds-dialog/click-outside/DSDialog.click-outside.func.spec.js +31 -0
- package/ds-dialog/esc-close/DSDialog.esc-close.func.spec.js +31 -0
- package/ds-dialog/flexible-heading-level/DSDialog.flexible-heading-level.axe-core.func.spec.js +46 -0
- package/ds-dialog/flexible-heading-level/DSDialog.flexible-heading-level.func.spec.js +50 -0
- package/ds-dialog/form-dialog-datepicker/DSDialog.form-datepicker.axe-core.func.spec.js +25 -0
- package/ds-dialog/form-dialog-datepicker/DSDialog.form-datepicker.visual.spec.js +37 -0
- package/ds-dialog/single-button-footer/DSDialog.single-button-footer.axe-core.func.spec.js +25 -0
- package/ds-dialog/single-button-footer/DSDialog.single-button-footer.visual.spec.js +20 -0
- package/ds-dialog/size-variants/DSDialog.size-variants.visual.spec.js +116 -0
- 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 +38 -11
- 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 +27 -11
- 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 +41 -11
- package/ds-global-header/GlobalHeader.func.spec.js +70 -1
- package/ds-global-header/GlobalHeader.visual.spec.js +31 -0
- 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-leftnavigation/LeftNavigationCO.js +2 -2
- package/ds-menu-button/slots/DSMenuButton.slots.axe-core.func.spec.js +28 -0
- package/ds-menu-button/slots/DSMenuButton.slots.func.spec.js +19 -0
- package/ds-modal-slide/ModalSlideCO.js +46 -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 +74 -0
- package/ds-modal-slide/slots/ModalSlide.slots.visual.spec.js +27 -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/DSTabs.visual.spec.js +1 -2
- package/ds-tabs/DSTabsCO.js +2 -2
- package/ds-tabs/with-carousel/DSTabs.with-carousel.func.spec.js +22 -7
- package/ds-tabs/with-carousel/DSTabs.with-carousel.visual.spec.js +9 -9
- 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 +25 -2
- 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 +149 -154
- package/paths.js +12 -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,66 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DateRangePickerCO from '../DateRangePickerCO';
|
|
3
|
+
|
|
4
|
+
// Tests for the fix introduced in PUI-15569 (lack of clear distinction between start and end date
|
|
5
|
+
// fields). Each day/month/year segment now carries a distinguishing name-only aria-label that
|
|
6
|
+
// encodes which date it belongs to ("Start date month" / "End date year" ...) while per-field value
|
|
7
|
+
// still lives on role="spinbutton" + aria-valuetext. This fix (commit d1ded9edc7b) reversed the
|
|
8
|
+
// earlier PUI-15568 name-only labels ("month"/"day"/"year"), which is why the label strings changed.
|
|
9
|
+
// Chrome-only: pure DOM-attribute assertions are identical across browsers.
|
|
10
|
+
|
|
11
|
+
// Asserts a single segment input carries its full distinguishing aria-label, spinbutton role,
|
|
12
|
+
// empty value-text, and none of the leaked phrases the earlier defect used to inject into the label.
|
|
13
|
+
const assertDistinguishingEmptySegment = async (input, label) => {
|
|
14
|
+
await expect(input).toHaveAttribute('aria-label', label);
|
|
15
|
+
await expect(input).toHaveAttribute('role', 'spinbutton');
|
|
16
|
+
await expect(input).toHaveAttribute('aria-valuetext', 'empty');
|
|
17
|
+
const ariaLabel = await input.getAttribute('aria-label');
|
|
18
|
+
expect(ariaLabel).not.toContain('input field');
|
|
19
|
+
expect(ariaLabel).not.toContain('current values');
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
if (
|
|
23
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
24
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
25
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
26
|
+
browser.capabilities.browserName === 'Chrome'
|
|
27
|
+
) {
|
|
28
|
+
describe('PUI-18653 - DSControlledDateRangePicker:: start and end date segment aria-labels - Func', () => {
|
|
29
|
+
before('loading page', async () => {
|
|
30
|
+
const errorOnGo = await DateRangePickerCO.basic.go();
|
|
31
|
+
if (errorOnGo) throw errorOnGo;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Static reads on the empty initial state — consolidated into one it() (no interaction).
|
|
35
|
+
// index 0 = Start date group, index 1 = End date group.
|
|
36
|
+
it('01: each segment names its own date (start/end) with a spinbutton role and empty value', async () => {
|
|
37
|
+
// Start date group
|
|
38
|
+
await assertDistinguishingEmptySegment(await DateRangePickerCO.getMonthInputByIndex(0), 'Start date month');
|
|
39
|
+
await assertDistinguishingEmptySegment(await DateRangePickerCO.getDayInputByIndex(0), 'Start date day');
|
|
40
|
+
await assertDistinguishingEmptySegment(await DateRangePickerCO.getYearInputByIndex(0), 'Start date year');
|
|
41
|
+
// End date group
|
|
42
|
+
await assertDistinguishingEmptySegment(await DateRangePickerCO.getMonthInputByIndex(1), 'End date month');
|
|
43
|
+
await assertDistinguishingEmptySegment(await DateRangePickerCO.getDayInputByIndex(1), 'End date day');
|
|
44
|
+
await assertDistinguishingEmptySegment(await DateRangePickerCO.getYearInputByIndex(1), 'End date year');
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('02: filling one segment does not leak its value into sibling aria-labels', async () => {
|
|
48
|
+
const month = await DateRangePickerCO.getMonthInputByIndex(0);
|
|
49
|
+
await month.click();
|
|
50
|
+
await browser.keys(Key.ArrowUp); // 01 / January
|
|
51
|
+
await browser.keys(Key.ArrowUp); // 02 / February
|
|
52
|
+
|
|
53
|
+
// filled field announces its OWN value via aria-valuetext; label stays the distinguishing name
|
|
54
|
+
await expect(month).toHaveAttribute('aria-label', 'Start date month');
|
|
55
|
+
await expect(month).toHaveAttribute('aria-valuetext', 'February');
|
|
56
|
+
|
|
57
|
+
// siblings keep their distinguishing names + empty value — no "February" leaks into their labels
|
|
58
|
+
const day = await DateRangePickerCO.getDayInputByIndex(0);
|
|
59
|
+
const year = await DateRangePickerCO.getYearInputByIndex(0);
|
|
60
|
+
await expect(day).toHaveAttribute('aria-label', 'Start date day');
|
|
61
|
+
await expect(day).toHaveAttribute('aria-valuetext', 'empty');
|
|
62
|
+
await expect(year).toHaveAttribute('aria-label', 'Start date year');
|
|
63
|
+
await expect(year).toHaveAttribute('aria-valuetext', 'empty');
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import DateRangePickerCO from '../DateRangePickerCO';
|
|
2
|
+
|
|
3
|
+
// Tests for the fix introduced in PUI-15570 (feedback message announced as part of the group heading
|
|
4
|
+
// and not programmatically associated with any field). When the range picker sits inside a
|
|
5
|
+
// DSFormLayoutBlockItem isGroup fieldset, the fix (commit d1ded9edc7b) removed the nested named
|
|
6
|
+
// role="group" (aria-label="Start date"/"End date") that collided with the fieldset legend, so the
|
|
7
|
+
// legend + validation message now announce correctly. Each field self-identifies via its own
|
|
8
|
+
// aria-label and is marked aria-invalid, telling the user exactly which fields contain errors, while
|
|
9
|
+
// the validation message is announced separately via role="alert".
|
|
10
|
+
// Chrome-only: pure DOM-attribute assertions are identical across browsers.
|
|
11
|
+
|
|
12
|
+
// Asserts a single segment input is marked invalid and keeps its distinguishing name in the error state.
|
|
13
|
+
const assertInvalidNamedSegment = async (input, label) => {
|
|
14
|
+
await expect(input).toHaveAttribute('aria-label', label);
|
|
15
|
+
await expect(input).toHaveAttribute('role', 'spinbutton');
|
|
16
|
+
await expect(input).toHaveAttribute('aria-invalid', 'true');
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
if (
|
|
20
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
21
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
22
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
23
|
+
browser.capabilities.browserName === 'Chrome'
|
|
24
|
+
) {
|
|
25
|
+
describe('PUI-18711 - DSControlledDateRangePicker:: grouped field error announcement - Func', () => {
|
|
26
|
+
before('loading page', async () => {
|
|
27
|
+
const errorOnGo = await DateRangePickerCO.invalidSelection.go();
|
|
28
|
+
if (errorOnGo) throw errorOnGo;
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Static reads on the error-state load — consolidated into one it() (no interaction).
|
|
32
|
+
it('01: drops the nested named group, marks each named field invalid, announces error via alert', async () => {
|
|
33
|
+
// Regression guard for the fix: the nested named role="group" wrappers are gone, so they no
|
|
34
|
+
// longer compete with the DSFormLayoutBlockItem fieldset legend / validation message.
|
|
35
|
+
const startNamedGroups = await DateRangePickerCO.getNamedGroupByLabel('Start date');
|
|
36
|
+
const endNamedGroups = await DateRangePickerCO.getNamedGroupByLabel('End date');
|
|
37
|
+
expect(startNamedGroups.length).toBe(0);
|
|
38
|
+
expect(endNamedGroups.length).toBe(0);
|
|
39
|
+
|
|
40
|
+
// The grouping is still provided by the fieldset container.
|
|
41
|
+
await expect(await DateRangePickerCO.getFieldsetContainer()).toBeExisting();
|
|
42
|
+
|
|
43
|
+
// Each field self-identifies (start/end) and is flagged invalid — tells the user which fields
|
|
44
|
+
// contain errors. index 0 = Start date group, index 1 = End date group.
|
|
45
|
+
await assertInvalidNamedSegment(await DateRangePickerCO.getMonthInputByIndex(0), 'Start date month');
|
|
46
|
+
await assertInvalidNamedSegment(await DateRangePickerCO.getDayInputByIndex(0), 'Start date day');
|
|
47
|
+
await assertInvalidNamedSegment(await DateRangePickerCO.getYearInputByIndex(0), 'Start date year');
|
|
48
|
+
await assertInvalidNamedSegment(await DateRangePickerCO.getMonthInputByIndex(1), 'End date month');
|
|
49
|
+
await assertInvalidNamedSegment(await DateRangePickerCO.getDayInputByIndex(1), 'End date day');
|
|
50
|
+
await assertInvalidNamedSegment(await DateRangePickerCO.getYearInputByIndex(1), 'End date year');
|
|
51
|
+
|
|
52
|
+
// The validation message is a separate element announced on its own via role="alert".
|
|
53
|
+
const alert = await DateRangePickerCO.getValidationAlert();
|
|
54
|
+
await expect(alert).toBeExisting();
|
|
55
|
+
await expect(alert).toHaveAttribute('role', 'alert');
|
|
56
|
+
await expect(alert).toHaveText('The selected range is not valid', { containing: true });
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
package/ds-form-date-range-picker/picker-callbacks/DateRangePicker.picker-callbacks.func.spec.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DateRangePickerCO from '../DateRangePickerCO';
|
|
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
|
+
// Tests for the fix introduced in PUI-18907 (forward picker open and close callbacks).
|
|
11
|
+
describe('PUI-19082 - DSControlledDateRangePicker:: picker open and close callbacks - Func', () => {
|
|
12
|
+
before('loading page', async () => {
|
|
13
|
+
const errorOnGo = await DateRangePickerCO.pickerCallbacks.go();
|
|
14
|
+
if (errorOnGo) throw errorOnGo;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('01: should invoke onPickerOpen when the calendar opens', async () => {
|
|
18
|
+
const calendarTrigger = await DateRangePickerCO.getPickerBtn();
|
|
19
|
+
const openCallbackCount = await DateRangePickerCO.getOpenCallbackCount();
|
|
20
|
+
|
|
21
|
+
await expect(openCallbackCount).toHaveText('0');
|
|
22
|
+
await calendarTrigger.click();
|
|
23
|
+
await expect(await DateRangePickerCO.getCalendarDialog()).toBeDisplayedInViewport();
|
|
24
|
+
await expect(openCallbackCount).toHaveText('1');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('02: should invoke onPickerClose when the calendar closes', async () => {
|
|
28
|
+
const closeCallbackCount = await DateRangePickerCO.getCloseCallbackCount();
|
|
29
|
+
|
|
30
|
+
await expect(closeCallbackCount).toHaveText('0');
|
|
31
|
+
await browser.keys(Key.Escape);
|
|
32
|
+
await expect(await DateRangePickerCO.getCalendarDialog()).not.toBeDisplayedInViewport();
|
|
33
|
+
await expect(closeCallbackCount).toHaveText('1');
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
@@ -281,6 +281,13 @@ export default class DSDateTimePickerCO extends PageObject {
|
|
|
281
281
|
static getCalendarSelectedFocusedDay = async () =>
|
|
282
282
|
$(`[data-testid="ds-controlled-date-time-picker-calendar-selected-focused-day"]`);
|
|
283
283
|
|
|
284
|
+
// Non-current-month day cells only carry the `notCurrentMonth` wrapper class (they share the
|
|
285
|
+
// generic calendar-day data-testid), so this class is the only distinguishing selector. The grid
|
|
286
|
+
// renders leading/trailing spillover cells that are hidden, so index 0 is a hidden filler — use
|
|
287
|
+
// index 1 for the first visible non-current-month day. PUI-14872.
|
|
288
|
+
static getCalendarNotCurrentMonthDayByIndex = async (index = 0) =>
|
|
289
|
+
$$(`.notCurrentMonth button[data-testid="ds-controlled-date-time-picker-calendar-day"]`)[index];
|
|
290
|
+
|
|
284
291
|
// TIMEWHEEL
|
|
285
292
|
static getTimeWheelHeaderLabel = async () =>
|
|
286
293
|
$(`[data-testid="ds-controlled-date-time-picker-timewheel-header-label"]`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable prettier/prettier */
|
|
2
2
|
/* eslint-disable max-len */
|
|
3
3
|
/* eslint-disable max-lines */
|
|
4
|
-
import { axeCoreCheck } from '../../helpers';
|
|
4
|
+
import { axeCoreCheck, mouseOver } from '../../helpers';
|
|
5
5
|
import DateTimePickerCO from '../DSControlledDateTimePickerCO';
|
|
6
6
|
|
|
7
7
|
if (
|
|
@@ -21,5 +21,12 @@ if (
|
|
|
21
21
|
const result = await axeCoreCheck();
|
|
22
22
|
expect(result.length).toBe(0);
|
|
23
23
|
});
|
|
24
|
+
it('02: should pass axe-core color-contrast while hovering a non-current-month day', async () => {
|
|
25
|
+
const notCurrentMonthDay = await DateTimePickerCO.getCalendarNotCurrentMonthDayByIndex(1);
|
|
26
|
+
await notCurrentMonthDay.waitForDisplayed();
|
|
27
|
+
await mouseOver(notCurrentMonthDay);
|
|
28
|
+
const result = await axeCoreCheck();
|
|
29
|
+
expect(result.length).toBe(0);
|
|
30
|
+
});
|
|
24
31
|
});
|
|
25
32
|
}
|
|
@@ -45,5 +45,14 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
45
45
|
);
|
|
46
46
|
await expect(snapshot).toEqual(0);
|
|
47
47
|
});
|
|
48
|
+
it('05: should keep readable contrast when hovering a non-current-month day', async () => {
|
|
49
|
+
const notCurrentMonthDay = await DateTimePickerCO.getCalendarNotCurrentMonthDayByIndex(1);
|
|
50
|
+
await notCurrentMonthDay.waitForDisplayed();
|
|
51
|
+
await mouseOver(notCurrentMonthDay);
|
|
52
|
+
const snapshot = await browser.checkSnapshot(
|
|
53
|
+
DateTimePickerCO.snapshotPath('date-time-full-not-current-month-day-hover'),
|
|
54
|
+
);
|
|
55
|
+
await expect(snapshot).toEqual(0);
|
|
56
|
+
});
|
|
48
57
|
});
|
|
49
58
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import DateTimePickerCO from '../DSControlledDateTimePickerCO';
|
|
2
|
+
import { type } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
// Tests for the fix introduced in PUI-15900 (focus lost when the input holds a partial date
|
|
5
|
+
// while onCalendarOpenFocusedDay is set — the displayed month must follow the focused day so
|
|
6
|
+
// the prop date is rendered and receives focus on open).
|
|
7
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
8
|
+
describe('PUI-18784 - DSControlledDateTimePicker:: focus on calendar open with partial date -Func', () => {
|
|
9
|
+
beforeEach('loading page', async () => {
|
|
10
|
+
const errorOnGo = await DateTimePickerCO.emptyDatePickerStartingMonth.go();
|
|
11
|
+
if (errorOnGo) throw errorOnGo;
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('01: empty input focuses the onCalendarOpenFocusedDay day (Dec 27) on open', async () => {
|
|
15
|
+
const trigger = await DateTimePickerCO.getTrigger();
|
|
16
|
+
await trigger.click();
|
|
17
|
+
|
|
18
|
+
const focusedDay = await DateTimePickerCO.getCalendarFocusedDay();
|
|
19
|
+
await expect(focusedDay).toHaveText('27');
|
|
20
|
+
await expect(focusedDay).toBeFocused();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('02: partial month still focuses the onCalendarOpenFocusedDay day (Dec 27) on open', async () => {
|
|
24
|
+
const month = await DateTimePickerCO.getMonthInput();
|
|
25
|
+
await month.click();
|
|
26
|
+
await type('1'); // partial date — month typed, no day/year
|
|
27
|
+
|
|
28
|
+
const trigger = await DateTimePickerCO.getTrigger();
|
|
29
|
+
await trigger.click();
|
|
30
|
+
|
|
31
|
+
// grid follows the focused day's month (December) so the prop date is visible + focused
|
|
32
|
+
const focusedDay = await DateTimePickerCO.getCalendarFocusedDay();
|
|
33
|
+
await expect(focusedDay).toHaveText('27');
|
|
34
|
+
await expect(focusedDay).toBeFocused();
|
|
35
|
+
|
|
36
|
+
// the displayed month must be December 2000 (the prop's month), not the typed January
|
|
37
|
+
const headerLabel = await DateTimePickerCO.getCalendarHeaderLabel();
|
|
38
|
+
await expect(headerLabel).toHaveText('December 2000');
|
|
39
|
+
|
|
40
|
+
// focus must NOT have landed on the previous-month navigation button
|
|
41
|
+
const prevMonthBtn = await DateTimePickerCO.getCalendarPrevMonthBtn();
|
|
42
|
+
await expect(prevMonthBtn).not.toBeFocused();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
@@ -54,4 +54,43 @@ if (
|
|
|
54
54
|
expect(result.length).toBe(0);
|
|
55
55
|
});
|
|
56
56
|
});
|
|
57
|
+
|
|
58
|
+
describe('PUI-16464 - NativeSelect: ApplyAriaDisabled -AxeCore', () => {
|
|
59
|
+
before(async () => {
|
|
60
|
+
const errorOnGo = await NativeSelect.applyAriaDisabledURL.go();
|
|
61
|
+
if (errorOnGo) throw errorOnGo;
|
|
62
|
+
});
|
|
63
|
+
it('01: should have applyAriaDisabled native select and pass axe-core scan', async () => {
|
|
64
|
+
const nativeSelect = await NativeSelect.getRootByIndex(0);
|
|
65
|
+
await nativeSelect.waitForDisplayed();
|
|
66
|
+
const result = await axeCoreCheck();
|
|
67
|
+
expect(result.length).toBe(0);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe('PUI-16464 - NativeSelect: ReadOnly -AxeCore', () => {
|
|
72
|
+
before(async () => {
|
|
73
|
+
const errorOnGo = await NativeSelect.readOnlyURL.go();
|
|
74
|
+
if (errorOnGo) throw errorOnGo;
|
|
75
|
+
});
|
|
76
|
+
it('01: should have readOnly native select and pass axe-core scan', async () => {
|
|
77
|
+
const nativeSelect = await NativeSelect.getRootByIndex(0);
|
|
78
|
+
await nativeSelect.waitForDisplayed();
|
|
79
|
+
const result = await axeCoreCheck();
|
|
80
|
+
expect(result.length).toBe(0);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
describe('PUI-16464 - NativeSelect: ApplyAriaDisabled + hasError -AxeCore', () => {
|
|
85
|
+
before(async () => {
|
|
86
|
+
const errorOnGo = await NativeSelect.applyAriaDisabledWithErrorURL.go();
|
|
87
|
+
if (errorOnGo) throw errorOnGo;
|
|
88
|
+
});
|
|
89
|
+
it('01: should have applyAriaDisabled + hasError native select and pass axe-core scan', async () => {
|
|
90
|
+
const nativeSelect = await NativeSelect.getRootByIndex(0);
|
|
91
|
+
await nativeSelect.waitForDisplayed();
|
|
92
|
+
const result = await axeCoreCheck();
|
|
93
|
+
expect(result.length).toBe(0);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
57
96
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import NativeSelect from './NativeSelectCO';
|
|
2
|
+
|
|
3
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
4
|
+
describe('PUI-18537 - NativeSelect:: basic state -Visual', () => {
|
|
5
|
+
before('loading page', async () => {
|
|
6
|
+
const errorOnGo = await NativeSelect.controlledURL.go();
|
|
7
|
+
if (errorOnGo) throw errorOnGo;
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('01: should render the basic controlled native select', async () => {
|
|
11
|
+
const root = await NativeSelect.getRootByIndex(0);
|
|
12
|
+
await root.waitForDisplayed();
|
|
13
|
+
const snapshot = await browser.percyCheckScreenshot(NativeSelect.snapshotPath('basic'));
|
|
14
|
+
await expect(snapshot).toEqual(0);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// Coverage for the fix introduced in PUI-14617
|
|
19
|
+
// (disabled-state colors aligned with Combobox disabled-state colors to meet WCAG 1.4.3).
|
|
20
|
+
describe('PUI-18538 - NativeSelect:: disabled state -Visual', () => {
|
|
21
|
+
before('loading page', async () => {
|
|
22
|
+
const errorOnGo = await NativeSelect.disabledURL.go();
|
|
23
|
+
if (errorOnGo) throw errorOnGo;
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('01: should render the disabled native select', async () => {
|
|
27
|
+
const root = await NativeSelect.getRootByIndex(0);
|
|
28
|
+
await root.waitForDisplayed();
|
|
29
|
+
const snapshot = await browser.percyCheckScreenshot(NativeSelect.snapshotPath('disabled'));
|
|
30
|
+
await expect(snapshot).toEqual(0);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
@@ -11,6 +11,12 @@ export default class NativeSelect extends PageObject {
|
|
|
11
11
|
|
|
12
12
|
static disabledURL = new Urlbuilder(PATH_E2E_NATIVE_SELECT, 'disabled-test');
|
|
13
13
|
|
|
14
|
+
static applyAriaDisabledURL = new Urlbuilder(PATH_E2E_NATIVE_SELECT, 'apply-aria-disabled-test');
|
|
15
|
+
|
|
16
|
+
static readOnlyURL = new Urlbuilder(PATH_E2E_NATIVE_SELECT, 'read-only-test');
|
|
17
|
+
|
|
18
|
+
static applyAriaDisabledWithErrorURL = new Urlbuilder(PATH_E2E_NATIVE_SELECT, 'apply-aria-disabled-with-error-test');
|
|
19
|
+
|
|
14
20
|
// Selectors
|
|
15
21
|
static async getInputSlotByIndex(index = 0) {
|
|
16
22
|
return $$(`[data-dimsum-slot="dsNativeselectInput"]`)[index];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import NativeSelect from '../NativeSelectCO';
|
|
2
|
+
|
|
3
|
+
// Tests for the option selection behavior of the native select introduced in PUI-14617.
|
|
4
|
+
// Selecting an option must update the <select> value (options use value={index}).
|
|
5
|
+
// Uses the WebDriver native select command (selectByIndex) so the native popup is opened and an
|
|
6
|
+
// option committed the same way in every browser — simulated keystrokes on the OS-drawn popup are
|
|
7
|
+
// not reachable by WebDriver on macOS/Safari, which is why a keystroke-based assertion is not portable.
|
|
8
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
9
|
+
describe('PUI-18563 - NativeSelect:: Option selection updates value -Func', () => {
|
|
10
|
+
before(async () => {
|
|
11
|
+
const errorOnGo = await NativeSelect.controlledURL.go();
|
|
12
|
+
if (errorOnGo) throw errorOnGo;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('01: should update the value when selecting an option from the popup', async () => {
|
|
16
|
+
const nativeSelect = await NativeSelect.getRootByIndex(0);
|
|
17
|
+
await nativeSelect.waitForDisplayed();
|
|
18
|
+
|
|
19
|
+
const input = await NativeSelect.getInputSlotByIndex(0);
|
|
20
|
+
await input.selectByIndex(2);
|
|
21
|
+
|
|
22
|
+
await expect(input).toHaveValue('2');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -11,14 +11,16 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
11
11
|
await (await DSToggleCO.getToggle()).waitForExist();
|
|
12
12
|
});
|
|
13
13
|
it('01: should change state to ON', async () => {
|
|
14
|
-
await (await DSToggleCO.
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
await (await DSToggleCO.getSwitch()).click();
|
|
15
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'true');
|
|
16
|
+
// the visible (presentational) label should track the state
|
|
17
|
+
await expect(await DSToggleCO.getStateLabel()).toHaveText('ON');
|
|
17
18
|
});
|
|
18
19
|
it('02: should change state to OFF', async () => {
|
|
19
|
-
await (await DSToggleCO.
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
await (await DSToggleCO.getSwitch()).click();
|
|
21
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'false');
|
|
22
|
+
// the visible (presentational) label should track the state
|
|
23
|
+
await expect(await DSToggleCO.getStateLabel()).toHaveText('OFF');
|
|
22
24
|
});
|
|
23
25
|
});
|
|
24
26
|
describe('PUI-6760 - DSControlledToggle:: states on/off - keyboard navigation', () => {
|
|
@@ -34,18 +36,15 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
34
36
|
});
|
|
35
37
|
it('02: should change state to ON (Enter)', async () => {
|
|
36
38
|
await browser.keys(Key.Enter);
|
|
37
|
-
|
|
38
|
-
await expect(toggleState).toBeDisplayed();
|
|
39
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'true');
|
|
39
40
|
});
|
|
40
41
|
it('03: should change state to OFF (Space)', async () => {
|
|
41
42
|
await browser.keys(Key.Space);
|
|
42
|
-
|
|
43
|
-
await expect(toggleState).toBeDisplayed();
|
|
43
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'false');
|
|
44
44
|
});
|
|
45
45
|
it('04: should change state to ON (Space)', async () => {
|
|
46
46
|
await browser.keys(Key.Space);
|
|
47
|
-
|
|
48
|
-
await expect(toggleState).toBeDisplayed();
|
|
47
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'true');
|
|
49
48
|
});
|
|
50
49
|
});
|
|
51
50
|
|
|
@@ -56,10 +55,11 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
56
55
|
await (await DSToggleCO.getToggle()).waitForExist();
|
|
57
56
|
});
|
|
58
57
|
it('01: should not change state in disabled toggle', async () => {
|
|
59
|
-
const
|
|
60
|
-
await
|
|
61
|
-
|
|
62
|
-
await
|
|
58
|
+
const disabledSwitch = await DSToggleCO.getSwitch(0);
|
|
59
|
+
const initialState = await disabledSwitch.getAttribute('aria-checked');
|
|
60
|
+
// click the container (the button itself is disabled and not interactable)
|
|
61
|
+
await (await DSToggleCO.getToggleByIndex(0)).click();
|
|
62
|
+
await expect(await DSToggleCO.getSwitch(0)).toHaveAttribute('aria-checked', initialState);
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
65
|
|
|
@@ -84,18 +84,15 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
84
84
|
});
|
|
85
85
|
it('03: should not change state on [Enter] key press', async () => {
|
|
86
86
|
await browser.keys(Key.Enter);
|
|
87
|
-
|
|
88
|
-
await expect(toggleState).toBeDisplayed();
|
|
87
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'false');
|
|
89
88
|
});
|
|
90
89
|
it('04: should not change state on [Space] key press', async () => {
|
|
91
90
|
await browser.keys(Key.Space);
|
|
92
|
-
|
|
93
|
-
await expect(toggleState).toBeDisplayed();
|
|
91
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'false');
|
|
94
92
|
});
|
|
95
93
|
it('05: should not change state on click', async () => {
|
|
96
|
-
await (await DSToggleCO.
|
|
97
|
-
|
|
98
|
-
await expect(toggleState).toBeDisplayed();
|
|
94
|
+
await (await DSToggleCO.getSwitch()).click();
|
|
95
|
+
await expect(await DSToggleCO.getSwitch()).toHaveAttribute('aria-checked', 'false');
|
|
99
96
|
});
|
|
100
97
|
});
|
|
101
98
|
describe('PUI-8814 - DSControlledToggle:: Tabbing', () => {
|
|
@@ -36,8 +36,17 @@ export default class DSToggleCO extends PageObject {
|
|
|
36
36
|
return $$('[data-testid="ds-controlled-toggle-checkbox"]')[index];
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
// The on/off state is exposed semantically via aria-checked on the role="switch"
|
|
40
|
+
// button. Post PUI-16323 the visible ON/OFF label is aria-hidden and purely
|
|
41
|
+
// presentational, so state must be read from aria-checked, not the label text.
|
|
42
|
+
static async getSwitch(index = 0) {
|
|
43
|
+
return $$('button[role="switch"]')[index];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Presentational ON/OFF label (aria-hidden). Targeted via its stable slot
|
|
47
|
+
// data-testid so we can assert the visible text tracks the state.
|
|
48
|
+
static async getStateLabel(index = 0) {
|
|
49
|
+
return $$('[data-testid="ds-formtoggle-text-wrapper"]')[index];
|
|
41
50
|
}
|
|
42
51
|
|
|
43
52
|
static async getTooltip() {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import GlobalHeader from './GlobalHeaderCO';
|
|
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-18771 - GlobalHeader: SearchToggle result announcement -Func', () => {
|
|
10
|
+
before(async () => {
|
|
11
|
+
const errorOnGo = await GlobalHeader.withSearchToggleURL.go();
|
|
12
|
+
if (errorOnGo) throw errorOnGo;
|
|
13
|
+
await GlobalHeader.openAndPopulateSearchToggle();
|
|
14
|
+
});
|
|
15
|
+
it('01: search input should expose the accessible name guiding users to the result navigation', async () => {
|
|
16
|
+
const searchInput = await GlobalHeader.getSearchToggleInput();
|
|
17
|
+
await expect(searchInput).toHaveAttribute(
|
|
18
|
+
'aria-label',
|
|
19
|
+
'Search among the content of the page. Press Tab twice to reach the result navigation.',
|
|
20
|
+
);
|
|
21
|
+
});
|
|
22
|
+
it('02: results spinbutton should announce the total result count after typing', async () => {
|
|
23
|
+
const spinButton = await GlobalHeader.getSearchToggleSpinbutton();
|
|
24
|
+
await expect(spinButton).toHaveAttribute('aria-valuetext', '3 total results');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -19,14 +19,14 @@ if (
|
|
|
19
19
|
await browser.keys(Key.Tab);
|
|
20
20
|
await browser.keys(Key.Tab);
|
|
21
21
|
const result = await axeCoreCheck();
|
|
22
|
-
expect(result
|
|
22
|
+
await expect(result).toHaveLength(0);
|
|
23
23
|
});
|
|
24
24
|
it('02: should have global header with expanded appPicker and pass axe-core scan', async () => {
|
|
25
25
|
await browser.keys(Key.Tab);
|
|
26
26
|
await browser.keys(Key.Enter);
|
|
27
27
|
|
|
28
28
|
const result = await axeCoreCheck();
|
|
29
|
-
expect(result
|
|
29
|
+
await expect(result).toHaveLength(0);
|
|
30
30
|
});
|
|
31
31
|
it('03: should have global header with expanded menu-list and pass axe-core scan', async () => {
|
|
32
32
|
await browser.keys(Key.Escape);
|
|
@@ -34,7 +34,7 @@ if (
|
|
|
34
34
|
await browser.keys(Key.Tab);
|
|
35
35
|
await browser.keys(Key.Enter);
|
|
36
36
|
const result = await axeCoreCheck();
|
|
37
|
-
expect(result
|
|
37
|
+
await expect(result).toHaveLength(0);
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
|
|
@@ -47,12 +47,12 @@ if (
|
|
|
47
47
|
const globalHeader = await GlobalHeaderCO.getGlobalHeader();
|
|
48
48
|
await globalHeader.waitForDisplayed();
|
|
49
49
|
const result = await axeCoreCheck();
|
|
50
|
-
expect(result
|
|
50
|
+
await expect(result).toHaveLength(0);
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
// Skipped due to defect PUI-17970
|
|
55
|
-
describe
|
|
55
|
+
describe('PUI-12447 - GlobalHeader: toggle search -AxeCore', () => {
|
|
56
56
|
before(async () => {
|
|
57
57
|
const errorOnGo = await GlobalHeaderCO.withSearchToggleURL.go();
|
|
58
58
|
if (errorOnGo) throw errorOnGo;
|
|
@@ -61,19 +61,19 @@ if (
|
|
|
61
61
|
const globalHeader = await GlobalHeaderCO.getGlobalHeader();
|
|
62
62
|
await globalHeader.waitForDisplayed();
|
|
63
63
|
const result = await axeCoreCheck();
|
|
64
|
-
expect(result
|
|
64
|
+
await expect(result).toHaveLength(0);
|
|
65
65
|
});
|
|
66
66
|
it('02: should have global header with toggle-search expanded and pass axe-core scan', async () => {
|
|
67
67
|
const toggleSearch = await GlobalHeaderCO.getGHToolbarItem(0);
|
|
68
68
|
await toggleSearch.click();
|
|
69
69
|
await type('Hola');
|
|
70
70
|
const result = await axeCoreCheck();
|
|
71
|
-
expect(result
|
|
71
|
+
await expect(result).toHaveLength(0);
|
|
72
72
|
});
|
|
73
73
|
it('03: should have global header with populated toggle-search and pass axe-core scan', async () => {
|
|
74
74
|
await type('Hola');
|
|
75
75
|
const result = await axeCoreCheck();
|
|
76
|
-
expect(result
|
|
76
|
+
await expect(result).toHaveLength(0);
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
79
|
|
|
@@ -86,12 +86,42 @@ if (
|
|
|
86
86
|
const globalHeader = await GlobalHeaderCO.getGlobalHeader();
|
|
87
87
|
await globalHeader.waitForDisplayed();
|
|
88
88
|
const result = await axeCoreCheck();
|
|
89
|
-
expect(result
|
|
89
|
+
await expect(result).toHaveLength(0);
|
|
90
90
|
});
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
// Skipped due to defect PUI-17970
|
|
94
|
-
describe
|
|
94
|
+
describe('PUI-18379 - GlobalHeader: with search toggle -AxeCore', () => {
|
|
95
|
+
before(async () => {
|
|
96
|
+
const errorOnGo = await GlobalHeaderCO.withSearchToggleURL.go();
|
|
97
|
+
if (errorOnGo) throw errorOnGo;
|
|
98
|
+
});
|
|
99
|
+
it('01: should have global header with search toggle and pass axe-core scan', async () => {
|
|
100
|
+
const globalHeader = await GlobalHeaderCO.getGlobalHeader();
|
|
101
|
+
await globalHeader.waitForDisplayed();
|
|
102
|
+
const toggleSearch = await GlobalHeaderCO.getGHToolbarItem(0);
|
|
103
|
+
await expect(toggleSearch).toHaveAttribute('aria-expanded', 'false');
|
|
104
|
+
await expect(toggleSearch).toHaveAttribute('aria-controls');
|
|
105
|
+
const result = await axeCoreCheck();
|
|
106
|
+
await expect(result).toHaveLength(0);
|
|
107
|
+
});
|
|
108
|
+
it('02: should have global header with search toggle expanded and pass axe-core scan', async () => {
|
|
109
|
+
const toggleSearch = await GlobalHeaderCO.getGHToolbarItem(0);
|
|
110
|
+
await toggleSearch.click();
|
|
111
|
+
await expect(toggleSearch).toHaveAttribute('aria-expanded', 'true');
|
|
112
|
+
await expect(toggleSearch).toHaveAttribute('aria-controls', /^ds-global-header/);
|
|
113
|
+
const result = await axeCoreCheck();
|
|
114
|
+
await expect(result).toHaveLength(0);
|
|
115
|
+
});
|
|
116
|
+
it('03: should have global header with populated search toggle and pass axe-core scan', async () => {
|
|
117
|
+
await type('Labor');
|
|
118
|
+
const result = await axeCoreCheck();
|
|
119
|
+
await expect(result).toHaveLength(0);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// Skipped due to defect PUI-17970
|
|
124
|
+
describe('PUI-16270 - GlobalHeader: Controled with Iframe -AxeCore', () => {
|
|
95
125
|
before(async () => {
|
|
96
126
|
const errorOnGo = await GlobalHeaderCO.iframeURL.go();
|
|
97
127
|
if (errorOnGo) throw errorOnGo;
|
|
@@ -100,7 +130,7 @@ if (
|
|
|
100
130
|
const globalHeader = await GlobalHeaderCO.getGlobalHeader();
|
|
101
131
|
await globalHeader.waitForDisplayed();
|
|
102
132
|
const result = await axeCoreCheck({ extraDisabledRules: ['landmark-one-main'] });
|
|
103
|
-
expect(result
|
|
133
|
+
await expect(result).toHaveLength(0);
|
|
104
134
|
});
|
|
105
135
|
});
|
|
106
136
|
}
|