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,40 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSDataTableCO from '../DSDataTableCO';
|
|
3
|
+
import DSFiltersCO from '../components/FiltersCO';
|
|
4
|
+
|
|
5
|
+
if (
|
|
6
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
7
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
8
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
9
|
+
browser.capabilities.browserName === 'Chrome'
|
|
10
|
+
) {
|
|
11
|
+
describe('PUI-17326 - DataTable:: FreeTextSearch Slots - Func', () => {
|
|
12
|
+
before('loading page', async () => {
|
|
13
|
+
const errorOnGo = await DSDataTableCO.slotsFilters.go();
|
|
14
|
+
if (errorOnGo) throw errorOnGo;
|
|
15
|
+
});
|
|
16
|
+
it('01: should have custom aria-* for each slot', async () => {
|
|
17
|
+
await DSFiltersCO.openFilterPopperByColumnName('name');
|
|
18
|
+
const dataTableFilterPopoverSlot = await DSFiltersCO.getFilterPopoverSlot();
|
|
19
|
+
const dataTableFilterPopoverContent = await DSFiltersCO.getFilterMenuContentSlot();
|
|
20
|
+
const dataTableFreeTextSearchWrapperSlot = await DSFiltersCO.getFreeTextSearchWrapperSlot();
|
|
21
|
+
const dataTableFreeTextSearchFilterSlot = await DSFiltersCO.getFreeTextSearchFilterSlot();
|
|
22
|
+
|
|
23
|
+
await expect(dataTableFilterPopoverSlot).toHaveAttribute('aria-label', 'Filter popover aria');
|
|
24
|
+
await expect(dataTableFilterPopoverContent).toHaveAttribute('aria-label', 'Filter popover content aria');
|
|
25
|
+
await expect(dataTableFreeTextSearchWrapperSlot).toHaveAttribute('aria-label', 'Free text search wrapper aria');
|
|
26
|
+
await expect(dataTableFreeTextSearchFilterSlot).toHaveAttribute('aria-label', 'Free text search input aria');
|
|
27
|
+
});
|
|
28
|
+
it('02: should have custom data-* for each slot', async () => {
|
|
29
|
+
const dataTableFilterPopoverSlot = await DSFiltersCO.getFilterPopoverSlot();
|
|
30
|
+
const dataTableFilterPopoverContent = await DSFiltersCO.getFilterMenuContentSlot();
|
|
31
|
+
const dataTableFreeTextSearchWrapperSlot = await DSFiltersCO.getFreeTextSearchWrapperSlot();
|
|
32
|
+
const dataTableFreeTextSearchFilterSlot = await DSFiltersCO.getFreeTextSearchFilterSlot();
|
|
33
|
+
|
|
34
|
+
await expect(dataTableFilterPopoverSlot).toHaveAttribute('data-testid', 'Filter popover data');
|
|
35
|
+
await expect(dataTableFilterPopoverContent).toHaveAttribute('data-testid', 'Filter popover content data');
|
|
36
|
+
await expect(dataTableFreeTextSearchWrapperSlot).toHaveAttribute('data-testid', 'Free text search wrapper data');
|
|
37
|
+
await expect(dataTableFreeTextSearchFilterSlot).toHaveAttribute('data-testid', 'Free text search input data');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSDataTableCO from '../DSDataTableCO';
|
|
3
|
+
import FiltersCO from '../components/FiltersCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17327 - DataTable:: FreeTextSearch Slots -Visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSDataTableCO.slotsFilters.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display FreeTextSearch with customized slots', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
await FiltersCO.openFilterPopperByColumnName('name');
|
|
14
|
+
|
|
15
|
+
const snapshot = await browser.eyesCheckSnapshot(DSDataTableCO.snapshotPath('free-text-search-slots'));
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/* eslint-disable max-len */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSDataTableCO from '../DSDataTableCO';
|
|
4
|
+
import { FiltersCO, HeaderCO } from '../components';
|
|
5
|
+
import { asyncMouseOver, mouseOver } from '../../helpers';
|
|
6
|
+
|
|
7
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
8
|
+
describe('PUI-6983 - DataTable, Column header when sorting -visual', async () => {
|
|
9
|
+
before('loading page', async () => {
|
|
10
|
+
const errorOnGo = await DSDataTableCO.sortByColumn.go();
|
|
11
|
+
if (errorOnGo) throw errorOnGo;
|
|
12
|
+
await DSDataTableCO.waitForDataTable();
|
|
13
|
+
});
|
|
14
|
+
it('01: should hover on position header and show the unsorted icon for the column', async () => {
|
|
15
|
+
const positionHeader = await HeaderCO.getHeaderCellByIndex(2);
|
|
16
|
+
await asyncMouseOver(positionHeader);
|
|
17
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('datatable-column-header-unsorted'));
|
|
18
|
+
await expect(snapshot).toEqual(0);
|
|
19
|
+
});
|
|
20
|
+
it('02: should click on position header and sort the rows descending by this column changing the headers icon', async () => {
|
|
21
|
+
await browser.keys(Key.Tab);
|
|
22
|
+
await browser.keys(Key.Tab);
|
|
23
|
+
await browser.keys(Key.Tab);
|
|
24
|
+
await browser.keys(Key.ArrowDown);
|
|
25
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('datatable-column-header-descending'));
|
|
26
|
+
await expect(snapshot).toEqual(0);
|
|
27
|
+
});
|
|
28
|
+
it('03: should click on position header and sort the rows ascending by this column changing the headers icon', async () => {
|
|
29
|
+
await browser.keys(Key.ArrowUp);
|
|
30
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('datatable-column-header-ascending'));
|
|
31
|
+
await expect(snapshot).toEqual(0);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('PUI-7041 - DataTable, Column header truncated -visual', async () => {
|
|
35
|
+
before('loading page', async () => {
|
|
36
|
+
const errorOnGo = await DSDataTableCO.sortByColumn.go();
|
|
37
|
+
if (errorOnGo) throw errorOnGo;
|
|
38
|
+
await DSDataTableCO.waitForDataTable();
|
|
39
|
+
});
|
|
40
|
+
it('Should click on name header and sort the rows ascending by this column changing the headers icon', async () => {
|
|
41
|
+
const countryHeader = await HeaderCO.getHeaderCellByIndex(1);
|
|
42
|
+
await countryHeader.click();
|
|
43
|
+
await asyncMouseOver(countryHeader);
|
|
44
|
+
// eslint-disable-next-line wdio/no-pause
|
|
45
|
+
await browser.pause(1000);
|
|
46
|
+
const snapshot = await browser.checkSnapshot(
|
|
47
|
+
DSDataTableCO.snapshotPath('datatable-column-header-truncated-wtooltip'),
|
|
48
|
+
);
|
|
49
|
+
await expect(snapshot).toEqual(0);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('PUI-14735 - [DataTable] Header - Sort icon visibility - keyboard navigation - visual test', () => {
|
|
53
|
+
before('loading page', async () => {
|
|
54
|
+
const errorOnGo = await DSDataTableCO.sortByColumn.go();
|
|
55
|
+
if (errorOnGo) throw errorOnGo;
|
|
56
|
+
await DSDataTableCO.waitForDataTable();
|
|
57
|
+
});
|
|
58
|
+
it('01: column position focused, all the controls including filter and sort icons are displayed', async () => {
|
|
59
|
+
await browser.keys(Key.Tab);
|
|
60
|
+
await browser.keys(Key.Tab);
|
|
61
|
+
await browser.keys(Key.Tab);
|
|
62
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('datatable-header-kb-focus'));
|
|
63
|
+
await expect(snapshot).toEqual(0);
|
|
64
|
+
});
|
|
65
|
+
it('02: column position focused, all the controls including filter and sort icons are displayed', async () => {
|
|
66
|
+
await browser.keys(Key.Enter);
|
|
67
|
+
await browser.keys(Key.Enter);
|
|
68
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('datatable-header-kb-option-selected'));
|
|
69
|
+
await expect(snapshot).toEqual(0);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('PUI-7054 - DataTable, Header, Sort by Column - Visual Test', () => {
|
|
73
|
+
before('loading page', async () => {
|
|
74
|
+
const errorOnGo = await DSDataTableCO.sortByColumn.go();
|
|
75
|
+
if (errorOnGo) throw errorOnGo;
|
|
76
|
+
await DSDataTableCO.waitForDataTable();
|
|
77
|
+
});
|
|
78
|
+
it('01: should focus position header and show its icons properly', async () => {
|
|
79
|
+
await browser.keys(Key.Tab);
|
|
80
|
+
await browser.keys(Key.Tab);
|
|
81
|
+
await browser.keys(Key.Tab);
|
|
82
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('headers-focus-header'));
|
|
83
|
+
await expect(snapshot).toEqual(0);
|
|
84
|
+
});
|
|
85
|
+
it('02: should hover country header and show its icons properly', async () => {
|
|
86
|
+
const positionHeader = await HeaderCO.getHeaderCellByIndex(3);
|
|
87
|
+
await mouseOver(positionHeader);
|
|
88
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('headers-hover-header'));
|
|
89
|
+
await expect(snapshot).toEqual(0);
|
|
90
|
+
});
|
|
91
|
+
it('03: should hover truncated name header and show its icons and tooltip properly', async () => {
|
|
92
|
+
const nameLongHeader = await HeaderCO.getHeaderCellByIndex(1);
|
|
93
|
+
await mouseOver(nameLongHeader, 50, 10);
|
|
94
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('headers-hover-longheader-wtooltip'));
|
|
95
|
+
await expect(snapshot).toEqual(0);
|
|
96
|
+
});
|
|
97
|
+
it('04: should sort descending by first column and get the proper sort icon', async () => {
|
|
98
|
+
const idHeader = await HeaderCO.getHeaderCellByIndex(0);
|
|
99
|
+
await idHeader.click();
|
|
100
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('headers-descending-icon-id'));
|
|
101
|
+
await expect(snapshot).toEqual(0);
|
|
102
|
+
});
|
|
103
|
+
it('05: should sort ascending by first column and get the proper sort icon', async () => {
|
|
104
|
+
const idHeader = await HeaderCO.getHeaderCellByIndex(0);
|
|
105
|
+
await idHeader.click();
|
|
106
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('headers-ascending-icon-id'));
|
|
107
|
+
await expect(snapshot).toEqual(0);
|
|
108
|
+
});
|
|
109
|
+
it('06: should sort correctly with the filter opened', async () => {
|
|
110
|
+
await FiltersCO.openFilterPopperByColumnName('position');
|
|
111
|
+
const sortIconHeader = await HeaderCO.getSortBtnByIndex(2);
|
|
112
|
+
await sortIconHeader.waitForDisplayed();
|
|
113
|
+
await sortIconHeader.click();
|
|
114
|
+
const snapshot = await browser.checkSnapshot(DSDataTableCO.snapshotPath('sort-with-filter-opened'));
|
|
115
|
+
await expect(snapshot).toEqual(0);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
@@ -65,7 +65,8 @@ if (!browser.capabilities['ice:options'].isPhone) {
|
|
|
65
65
|
|
|
66
66
|
// fails on firefox due to fake-positive of infinte loop
|
|
67
67
|
if (browser.capabilities.browserName !== 'Firefox') {
|
|
68
|
-
|
|
68
|
+
// Skipped until PUI-16334 gets fixed
|
|
69
|
+
describe.skip('PUI-9401 - DSDataViz, TimeLinear axis -Visual', () => {
|
|
69
70
|
before('loading page', async () => {
|
|
70
71
|
const errorOnGo = await DSDataVizCO.timeLinearAxis.go();
|
|
71
72
|
if (errorOnGo) throw errorOnGo;
|
|
@@ -60,6 +60,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
60
60
|
});
|
|
61
61
|
it('01: should display a the chart in default state', async () => {
|
|
62
62
|
await browser.eyesOpen();
|
|
63
|
+
await browser.maximizeWindow();
|
|
63
64
|
const snapshot = await browser.eyesCheckSnapshot(DSDataVizCO.snapshotPath('dataviz-res-default-default'));
|
|
64
65
|
await expect(snapshot).toEqual(0);
|
|
65
66
|
});
|
|
@@ -62,7 +62,8 @@ if (!browser.capabilities['ice:options'].isPhone) {
|
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
// Skipped until PUI-16334 gets fixed
|
|
66
|
+
describe.skip('PUI-10321 - DSDataViz, Force ticks -Visual', () => {
|
|
66
67
|
before('loading page', async () => {
|
|
67
68
|
const errorOnGo = await DSDataVizCO.forceTicks.go();
|
|
68
69
|
if (errorOnGo) throw errorOnGo;
|
|
@@ -23,7 +23,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
23
23
|
const errorOnGo = await DSDialog.decisionURL.go();
|
|
24
24
|
if (errorOnGo) throw errorOnGo;
|
|
25
25
|
});
|
|
26
|
-
it('should display decision DSDialog correctly with discard save', async () => {
|
|
26
|
+
it('01: should display decision DSDialog correctly with discard save', async () => {
|
|
27
27
|
const triggerBtn = await DSDialog.getTriggerBtnByIndex(0);
|
|
28
28
|
await triggerBtn.click();
|
|
29
29
|
const dialog = await DSDialog.getDialog();
|
|
@@ -31,7 +31,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
31
31
|
const snapshot = await browser.checkSnapshot(DSDialog.snapshotPath('dialog-decision-discardsave'));
|
|
32
32
|
await expect(snapshot).toEqual(0);
|
|
33
33
|
});
|
|
34
|
-
it('should display decision DSDialog correctly with close discard save', async () => {
|
|
34
|
+
it('02: should display decision DSDialog correctly with close discard save', async () => {
|
|
35
35
|
await browser.keys(Key.Escape);
|
|
36
36
|
const triggerBtn = await DSDialog.getTriggerBtnByIndex(1);
|
|
37
37
|
await triggerBtn.click();
|
|
@@ -40,7 +40,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
40
40
|
const snapshot = await browser.checkSnapshot(DSDialog.snapshotPath('dialog-decision-closediscardsave'));
|
|
41
41
|
await expect(snapshot).toEqual(0);
|
|
42
42
|
});
|
|
43
|
-
it('should display decision DSDialog correctly with close save', async () => {
|
|
43
|
+
it('03: should display decision DSDialog correctly with close save', async () => {
|
|
44
44
|
await browser.keys(Key.Escape);
|
|
45
45
|
const triggerBtn = await DSDialog.getTriggerBtnByIndex(2);
|
|
46
46
|
await triggerBtn.click();
|
|
@@ -61,7 +61,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
61
61
|
const dialog = await DSDialog.getDialog();
|
|
62
62
|
await dialog.waitForDisplayed();
|
|
63
63
|
await browser.keys(Key.Tab);
|
|
64
|
-
await browser.keys(Key.Tab);
|
|
65
64
|
await browser.keys(Key.ArrowDown);
|
|
66
65
|
await browser.keys(Key.ArrowDown);
|
|
67
66
|
await browser.keys(Key.ArrowDown);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
import { Key } from 'webdriverio';
|
|
3
|
-
import { Target } from '@applitools/eyes-webdriverio';
|
|
3
|
+
// import { Target } from '@applitools/eyes-webdriverio';
|
|
4
4
|
import DSDialog from './DSDialogCO';
|
|
5
5
|
import DSShuttleV2CO from '../ds-shuttle-v2/DSShuttleV2CO';
|
|
6
6
|
import DSWizardCO from '../ds-wizard/DSWizardCO';
|
|
@@ -38,7 +38,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
38
38
|
});
|
|
39
39
|
describe('PUI-7878 - DSDialog, ScrollBody layout -visual', () => {
|
|
40
40
|
before('loading page', async () => {
|
|
41
|
-
const errorOnGo = await DSDialog.
|
|
41
|
+
const errorOnGo = await DSDialog.scrollBodyContent.go();
|
|
42
42
|
if (errorOnGo) throw errorOnGo;
|
|
43
43
|
});
|
|
44
44
|
it('should display scrollable DSDialog correctly', async () => {
|
|
@@ -208,18 +208,11 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
208
208
|
if (errorOnGo) throw errorOnGo;
|
|
209
209
|
});
|
|
210
210
|
it('01: dialog content should be scrolled down correctly', async () => {
|
|
211
|
-
await browser.
|
|
212
|
-
|
|
213
|
-
await
|
|
214
|
-
await
|
|
215
|
-
await
|
|
216
|
-
if (browser.capabilities.browserName !== 'Safari') {
|
|
217
|
-
await browser.eyesSetScrollRootElement(triggerBtn);
|
|
218
|
-
}
|
|
219
|
-
const snapshot = await browser.eyesCheckSnapshot(
|
|
220
|
-
DSDialog.snapshotPath('dialog-backdrop-cover-full-page'),
|
|
221
|
-
Target.window().fully(false),
|
|
222
|
-
);
|
|
211
|
+
await browser.keys(Key.Tab);
|
|
212
|
+
await browser.keys(Key.Enter);
|
|
213
|
+
const dialog = await DSDialog.getDialog();
|
|
214
|
+
await dialog.waitForDisplayed();
|
|
215
|
+
const snapshot = await browser.checkSnapshot(DSDialog.snapshotPath('dialog-backdrop-cover-full-page'));
|
|
223
216
|
await expect(snapshot).toEqual(0);
|
|
224
217
|
});
|
|
225
218
|
});
|
package/ds-dialog/DSDialogCO.js
CHANGED
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
/* eslint-disable import/no-relative-packages */
|
|
2
2
|
import { getElementByIndex } from './helpers/getElementByIndex';
|
|
3
|
-
import {
|
|
3
|
+
import { PATH_E2E_DIALOG } from '../paths';
|
|
4
4
|
import { PageObject, Urlbuilder } from '../helpers';
|
|
5
5
|
|
|
6
6
|
export default class DSDialog extends PageObject {
|
|
7
7
|
static basicURL = new Urlbuilder(PATH_E2E_DIALOG, 'basic');
|
|
8
8
|
|
|
9
|
-
static centeredURL = new Urlbuilder(
|
|
9
|
+
static centeredURL = new Urlbuilder(PATH_E2E_DIALOG, 'centered-test');
|
|
10
10
|
|
|
11
11
|
static withPopperjs = new Urlbuilder(PATH_E2E_DIALOG, 'with-popperjs');
|
|
12
12
|
|
|
13
13
|
static decisionURL = new Urlbuilder(PATH_E2E_DIALOG, 'decision-test');
|
|
14
14
|
|
|
15
|
-
static formDialogURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'form-dialog');
|
|
16
|
-
|
|
17
15
|
static informationURL = new Urlbuilder(PATH_E2E_DIALOG, 'informational-test');
|
|
18
16
|
|
|
19
|
-
static
|
|
20
|
-
|
|
21
|
-
static removeFocusURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'remove-auto-focus');
|
|
22
|
-
|
|
23
|
-
static scrollBodyURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'scroll-body');
|
|
24
|
-
|
|
25
|
-
static shuttleURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'shuttle');
|
|
17
|
+
static removeFocusURL = new Urlbuilder(PATH_E2E_DIALOG, 'remove-auto-focus-test');
|
|
26
18
|
|
|
27
|
-
static
|
|
19
|
+
static shuttleURL = new Urlbuilder(PATH_E2E_DIALOG, 'shuttle-test');
|
|
28
20
|
|
|
29
|
-
static wizardURL = new Urlbuilder(
|
|
21
|
+
static wizardURL = new Urlbuilder(PATH_E2E_DIALOG, 'wizard-test');
|
|
30
22
|
|
|
31
23
|
static preventBackgroundShifting = new Urlbuilder(PATH_E2E_DIALOG, 'prevent-background-shifting');
|
|
32
24
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import DSDialog from '../DSDialogCO';
|
|
2
|
+
import { axeCoreCheck } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
7
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
8
|
+
browser.capabilities.browserName === 'Chrome'
|
|
9
|
+
) {
|
|
10
|
+
describe('PUI-17332 - DSDialog:: Error dialog - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSDialog.errorURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('should display Error DSDialog correctly and pass axe-core scan', async () => {
|
|
16
|
+
const triggerBtn = await DSDialog.getTriggerBtn();
|
|
17
|
+
await triggerBtn.click();
|
|
18
|
+
const dialog = await DSDialog.getDialog();
|
|
19
|
+
await dialog.waitForDisplayed();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import DSDialog from '../DSDialogCO';
|
|
2
|
+
import { axeCoreCheck } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
7
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
8
|
+
browser.capabilities.browserName === 'Chrome'
|
|
9
|
+
) {
|
|
10
|
+
describe('PUI-17330 - DSDialog:: Information dialog - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSDialog.informationURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('should display Information DSDialog correctly and pass axe-core scan', async () => {
|
|
16
|
+
const triggerBtn = await DSDialog.getTriggerBtn();
|
|
17
|
+
await triggerBtn.click();
|
|
18
|
+
const dialog = await DSDialog.getDialog();
|
|
19
|
+
await dialog.waitForDisplayed();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import DSDialog from '../DSDialogCO';
|
|
2
|
+
import { axeCoreCheck } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
7
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
8
|
+
browser.capabilities.browserName === 'Chrome'
|
|
9
|
+
) {
|
|
10
|
+
describe('PUI-17329 - DSDialog:: ScrollBody layout - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSDialog.scrollBodyContent.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('should display scrollable DSDialog correctly and pass axe-core scan', async () => {
|
|
16
|
+
const triggerBtn = await DSDialog.getTriggerBtn();
|
|
17
|
+
await triggerBtn.click();
|
|
18
|
+
const dialog = await DSDialog.getDialog();
|
|
19
|
+
await dialog.waitForDisplayed();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import DSDialog from '../DSDialogCO';
|
|
2
|
+
import { axeCoreCheck } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
7
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
8
|
+
browser.capabilities.browserName === 'Chrome'
|
|
9
|
+
) {
|
|
10
|
+
describe('PUI-17333 - DSDialog, Success dialog - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSDialog.successURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('should display Success DSDialog correctly and pass axe-core scan', async () => {
|
|
16
|
+
const triggerBtn = await DSDialog.getTriggerBtn();
|
|
17
|
+
await triggerBtn.click();
|
|
18
|
+
const dialog = await DSDialog.getDialog();
|
|
19
|
+
await dialog.waitForDisplayed();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import DSDialog from '../DSDialogCO';
|
|
2
|
+
import { axeCoreCheck } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
if (
|
|
5
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
6
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
7
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
8
|
+
browser.capabilities.browserName === 'Chrome'
|
|
9
|
+
) {
|
|
10
|
+
describe('PUI-17331 - DSDialog:: Warning dialog - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSDialog.warningURL.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('should display Warning DSDialog correctly and pass axe-core scan', async () => {
|
|
16
|
+
const triggerBtn = await DSDialog.getTriggerBtn();
|
|
17
|
+
await triggerBtn.click();
|
|
18
|
+
const dialog = await DSDialog.getDialog();
|
|
19
|
+
await dialog.waitForDisplayed();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -77,21 +77,21 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
describe('PUI-9587 - DropdownMenuV2, Basic keyboard selection and submenus -Visual.', () => {
|
|
80
|
-
|
|
80
|
+
beforeEach(async () => {
|
|
81
81
|
const errorOnGo = await DSDDMenuV2CO.basicURL.go();
|
|
82
82
|
if (errorOnGo) throw errorOnGo;
|
|
83
83
|
});
|
|
84
84
|
it('01: should display a dropdown submenu expanded and selected', async () => {
|
|
85
|
-
|
|
86
|
-
await
|
|
85
|
+
await browser.keys(Key.Tab);
|
|
86
|
+
await browser.keys(Key.Enter);
|
|
87
87
|
await browser.keys(Key.Space);
|
|
88
88
|
await browser.keys(Key.ArrowRight);
|
|
89
89
|
const snapshot = await browser.checkSnapshot(DSDDMenuV2CO.snapshotPath('ds-ddmenuv2-one-submenu'));
|
|
90
90
|
await expect(snapshot).toEqual(0);
|
|
91
91
|
});
|
|
92
92
|
it('02: should display a dropdown double submenu ', async () => {
|
|
93
|
-
|
|
94
|
-
await
|
|
93
|
+
await browser.keys(Key.Tab);
|
|
94
|
+
await browser.keys(Key.Enter);
|
|
95
95
|
await browser.keys(Key.ArrowLeft);
|
|
96
96
|
await browser.keys(Key.Space);
|
|
97
97
|
await browser.keys(Key.ArrowDown);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Key } from 'webdriverio';
|
|
2
|
-
import { PATH_E2E_COMBOBOX_MULTI } from '../paths';
|
|
2
|
+
import { PATH_E2E_COMBOBOX_MULTI, PATH_E2E_COMBOBOX_MULTI_SLOTS } from '../paths';
|
|
3
3
|
import { PageObject, Urlbuilder } from '../helpers';
|
|
4
4
|
|
|
5
5
|
export default class DSComboboxMultiCO extends PageObject {
|
|
@@ -19,6 +19,19 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
19
19
|
|
|
20
20
|
static insideIframe = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'inside-iframe');
|
|
21
21
|
|
|
22
|
+
static floatingAfterFiltering = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'floating-after-filtering');
|
|
23
|
+
|
|
24
|
+
static disabled = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'disabled-test');
|
|
25
|
+
|
|
26
|
+
static controlledMenuStateWithSectionsSlotsTest = new Urlbuilder(
|
|
27
|
+
PATH_E2E_COMBOBOX_MULTI_SLOTS,
|
|
28
|
+
'controlled-menu-state-with-section-slots-test',
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
static loadingIndicatorSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI_SLOTS, 'loading-indicator-slots-test');
|
|
32
|
+
|
|
33
|
+
static skeletonSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI_SLOTS, 'skeleton-slots-test');
|
|
34
|
+
|
|
22
35
|
// COMBOBOX - INPUT
|
|
23
36
|
static async getCombobox() {
|
|
24
37
|
return $('[data-testid="combobox-container"]');
|
|
@@ -28,6 +41,10 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
28
41
|
return $('[data-testid="combobox-controls-wrapper"]');
|
|
29
42
|
}
|
|
30
43
|
|
|
44
|
+
static async getComboboxWrapperByIndex(index) {
|
|
45
|
+
return $$('[data-testid="combobox-controls-wrapper"]')[index];
|
|
46
|
+
}
|
|
47
|
+
|
|
31
48
|
static async getComboboxByIndex(index) {
|
|
32
49
|
return $$('[data-testid="combobox-container"]')[index];
|
|
33
50
|
}
|
|
@@ -48,6 +65,14 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
48
65
|
return $$('[data-testid="combobox-input"]')[index];
|
|
49
66
|
}
|
|
50
67
|
|
|
68
|
+
static async getComboboxHiddenInput() {
|
|
69
|
+
return $('input[aria-hidden="true"]');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static async getComboboxHiddenInputByIndex(index) {
|
|
73
|
+
return $$('input[aria-hidden="true"]')[index];
|
|
74
|
+
}
|
|
75
|
+
|
|
51
76
|
static async getSelectedValues() {
|
|
52
77
|
return $('[data-testid="combobox-selected-values"]');
|
|
53
78
|
}
|
|
@@ -179,6 +204,76 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
179
204
|
await menuList.waitForExist();
|
|
180
205
|
}
|
|
181
206
|
|
|
207
|
+
// Slots
|
|
208
|
+
|
|
209
|
+
static async getComboboxRootSlot() {
|
|
210
|
+
return $('[data-dimsum-slot="dsComboboxRoot"]');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
static async getComboboxInputWrapperSlot() {
|
|
214
|
+
return $('[data-dimsum-slot="dsComboboxInputWrapper"]');
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
static async getComboboxInputSlot() {
|
|
218
|
+
return $('[data-dimsum-slot="dsComboboxInput"]');
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
static async getComboboxDropDownMenuBtnSlot() {
|
|
222
|
+
return $('[data-dimsum-parent-slot="dsComboboxDropdownButton"]');
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
static async getFloatingWrapperRootSlot() {
|
|
226
|
+
return $('[data-dimsum-slot="dsFloatingwrapperRoot"]');
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
static async getFloatingWrapperContentSlot() {
|
|
230
|
+
return $('[data-dimsum-slot="dsFloatingwrapperContent"]');
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
static async getFastListSlot() {
|
|
234
|
+
return $('[data-dimsum-parent-slot="dsComboboxFastList"]');
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
static async getFastListWrapperListSlot() {
|
|
238
|
+
return $('[data-dimsum-slot="dsFastlistWrapperList"]');
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
static async getFastListItemSlot() {
|
|
242
|
+
return $('[data-dimsum-slot="dsFastlistItem"]');
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
static async getMenuitemMenuItemWrapperSlot() {
|
|
246
|
+
return $('[data-dimsum-slot="dsMenuitemMenuItemWrapper"]');
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
static async getMenuitemMenuItemsContentWrapperSlotByIndex(index) {
|
|
250
|
+
return $$('[data-dimsum-slot="dsMenuitemMenuItemContentWrapper"]')[index];
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
static async getMenuitemMenuItemLabelSlotByIndex(index) {
|
|
254
|
+
return $$('[data-dimsum-slot="dsMenuitemMenuItemLabel"]')[index];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
static async getComboboxLoadingIndicator() {
|
|
258
|
+
return $('[data-dimsum-parent-slot="dsComboboxLoadingIndicator"]');
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
static async getComboboxSkeletonMenuItem() {
|
|
262
|
+
return $('[data-dimsum-parent-slot="dsComboboxSkeletonMenuItem"]');
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
static async getComboboxMenuItemSlotByIndex(index) {
|
|
266
|
+
return $$('[data-dimsum-parent-slot="dsComboboxMultiMenuItem"]')[index];
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
static async getComboboxSectionLabelByIndex(index) {
|
|
270
|
+
return $$('[data-dimsum-slot="dsComboboxSectionLabel"]')[index];
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
static async getComboboxSectionWrapperSlotByIndex(index) {
|
|
274
|
+
return $$('[data-dimsum-slot="dsComboboxSectionWrapper"]')[index];
|
|
275
|
+
}
|
|
276
|
+
|
|
182
277
|
static snapshotPath(example = 'basic') {
|
|
183
278
|
return PageObject.getSnapshotPathBuilder('DSComboboxMulti', example, 'ds-combobox-multi');
|
|
184
279
|
}
|
|
@@ -4,7 +4,7 @@ import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
|
4
4
|
|
|
5
5
|
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
6
|
describe('PUI-14364 - ComboboxMulti:: applyAriaDisabled prop - visual', () => {
|
|
7
|
-
|
|
7
|
+
beforeEach('loading page', async () => {
|
|
8
8
|
const errorOnGo = await DSComboboxMultiCO.applyAriaDisabled.go();
|
|
9
9
|
if (errorOnGo) throw errorOnGo;
|
|
10
10
|
});
|
|
@@ -20,11 +20,12 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
20
20
|
it('02: The first aria-disabled option should be focused and not selected', async () => {
|
|
21
21
|
await browser.eyesOpen();
|
|
22
22
|
await browser.keys(Key.Tab);
|
|
23
|
-
await browser.keys(Key.
|
|
23
|
+
await browser.keys(Key.Tab);
|
|
24
|
+
await browser.keys(Key.Return);
|
|
24
25
|
await browser.keys(Key.ArrowDown);
|
|
25
26
|
await browser.keys(Key.ArrowDown);
|
|
26
27
|
await browser.keys(Key.ArrowDown);
|
|
27
|
-
await browser.keys(Key.
|
|
28
|
+
await browser.keys(Key.Return);
|
|
28
29
|
const snapshot = await browser.eyesCheckSnapshot(
|
|
29
30
|
DSComboboxMultiCO.snapshotPath('combobox-multi-aria-disabled-options-kb-nav'),
|
|
30
31
|
);
|
|
@@ -32,6 +33,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
32
33
|
});
|
|
33
34
|
it('03: first aria-disabled combobox should be focused', async () => {
|
|
34
35
|
await browser.eyesOpen();
|
|
36
|
+
await browser.keys(Key.Tab);
|
|
37
|
+
await browser.keys(Key.Tab);
|
|
38
|
+
await browser.keys(Key.Return);
|
|
35
39
|
await browser.keys(Key.Escape);
|
|
36
40
|
await browser.keys([Key.Shift, Key.Tab]);
|
|
37
41
|
const snapshot = await browser.eyesCheckSnapshot(
|