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.
Files changed (183) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/ds-accordion/DSAccordionCO.js +15 -11
  3. package/ds-accordion/role/DSAccordion.role-heading.func.spec.js +21 -0
  4. package/ds-accordion/scrollable-content/DSAccordion.scrollable-content.visual.spec.js +42 -0
  5. package/ds-accordion/slots/DSAccordion.slots.func.spec.js +12 -0
  6. package/ds-accordion/wrapLabel/DSAccordion.wrap-label.visual.spec.js +20 -0
  7. package/ds-autocomplete/DSAutocompleteCO.js +18 -0
  8. package/ds-autocomplete/slots/DSAutocomplete.slots.axe-core.func.spec.js +20 -0
  9. package/ds-autocomplete/slots/DSAutocomplete.slots.func.spec.js +45 -0
  10. package/ds-autocomplete/slots/DSAutocomplete.slots.visual.spec.js +21 -0
  11. package/ds-banner/DSBanner.func.spec.js +4 -60
  12. package/ds-banner/DSBanner.text-resize.visual.spec.js +15 -0
  13. package/ds-banner/DSBanner.text-wrapping.visual.spec.js +31 -0
  14. package/ds-banner/DSBanner.visual.spec.js +0 -29
  15. package/ds-banner/DSBannerCO.js +24 -2
  16. package/ds-banner/aria-and-role/DSBanner.aria-and-role.func.spec.js +63 -0
  17. package/ds-banner/slots/DSBanner.slots.func.spec.js +65 -0
  18. package/ds-banner/slots/DSBanner.slots.visual.spec.js +17 -0
  19. package/ds-breadcrumb/DSBreadcrumb.func.spec.js +5 -3
  20. package/ds-button-v3/DSButtonV3.type-submit.func.spec.js +28 -0
  21. package/ds-button-v3/DSButtonV3.visual.spec.js +7 -2
  22. package/ds-button-v3/DSButtonV3CO.js +2 -0
  23. package/ds-card-navigation/CardNavigationCO.js +56 -0
  24. package/ds-card-navigation/DSCardNavigation.func.spec.js +50 -1
  25. package/ds-card-navigation/DSCardNavigation.slots.func.spec.js +127 -0
  26. package/ds-card-navigation/DSCardNavigation.slots.visual.spec.js +26 -0
  27. package/ds-card-navigation/DSCardNavigation.visual.spec.js +16 -0
  28. package/ds-card-v3/DSCardV3CO.js +20 -0
  29. package/ds-card-v3/drag-n-drop/DSCardV3.DnD.visual.spec.js +1 -1
  30. package/ds-card-v3/slots/DSCardV3.slots.axe-core.spec.js +22 -0
  31. package/ds-card-v3/slots/DSCardV3.slots.func.spec.js +36 -0
  32. package/ds-card-v3/slots/DSCardV3.slots.visual.spec.js +18 -0
  33. package/ds-chat/DSChat.func.spec.js +3 -2
  34. package/ds-chat/DSChat.visual.spec.js +3 -2
  35. package/ds-chat/DSChatCO.js +0 -8
  36. package/ds-chat/floatingbutton/DSChat-floating-button.visual.spec.js +1 -1
  37. package/ds-chip/DSChipCO.js +24 -0
  38. package/ds-chip/slots/DSChip.slots.axe-core.spec.js +17 -0
  39. package/ds-chip/slots/DSChip.slots.func.spec.js +39 -0
  40. package/ds-chip/slots/DSChip.slots.visual.spec.js +17 -0
  41. package/ds-circular-indeterminate-indicator/DSCircularIndicator.visual.spec.js +2 -1
  42. package/ds-controlled-form/ds-combobox/creatable/DSCombobox.creatable.visual.spec.js +6 -4
  43. package/ds-controlled-form/ds-controlled-large-input-text/DSLargeInputTextCO.js +5 -0
  44. package/ds-controlled-form/ds-controlled-large-input-text/aria-disabled/DSLargeInputText.aria-disabled.func.spec.js +19 -0
  45. package/ds-controlled-form/ds-controlled-radio-group/DSControlledRadioGroup.axe-core.func.spec.js +31 -0
  46. package/ds-controlled-form/react-hook-form/ReactHook.visual.spec.js +1 -0
  47. package/ds-data-table-async/DSDataTableCO.js +173 -108
  48. package/ds-data-table-async/basic/DSDataTable.basic.visual.spec.js +1 -45
  49. package/ds-data-table-async/components/FilterBarCO.js +8 -0
  50. package/ds-data-table-async/components/FiltersCO.js +12 -0
  51. package/ds-data-table-async/components/HeaderCO.js +5 -0
  52. package/ds-data-table-async/components/PaginationNavCO.js +1 -1
  53. package/ds-data-table-async/date-filters/DSDataTable.date-switcher.single.func.spec.js +1 -1
  54. package/ds-data-table-async/date-filters/DSDataTable.date-switcher.visual.spec.js +18 -8
  55. package/ds-data-table-async/dnd/DSDataTable.dnd.visual.spec.js +3 -1
  56. package/ds-data-table-async/dnd/DSDataTable.dnd_fixed-width.visual.spec.js +33 -0
  57. package/ds-data-table-async/empty-state/DSDataTable.empty-state.visual.spec.js +13 -0
  58. package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +5 -5
  59. package/ds-data-table-async/filters/DSDataTable.filters-creatable.visual.spec.js +1 -0
  60. package/ds-data-table-async/filters/DSDataTable.filters.visual.spec.js +18 -1
  61. package/ds-data-table-async/filters/DSDataTable.free-text-search.keyboard.func.spec.js +242 -0
  62. package/ds-data-table-async/filters/DSDataTable.free-text-search.visual.spec.js +54 -0
  63. package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +3 -3
  64. package/ds-data-table-async/menubutton/DSDataTable.MenuButton.keyboard.func.spec.js +56 -0
  65. package/ds-data-table-async/menubutton/DSDataTable.MenuButton.mouse.func.spec.js +55 -0
  66. package/ds-data-table-async/menubutton/DSDataTable.MenuButton.visual.spec.js +27 -0
  67. package/ds-data-table-async/more/DSDataTable.headers.visual.spec.js +0 -63
  68. package/ds-data-table-async/select/DSDataTable.select.func.spec.js +1 -1
  69. package/ds-data-table-async/slots/DSDataTable.slots.func.spec.js +40 -0
  70. package/ds-data-table-async/slots/DSDataTable.slots.visual.spec.js +19 -0
  71. package/ds-data-table-async/sorting/DSDataTable.sorting.visual.spec.js +118 -0
  72. package/ds-dataviz/DSDataViz.axis.visual.spec.js +2 -1
  73. package/ds-dataviz/DSDataViz.scroll.visual.spec.js +1 -0
  74. package/ds-dataviz/DSDataViz.ticks.visual.spec.js +2 -1
  75. package/ds-dialog/DSDialog.cases.visual.spec.js +3 -4
  76. package/ds-dialog/DSDialog.visual.spec.js +7 -14
  77. package/ds-dialog/DSDialogCO.js +5 -13
  78. package/ds-dialog/axe-core/DSDialog.error.axe-core.func.spec.js +24 -0
  79. package/ds-dialog/axe-core/DSDialog.info.axe-core.func.spec.js +24 -0
  80. package/ds-dialog/axe-core/DSDialog.scroll-body.axe-core.func.spec.js +24 -0
  81. package/ds-dialog/axe-core/DSDialog.success.axe-core.func.spec.js +24 -0
  82. package/ds-dialog/axe-core/DSDialog.warning.axe-core.spec.func.js +24 -0
  83. package/ds-dropdownmenu-v2/DSDDMenuV2.visual.spec.js +5 -5
  84. package/ds-form-combobox-multi/DSComboboxMultiCO.js +96 -1
  85. package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +7 -3
  86. package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.mouse.func.spec.js +25 -0
  87. package/ds-form-combobox-multi/menu-position/DSComboboxMulti.menu-position.visual.spec.js +42 -0
  88. package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.func.spec.js +100 -0
  89. package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.visual.spec.js +51 -0
  90. package/ds-form-combobox-single/DSComboboxSingleCO.js +97 -1
  91. package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.mouse.func.spec.js +25 -0
  92. package/ds-form-combobox-single/menu-position/DSComboboxSingle.menu-position.visual.spec.js +93 -0
  93. package/ds-form-combobox-single/slots/DSComboboxSingle.slots.func.spec.js +100 -0
  94. package/ds-form-combobox-single/slots/DSComboboxSingle.slots.visual.spec.js +53 -0
  95. package/ds-form-date-range-picker/aria-disabled/DateRangePicker.applyAriaDisabled.keyboard-nav.func.spec.js +31 -5
  96. package/ds-form-date-time-picker/DSControlledDateTimePickerCO.js +7 -5
  97. package/ds-form-date-time-picker/date-input/DateInput.keyboard-nav.func.spec.js +2 -2
  98. package/ds-form-date-time-picker/date-time-full/DateTimeFull.applyAriaDisabled.axe-core.func.spec.js +1 -1
  99. package/ds-form-date-time-picker/date-time-full/DateTimeFull.axe-core.func.spec.js +25 -0
  100. package/ds-form-date-time-picker/date-time-full/DateTimePicker.applyAriaDisabled.keyboard-nav.func.spec.js +6 -1
  101. package/ds-form-date-time-picker/date-time-full/DateTimePicker.func.spec.js +32 -2
  102. package/ds-form-date-time-picker/date-time-full/DateTimePicker.keyboard-nav.func.spec.js +6 -1
  103. package/ds-form-date-time-picker/date-time-full/DateTimePicker.readOnly.keyboard-nav.func.spec.js +6 -1
  104. package/ds-form-date-time-picker/date-time-input/DateTimeInput.applyAriaDisabled.keyboard-nav.func.spec.js +40 -4
  105. package/ds-form-date-time-picker/showcase/DateTimePicker.applyAriaDisabled-showcase.visual.spec.js +2 -2
  106. package/ds-form-date-time-picker/showcase/DateTimePicker.readOnly-showcase.visual.spec.js +2 -2
  107. package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItem.axe-core.func.spec.js +4 -1
  108. package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +4 -0
  109. package/ds-form-native-select/NativeSelect.axe-core.func.spec.js +57 -0
  110. package/ds-form-native-select/NativeSelectCO.js +35 -0
  111. package/{ds-toggle → ds-form-toggle}/DSToggle.axe-core.func.spec.js +6 -2
  112. package/{ds-toggle → ds-form-toggle}/DSToggle.func.spec.js +13 -8
  113. package/{ds-toggle → ds-form-toggle}/DSToggle.visual.spec.js +2 -2
  114. package/{ds-toggle → ds-form-toggle}/DSToggleCO.js +1 -1
  115. package/ds-global-header/GlobalHeader.axe-core.func.spec.js +13 -0
  116. package/ds-global-header/GlobalHeaderCO.js +2 -0
  117. package/{ds-controlled-form → ds-hooks}/useMask/Number/UseNumberMask.func.spec.js +25 -12
  118. package/{ds-controlled-form → ds-hooks}/useMask/Number/UseNumberMask.visual.spec.js +4 -1
  119. package/{ds-controlled-form → ds-hooks}/useMask/Phone/UsePhoneMask.func.spec.js +1 -1
  120. package/{ds-controlled-form → ds-hooks}/useMask/Phone/UsePhoneMask.visual.spec.js +1 -1
  121. package/{ds-controlled-form → ds-hooks}/useMask/ReackHookFormWithMask/ReactHookFormWithMask.func.spec.js +1 -1
  122. package/{ds-controlled-form → ds-hooks}/useMask/ReackHookFormWithMask/ReactHookFormWithMask.visual.spec.js +1 -1
  123. package/{ds-controlled-form → ds-hooks}/useMask/RegExp/UseRegExpMask.func.spec.js +1 -1
  124. package/{ds-controlled-form → ds-hooks}/useMask/SSN/UseSsnMask.func.spec.js +1 -1
  125. package/{ds-controlled-form → ds-hooks}/useMask/ZipCode/UseZipCodeMask.func.spec.js +1 -1
  126. package/ds-indeterminate-progress-indicator/DSIndetermintateProgressIndicator.axe-core.func.spec.js +31 -0
  127. package/ds-menu-button/DSMenuButtonCO.js +2 -0
  128. package/ds-menu-button/basic/DSMenuButton.basic.func.spec.js +28 -0
  129. package/ds-menu-button/multiselect/DSMenuButton.axe-core.multiselect.func.spec.js +6 -1
  130. package/ds-menu-button/singleSelect/DSMenuButton.axe-core.singleSelect.func.spec.js +6 -1
  131. package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +7 -2
  132. package/ds-menu-item/DSMenuItems.visual.spec.js +8 -32
  133. package/ds-mobile/MobileDatePicker/MobileDatePicker.visual.spec.js +0 -13
  134. package/ds-modal-slide/ModalSlideCO.js +2 -0
  135. package/ds-notification-badge/DSNotificationBadge.axe-core.func.spec.js +1 -1
  136. package/ds-pagination/DSPagination.axe-core.func.spec.js +64 -0
  137. package/ds-pagination/DSPaginationCO.js +12 -0
  138. package/ds-pills-v2/DSPills.visual.spec.js +3 -1
  139. package/ds-pills-v2/selection/DSPills.axe-core.func.spec.js +6 -1
  140. package/ds-pills-v2/selection/DSPills.func.spec.js +32 -30
  141. package/ds-progress-indicator/DSProgressIndicator.axe-core.func.spec.js +31 -0
  142. package/ds-progress-indicator/DSProgressIndicator.func.spec.js +8 -3
  143. package/ds-progress-indicator/DSProgressIndicator.visual.spec.js +12 -2
  144. package/ds-progress-indicator/DSProgressIndicatorCO.js +5 -3
  145. package/ds-query-builder/DSQueryBuilder.visual.spec.js +10 -3
  146. package/ds-read-more/DSReadMore.func.spec.js +0 -58
  147. package/ds-read-more/DSReadMore.keyboard-nav.func.spec.js +66 -0
  148. package/ds-read-more/DSReadMore.slots.func.spec.js +58 -0
  149. package/ds-read-more/DSReadMore.slots.visual.spec.js +23 -0
  150. package/ds-read-more/DSReadMore.visual.spec.js +41 -17
  151. package/ds-read-more/DSReadMore.width-change.visual.spec.js +85 -0
  152. package/ds-read-more/DSReadMore.with-tooltip.func.spec.js +63 -0
  153. package/ds-read-more/DSReadMoreCO.js +20 -0
  154. package/ds-shuttle-v2/Dnd/DSShuttleV2.DnD.visual.spec.js +3 -0
  155. package/ds-shuttle-v2/basic/DSShuttleV2.keyboard.func.spec.js +0 -79
  156. package/ds-shuttle-v2/extra/DSShuttleV2.extra.func.spec.js +6 -2
  157. package/ds-shuttle-v2/extra/DSShuttleV2.extra.visual.spec.js +21 -0
  158. package/ds-shuttle-v2/filtering/DSShuttleV2.filter.func.spec.js +8 -3
  159. package/ds-shuttle-v2/filtering/DSShuttleV2.filter.kb.func.spec.js +43 -0
  160. package/ds-shuttle-v2/items/DSShuttleV2.items.func.spec.js +3 -2
  161. package/ds-shuttle-v2/items/DSShuttleV2.items.kb.func.spec.js +1 -1
  162. package/ds-shuttle-v2/load-more/DSShuttleV2.load-more.keyboard.func.spec.js +61 -0
  163. package/ds-slider-v2/DSSliderV2.extra.func.spec.js +44 -0
  164. package/ds-slider-v2/DSSliderV2.func.spec.js +98 -0
  165. package/ds-slider-v2/DSSliderV2CO.js +8 -0
  166. package/ds-svg/DSSvg.axe-core.func.spec.js +32 -0
  167. package/ds-svg/DSSvgCO.js +2 -3
  168. package/ds-tabs/DSTabs.onTabChange.func.spec.js +33 -0
  169. package/ds-tabs/DSTabsCO.js +29 -1
  170. package/ds-tabs/slots/DSTabs.slots.func.spec.js +77 -0
  171. package/ds-tabs/slots/DSTabs.slots.visual.spec.js +49 -0
  172. package/ds-tabs/with-carousel/DSTabs.with-carousel.visual.spec.js +5 -4
  173. package/ds-tooltip-v3/DSTooltipV3CO.js +6 -2
  174. package/ds-treeview/DSTreeViewCO.js +8 -0
  175. package/ds-treeview/dragAndDrop/TreeView-dnd.func.spec.js +0 -50
  176. package/ds-treeview/dragAndDrop/TreeView-dnd_mouse.func.spec.js +61 -0
  177. package/package.json +188 -187
  178. package/paths.js +17 -1
  179. package/ds-dialog/DSDialog.smoke.spec.js +0 -133
  180. package/ds-slider-v2/DSSliderV2.skipped.js +0 -46
  181. /package/ds-form-combobox-multi/iframe/{DSComboboxMulti.insideIframe.func.spec.js → DSComboboxMulti.insideIframe.visual.spec.js} +0 -0
  182. /package/{ds-controlled-form → ds-hooks}/useMask/useMaskCO.js +0 -0
  183. /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 { PATH_ACCORDION_EXAMPLES, PATH_E2E_ACCORDION } from '../paths';
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(PATH_ACCORDION_EXAMPLES, 'basic');
7
+ static basicURL = new Urlbuilder(PATH_E2E_ACCORDION, 'basic');
8
8
 
9
- static expandableURL = new Urlbuilder(PATH_ACCORDION_EXAMPLES, 'expandable');
9
+ static multipleURL = new Urlbuilder(PATH_E2E_ACCORDION, 'multiple');
10
10
 
11
- static multipleURL = new Urlbuilder(PATH_ACCORDION_EXAMPLES, 'multiple');
11
+ static toMobileURL = new Urlbuilder(PATH_E2E_ACCORDION, 'desktop-to-mobile');
12
12
 
13
- static toMobileURL = new Urlbuilder(PATH_ACCORDION_EXAMPLES, 'desktop-to-mobile');
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 getAccordionItemHeaderSecodnaryTitleSlotByIndex(index = 0) {
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 banner = await DSBannerCO.getBanner();
57
- await expect(banner).toBeDisplayed();
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
  }
@@ -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
+ }