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
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 3.53.0-alpha.3 (2025-12-16)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
9
|
+
|
|
10
|
+
## 3.53.0-alpha.2 (2025-12-10)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
13
|
+
|
|
6
14
|
## [3.53.0-alpha.1](https://git.elliemae.io/platform-ui/dimsum/compare/v3.0.0-alpha.3...v3.53.0-alpha.1) (2025-05-28)
|
|
7
15
|
|
|
8
16
|
### Features
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
/* eslint-disable import/no-relative-packages */
|
|
2
|
-
import {
|
|
2
|
+
import { PATH_E2E_ACCORDION } from '../paths';
|
|
3
3
|
import { PageObject, Urlbuilder, getElementByIndex } from '../helpers';
|
|
4
4
|
|
|
5
5
|
export default class DSAccordionCO extends PageObject {
|
|
6
6
|
// Desktop
|
|
7
|
-
static basicURL = new Urlbuilder(
|
|
7
|
+
static basicURL = new Urlbuilder(PATH_E2E_ACCORDION, 'basic');
|
|
8
8
|
|
|
9
|
-
static
|
|
9
|
+
static multipleURL = new Urlbuilder(PATH_E2E_ACCORDION, 'multiple');
|
|
10
10
|
|
|
11
|
-
static
|
|
11
|
+
static toMobileURL = new Urlbuilder(PATH_E2E_ACCORDION, 'desktop-to-mobile');
|
|
12
12
|
|
|
13
|
-
static
|
|
14
|
-
|
|
15
|
-
static customActions = new Urlbuilder(PATH_ACCORDION_EXAMPLES, 'render-custom-actions');
|
|
16
|
-
|
|
17
|
-
static headerProps = new Urlbuilder(PATH_ACCORDION_EXAMPLES, 'header-props');
|
|
13
|
+
static customActions = new Urlbuilder(PATH_E2E_ACCORDION, 'render-custom-actions');
|
|
18
14
|
|
|
19
15
|
static headerControls = new Urlbuilder(PATH_E2E_ACCORDION, 'header-control-examples-test');
|
|
20
16
|
|
|
@@ -42,6 +38,10 @@ export default class DSAccordionCO extends PageObject {
|
|
|
42
38
|
|
|
43
39
|
static applyAriaDisabled = new Urlbuilder(PATH_E2E_ACCORDION, 'apply-aria-disabled-test');
|
|
44
40
|
|
|
41
|
+
static scrollableContent = new Urlbuilder(PATH_E2E_ACCORDION, 'scrollable-content');
|
|
42
|
+
|
|
43
|
+
static wrapLabel = new Urlbuilder(PATH_E2E_ACCORDION, 'wrap-label');
|
|
44
|
+
|
|
45
45
|
// Snapshots
|
|
46
46
|
static snapshotPath(example = 'basic') {
|
|
47
47
|
return PageObject.getSnapshotPathBuilder('Accordion', example);
|
|
@@ -100,6 +100,11 @@ export default class DSAccordionCO extends PageObject {
|
|
|
100
100
|
|
|
101
101
|
static getToolbarByIndex = async (index) => getElementByIndex(this.getToolbarTriggers, index);
|
|
102
102
|
|
|
103
|
+
static getAccordionItemHeaderContainers = async () => $$('[data-testid="ds-accordion-item-header-container"]');
|
|
104
|
+
|
|
105
|
+
static getAccordionItemHeaderContainerByIndex = async (index) =>
|
|
106
|
+
getElementByIndex(this.getAccordionItemHeaderContainers, index);
|
|
107
|
+
|
|
103
108
|
// slots
|
|
104
109
|
|
|
105
110
|
static async getAccordionContainerSlotByIndex(index = 0) {
|
|
@@ -134,8 +139,7 @@ export default class DSAccordionCO extends PageObject {
|
|
|
134
139
|
return $$('[data-dimsum-slot="dsAccordionItemContentContainer"]')[index];
|
|
135
140
|
}
|
|
136
141
|
|
|
137
|
-
static async
|
|
138
|
-
// not used on example
|
|
142
|
+
static async getAccordionItemHeaderSecondaryTitleSlotByIndex(index = 0) {
|
|
139
143
|
return $$('[data-dimsum-slot="dsAccordionItemHeaderSecondaryTitle"]')[index];
|
|
140
144
|
}
|
|
141
145
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSAccordionCO from '../DSAccordionCO';
|
|
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-17165 - Accordion: Role heading', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSAccordionCO.subtitle.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
it('01: should have role heading on accordion item header', async () => {
|
|
16
|
+
const header = await DSAccordionCO.getAccordionItemHeaderContainerByIndex(0);
|
|
17
|
+
await expect(header).toHaveAttribute('role', 'heading');
|
|
18
|
+
await expect(header).toHaveAttribute('aria-level', '2');
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* eslint-disable wdio/no-pause */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSAccordionCO from '../DSAccordionCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17174 - Accordion: Scrollable content -Visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSAccordionCO.scrollableContent.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display first accordion header focused', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
await (await DSAccordionCO.getAccordionHeader(1)).waitForDisplayed();
|
|
14
|
+
await browser.keys(Key.Tab);
|
|
15
|
+
await browser.keys(Key.Return);
|
|
16
|
+
const snapshot = await browser.eyesCheckSnapshot(DSAccordionCO.snapshotPath('accordion-scrollable-default'));
|
|
17
|
+
await expect(snapshot).toEqual(0);
|
|
18
|
+
});
|
|
19
|
+
it('02: should display scrollable content focused', async () => {
|
|
20
|
+
await browser.eyesOpen();
|
|
21
|
+
await browser.keys(Key.ArrowDown);
|
|
22
|
+
await browser.keys(Key.ArrowUp);
|
|
23
|
+
await browser.keys(Key.Tab);
|
|
24
|
+
await (await DSAccordionCO.getAccordionHeader(1)).waitForDisplayed();
|
|
25
|
+
const snapshot = await browser.eyesCheckSnapshot(DSAccordionCO.snapshotPath('accordion-scrollable-top'));
|
|
26
|
+
await expect(snapshot).toEqual(0);
|
|
27
|
+
});
|
|
28
|
+
it('03: should display scrollable content scrolled to the bottom', async () => {
|
|
29
|
+
await browser.eyesOpen();
|
|
30
|
+
await browser.keys(Key.ArrowDown);
|
|
31
|
+
await browser.keys(Key.ArrowDown);
|
|
32
|
+
await browser.keys(Key.ArrowDown);
|
|
33
|
+
await browser.keys(Key.ArrowDown);
|
|
34
|
+
await browser.keys(Key.ArrowDown);
|
|
35
|
+
await browser.keys(Key.ArrowDown);
|
|
36
|
+
await browser.keys(Key.ArrowDown);
|
|
37
|
+
await (await DSAccordionCO.getAccordionHeader(1)).waitForDisplayed();
|
|
38
|
+
const snapshot = await browser.eyesCheckSnapshot(DSAccordionCO.snapshotPath('accordion-scrollable-bottom'));
|
|
39
|
+
await expect(snapshot).toEqual(0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -19,6 +19,7 @@ if (
|
|
|
19
19
|
const itemHeaderAddon = await DSAccordionCO.getAccordionItemHeaderAddonSlotByIndex();
|
|
20
20
|
const itemHeaderContainer = await DSAccordionCO.getAccordionItemHeaderContainerSlotByIndex();
|
|
21
21
|
const headerPrimaryTitle = await DSAccordionCO.getAccordionItemHeaderPrimaryTitleSlotByIndex();
|
|
22
|
+
const headerSecondaryTitle = await DSAccordionCO.getAccordionItemHeaderSecondaryTitleSlotByIndex();
|
|
22
23
|
const headerTitlesContainer = await DSAccordionCO.getAccordionItemHeaderTitlesContainerSlotByIndex();
|
|
23
24
|
await itemHeader.click();
|
|
24
25
|
const itemContentContainer = await DSAccordionCO.getAccordionItemContentContainerSlotByIndex();
|
|
@@ -30,6 +31,7 @@ if (
|
|
|
30
31
|
await expect(itemHeaderContainer).toHaveAttribute('aria-label', 'im itemheadercontainer aria');
|
|
31
32
|
await expect(itemContentContainer).toHaveAttribute('aria-label', 'im itemcontentcontainer aria');
|
|
32
33
|
await expect(headerPrimaryTitle).toHaveAttribute('aria-label', 'im itemheaderprimarytitle aria');
|
|
34
|
+
await expect(headerSecondaryTitle).toHaveAttribute('aria-label', 'im itemheadersecondarytitle aria');
|
|
33
35
|
await expect(headerTitlesContainer).toHaveAttribute('aria-label', 'im itemheadertitlecontainer aria');
|
|
34
36
|
});
|
|
35
37
|
it('02: should have a custom data-testid for each slot', async () => {
|
|
@@ -39,6 +41,7 @@ if (
|
|
|
39
41
|
const itemHeaderAddon = await DSAccordionCO.getAccordionItemHeaderAddonSlotByIndex();
|
|
40
42
|
const itemHeaderContainer = await DSAccordionCO.getAccordionItemHeaderContainerSlotByIndex();
|
|
41
43
|
const headerPrimaryTitle = await DSAccordionCO.getAccordionItemHeaderPrimaryTitleSlotByIndex();
|
|
44
|
+
const headerSecondaryTitle = await DSAccordionCO.getAccordionItemHeaderSecondaryTitleSlotByIndex();
|
|
42
45
|
const headerTitlesContainer = await DSAccordionCO.getAccordionItemHeaderTitlesContainerSlotByIndex();
|
|
43
46
|
const itemContentContainer = await DSAccordionCO.getAccordionItemContentContainerSlotByIndex();
|
|
44
47
|
await itemContentContainer.waitForDisplayed();
|
|
@@ -49,7 +52,16 @@ if (
|
|
|
49
52
|
await expect(itemHeaderContainer).toHaveAttribute('data-testid', 'im itemheadercontainer data');
|
|
50
53
|
await expect(itemContentContainer).toHaveAttribute('data-testid', 'im itemcontentcontainer data');
|
|
51
54
|
await expect(headerPrimaryTitle).toHaveAttribute('data-testid', 'im itemheaderprimarytitle data');
|
|
55
|
+
await expect(headerSecondaryTitle).toHaveAttribute('data-testid', 'im itemheadersecondarytitle data');
|
|
52
56
|
await expect(headerTitlesContainer).toHaveAttribute('data-testid', 'im itemheadertitlecontainer data');
|
|
53
57
|
});
|
|
58
|
+
it('03: should have a custom lang attribute for header, primary and secondary titles', async () => {
|
|
59
|
+
const headerPrimaryTitle = await DSAccordionCO.getAccordionItemHeaderPrimaryTitleSlotByIndex();
|
|
60
|
+
const headerSecondaryTitle = await DSAccordionCO.getAccordionItemHeaderSecondaryTitleSlotByIndex();
|
|
61
|
+
const itemHeader = await DSAccordionCO.getAccordionItemHeaderSlotByIndex();
|
|
62
|
+
await expect(headerPrimaryTitle).toHaveAttribute('lang', 'en-US');
|
|
63
|
+
await expect(headerSecondaryTitle).toHaveAttribute('lang', 'es-ES');
|
|
64
|
+
await expect(itemHeader).toHaveAttribute('lang', 'en-US');
|
|
65
|
+
});
|
|
54
66
|
});
|
|
55
67
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* eslint-disable wdio/no-pause */
|
|
2
|
+
import { Key } from 'webdriverio';
|
|
3
|
+
import DSAccordionCO from '../DSAccordionCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17178 - Accordion: wrapLabel -Visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSAccordionCO.wrapLabel.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display accordion title and secondary title wrapped', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
await (await DSAccordionCO.getAccordionHeader(1)).waitForDisplayed();
|
|
14
|
+
await browser.keys(Key.Tab);
|
|
15
|
+
await browser.keys(Key.Return);
|
|
16
|
+
const snapshot = await browser.eyesCheckSnapshot(DSAccordionCO.snapshotPath('accordion-wrap-label'));
|
|
17
|
+
await expect(snapshot).toEqual(0);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -8,6 +8,8 @@ export default class DSAutocompleteCO extends PageObject {
|
|
|
8
8
|
|
|
9
9
|
static basic = new Urlbuilder(PATH_E2E_AUTOCOMPLETE, 'basic-test');
|
|
10
10
|
|
|
11
|
+
static slots = new Urlbuilder(PATH_E2E_AUTOCOMPLETE, 'slots-test');
|
|
12
|
+
|
|
11
13
|
static sectionTitles = new Urlbuilder(PATH_E2E_AUTOCOMPLETE, 'with-section-titles-test');
|
|
12
14
|
|
|
13
15
|
// Snapshots
|
|
@@ -28,4 +30,20 @@ export default class DSAutocompleteCO extends PageObject {
|
|
|
28
30
|
static async getAutocompleteOptions() {
|
|
29
31
|
return $$('[data-testid="autocomplete-option"]');
|
|
30
32
|
}
|
|
33
|
+
|
|
34
|
+
static async getContainerSlot(index = 0) {
|
|
35
|
+
return $$('[data-dimsum-slot="dsAutocompleteContainer"]')[index];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static async getOptionSlot(index = 0) {
|
|
39
|
+
return $$('[data-dimsum-slot="dsAutocompleteOption"]')[index];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
static async getInputSlot(index = 0) {
|
|
43
|
+
return $$('[data-dimsum-slot="dsInputtextInput"]')[index];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static async getMenulistSlot(index = 0) {
|
|
47
|
+
return $$('[data-dimsum-slot="dsAutocompleteMenuList"]')[index];
|
|
48
|
+
}
|
|
31
49
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DSAutocompleteCO from '../DSAutocompleteCO';
|
|
3
|
+
import { type, axeCoreCheck } from '../../helpers';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17531 - Autocomplete:: Slots -AxeCore', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSAutocompleteCO.slots.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display autocomplete w/ custom color', async () => {
|
|
12
|
+
await browser.keys(Key.Tab);
|
|
13
|
+
await type('4');
|
|
14
|
+
const menulist = await DSAutocompleteCO.getMenulistSlot();
|
|
15
|
+
await menulist.waitForDisplayed({ timeout: 2000 });
|
|
16
|
+
const result = await axeCoreCheck();
|
|
17
|
+
expect(result.length).toBe(0);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DSAutocompleteCO from '../DSAutocompleteCO';
|
|
3
|
+
|
|
4
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
5
|
+
describe('PUI-17529 - Autocomplete:: Slots -Func', () => {
|
|
6
|
+
before('loading page', async () => {
|
|
7
|
+
const errorOnGo = await DSAutocompleteCO.slots.go();
|
|
8
|
+
if (errorOnGo) throw errorOnGo;
|
|
9
|
+
});
|
|
10
|
+
it('01: should have custom aria-label for each slot', async () => {
|
|
11
|
+
const autocomplete = await DSAutocompleteCO.getContainerSlot();
|
|
12
|
+
await autocomplete.waitForDisplayed();
|
|
13
|
+
await browser.keys(Key.Tab);
|
|
14
|
+
await browser.keys('4');
|
|
15
|
+
const container = await DSAutocompleteCO.getContainerSlot();
|
|
16
|
+
const input = await DSAutocompleteCO.getInputSlot();
|
|
17
|
+
const menulist = await DSAutocompleteCO.getMenulistSlot();
|
|
18
|
+
const options = await DSAutocompleteCO.getOptionSlot();
|
|
19
|
+
await expect(container).toHaveAttribute('aria-label', 'container aria');
|
|
20
|
+
await expect(input).toHaveAttribute('aria-label', 'input aria');
|
|
21
|
+
await expect(menulist).toHaveAttribute('aria-label', 'menulist aria');
|
|
22
|
+
await expect(options).toHaveAttribute('aria-label', 'option aria');
|
|
23
|
+
});
|
|
24
|
+
it('02: should have custom data-testid for each slot', async () => {
|
|
25
|
+
const container = await DSAutocompleteCO.getContainerSlot();
|
|
26
|
+
const input = await DSAutocompleteCO.getInputSlot();
|
|
27
|
+
const menulist = await DSAutocompleteCO.getMenulistSlot();
|
|
28
|
+
const options = await DSAutocompleteCO.getOptionSlot();
|
|
29
|
+
await expect(container).toHaveAttribute('data-testid', 'container data');
|
|
30
|
+
await expect(input).toHaveAttribute('data-testid', 'input data');
|
|
31
|
+
await expect(menulist).toHaveAttribute('data-testid', 'menulist data');
|
|
32
|
+
await expect(options).toHaveAttribute('data-testid', 'option data');
|
|
33
|
+
});
|
|
34
|
+
it('03: should have custom lang for each slot', async () => {
|
|
35
|
+
const container = await DSAutocompleteCO.getContainerSlot();
|
|
36
|
+
const input = await DSAutocompleteCO.getInputSlot();
|
|
37
|
+
const menulist = await DSAutocompleteCO.getMenulistSlot();
|
|
38
|
+
const options = await DSAutocompleteCO.getOptionSlot();
|
|
39
|
+
await expect(container).toHaveAttribute('lang', 'es');
|
|
40
|
+
await expect(input).toHaveAttribute('lang', 'es');
|
|
41
|
+
await expect(menulist).toHaveAttribute('lang', 'es');
|
|
42
|
+
await expect(options).toHaveAttribute('lang', 'es');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DSAutocompleteCO from '../DSAutocompleteCO';
|
|
3
|
+
import { type } from '../../helpers';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17530 - Autocomplete:: Slots -Visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSAutocompleteCO.slots.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display autocomplete w/ custom color', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
await browser.keys(Key.Tab);
|
|
14
|
+
await type('4');
|
|
15
|
+
const menulist = await DSAutocompleteCO.getMenulistSlot();
|
|
16
|
+
await menulist.waitForDisplayed({ timeout: 2000 });
|
|
17
|
+
const snapshot = await browser.eyesCheckSnapshot(DSAutocompleteCO.snapshotPath('autocomplete-slots'));
|
|
18
|
+
await expect(snapshot).toEqual(0);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -47,14 +47,14 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
47
47
|
const errorOnGo = await DSBannerCO.infoURL.go();
|
|
48
48
|
if (errorOnGo) throw errorOnGo;
|
|
49
49
|
});
|
|
50
|
-
it('should open the banner', async () => {
|
|
50
|
+
it('01: should open the banner', async () => {
|
|
51
51
|
await DSBannerCO.openBanner();
|
|
52
52
|
const banner = await DSBannerCO.getBanner();
|
|
53
53
|
await expect(banner).toBeDisplayed();
|
|
54
54
|
});
|
|
55
|
-
it('should be focusing the banner', async () => {
|
|
56
|
-
const
|
|
57
|
-
await expect(
|
|
55
|
+
it('02: should be focusing the banner', async () => {
|
|
56
|
+
const dsBannerContainer = await DSBannerCO.getBannerContainer();
|
|
57
|
+
await expect(dsBannerContainer).toBeFocused();
|
|
58
58
|
});
|
|
59
59
|
});
|
|
60
60
|
describe('PUI-10369 - DSBanner, focus close button on open -func', () => {
|
|
@@ -68,60 +68,4 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
68
68
|
await expect(closeButton).toBeFocused();
|
|
69
69
|
});
|
|
70
70
|
});
|
|
71
|
-
if (browser.capabilities.browserName === 'chrome' || browser.capabilities.browserName === 'Chrome') {
|
|
72
|
-
describe('PUI-15113 - Banner - Slots -Func', () => {
|
|
73
|
-
before('loading page', async () => {
|
|
74
|
-
const errorOnGo = await DSBannerCO.slotsTest.go();
|
|
75
|
-
if (errorOnGo) throw errorOnGo;
|
|
76
|
-
});
|
|
77
|
-
it('01: should find the expected SLOTS for the component', async () => {
|
|
78
|
-
const bannerTitleSlot = await DSBannerCO.getTitleSlotByIndex();
|
|
79
|
-
const bannerSubtitleSlot = await DSBannerCO.getSubtitleSlotByIndex();
|
|
80
|
-
const bannerContainer = await DSBannerCO.getContainerSlotByIndex();
|
|
81
|
-
const bannerInnerContainer = await DSBannerCO.getInnerContainerSlotByIndex();
|
|
82
|
-
const bannerIconsSlots = await DSBannerCO.getIconContainerSlotByIndex();
|
|
83
|
-
const bannerButtonSlot = await DSBannerCO.getButtonRootSlotByIndex();
|
|
84
|
-
const bannerActionLinkSlot = await DSBannerCO.getActionLinkSlotByIndex();
|
|
85
|
-
await expect(bannerTitleSlot).toBeDisplayed();
|
|
86
|
-
await expect(bannerSubtitleSlot).toBeDisplayed();
|
|
87
|
-
await expect(bannerContainer).toBeDisplayed();
|
|
88
|
-
await expect(bannerInnerContainer).toBeDisplayed();
|
|
89
|
-
await expect(bannerIconsSlots).toBeDisplayed();
|
|
90
|
-
await expect(bannerButtonSlot).toBeDisplayed();
|
|
91
|
-
await expect(bannerActionLinkSlot).toBeDisplayed();
|
|
92
|
-
});
|
|
93
|
-
it('02: should find custom aria for each SLOT', async () => {
|
|
94
|
-
const bannerTitleSlot = await DSBannerCO.getTitleSlotByIndex();
|
|
95
|
-
const bannerSubtitleSlot = await DSBannerCO.getSubtitleSlotByIndex();
|
|
96
|
-
const bannerContainer = await DSBannerCO.getContainerSlotByIndex();
|
|
97
|
-
const bannerInnerContainer = await DSBannerCO.getInnerContainerSlotByIndex();
|
|
98
|
-
const bannerIconsSlots = await DSBannerCO.getIconContainerSlotByIndex();
|
|
99
|
-
const bannerButtonSlot = await DSBannerCO.getButtonRootSlotByIndex();
|
|
100
|
-
const bannerActionLinkSlot = await DSBannerCO.getActionLinkSlotByIndex();
|
|
101
|
-
await expect(bannerTitleSlot).toHaveAttribute('aria-label', 'im title aria');
|
|
102
|
-
await expect(bannerSubtitleSlot).toHaveAttribute('aria-label', 'im subtitle aria');
|
|
103
|
-
await expect(bannerContainer).toHaveAttribute('aria-label', 'im container aria');
|
|
104
|
-
await expect(bannerInnerContainer).toHaveAttribute('aria-label', 'im inner container aria');
|
|
105
|
-
await expect(bannerIconsSlots).toHaveAttribute('aria-label', 'im iconcontainer aria');
|
|
106
|
-
await expect(bannerButtonSlot).toHaveAttribute('aria-label', 'im closebutton aria');
|
|
107
|
-
await expect(bannerActionLinkSlot).toHaveAttribute('aria-label', 'im actionlink aria');
|
|
108
|
-
});
|
|
109
|
-
it('03: should find custom data for each SLOT', async () => {
|
|
110
|
-
const bannerTitleSlot = await DSBannerCO.getTitleSlotByIndex();
|
|
111
|
-
const bannerSubtitleSlot = await DSBannerCO.getSubtitleSlotByIndex();
|
|
112
|
-
const bannerContainer = await DSBannerCO.getContainerSlotByIndex();
|
|
113
|
-
const bannerInnerContainer = await DSBannerCO.getInnerContainerSlotByIndex();
|
|
114
|
-
const bannerIconsSlots = await DSBannerCO.getIconContainerSlotByIndex();
|
|
115
|
-
const bannerButtonSlot = await DSBannerCO.getButtonRootSlotByIndex();
|
|
116
|
-
const bannerActionLinkSlot = await DSBannerCO.getActionLinkSlotByIndex();
|
|
117
|
-
await expect(bannerTitleSlot).toHaveAttribute('data-testid', 'im title data');
|
|
118
|
-
await expect(bannerSubtitleSlot).toHaveAttribute('data-testid', 'im subtitle data');
|
|
119
|
-
await expect(bannerContainer).toHaveAttribute('data-testid', 'im container data');
|
|
120
|
-
await expect(bannerInnerContainer).toHaveAttribute('data-testid', 'im inner container data');
|
|
121
|
-
await expect(bannerIconsSlots).toHaveAttribute('data-testid', 'im iconcontainer data');
|
|
122
|
-
await expect(bannerButtonSlot).toHaveAttribute('data-testid', 'im closebutton data');
|
|
123
|
-
await expect(bannerActionLinkSlot).toHaveAttribute('data-testid', 'im actionlink data');
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
71
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import DSBannerCO from './DSBannerCO';
|
|
2
|
+
|
|
3
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
4
|
+
describe('PUI-17535 - DSBanner - Text Resize In Different Layouts - Visual Test', () => {
|
|
5
|
+
before('loading page', async () => {
|
|
6
|
+
const errorOnGo = await DSBannerCO.textResizeInDifferentLayoutsTest.go();
|
|
7
|
+
if (errorOnGo) throw errorOnGo;
|
|
8
|
+
});
|
|
9
|
+
it('01: should display text resize in different layouts properly', async () => {
|
|
10
|
+
await browser.eyesOpen();
|
|
11
|
+
const snapshot = await browser.eyesCheckSnapshot(DSBannerCO.snapshotPath('text-resize-in-different-layouts'));
|
|
12
|
+
await expect(snapshot).toEqual(0);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DSBannerCO from './DSBannerCO';
|
|
3
|
+
|
|
4
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
5
|
+
describe('PUI-10367 - DSBanner, With text wrapping - Visual Test', () => {
|
|
6
|
+
before('loading page', async () => {
|
|
7
|
+
const errorOnGo = await DSBannerCO.textWrappingURL.go();
|
|
8
|
+
if (errorOnGo) throw errorOnGo;
|
|
9
|
+
});
|
|
10
|
+
it('01: should display the layout properly with text wrapping', async () => {
|
|
11
|
+
await browser.eyesOpen();
|
|
12
|
+
await DSBannerCO.openBanner();
|
|
13
|
+
const banner = await DSBannerCO.getBanner();
|
|
14
|
+
await banner.waitForDisplayed();
|
|
15
|
+
const snapshot = await browser.eyesCheckSnapshot(DSBannerCO.snapshotPath('text-wrapping'));
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
it('02: should focus action link correctly', async () => {
|
|
19
|
+
await browser.eyesOpen();
|
|
20
|
+
await browser.keys(Key.Tab);
|
|
21
|
+
const snapshot = await browser.eyesCheckSnapshot(DSBannerCO.snapshotPath('text-wrapping-focus-action-link'));
|
|
22
|
+
await expect(snapshot).toEqual(0);
|
|
23
|
+
});
|
|
24
|
+
it('03: should focus close button correctly', async () => {
|
|
25
|
+
await browser.eyesOpen();
|
|
26
|
+
await browser.keys(Key.Tab);
|
|
27
|
+
const snapshot = await browser.eyesCheckSnapshot(DSBannerCO.snapshotPath('text-wrapping-focus-close-button'));
|
|
28
|
+
await expect(snapshot).toEqual(0);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -84,21 +84,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
86
|
|
|
87
|
-
describe('PUI-10367 - DSBanner, With text wrapping - Visual Test', () => {
|
|
88
|
-
before('loading page', async () => {
|
|
89
|
-
const errorOnGo = await DSBannerCO.textWrappingURL.go();
|
|
90
|
-
if (errorOnGo) throw errorOnGo;
|
|
91
|
-
});
|
|
92
|
-
it('should display the layout properly with text wrapping', async () => {
|
|
93
|
-
await browser.eyesOpen();
|
|
94
|
-
await DSBannerCO.openBanner();
|
|
95
|
-
const banner = await DSBannerCO.getBanner();
|
|
96
|
-
await banner.waitForDisplayed();
|
|
97
|
-
const snapshot = await browser.eyesCheckSnapshot(DSBannerCO.snapshotPath('text-wrapping'));
|
|
98
|
-
await expect(snapshot).toEqual(0);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
|
|
102
87
|
describe('PUI-10368 - DSBanner, Pushes content- Visual Test', () => {
|
|
103
88
|
before('loading page', async () => {
|
|
104
89
|
const errorOnGo = await DSBannerCO.pushesContentURL.go();
|
|
@@ -113,18 +98,4 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
113
98
|
await expect(snapshot).toEqual(0);
|
|
114
99
|
});
|
|
115
100
|
});
|
|
116
|
-
|
|
117
|
-
describe('PUI-15114 - DSBanner, Slots- Visual Test', () => {
|
|
118
|
-
before('loading page', async () => {
|
|
119
|
-
const errorOnGo = await DSBannerCO.slotsTest.go();
|
|
120
|
-
if (errorOnGo) throw errorOnGo;
|
|
121
|
-
});
|
|
122
|
-
it('should display the banners customized using slots', async () => {
|
|
123
|
-
await browser.eyesOpen();
|
|
124
|
-
const banner = await DSBannerCO.getContainerSlotByIndex();
|
|
125
|
-
await banner.waitForDisplayed();
|
|
126
|
-
const snapshot = await browser.eyesCheckSnapshot(DSBannerCO.snapshotPath('banner-slots-test'));
|
|
127
|
-
await expect(snapshot).toEqual(0);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
101
|
}
|
package/ds-banner/DSBannerCO.js
CHANGED
|
@@ -26,6 +26,16 @@ export default class DSBannerCO extends PageObject {
|
|
|
26
26
|
|
|
27
27
|
static slotsTest = new Urlbuilder(PATH_E2E_BANNER, 'slots-test');
|
|
28
28
|
|
|
29
|
+
static textResizeInDifferentLayoutsTest = new Urlbuilder(PATH_E2E_BANNER, 'text-resize-in-different-layouts-test');
|
|
30
|
+
|
|
31
|
+
static ariaLiveAssertiveTest = new Urlbuilder(PATH_E2E_BANNER, 'aria-live-assertive-test');
|
|
32
|
+
|
|
33
|
+
static ariaLivePoliteTest = new Urlbuilder(PATH_E2E_BANNER, 'aria-live-polite-test');
|
|
34
|
+
|
|
35
|
+
static roleAlertTest = new Urlbuilder(PATH_E2E_BANNER, 'role-alert-test');
|
|
36
|
+
|
|
37
|
+
static roleRegionTest = new Urlbuilder(PATH_E2E_BANNER, 'role-region-test');
|
|
38
|
+
|
|
29
39
|
static async getButton() {
|
|
30
40
|
return $('[data-testid="ds-button"]');
|
|
31
41
|
}
|
|
@@ -52,6 +62,10 @@ export default class DSBannerCO extends PageObject {
|
|
|
52
62
|
return $('[data-testid="ds-banner"');
|
|
53
63
|
}
|
|
54
64
|
|
|
65
|
+
static async getBannerContainer() {
|
|
66
|
+
return $('[data-testid="ds-banner-container"]');
|
|
67
|
+
}
|
|
68
|
+
|
|
55
69
|
static async dangerLabel() {
|
|
56
70
|
return $('div*=Danger');
|
|
57
71
|
}
|
|
@@ -61,11 +75,11 @@ export default class DSBannerCO extends PageObject {
|
|
|
61
75
|
}
|
|
62
76
|
|
|
63
77
|
static async getTitleSlotByIndex(index = 0) {
|
|
64
|
-
return $$('[data-dimsum-slot="dsBannerTitle"]')[index];
|
|
78
|
+
return $$('[data-dimsum-parent-slot="dsBannerTitle"]')[index];
|
|
65
79
|
}
|
|
66
80
|
|
|
67
81
|
static async getSubtitleSlotByIndex(index = 0) {
|
|
68
|
-
return $$('[data-dimsum-slot="dsBannerSubtitle"]')[index];
|
|
82
|
+
return $$('[data-dimsum-parent-slot="dsBannerSubtitle"]')[index];
|
|
69
83
|
}
|
|
70
84
|
|
|
71
85
|
static async getButtonRootSlotByIndex(index = 0) {
|
|
@@ -76,6 +90,10 @@ export default class DSBannerCO extends PageObject {
|
|
|
76
90
|
return $$('[data-dimsum-slot="dsBannerContainer"]')[index];
|
|
77
91
|
}
|
|
78
92
|
|
|
93
|
+
static async getLayoutSlotByIndex(index = 0) {
|
|
94
|
+
return $$('[data-dimsum-slot="dsBannerLayout"]')[index];
|
|
95
|
+
}
|
|
96
|
+
|
|
79
97
|
static async getIconContainerSlotByIndex(index = 0) {
|
|
80
98
|
return $$('[data-dimsum-slot="dsBannerIconContainer"]')[index];
|
|
81
99
|
}
|
|
@@ -84,6 +102,10 @@ export default class DSBannerCO extends PageObject {
|
|
|
84
102
|
return $$('[data-dimsum-slot="dsBannerInnerContainer"]')[index];
|
|
85
103
|
}
|
|
86
104
|
|
|
105
|
+
static async getBannerLiveRegionPortalSlotByIndex(index = 0) {
|
|
106
|
+
return $$('[data-dimsum-slot="dsBannerLiveRegionPortal"]')[index];
|
|
107
|
+
}
|
|
108
|
+
|
|
87
109
|
// Snapshots
|
|
88
110
|
static snapshotPath(example = 'basic') {
|
|
89
111
|
return PageObject.getSnapshotPathBuilder('DSBanner', example, 'ds-banner');
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import DSBannerCO from '../DSBannerCO';
|
|
2
|
+
|
|
3
|
+
if (
|
|
4
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
5
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
6
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
7
|
+
browser.capabilities.browserName === 'Chrome'
|
|
8
|
+
) {
|
|
9
|
+
describe('PUI-17537 - Banner - Aria Assertive -Func', () => {
|
|
10
|
+
before('loading page', async () => {
|
|
11
|
+
const errorOnGo = await DSBannerCO.ariaLiveAssertiveTest.go();
|
|
12
|
+
if (errorOnGo) throw errorOnGo;
|
|
13
|
+
});
|
|
14
|
+
it('01: should have aria-live="assertive" attribute on banner after trigger', async () => {
|
|
15
|
+
const triggerButton = await DSBannerCO.getButton();
|
|
16
|
+
await triggerButton.click();
|
|
17
|
+
const banner = await DSBannerCO.getBannerLiveRegionPortalSlotByIndex();
|
|
18
|
+
await banner.waitForDisplayed();
|
|
19
|
+
await expect(banner).toHaveAttribute('aria-live', 'assertive');
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe('PUI-17538 - Banner - Aria Polite -Func', () => {
|
|
23
|
+
before('loading page', async () => {
|
|
24
|
+
const errorOnGo = await DSBannerCO.ariaLivePoliteTest.go();
|
|
25
|
+
if (errorOnGo) throw errorOnGo;
|
|
26
|
+
});
|
|
27
|
+
it('01: should have aria-live="polite" attribute on banner after trigger', async () => {
|
|
28
|
+
const triggerButton = await DSBannerCO.getButton();
|
|
29
|
+
await triggerButton.click();
|
|
30
|
+
const banner = await DSBannerCO.getBannerLiveRegionPortalSlotByIndex();
|
|
31
|
+
await banner.waitForDisplayed();
|
|
32
|
+
await expect(banner).toHaveAttribute('aria-live', 'polite');
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('PUI-17539 - Banner - Role Alert -Func', () => {
|
|
36
|
+
before('loading page', async () => {
|
|
37
|
+
const errorOnGo = await DSBannerCO.roleAlertTest.go();
|
|
38
|
+
if (errorOnGo) throw errorOnGo;
|
|
39
|
+
});
|
|
40
|
+
it('01: should have role="alert"attribute on banner after trigger', async () => {
|
|
41
|
+
const triggerButton = await DSBannerCO.getButton();
|
|
42
|
+
await triggerButton.click();
|
|
43
|
+
const banner = await DSBannerCO.getBanner();
|
|
44
|
+
await banner.waitForDisplayed();
|
|
45
|
+
await expect(banner).toHaveAttribute('role', 'alert');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('PUI-17540 - Banner - Role Region and Alert -Func', () => {
|
|
49
|
+
before('loading page', async () => {
|
|
50
|
+
const errorOnGo = await DSBannerCO.roleRegionTest.go();
|
|
51
|
+
if (errorOnGo) throw errorOnGo;
|
|
52
|
+
});
|
|
53
|
+
it('01: should have role="region" and role="alert" attributes on banner after trigger', async () => {
|
|
54
|
+
const triggerButton = await DSBannerCO.getButton();
|
|
55
|
+
await triggerButton.click();
|
|
56
|
+
const banner = await DSBannerCO.getBanner();
|
|
57
|
+
await banner.waitForDisplayed();
|
|
58
|
+
const bannerContainer = await DSBannerCO.getBannerContainer();
|
|
59
|
+
await expect(bannerContainer).toHaveAttribute('role', 'region');
|
|
60
|
+
await expect(banner).toHaveAttribute('role', 'alert');
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|