dimsum-e2e-tests 3.53.0-alpha.1 → 3.53.0-alpha.3
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 +8 -0
- package/ds-accordion/DSAccordionCO.js +15 -11
- package/ds-accordion/role/DSAccordion.role-heading.func.spec.js +21 -0
- package/ds-accordion/scrollable-content/DSAccordion.scrollable-content.visual.spec.js +42 -0
- package/ds-accordion/slots/DSAccordion.slots.func.spec.js +12 -0
- package/ds-accordion/wrapLabel/DSAccordion.wrap-label.visual.spec.js +20 -0
- package/ds-autocomplete/DSAutocompleteCO.js +18 -0
- package/ds-autocomplete/slots/DSAutocomplete.slots.axe-core.func.spec.js +20 -0
- package/ds-autocomplete/slots/DSAutocomplete.slots.func.spec.js +45 -0
- package/ds-autocomplete/slots/DSAutocomplete.slots.visual.spec.js +21 -0
- package/ds-banner/DSBanner.func.spec.js +4 -60
- package/ds-banner/DSBanner.text-resize.visual.spec.js +15 -0
- package/ds-banner/DSBanner.text-wrapping.visual.spec.js +31 -0
- package/ds-banner/DSBanner.visual.spec.js +0 -29
- package/ds-banner/DSBannerCO.js +24 -2
- package/ds-banner/aria-and-role/DSBanner.aria-and-role.func.spec.js +63 -0
- package/ds-banner/slots/DSBanner.slots.func.spec.js +65 -0
- package/ds-banner/slots/DSBanner.slots.visual.spec.js +17 -0
- package/ds-breadcrumb/DSBreadcrumb.func.spec.js +5 -3
- package/ds-button-v3/DSButtonV3.type-submit.func.spec.js +28 -0
- package/ds-button-v3/DSButtonV3.visual.spec.js +7 -2
- package/ds-button-v3/DSButtonV3CO.js +2 -0
- package/ds-card-navigation/CardNavigationCO.js +56 -0
- package/ds-card-navigation/DSCardNavigation.func.spec.js +50 -1
- package/ds-card-navigation/DSCardNavigation.slots.func.spec.js +127 -0
- package/ds-card-navigation/DSCardNavigation.slots.visual.spec.js +26 -0
- package/ds-card-navigation/DSCardNavigation.visual.spec.js +16 -0
- package/ds-card-v3/DSCardV3CO.js +20 -0
- package/ds-card-v3/drag-n-drop/DSCardV3.DnD.visual.spec.js +1 -1
- package/ds-card-v3/slots/DSCardV3.slots.axe-core.spec.js +22 -0
- package/ds-card-v3/slots/DSCardV3.slots.func.spec.js +36 -0
- package/ds-card-v3/slots/DSCardV3.slots.visual.spec.js +18 -0
- package/ds-chat/DSChat.func.spec.js +3 -2
- package/ds-chat/DSChat.visual.spec.js +3 -2
- package/ds-chat/DSChatCO.js +0 -8
- package/ds-chat/floatingbutton/DSChat-floating-button.visual.spec.js +1 -1
- package/ds-chip/DSChipCO.js +24 -0
- package/ds-chip/slots/DSChip.slots.axe-core.spec.js +17 -0
- package/ds-chip/slots/DSChip.slots.func.spec.js +39 -0
- package/ds-chip/slots/DSChip.slots.visual.spec.js +17 -0
- package/ds-circular-indeterminate-indicator/DSCircularIndicator.visual.spec.js +2 -1
- package/ds-controlled-form/ds-combobox/creatable/DSCombobox.creatable.visual.spec.js +6 -4
- package/ds-controlled-form/ds-controlled-large-input-text/DSLargeInputTextCO.js +5 -0
- package/ds-controlled-form/ds-controlled-large-input-text/aria-disabled/DSLargeInputText.aria-disabled.func.spec.js +19 -0
- package/ds-controlled-form/ds-controlled-radio-group/DSControlledRadioGroup.axe-core.func.spec.js +31 -0
- package/ds-controlled-form/react-hook-form/ReactHook.visual.spec.js +1 -0
- package/ds-data-table-async/DSDataTableCO.js +173 -108
- package/ds-data-table-async/basic/DSDataTable.basic.visual.spec.js +1 -45
- package/ds-data-table-async/components/FilterBarCO.js +8 -0
- package/ds-data-table-async/components/FiltersCO.js +12 -0
- package/ds-data-table-async/components/HeaderCO.js +5 -0
- package/ds-data-table-async/components/PaginationNavCO.js +1 -1
- package/ds-data-table-async/date-filters/DSDataTable.date-switcher.single.func.spec.js +1 -1
- package/ds-data-table-async/date-filters/DSDataTable.date-switcher.visual.spec.js +18 -8
- package/ds-data-table-async/dnd/DSDataTable.dnd.visual.spec.js +3 -1
- package/ds-data-table-async/dnd/DSDataTable.dnd_fixed-width.visual.spec.js +33 -0
- package/ds-data-table-async/empty-state/DSDataTable.empty-state.visual.spec.js +13 -0
- package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +5 -5
- package/ds-data-table-async/filters/DSDataTable.filters-creatable.visual.spec.js +1 -0
- package/ds-data-table-async/filters/DSDataTable.filters.visual.spec.js +18 -1
- package/ds-data-table-async/filters/DSDataTable.free-text-search.keyboard.func.spec.js +242 -0
- package/ds-data-table-async/filters/DSDataTable.free-text-search.visual.spec.js +54 -0
- package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +3 -3
- package/ds-data-table-async/menubutton/DSDataTable.MenuButton.keyboard.func.spec.js +56 -0
- package/ds-data-table-async/menubutton/DSDataTable.MenuButton.mouse.func.spec.js +55 -0
- package/ds-data-table-async/menubutton/DSDataTable.MenuButton.visual.spec.js +27 -0
- package/ds-data-table-async/more/DSDataTable.headers.visual.spec.js +0 -63
- package/ds-data-table-async/select/DSDataTable.select.func.spec.js +1 -1
- package/ds-data-table-async/slots/DSDataTable.slots.func.spec.js +40 -0
- package/ds-data-table-async/slots/DSDataTable.slots.visual.spec.js +19 -0
- package/ds-data-table-async/sorting/DSDataTable.sorting.visual.spec.js +118 -0
- package/ds-dataviz/DSDataViz.axis.visual.spec.js +2 -1
- package/ds-dataviz/DSDataViz.scroll.visual.spec.js +1 -0
- package/ds-dataviz/DSDataViz.ticks.visual.spec.js +2 -1
- package/ds-dialog/DSDialog.cases.visual.spec.js +3 -4
- package/ds-dialog/DSDialog.visual.spec.js +7 -14
- package/ds-dialog/DSDialogCO.js +5 -13
- package/ds-dialog/axe-core/DSDialog.error.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.info.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.scroll-body.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.success.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.warning.axe-core.spec.func.js +24 -0
- package/ds-dropdownmenu-v2/DSDDMenuV2.visual.spec.js +5 -5
- package/ds-form-combobox-multi/DSComboboxMultiCO.js +96 -1
- package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +7 -3
- package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.mouse.func.spec.js +25 -0
- package/ds-form-combobox-multi/menu-position/DSComboboxMulti.menu-position.visual.spec.js +42 -0
- package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.func.spec.js +100 -0
- package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.visual.spec.js +51 -0
- package/ds-form-combobox-single/DSComboboxSingleCO.js +97 -1
- package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.mouse.func.spec.js +25 -0
- package/ds-form-combobox-single/menu-position/DSComboboxSingle.menu-position.visual.spec.js +93 -0
- package/ds-form-combobox-single/slots/DSComboboxSingle.slots.func.spec.js +100 -0
- package/ds-form-combobox-single/slots/DSComboboxSingle.slots.visual.spec.js +53 -0
- package/ds-form-date-range-picker/aria-disabled/DateRangePicker.applyAriaDisabled.keyboard-nav.func.spec.js +31 -5
- package/ds-form-date-time-picker/DSControlledDateTimePickerCO.js +7 -5
- package/ds-form-date-time-picker/date-input/DateInput.keyboard-nav.func.spec.js +2 -2
- package/ds-form-date-time-picker/date-time-full/DateTimeFull.applyAriaDisabled.axe-core.func.spec.js +1 -1
- package/ds-form-date-time-picker/date-time-full/DateTimeFull.axe-core.func.spec.js +25 -0
- package/ds-form-date-time-picker/date-time-full/DateTimePicker.applyAriaDisabled.keyboard-nav.func.spec.js +6 -1
- package/ds-form-date-time-picker/date-time-full/DateTimePicker.func.spec.js +32 -2
- package/ds-form-date-time-picker/date-time-full/DateTimePicker.keyboard-nav.func.spec.js +6 -1
- package/ds-form-date-time-picker/date-time-full/DateTimePicker.readOnly.keyboard-nav.func.spec.js +6 -1
- package/ds-form-date-time-picker/date-time-input/DateTimeInput.applyAriaDisabled.keyboard-nav.func.spec.js +40 -4
- package/ds-form-date-time-picker/showcase/DateTimePicker.applyAriaDisabled-showcase.visual.spec.js +2 -2
- package/ds-form-date-time-picker/showcase/DateTimePicker.readOnly-showcase.visual.spec.js +2 -2
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItem.axe-core.func.spec.js +4 -1
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +4 -0
- package/ds-form-native-select/NativeSelect.axe-core.func.spec.js +57 -0
- package/ds-form-native-select/NativeSelectCO.js +35 -0
- package/{ds-toggle → ds-form-toggle}/DSToggle.axe-core.func.spec.js +6 -2
- package/{ds-toggle → ds-form-toggle}/DSToggle.func.spec.js +13 -8
- package/{ds-toggle → ds-form-toggle}/DSToggle.visual.spec.js +2 -2
- package/{ds-toggle → ds-form-toggle}/DSToggleCO.js +1 -1
- package/ds-global-header/GlobalHeader.axe-core.func.spec.js +13 -0
- package/ds-global-header/GlobalHeaderCO.js +2 -0
- package/{ds-controlled-form → ds-hooks}/useMask/Number/UseNumberMask.func.spec.js +25 -12
- package/{ds-controlled-form → ds-hooks}/useMask/Number/UseNumberMask.visual.spec.js +4 -1
- package/{ds-controlled-form → ds-hooks}/useMask/Phone/UsePhoneMask.func.spec.js +1 -1
- package/{ds-controlled-form → ds-hooks}/useMask/Phone/UsePhoneMask.visual.spec.js +1 -1
- package/{ds-controlled-form → ds-hooks}/useMask/ReackHookFormWithMask/ReactHookFormWithMask.func.spec.js +1 -1
- package/{ds-controlled-form → ds-hooks}/useMask/ReackHookFormWithMask/ReactHookFormWithMask.visual.spec.js +1 -1
- package/{ds-controlled-form → ds-hooks}/useMask/RegExp/UseRegExpMask.func.spec.js +1 -1
- package/{ds-controlled-form → ds-hooks}/useMask/SSN/UseSsnMask.func.spec.js +1 -1
- package/{ds-controlled-form → ds-hooks}/useMask/ZipCode/UseZipCodeMask.func.spec.js +1 -1
- package/ds-indeterminate-progress-indicator/DSIndetermintateProgressIndicator.axe-core.func.spec.js +31 -0
- package/ds-menu-button/DSMenuButtonCO.js +2 -0
- package/ds-menu-button/basic/DSMenuButton.basic.func.spec.js +28 -0
- package/ds-menu-button/multiselect/DSMenuButton.axe-core.multiselect.func.spec.js +6 -1
- package/ds-menu-button/singleSelect/DSMenuButton.axe-core.singleSelect.func.spec.js +6 -1
- package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +7 -2
- package/ds-menu-item/DSMenuItems.visual.spec.js +8 -32
- package/ds-mobile/MobileDatePicker/MobileDatePicker.visual.spec.js +0 -13
- package/ds-modal-slide/ModalSlideCO.js +2 -0
- package/ds-notification-badge/DSNotificationBadge.axe-core.func.spec.js +1 -1
- package/ds-pagination/DSPagination.axe-core.func.spec.js +64 -0
- package/ds-pagination/DSPaginationCO.js +12 -0
- package/ds-pills-v2/DSPills.visual.spec.js +3 -1
- package/ds-pills-v2/selection/DSPills.axe-core.func.spec.js +6 -1
- package/ds-pills-v2/selection/DSPills.func.spec.js +32 -30
- package/ds-progress-indicator/DSProgressIndicator.axe-core.func.spec.js +31 -0
- package/ds-progress-indicator/DSProgressIndicator.func.spec.js +8 -3
- package/ds-progress-indicator/DSProgressIndicator.visual.spec.js +12 -2
- package/ds-progress-indicator/DSProgressIndicatorCO.js +5 -3
- package/ds-query-builder/DSQueryBuilder.visual.spec.js +10 -3
- package/ds-read-more/DSReadMore.func.spec.js +0 -58
- package/ds-read-more/DSReadMore.keyboard-nav.func.spec.js +66 -0
- package/ds-read-more/DSReadMore.slots.func.spec.js +58 -0
- package/ds-read-more/DSReadMore.slots.visual.spec.js +23 -0
- package/ds-read-more/DSReadMore.visual.spec.js +41 -17
- package/ds-read-more/DSReadMore.width-change.visual.spec.js +85 -0
- package/ds-read-more/DSReadMore.with-tooltip.func.spec.js +63 -0
- package/ds-read-more/DSReadMoreCO.js +20 -0
- package/ds-shuttle-v2/Dnd/DSShuttleV2.DnD.visual.spec.js +3 -0
- package/ds-shuttle-v2/basic/DSShuttleV2.keyboard.func.spec.js +0 -79
- package/ds-shuttle-v2/extra/DSShuttleV2.extra.func.spec.js +6 -2
- package/ds-shuttle-v2/extra/DSShuttleV2.extra.visual.spec.js +21 -0
- package/ds-shuttle-v2/filtering/DSShuttleV2.filter.func.spec.js +8 -3
- package/ds-shuttle-v2/filtering/DSShuttleV2.filter.kb.func.spec.js +43 -0
- package/ds-shuttle-v2/items/DSShuttleV2.items.func.spec.js +3 -2
- package/ds-shuttle-v2/items/DSShuttleV2.items.kb.func.spec.js +1 -1
- package/ds-shuttle-v2/load-more/DSShuttleV2.load-more.keyboard.func.spec.js +61 -0
- package/ds-slider-v2/DSSliderV2.extra.func.spec.js +44 -0
- package/ds-slider-v2/DSSliderV2.func.spec.js +98 -0
- package/ds-slider-v2/DSSliderV2CO.js +8 -0
- package/ds-svg/DSSvg.axe-core.func.spec.js +32 -0
- package/ds-svg/DSSvgCO.js +2 -3
- package/ds-tabs/DSTabs.onTabChange.func.spec.js +33 -0
- package/ds-tabs/DSTabsCO.js +29 -1
- package/ds-tabs/slots/DSTabs.slots.func.spec.js +77 -0
- package/ds-tabs/slots/DSTabs.slots.visual.spec.js +49 -0
- package/ds-tabs/with-carousel/DSTabs.with-carousel.visual.spec.js +5 -4
- package/ds-tooltip-v3/DSTooltipV3CO.js +6 -2
- package/ds-treeview/DSTreeViewCO.js +8 -0
- package/ds-treeview/dragAndDrop/TreeView-dnd.func.spec.js +0 -50
- package/ds-treeview/dragAndDrop/TreeView-dnd_mouse.func.spec.js +61 -0
- package/package.json +188 -187
- package/paths.js +17 -1
- package/ds-dialog/DSDialog.smoke.spec.js +0 -133
- package/ds-slider-v2/DSSliderV2.skipped.js +0 -46
- /package/ds-form-combobox-multi/iframe/{DSComboboxMulti.insideIframe.func.spec.js → DSComboboxMulti.insideIframe.visual.spec.js} +0 -0
- /package/{ds-controlled-form → ds-hooks}/useMask/useMaskCO.js +0 -0
- /package/ds-indeterminate-progress-indicator/{DSIndetermintateProgressIndicator.func.spec.js → DSIndetermintateProgressIndicator.func.spec copy.js} +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17227 - ComboboxMulti:: disabled - A disabled combobox should not receive focus - func', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSComboboxMultiCO.disabled.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: combobox multi disabled should not be focused - clicking Input', async () => {
|
|
12
|
+
const combobox = await DSComboboxMultiCO.getCombobox();
|
|
13
|
+
const input = await DSComboboxMultiCO.getComboboxInput();
|
|
14
|
+
const hiddenInput = await DSComboboxMultiCO.getComboboxHiddenInput();
|
|
15
|
+
await combobox.click();
|
|
16
|
+
await expect(input).not.toBeFocused();
|
|
17
|
+
await expect(hiddenInput).not.toBeFocused();
|
|
18
|
+
});
|
|
19
|
+
it('02: listbox should not be displayed when combobox is disabled', async () => {
|
|
20
|
+
await browser.keys(Key.ArrowDown);
|
|
21
|
+
const listbox = await DSComboboxMultiCO.getMenuList();
|
|
22
|
+
await expect(listbox).not.toBeDisplayed();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17080 - ComboboxMulti:: Menu position - visual', () => {
|
|
7
|
+
beforeEach('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSComboboxMultiCO.floatingAfterFiltering.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
await browser.maximizeWindow();
|
|
11
|
+
});
|
|
12
|
+
it('01: should open menu correctly', async () => {
|
|
13
|
+
await browser.eyesOpen();
|
|
14
|
+
await browser.keys(Key.Tab);
|
|
15
|
+
await browser.keys(Key.Return);
|
|
16
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
17
|
+
DSComboboxMultiCO.snapshotPath('combobox-multi-floating-after-open-menu'),
|
|
18
|
+
);
|
|
19
|
+
await expect(snapshot).toEqual(0);
|
|
20
|
+
});
|
|
21
|
+
it('02: should display the menu correctly after filtering - existing option', async () => {
|
|
22
|
+
await browser.eyesOpen();
|
|
23
|
+
await browser.keys(Key.Tab);
|
|
24
|
+
await browser.keys(Key.Return);
|
|
25
|
+
await browser.keys('t');
|
|
26
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
27
|
+
DSComboboxMultiCO.snapshotPath('combobox-multi-floating-after-filtering-existing-option'),
|
|
28
|
+
);
|
|
29
|
+
await expect(snapshot).toEqual(0);
|
|
30
|
+
});
|
|
31
|
+
it('03: should display the menu correctly after filtering - new option', async () => {
|
|
32
|
+
await browser.eyesOpen();
|
|
33
|
+
await browser.keys(Key.Tab);
|
|
34
|
+
await browser.keys(Key.Return);
|
|
35
|
+
await browser.keys('this is a test');
|
|
36
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
37
|
+
DSComboboxMultiCO.snapshotPath('combobox-multi-floating-after-filtering-new-option'),
|
|
38
|
+
);
|
|
39
|
+
await expect(snapshot).toEqual(0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
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-17260 - ComboboxMulti:: Slots - Controlled Menu and Sections -Func', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSComboboxMultiCO.controlledMenuStateWithSectionsSlotsTest.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('01: should have custom aria-* for each slot', async () => {
|
|
16
|
+
const comboboxRootSlot = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
17
|
+
const comboboxInputWrapperSlot = await DSComboboxMultiCO.getComboboxInputWrapperSlot();
|
|
18
|
+
const comboboxInputSlot = await DSComboboxMultiCO.getComboboxInputSlot();
|
|
19
|
+
const comboboxDropdownButtonSlot = await DSComboboxMultiCO.getComboboxDropDownMenuBtnSlot();
|
|
20
|
+
const comboboxFastlistWrapperList = await DSComboboxMultiCO.getFastListSlot();
|
|
21
|
+
const comboboxMenuItemLabel = await DSComboboxMultiCO.getComboboxMenuItemSlotByIndex(0);
|
|
22
|
+
const comboboxSectionLabel = await DSComboboxMultiCO.getComboboxSectionLabelByIndex(0);
|
|
23
|
+
const comboboxSectionWrapper = await DSComboboxMultiCO.getComboboxSectionWrapperSlotByIndex(0);
|
|
24
|
+
await expect(comboboxRootSlot).toHaveAttribute('aria-label', 'root aria');
|
|
25
|
+
await expect(comboboxInputWrapperSlot).toHaveAttribute('aria-label', 'inputwrapper aria');
|
|
26
|
+
await expect(comboboxInputSlot).toHaveAttribute('aria-label', 'input aria');
|
|
27
|
+
await expect(comboboxDropdownButtonSlot).toHaveAttribute('aria-label', 'ddbutton aria');
|
|
28
|
+
await expect(comboboxFastlistWrapperList).toHaveAttribute('aria-label', 'fastlist aria');
|
|
29
|
+
await expect(comboboxMenuItemLabel).toHaveAttribute('aria-label', 'multimenuitem aria');
|
|
30
|
+
await expect(comboboxSectionLabel).toHaveAttribute('aria-label', 'sectionlabel aria');
|
|
31
|
+
await expect(comboboxSectionWrapper).toHaveAttribute('aria-label', 'sectionwrapper aria');
|
|
32
|
+
});
|
|
33
|
+
it('02: should have custom data-* for each slot', async () => {
|
|
34
|
+
const comboboxRootSlot = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
35
|
+
const comboboxInputWrapperSlot = await DSComboboxMultiCO.getComboboxInputWrapperSlot();
|
|
36
|
+
const comboboxInputSlot = await DSComboboxMultiCO.getComboboxInputSlot();
|
|
37
|
+
const comboboxDropdownButtonSlot = await DSComboboxMultiCO.getComboboxDropDownMenuBtnSlot();
|
|
38
|
+
const comboboxFastlistWrapperList = await DSComboboxMultiCO.getFastListSlot();
|
|
39
|
+
const comboboxMenuItemLabel = await DSComboboxMultiCO.getComboboxMenuItemSlotByIndex(0);
|
|
40
|
+
const comboboxSectionLabel = await DSComboboxMultiCO.getComboboxSectionLabelByIndex(0);
|
|
41
|
+
const comboboxSectionWrapper = await DSComboboxMultiCO.getComboboxSectionWrapperSlotByIndex(0);
|
|
42
|
+
await expect(comboboxRootSlot).toHaveAttribute('data-testid', 'root data');
|
|
43
|
+
await expect(comboboxInputWrapperSlot).toHaveAttribute('data-testid', 'inputwrapper data');
|
|
44
|
+
await expect(comboboxInputSlot).toHaveAttribute('data-testid', 'input data');
|
|
45
|
+
await expect(comboboxDropdownButtonSlot).toHaveAttribute('data-testid', 'ddbutton data');
|
|
46
|
+
await expect(comboboxFastlistWrapperList).toHaveAttribute('data-testid', 'fastlist data');
|
|
47
|
+
await expect(comboboxMenuItemLabel).toHaveAttribute('data-testid', 'multimenuitem data');
|
|
48
|
+
await expect(comboboxSectionLabel).toHaveAttribute('data-testid', 'sectionlabel data');
|
|
49
|
+
await expect(comboboxSectionWrapper).toHaveAttribute('data-testid', 'sectionwrapper data');
|
|
50
|
+
});
|
|
51
|
+
it('03: should have custom lang for each slot', async () => {
|
|
52
|
+
const comboboxRootSlot = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
53
|
+
const comboboxInputWrapperSlot = await DSComboboxMultiCO.getComboboxInputWrapperSlot();
|
|
54
|
+
const comboboxInputSlot = await DSComboboxMultiCO.getComboboxInputSlot();
|
|
55
|
+
const comboboxDropdownButtonSlot = await DSComboboxMultiCO.getComboboxDropDownMenuBtnSlot();
|
|
56
|
+
const comboboxFastlistWrapperList = await DSComboboxMultiCO.getFastListSlot();
|
|
57
|
+
const comboboxMenuItemLabel = await DSComboboxMultiCO.getComboboxMenuItemSlotByIndex(0);
|
|
58
|
+
const comboboxSectionLabel = await DSComboboxMultiCO.getComboboxSectionLabelByIndex(0);
|
|
59
|
+
const comboboxSectionWrapper = await DSComboboxMultiCO.getComboboxSectionWrapperSlotByIndex(0);
|
|
60
|
+
await expect(comboboxRootSlot).toHaveAttribute('lang', 'pt');
|
|
61
|
+
await expect(comboboxInputWrapperSlot).toHaveAttribute('lang', 'es');
|
|
62
|
+
await expect(comboboxInputSlot).toHaveAttribute('lang', 'de');
|
|
63
|
+
await expect(comboboxDropdownButtonSlot).toHaveAttribute('lang', 'en');
|
|
64
|
+
await expect(comboboxFastlistWrapperList).toHaveAttribute('lang', 'fr');
|
|
65
|
+
await expect(comboboxMenuItemLabel).toHaveAttribute('lang', 'it');
|
|
66
|
+
await expect(comboboxSectionLabel).toHaveAttribute('lang', 'nl');
|
|
67
|
+
await expect(comboboxSectionWrapper).toHaveAttribute('lang', 'sv');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe('PUI-17261 - ComboboxMulti:: Slots - Loading Indicator -Func', () => {
|
|
72
|
+
before('loading page', async () => {
|
|
73
|
+
const errorOnGo = await DSComboboxMultiCO.loadingIndicatorSlotsTest.go();
|
|
74
|
+
if (errorOnGo) throw errorOnGo;
|
|
75
|
+
});
|
|
76
|
+
it('01: should have custom data-*, aria-* and lang for loading indicator specific slots', async () => {
|
|
77
|
+
const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
78
|
+
await combobox.click();
|
|
79
|
+
const dsComboboxLoadingIndicator = await DSComboboxMultiCO.getComboboxLoadingIndicator();
|
|
80
|
+
await expect(dsComboboxLoadingIndicator).toHaveAttribute('aria-label', 'loadingindicator aria');
|
|
81
|
+
await expect(dsComboboxLoadingIndicator).toHaveAttribute('data-testid', 'loadingindicator data');
|
|
82
|
+
await expect(dsComboboxLoadingIndicator).toHaveAttribute('lang', 'it');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
describe('PUI-17262 - ComboboxMulti:: Slots - Skeleton -Func', () => {
|
|
87
|
+
before('loading page', async () => {
|
|
88
|
+
const errorOnGo = await DSComboboxMultiCO.skeletonSlotsTest.go();
|
|
89
|
+
if (errorOnGo) throw errorOnGo;
|
|
90
|
+
});
|
|
91
|
+
it('01: should have custom data-*, aria-* and lang for skeleton specific slots', async () => {
|
|
92
|
+
const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
93
|
+
await combobox.click();
|
|
94
|
+
const comboboxSkeleton = await DSComboboxMultiCO.getComboboxSkeletonMenuItem();
|
|
95
|
+
await expect(comboboxSkeleton).toHaveAttribute('aria-label', 'skeletonmenuitem aria');
|
|
96
|
+
await expect(comboboxSkeleton).toHaveAttribute('data-testid', 'skeletonmenuitem data');
|
|
97
|
+
await expect(comboboxSkeleton).toHaveAttribute('lang', 'ja');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet
|
|
7
|
+
) {
|
|
8
|
+
describe('PUI-17269 - ComboboxMulti:: Slots - Controlled Menu and Sections -Visual', () => {
|
|
9
|
+
before('loading page', async () => {
|
|
10
|
+
const errorOnGo = await DSComboboxMultiCO.controlledMenuStateWithSectionsSlotsTest.go();
|
|
11
|
+
if (errorOnGo) throw errorOnGo;
|
|
12
|
+
});
|
|
13
|
+
it('01: should display basic combobox multi with customized slots', async () => {
|
|
14
|
+
await browser.eyesOpen();
|
|
15
|
+
const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
16
|
+
await combobox.waitForDisplayed();
|
|
17
|
+
const snapshot = await browser.eyesCheckSnapshot(DSComboboxMultiCO.snapshotPath('combo-multi-slots-basic'));
|
|
18
|
+
await expect(snapshot).toEqual(0);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('PUI-17268 - ComboboxMulti:: Slots - Loading Indicator -Visual', () => {
|
|
23
|
+
before('loading page', async () => {
|
|
24
|
+
const errorOnGo = await DSComboboxMultiCO.loadingIndicatorSlotsTest.go();
|
|
25
|
+
if (errorOnGo) throw errorOnGo;
|
|
26
|
+
});
|
|
27
|
+
it('01: should display combobox multi with loading indicator with customized slots', async () => {
|
|
28
|
+
await browser.eyesOpen();
|
|
29
|
+
const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
30
|
+
await combobox.click();
|
|
31
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
32
|
+
DSComboboxMultiCO.snapshotPath('combo-multi-slots-loading-indicator'),
|
|
33
|
+
);
|
|
34
|
+
await expect(snapshot).toEqual(0);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('PUI-17267 - ComboboxMulti:: Slots - Skeleton -Visual', () => {
|
|
39
|
+
before('loading page', async () => {
|
|
40
|
+
const errorOnGo = await DSComboboxMultiCO.skeletonSlotsTest.go();
|
|
41
|
+
if (errorOnGo) throw errorOnGo;
|
|
42
|
+
});
|
|
43
|
+
it('01: should display basic combobox multi with skeleton with customized slots', async () => {
|
|
44
|
+
await browser.eyesOpen();
|
|
45
|
+
const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
|
|
46
|
+
await combobox.click();
|
|
47
|
+
const snapshot = await browser.eyesCheckSnapshot(DSComboboxMultiCO.snapshotPath('combo-multi-slots-skeleton'));
|
|
48
|
+
await expect(snapshot).toEqual(0);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Key } from 'webdriverio';
|
|
2
|
-
import { PATH_E2E_COMBOBOX_SINGLE } from '../paths';
|
|
2
|
+
import { PATH_E2E_COMBOBOX_SINGLE, PATH_E2E_COMBOBOX_SINGLE_SLOTS } from '../paths';
|
|
3
3
|
import { PageObject, Urlbuilder } from '../helpers';
|
|
4
4
|
|
|
5
5
|
export default class DSComboboxSingleCO extends PageObject {
|
|
@@ -10,8 +10,25 @@ export default class DSComboboxSingleCO extends PageObject {
|
|
|
10
10
|
|
|
11
11
|
static hundredAndOneOptions = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'hundred-and-one-options-test');
|
|
12
12
|
|
|
13
|
+
static skeletonFloating = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'skeleton-floating-after-filtering');
|
|
14
|
+
|
|
15
|
+
static loadingFloating = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'loading-floating-after-filtering');
|
|
16
|
+
|
|
13
17
|
static readOnlyWithMenuOpenable = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'read-only-with-menu-openable-test');
|
|
14
18
|
|
|
19
|
+
static controlledMenuStateWithSectionsSlotsTest = new Urlbuilder(
|
|
20
|
+
PATH_E2E_COMBOBOX_SINGLE_SLOTS,
|
|
21
|
+
'controlled-menu-state-with-section-slots-test',
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
static loadingIndicatorSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE_SLOTS, 'loading-indicator-slots-test');
|
|
25
|
+
|
|
26
|
+
static skeletonSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE_SLOTS, 'skeleton-slots-test');
|
|
27
|
+
|
|
28
|
+
static floatingAfterFiltering = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'floating-after-filtering');
|
|
29
|
+
|
|
30
|
+
static disabled = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'disabled-test');
|
|
31
|
+
|
|
15
32
|
// COMBOBOX - INPUT
|
|
16
33
|
static async getCombobox() {
|
|
17
34
|
return $('[data-testid="combobox-container"]');
|
|
@@ -21,6 +38,10 @@ export default class DSComboboxSingleCO extends PageObject {
|
|
|
21
38
|
return $('[data-testid="combobox-controls-wrapper"]');
|
|
22
39
|
}
|
|
23
40
|
|
|
41
|
+
static async getComboboxWrapperByIndex(index) {
|
|
42
|
+
return $$('[data-testid="combobox-controls-wrapper"]')[index];
|
|
43
|
+
}
|
|
44
|
+
|
|
24
45
|
static async getComboboxByIndex(index) {
|
|
25
46
|
return $$('[data-testid="combobox-container"]')[index];
|
|
26
47
|
}
|
|
@@ -41,6 +62,14 @@ export default class DSComboboxSingleCO extends PageObject {
|
|
|
41
62
|
return $$('[data-testid="combobox-input"]')[index];
|
|
42
63
|
}
|
|
43
64
|
|
|
65
|
+
static async getComboboxHiddenInput() {
|
|
66
|
+
return $('input[aria-hidden="true"]');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static async getComboboxHiddenInputByIndex(index) {
|
|
70
|
+
return $$('input[aria-hidden="true"]')[index];
|
|
71
|
+
}
|
|
72
|
+
|
|
44
73
|
static async getSelectedValues() {
|
|
45
74
|
return $('[data-testid="combobox-selected-values"]');
|
|
46
75
|
}
|
|
@@ -152,6 +181,73 @@ export default class DSComboboxSingleCO extends PageObject {
|
|
|
152
181
|
return $('[data-testid="popover-container"]');
|
|
153
182
|
}
|
|
154
183
|
|
|
184
|
+
// Slots
|
|
185
|
+
|
|
186
|
+
static async getComboboxRootSlot() {
|
|
187
|
+
return $('[data-dimsum-slot="dsComboboxRoot"]');
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
static async getComboboxInputWrapperSlot() {
|
|
191
|
+
return $('[data-dimsum-slot="dsComboboxInputWrapper"]');
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
static async getComboboxInputSlot() {
|
|
195
|
+
return $('[data-dimsum-slot="dsComboboxInput"]');
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
static async getComboboxDropDownMenuBtnSlot() {
|
|
199
|
+
return $('[data-dimsum-parent-slot="dsComboboxDropdownButton"]');
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
static async getFloatingWrapperRootSlot() {
|
|
203
|
+
return $('[data-dimsum-slot="dsFloatingwrapperRoot"]');
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
static async getFloatingWrapperContentSlot() {
|
|
207
|
+
return $('[data-dimsum-slot="dsFloatingwrapperContent"]');
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
static async getFastListContainerSlot() {
|
|
211
|
+
return $('[data-dimsum-parent-slot="dsComboboxFastList"]');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
static async getFastListSlot() {
|
|
215
|
+
return $('[data-dimsum-slot="dsFastlistContainer"]');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
static async getFastListItemSlot() {
|
|
219
|
+
return $('[data-dimsum-slot="dsFastlistItem"]');
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
static async getMenuitemMenuItemWrapperSlot() {
|
|
223
|
+
return $('[data-dimsum-slot="dsMenuitemMenuItemWrapper"]');
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
static async getMenuitemMenuItemsContentWrapperSlotByIndex(index) {
|
|
227
|
+
return $$('[data-dimsum-slot="dsMenuitemMenuItemContentWrapper"]')[index];
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
static async getComboboxMenuItemSlotByIndex(index) {
|
|
231
|
+
return $$('[data-dimsum-parent-slot="dsComboboxSingleMenuItem"]')[index];
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
static async getComboboxLoadingIndicator() {
|
|
235
|
+
return $('[data-dimsum-parent-slot="dsComboboxLoadingIndicator"]');
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
static async getComboboxSkeletonMenuItem() {
|
|
239
|
+
return $('[data-dimsum-parent-slot="dsComboboxSkeletonMenuItem"]');
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
static async getComboboxSectionLabelByIndex(index) {
|
|
243
|
+
return $$('[data-dimsum-slot="dsComboboxSectionLabel"]')[index];
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
static async getComboboxSectionWrapperSlotByIndex(index) {
|
|
247
|
+
return $$('[data-dimsum-slot="dsComboboxSectionWrapper"]')[index];
|
|
248
|
+
}
|
|
249
|
+
// Slots end
|
|
250
|
+
|
|
155
251
|
// actions
|
|
156
252
|
|
|
157
253
|
static async openMenuUsingKeyboard() {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17226 - ComboboxSingle:: disabled - A disabled combobox should not receive focus - func', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSComboboxSingleCO.disabled.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: combobox single disabled should not be focused - clicking Input', async () => {
|
|
12
|
+
const combobox = await DSComboboxSingleCO.getComboboxByIndex(0);
|
|
13
|
+
const input = await DSComboboxSingleCO.getComboboxInputByIndex(0);
|
|
14
|
+
const hiddenInput = await DSComboboxSingleCO.getComboboxHiddenInputByIndex(0);
|
|
15
|
+
await combobox.click();
|
|
16
|
+
await expect(input).not.toBeFocused();
|
|
17
|
+
await expect(hiddenInput).not.toBeFocused();
|
|
18
|
+
});
|
|
19
|
+
it('02: listbox should not be displayed when combobox is disabled', async () => {
|
|
20
|
+
await browser.keys(Key.ArrowDown);
|
|
21
|
+
const listbox = await DSComboboxSingleCO.getMenuList();
|
|
22
|
+
await expect(listbox).not.toBeDisplayed();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17081 - ComboboxSingle:: Menu position - visual', () => {
|
|
7
|
+
beforeEach('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSComboboxSingleCO.floatingAfterFiltering.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
await browser.maximizeWindow();
|
|
11
|
+
});
|
|
12
|
+
it('01: should open menu and display it correctly', async () => {
|
|
13
|
+
await browser.eyesOpen();
|
|
14
|
+
await browser.keys(Key.Tab);
|
|
15
|
+
await browser.keys(Key.Return);
|
|
16
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
17
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-floating-after-open-menu'),
|
|
18
|
+
);
|
|
19
|
+
await expect(snapshot).toEqual(0);
|
|
20
|
+
});
|
|
21
|
+
it('02: should display the menu correctly after filtering - existing option', async () => {
|
|
22
|
+
await browser.eyesOpen();
|
|
23
|
+
await browser.keys(Key.Tab);
|
|
24
|
+
await browser.keys(Key.Return);
|
|
25
|
+
await browser.keys('t');
|
|
26
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
27
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-floating-after-filtering-existing-option'),
|
|
28
|
+
);
|
|
29
|
+
await expect(snapshot).toEqual(0);
|
|
30
|
+
});
|
|
31
|
+
it('03: should display the menu correctly after filtering - no matches', async () => {
|
|
32
|
+
await browser.eyesOpen();
|
|
33
|
+
await browser.keys(Key.Tab);
|
|
34
|
+
await browser.keys(Key.Return);
|
|
35
|
+
await browser.keys('this is a test');
|
|
36
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
37
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-floating-after-filtering-no-matches'),
|
|
38
|
+
);
|
|
39
|
+
await expect(snapshot).toEqual(0);
|
|
40
|
+
});
|
|
41
|
+
it('04: should display the menu correctly after erasing text - no matches', async () => {
|
|
42
|
+
await browser.eyesOpen();
|
|
43
|
+
await browser.keys(Key.Tab);
|
|
44
|
+
await browser.keys(Key.Return);
|
|
45
|
+
await browser.keys('f');
|
|
46
|
+
await browser.keys(Key.Backspace);
|
|
47
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
48
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-floating-after-erase-letter'),
|
|
49
|
+
);
|
|
50
|
+
await expect(snapshot).toEqual(0);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
describe('PUI-17169 - ComboboxSingle:: Menu position after Loading - visual', () => {
|
|
55
|
+
before('loading page', async () => {
|
|
56
|
+
const errorOnGo = await DSComboboxSingleCO.loadingFloating.go();
|
|
57
|
+
if (errorOnGo) throw errorOnGo;
|
|
58
|
+
await browser.maximizeWindow();
|
|
59
|
+
});
|
|
60
|
+
it('01: should filter, wait for options to load and be correctly placed', async () => {
|
|
61
|
+
await browser.eyesOpen();
|
|
62
|
+
await browser.keys(Key.Tab);
|
|
63
|
+
await browser.keys(Key.Return);
|
|
64
|
+
await browser.keys('t');
|
|
65
|
+
const options = await DSComboboxSingleCO.getOptionByIndex(0);
|
|
66
|
+
await options.waitForDisplayed();
|
|
67
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
68
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-floating-after-loading'),
|
|
69
|
+
);
|
|
70
|
+
await expect(snapshot).toEqual(0);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
describe('PUI-17170 - ComboboxSingle:: Menu position after Skeleton - visual', () => {
|
|
75
|
+
before('loading page', async () => {
|
|
76
|
+
const errorOnGo = await DSComboboxSingleCO.skeletonFloating.go();
|
|
77
|
+
if (errorOnGo) throw errorOnGo;
|
|
78
|
+
await browser.maximizeWindow();
|
|
79
|
+
});
|
|
80
|
+
it('01: should filter, wait for options to load and be correctly placed', async () => {
|
|
81
|
+
await browser.eyesOpen();
|
|
82
|
+
await browser.keys(Key.Tab);
|
|
83
|
+
await browser.keys(Key.Return);
|
|
84
|
+
await browser.keys('t');
|
|
85
|
+
const options = await DSComboboxSingleCO.getOptionByIndex(0);
|
|
86
|
+
await options.waitForDisplayed();
|
|
87
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
88
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-floating-after-skeleton'),
|
|
89
|
+
);
|
|
90
|
+
await expect(snapshot).toEqual(0);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
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-16558 - ComboboxSingle:: Slots - Controlled Menu and Sections -Func', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSComboboxSingleCO.controlledMenuStateWithSectionsSlotsTest.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('01: should have custom aria-* for each slot', async () => {
|
|
16
|
+
const comboboxRootSlot = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
17
|
+
const comboboxInputWrapperSlot = await DSComboboxSingleCO.getComboboxInputWrapperSlot();
|
|
18
|
+
const comboboxInputSlot = await DSComboboxSingleCO.getComboboxInputSlot();
|
|
19
|
+
const comboboxDropdownButtonSlot = await DSComboboxSingleCO.getComboboxDropDownMenuBtnSlot();
|
|
20
|
+
const comboboxFastlistWrapperList = await DSComboboxSingleCO.getFastListSlot();
|
|
21
|
+
const comboboxMenuItemLabel = await DSComboboxSingleCO.getComboboxMenuItemSlotByIndex(0);
|
|
22
|
+
const comboboxSectionLabel = await DSComboboxSingleCO.getComboboxSectionLabelByIndex(0);
|
|
23
|
+
const comboboxSectionWrapper = await DSComboboxSingleCO.getComboboxSectionWrapperSlotByIndex(0);
|
|
24
|
+
await expect(comboboxRootSlot).toHaveAttribute('aria-label', 'root aria');
|
|
25
|
+
await expect(comboboxInputWrapperSlot).toHaveAttribute('aria-label', 'inputwrapper aria');
|
|
26
|
+
await expect(comboboxInputSlot).toHaveAttribute('aria-label', 'input aria');
|
|
27
|
+
await expect(comboboxDropdownButtonSlot).toHaveAttribute('aria-label', 'ddbutton aria');
|
|
28
|
+
await expect(comboboxFastlistWrapperList).toHaveAttribute('aria-label', 'fastlist aria');
|
|
29
|
+
await expect(comboboxMenuItemLabel).toHaveAttribute('aria-label', 'singlemenuitem aria');
|
|
30
|
+
await expect(comboboxSectionLabel).toHaveAttribute('aria-label', 'sectionlabel aria');
|
|
31
|
+
await expect(comboboxSectionWrapper).toHaveAttribute('aria-label', 'sectionwrapper aria');
|
|
32
|
+
});
|
|
33
|
+
it('02: should have custom data-* for each slot', async () => {
|
|
34
|
+
const comboboxRootSlot = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
35
|
+
const comboboxInputWrapperSlot = await DSComboboxSingleCO.getComboboxInputWrapperSlot();
|
|
36
|
+
const comboboxInputSlot = await DSComboboxSingleCO.getComboboxInputSlot();
|
|
37
|
+
const comboboxDropdownButtonSlot = await DSComboboxSingleCO.getComboboxDropDownMenuBtnSlot();
|
|
38
|
+
const comboboxFastlistWrapperList = await DSComboboxSingleCO.getFastListSlot();
|
|
39
|
+
const comboboxMenuItemLabel = await DSComboboxSingleCO.getComboboxMenuItemSlotByIndex(0);
|
|
40
|
+
const comboboxSectionLabel = await DSComboboxSingleCO.getComboboxSectionLabelByIndex(0);
|
|
41
|
+
const comboboxSectionWrapper = await DSComboboxSingleCO.getComboboxSectionWrapperSlotByIndex(0);
|
|
42
|
+
await expect(comboboxRootSlot).toHaveAttribute('data-testid', 'root data');
|
|
43
|
+
await expect(comboboxInputWrapperSlot).toHaveAttribute('data-testid', 'inputwrapper data');
|
|
44
|
+
await expect(comboboxInputSlot).toHaveAttribute('data-testid', 'input data');
|
|
45
|
+
await expect(comboboxDropdownButtonSlot).toHaveAttribute('data-testid', 'ddbutton data');
|
|
46
|
+
await expect(comboboxFastlistWrapperList).toHaveAttribute('data-testid', 'fastlist data');
|
|
47
|
+
await expect(comboboxMenuItemLabel).toHaveAttribute('data-testid', 'singlemenuitem data');
|
|
48
|
+
await expect(comboboxSectionLabel).toHaveAttribute('data-testid', 'sectionlabel data');
|
|
49
|
+
await expect(comboboxSectionWrapper).toHaveAttribute('data-testid', 'sectionwrapper data');
|
|
50
|
+
});
|
|
51
|
+
it('03: should have custom lang for each slot', async () => {
|
|
52
|
+
const comboboxRootSlot = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
53
|
+
const comboboxInputWrapperSlot = await DSComboboxSingleCO.getComboboxInputWrapperSlot();
|
|
54
|
+
const comboboxInputSlot = await DSComboboxSingleCO.getComboboxInputSlot();
|
|
55
|
+
const comboboxDropdownButtonSlot = await DSComboboxSingleCO.getComboboxDropDownMenuBtnSlot();
|
|
56
|
+
const comboboxFastlistWrapperList = await DSComboboxSingleCO.getFastListSlot();
|
|
57
|
+
const comboboxMenuItemLabel = await DSComboboxSingleCO.getComboboxMenuItemSlotByIndex(0);
|
|
58
|
+
const comboboxSectionLabel = await DSComboboxSingleCO.getComboboxSectionLabelByIndex(0);
|
|
59
|
+
const comboboxSectionWrapper = await DSComboboxSingleCO.getComboboxSectionWrapperSlotByIndex(0);
|
|
60
|
+
await expect(comboboxRootSlot).toHaveAttribute('lang', 'ja');
|
|
61
|
+
await expect(comboboxInputWrapperSlot).toHaveAttribute('lang', 'it');
|
|
62
|
+
await expect(comboboxInputSlot).toHaveAttribute('lang', 'de');
|
|
63
|
+
await expect(comboboxDropdownButtonSlot).toHaveAttribute('lang', 'fr');
|
|
64
|
+
await expect(comboboxFastlistWrapperList).toHaveAttribute('lang', 'es');
|
|
65
|
+
await expect(comboboxMenuItemLabel).toHaveAttribute('lang', 'pt');
|
|
66
|
+
await expect(comboboxSectionLabel).toHaveAttribute('lang', 'zh');
|
|
67
|
+
await expect(comboboxSectionWrapper).toHaveAttribute('lang', 'ru');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe('PUI-16559 - ComboboxSingle:: Slots - Loading Indicator -Func', () => {
|
|
72
|
+
before('loading page', async () => {
|
|
73
|
+
const errorOnGo = await DSComboboxSingleCO.loadingIndicatorSlotsTest.go();
|
|
74
|
+
if (errorOnGo) throw errorOnGo;
|
|
75
|
+
});
|
|
76
|
+
it('01: should have custom data-*, aria-* and lang for loading indicator specific slots', async () => {
|
|
77
|
+
const combobox = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
78
|
+
await combobox.click();
|
|
79
|
+
const dsComboboxLoadingIndicator = await DSComboboxSingleCO.getComboboxLoadingIndicator();
|
|
80
|
+
await expect(dsComboboxLoadingIndicator).toHaveAttribute('aria-label', 'loadingindicator aria');
|
|
81
|
+
await expect(dsComboboxLoadingIndicator).toHaveAttribute('data-testid', 'loadingindicator data');
|
|
82
|
+
await expect(dsComboboxLoadingIndicator).toHaveAttribute('lang', 'it');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
describe('PUI-16560 - ComboboxSingle:: Slots - Skeleton -Func', () => {
|
|
87
|
+
before('loading page', async () => {
|
|
88
|
+
const errorOnGo = await DSComboboxSingleCO.skeletonSlotsTest.go();
|
|
89
|
+
if (errorOnGo) throw errorOnGo;
|
|
90
|
+
});
|
|
91
|
+
it('01: should have custom data-*, aria-* and lang for skeleton specific slots', async () => {
|
|
92
|
+
const combobox = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
93
|
+
await combobox.click();
|
|
94
|
+
const comboboxSkeleton = await DSComboboxSingleCO.getComboboxSkeletonMenuItem();
|
|
95
|
+
await expect(comboboxSkeleton).toHaveAttribute('aria-label', 'skeleton aria');
|
|
96
|
+
await expect(comboboxSkeleton).toHaveAttribute('data-testid', 'skeleton data');
|
|
97
|
+
await expect(comboboxSkeleton).toHaveAttribute('lang', 'ja');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
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-17270 - ComboboxSingle:: Slots - Controlled Menu and Sections -Visual', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSComboboxSingleCO.controlledMenuStateWithSectionsSlotsTest.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('01: should display basic combobox single with customized slots', async () => {
|
|
16
|
+
await browser.eyesOpen();
|
|
17
|
+
const combobox = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
18
|
+
await combobox.waitForDisplayed();
|
|
19
|
+
const snapshot = await browser.eyesCheckSnapshot(DSComboboxSingleCO.snapshotPath('combo-single-slots-basic'));
|
|
20
|
+
await expect(snapshot).toEqual(0);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('PUI-17271 - ComboboxSingle:: Slots - Loading Indicator -Visual', () => {
|
|
25
|
+
before('loading page', async () => {
|
|
26
|
+
const errorOnGo = await DSComboboxSingleCO.loadingIndicatorSlotsTest.go();
|
|
27
|
+
if (errorOnGo) throw errorOnGo;
|
|
28
|
+
});
|
|
29
|
+
it('01: should display combobox single with loading indicator with customized slots', async () => {
|
|
30
|
+
await browser.eyesOpen();
|
|
31
|
+
const combobox = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
32
|
+
await combobox.click();
|
|
33
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
34
|
+
DSComboboxSingleCO.snapshotPath('combo-single-slots-loading-indicator'),
|
|
35
|
+
);
|
|
36
|
+
await expect(snapshot).toEqual(0);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe('PUI-17273 - ComboboxSingle:: Slots - Skeleton -Visual', () => {
|
|
41
|
+
before('loading page', async () => {
|
|
42
|
+
const errorOnGo = await DSComboboxSingleCO.skeletonSlotsTest.go();
|
|
43
|
+
if (errorOnGo) throw errorOnGo;
|
|
44
|
+
});
|
|
45
|
+
it('01: should display basic combobox single with skeleton with customized slots', async () => {
|
|
46
|
+
await browser.eyesOpen();
|
|
47
|
+
const combobox = await DSComboboxSingleCO.getComboboxRootSlot();
|
|
48
|
+
await combobox.click();
|
|
49
|
+
const snapshot = await browser.eyesCheckSnapshot(DSComboboxSingleCO.snapshotPath('combo-single-slots-skeleton'));
|
|
50
|
+
await expect(snapshot).toEqual(0);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|