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
@@ -4,85 +4,6 @@ import { Key } from 'webdriverio';
4
4
  import DSShuttleV2CO from '../DSShuttleV2CO';
5
5
 
6
6
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
7
- describe('PUI-9798 - Shuttle V2, TabStops Basic -Func.', () => {
8
- before(async () => {
9
- const errorOnGo = await DSShuttleV2CO.filterURL.go();
10
- if (errorOnGo) throw errorOnGo;
11
- });
12
- it('01: should tab and focus the filter icon (skiping text title)', async () => {
13
- await browser.keys(Key.Tab);
14
- const sourceFilterBtn = await DSShuttleV2CO.getHeaderSearchIcon(0);
15
- await expect(sourceFilterBtn).toBeFocused();
16
- });
17
- it('02: should tab and focus the select/deselect all checkbox', async () => {
18
- await browser.keys(Key.Tab);
19
- const sourcePanelCheckbox = await DSShuttleV2CO.getCheckboxByIndex(0);
20
- await expect(sourcePanelCheckbox).toBeFocused();
21
- });
22
- it('03: should tab and focus the source panel', async () => {
23
- await browser.keys(Key.Tab);
24
- const sourcePanel = await DSShuttleV2CO.getListWrapperMid(0);
25
- await expect(sourcePanel).toBeFocused();
26
- });
27
- it('04: should select first item with arrowKeys', async () => {
28
- await browser.keys(Key.ArrowDown);
29
- const firstItem = await DSShuttleV2CO.getItemCheckboxByItem(await DSShuttleV2CO.getItemFromSourceByIndex(0));
30
- const isFirstItemFocused = await firstItem.getAttribute('tabindex');
31
- await expect(isFirstItemFocused).toEqual('0'); // 0 = true for pseudofocus
32
- await expect(firstItem).toBeFocused();
33
- });
34
- it('05: should Shift+Tab to focus the panel again and select last item with arrowKeys', async () => {
35
- await browser.keys([Key.Shift, Key.Tab]);
36
- await browser.keys(Key.ArrowUp);
37
- const firstItem = await DSShuttleV2CO.getItemCheckboxByIndex(9);
38
- const isFirstItemFocused = await firstItem.getAttribute('tabindex');
39
- await expect(isFirstItemFocused).toEqual('0'); // 0 = true for pseudofocus
40
- await expect(firstItem).toBeFocused();
41
- });
42
- it('06: should tab and focus next header search icon from destination panel', async () => {
43
- await browser.keys(Key.Tab);
44
- const sourceFilterBtn = await DSShuttleV2CO.getHeaderSearchIcon(1);
45
- await expect(sourceFilterBtn).toBeFocused();
46
- });
47
- });
48
- if (browser.capabilities.browserName !== 'Firefox') {
49
- describe('PUI-9799 - Shuttle V2, TabStops with BAB and LoadMore -Func.', () => {
50
- before(async () => {
51
- const errorOnGo = await DSShuttleV2CO.loadMoreURL.go();
52
- if (errorOnGo) throw errorOnGo;
53
- });
54
- it('01: display the BAB and return focus to the global checkbox to follow normal flow', async () => {
55
- const testItem = await DSShuttleV2CO.getItemWrapper(2);
56
- await testItem.click();
57
- const BAB = await DSShuttleV2CO.getMoveMultipleButton();
58
- const sourcePanelCheckbox = await DSShuttleV2CO.getCheckboxByIndex(0);
59
- await browser.keys([Key.Shift, Key.Tab]);
60
- await browser.keys([Key.Shift, Key.Tab]);
61
- await expect(BAB).toBeDisplayed();
62
- await expect(sourcePanelCheckbox).toBeFocused();
63
- });
64
- it('03: should tab and focus the source panel', async () => {
65
- await browser.keys(Key.Tab);
66
- const sourcePanel = await DSShuttleV2CO.getListWrapperMid(0);
67
- await expect(sourcePanel).toBeFocused();
68
- });
69
- it('04: should tab and focus the BAB', async () => {
70
- await browser.keys(Key.Tab);
71
- const BAB = await DSShuttleV2CO.getMoveMultipleButton(0);
72
- await expect(BAB).toBeFocused();
73
- });
74
- it('05: should tab and focus the loadmore', async () => {
75
- await browser.keys(Key.Tab);
76
- const loadMore = await DSShuttleV2CO.getListBottomLoadMoreBtn(0);
77
- await expect(loadMore).toBeFocused();
78
- });
79
- it('06: should tab and focus the global checkbox from destination panel', async () => {
80
- await browser.keys(Key.Tab);
81
- const destinationPanelCheckbox = await DSShuttleV2CO.getCheckboxByIndex(1);
82
- await expect(destinationPanelCheckbox).toBeFocused();
83
- });
84
- });
85
- }
86
7
  describe('PUI-9815 - Shuttle V2, Range selection -Func.', () => {
87
8
  before(async () => {
88
9
  const errorOnGo = await DSShuttleV2CO.basicURL.go();
@@ -13,23 +13,27 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
13
13
  await expect(loadMoreBtn).toBeDisplayed();
14
14
  await expect(sourceItems).toBe(10);
15
15
  });
16
- it('02: should trigger the loadMore with click and load three more items', async () => {
16
+ it('02: should trigger the loadMore with click, focus jump to last item and load three more items', async () => {
17
17
  const loadMoreBtn = await DSShuttleV2CO.getSourceLoadMore();
18
18
  await loadMoreBtn.click();
19
19
  await loadMoreBtn.waitForDisplayed(2000);
20
20
  const sourceItems = (await DSShuttleV2CO.getItemsFromSource()).length;
21
+ const item9 = await DSShuttleV2CO.getItemCheckboxByIndex(9);
21
22
  await expect(loadMoreBtn).toBeDisplayed();
22
23
  await expect(sourceItems).toBe(13);
24
+ await expect(item9).toBeFocused();
23
25
  });
24
- it('03: should trigger the loadMore with keyboard and load three more items', async () => {
26
+ it('03: should trigger the loadMore with keyboard, focus jump to last item and load three more items', async () => {
25
27
  const loadMoreBtn = await DSShuttleV2CO.getSourceLoadMore();
26
28
  await loadMoreBtn.waitForDisplayed();
27
29
  await browser.keys(Key.Tab);
28
30
  await browser.keys(Key.Enter);
29
31
  await loadMoreBtn.waitForDisplayed(2000);
30
32
  const sourceItems = (await DSShuttleV2CO.getItemsFromSource()).length;
33
+ const item12 = await DSShuttleV2CO.getItemCheckboxByIndex(12);
31
34
  await expect(loadMoreBtn).toBeDisplayed();
32
35
  await expect(sourceItems).toBe(16);
36
+ await expect(item12).toBeFocused();
33
37
  });
34
38
  });
35
39
  }
@@ -46,4 +46,25 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
46
46
  await expect(snapshot).toEqual(0);
47
47
  });
48
48
  });
49
+
50
+ describe('PUI-16491 - Shuttle V2, Load More with no elements in panel -Visual', () => {
51
+ before(async () => {
52
+ const errorOnGo = await DSShuttleV2CO.loadMoreURL.go();
53
+ if (errorOnGo) throw errorOnGo;
54
+ await browser.maximizeWindow();
55
+ });
56
+ it('01: should move all the items a, focus jump to body panel and load more items', async () => {
57
+ await browser.eyesOpen();
58
+ const selectAllCheckbox = await DSShuttleV2CO.getCheckboxByIndex(0);
59
+ await selectAllCheckbox.click();
60
+ const bab = await DSShuttleV2CO.getMoveMultipleButton();
61
+ await bab.click();
62
+ const loadMoreBtn = await DSShuttleV2CO.getSourceLoadMore();
63
+ await loadMoreBtn.click();
64
+ const firstItem = await DSShuttleV2CO.getItemFromSourceByIndex(0);
65
+ await firstItem.waitForDisplayed();
66
+ const snapshot = await browser.eyesCheckSnapshot(DSShuttleV2CO.snapshotPath('shuttle-v2-after-loadmore'));
67
+ await expect(snapshot).toEqual(0);
68
+ });
69
+ });
49
70
  }
@@ -10,10 +10,12 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
10
10
  it('01: search bar should not display untill filter icon is triggered', async () => {
11
11
  await expect($('[data-testid="ds-shuttle-v2-area-search-bar"]')).not.toBeDisplayed();
12
12
  });
13
- it('02: should filter and find only one match at source panel', async () => {
13
+ it('02: should trigger searchbar and have it present with placeholder', async () => {
14
14
  const sourceFilterBtn = await DSShuttleV2CO.getHeaderSearchIcon(0);
15
15
  await sourceFilterBtn.click();
16
- const placeholder = await (await DSShuttleV2CO.getSearchBarByIndex(0)).getAttribute('placeholder');
16
+ const searchbar = await DSShuttleV2CO.getSearchBarByIndex(0);
17
+ await searchbar.click();
18
+ const placeholder = await searchbar.getAttribute('placeholder');
17
19
  await expect(placeholder).toBe('Source search placeholder');
18
20
  });
19
21
  it('03: should filter and find only one match at source panel', async () => {
@@ -23,12 +25,14 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
23
25
  const testItem = await (await DSShuttleV2CO.getItemFromSourceByIndex(0)).getText();
24
26
  await expect(testItem).toBe('Source 0.2');
25
27
  });
26
- it('04: should filter and find 10 of 11 items matching at destination panel', async () => {
28
+ it('04: should trigger destination searchbar and have it present with placeholder', async () => {
27
29
  const testItem = await DSShuttleV2CO.getItemWrapper(0);
28
30
  const testItemMoveBtn = await DSShuttleV2CO.getActionButtonByItemAndIndex(testItem, 1);
29
31
  await testItemMoveBtn.click();
30
32
  const sourceFilterBtn = await DSShuttleV2CO.getHeaderSearchIcon(1);
31
33
  await sourceFilterBtn.click();
34
+ const searchbar = await DSShuttleV2CO.getSearchBarByIndex(1);
35
+ await searchbar.click();
32
36
  const placeholder = await (await DSShuttleV2CO.getSearchBarByIndex(1)).getAttribute('placeholder');
33
37
  await expect(placeholder).toBe('Destination search placeholder');
34
38
  });
@@ -57,6 +61,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
57
61
  it('02: should filter and find only one match at source panel', async () => {
58
62
  const sourceFilterBtn = await DSShuttleV2CO.getHeaderSearchIcon(0);
59
63
  await sourceFilterBtn.click();
64
+ await browser.keys('Tab');
60
65
  await type('Vote for Pedro');
61
66
  const sourceItems = (await DSShuttleV2CO.getItemsFromSource()).length;
62
67
  await expect(sourceItems).toBe(0);
@@ -14,6 +14,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
14
14
  it('02: should filter and find only one match at source panel', async () => {
15
15
  await browser.keys(Key.Tab);
16
16
  await browser.keys(Key.Enter);
17
+ await browser.keys('Tab');
17
18
  await type('0.2');
18
19
  const sourceItems = (await DSShuttleV2CO.getItemsFromSource()).length;
19
20
  await expect(sourceItems).toBe(1);
@@ -27,6 +28,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
27
28
  await browser.keys(Key.Tab);
28
29
  await browser.keys(Key.Tab);
29
30
  await browser.keys(Key.Enter);
31
+ await browser.keys('Tab');
30
32
  await type('Destination');
31
33
  const destinationItems = (await DSShuttleV2CO.getItemsFromDestination()).length;
32
34
  await expect(destinationItems).toBe(10);
@@ -39,4 +41,45 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
39
41
  await expect(testItem).toBe('Destination 0.3');
40
42
  });
41
43
  });
44
+ describe('PUI-9798 - Shuttle V2, TabStops Basic -Func.', () => {
45
+ before(async () => {
46
+ const errorOnGo = await DSShuttleV2CO.filterURL.go();
47
+ if (errorOnGo) throw errorOnGo;
48
+ });
49
+ it('01: should tab and focus the filter icon (skiping text title)', async () => {
50
+ await browser.keys(Key.Tab);
51
+ const sourceFilterBtn = await DSShuttleV2CO.getHeaderSearchIcon(0);
52
+ await expect(sourceFilterBtn).toBeFocused();
53
+ });
54
+ it('02: should tab and focus the select/deselect all checkbox', async () => {
55
+ await browser.keys(Key.Tab);
56
+ const sourcePanelCheckbox = await DSShuttleV2CO.getCheckboxByIndex(0);
57
+ await expect(sourcePanelCheckbox).toBeFocused();
58
+ });
59
+ it('03: should tab and focus the source panel', async () => {
60
+ await browser.keys(Key.Tab);
61
+ const sourcePanel = await DSShuttleV2CO.getListWrapperMid(0);
62
+ await expect(sourcePanel).toBeFocused();
63
+ });
64
+ it('04: should select first item with arrowKeys', async () => {
65
+ await browser.keys(Key.ArrowDown);
66
+ const firstItem = await DSShuttleV2CO.getItemCheckboxByItem(await DSShuttleV2CO.getItemFromSourceByIndex(0));
67
+ const isFirstItemFocused = await firstItem.getAttribute('tabindex');
68
+ await expect(isFirstItemFocused).toEqual('0'); // 0 = true for pseudofocus
69
+ await expect(firstItem).toBeFocused();
70
+ });
71
+ it('05: should Shift+Tab to focus the panel again and select last item with arrowKeys', async () => {
72
+ await browser.keys([Key.Shift, Key.Tab]);
73
+ await browser.keys(Key.ArrowUp);
74
+ const firstItem = await DSShuttleV2CO.getItemCheckboxByIndex(9);
75
+ const isFirstItemFocused = await firstItem.getAttribute('tabindex');
76
+ await expect(isFirstItemFocused).toEqual('0'); // 0 = true for pseudofocus
77
+ await expect(firstItem).toBeFocused();
78
+ });
79
+ it('06: should tab and focus next header search icon from destination panel', async () => {
80
+ await browser.keys(Key.Tab);
81
+ const sourceFilterBtn = await DSShuttleV2CO.getHeaderSearchIcon(1);
82
+ await expect(sourceFilterBtn).toBeFocused();
83
+ });
84
+ });
42
85
  }
@@ -14,7 +14,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
14
14
  const actualItem = await (await DSShuttleV2CO.getItemFromDestinationByIndex(10)).getText();
15
15
  const sourceItems = (await DSShuttleV2CO.getItemsFromSource()).length;
16
16
  const destinationItems = (await DSShuttleV2CO.getItemsFromDestination()).length;
17
- await expect(itemGhost).toBe('Source 0.1');
17
+ await expect(itemGhost).toBe('This item has been soft deleted and is shown as a ghost item.\nSource 0.1');
18
18
  await expect(actualItem).toBe('Source 0.1');
19
19
  await expect(sourceItems).toBe(10);
20
20
  await expect(destinationItems).toBe(11);
@@ -49,8 +49,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
49
49
  const testItemAtD = await DSShuttleV2CO.getItemFromDestinationByIndex(10);
50
50
  const testItemAtDText = await testItemAtD.getText();
51
51
  const testItemSubtitle = await DSShuttleV2CO.getSubtitleByItem(testItemAtD);
52
+ const testItemSubtitleText = await testItemSubtitle.getText();
52
53
  await expect(testItemAtDText).toBe('Source 0.0');
53
- await expect(testItemSubtitle).not.toBeDisplayed();
54
+ await expect(testItemSubtitleText).toBe('');
54
55
  });
55
56
  it('03: should display the subtitle again when the soure item moves back to source panel', async () => {
56
57
  const testItemAtD = await DSShuttleV2CO.getItemFromDestinationByIndex(10);
@@ -19,7 +19,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
19
19
  const actualItem = await (await DSShuttleV2CO.getItemFromDestinationByIndex(10)).getText();
20
20
  const sourceItems = (await DSShuttleV2CO.getItemsFromSource()).length;
21
21
  const destinationItems = (await DSShuttleV2CO.getItemsFromDestination()).length;
22
- await expect(itemGhost).toBe('Source 0.1');
22
+ await expect(itemGhost).toBe('This item has been soft deleted and is shown as a ghost item.\nSource 0.1');
23
23
  await expect(actualItem).toBe('Source 0.1');
24
24
  await expect(sourceItems).toBe(10);
25
25
  await expect(destinationItems).toBe(11);
@@ -0,0 +1,61 @@
1
+ /* eslint-disable max-lines */
2
+ /* eslint-disable max-statements */
3
+ import { Key } from 'webdriverio';
4
+ import DSShuttleV2CO from '../DSShuttleV2CO';
5
+
6
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
7
+ describe('PUI-9799 - Shuttle V2, TabStops with BAB and LoadMore -Func.', () => {
8
+ before(async () => {
9
+ const errorOnGo = await DSShuttleV2CO.loadMoreURL.go();
10
+ if (errorOnGo) throw errorOnGo;
11
+ });
12
+ it('01: display the BAB and return focus to the global checkbox to follow normal flow', async () => {
13
+ const testItem = await DSShuttleV2CO.getItemWrapper(2);
14
+ await testItem.click();
15
+ const BAB = await DSShuttleV2CO.getMoveMultipleButton();
16
+ const sourcePanelCheckbox = await DSShuttleV2CO.getCheckboxByIndex(0);
17
+ await browser.keys([Key.Shift, Key.Tab]);
18
+ await browser.keys([Key.Shift, Key.Tab]);
19
+ await expect(BAB).toBeDisplayed();
20
+ await expect(sourcePanelCheckbox).toBeFocused();
21
+ });
22
+ it('03: should tab and focus the source panel', async () => {
23
+ await browser.keys(Key.Tab);
24
+ const sourcePanel = await DSShuttleV2CO.getListWrapperMid(0);
25
+ await expect(sourcePanel).toBeFocused();
26
+ });
27
+ it('04: should tab and focus the BAB', async () => {
28
+ await browser.keys(Key.Tab);
29
+ const BAB = await DSShuttleV2CO.getMoveMultipleButton(0);
30
+ await expect(BAB).toBeFocused();
31
+ });
32
+ it('05: should tab and focus the loadmore', async () => {
33
+ await browser.keys(Key.Tab);
34
+ const loadMore = await DSShuttleV2CO.getListBottomLoadMoreBtn(0);
35
+ await expect(loadMore).toBeFocused();
36
+ });
37
+ it('06: should tab and focus the global checkbox from destination panel', async () => {
38
+ await browser.keys(Key.Tab);
39
+ const destinationPanelCheckbox = await DSShuttleV2CO.getCheckboxByIndex(1);
40
+ await expect(destinationPanelCheckbox).toBeFocused();
41
+ });
42
+ it('07: should move all the items to destination panel', async () => {
43
+ await browser.keys(Key.Return);
44
+ await browser.keys(Key.Tab);
45
+ await browser.keys(Key.Tab);
46
+ await browser.keys(Key.Return);
47
+ const emptyListWrapper = await DSShuttleV2CO.getEmptyListWrapper();
48
+ await expect(emptyListWrapper).toHaveText(expect.stringContaining('There are no items to display'));
49
+ });
50
+ it('08: should load more items and focus the panel body', async () => {
51
+ await browser.keys(Key.Tab);
52
+ await browser.keys(Key.Return);
53
+ // eslint-disable-next-line wdio/no-pause
54
+ await browser.pause(500); // wait for load more to finish
55
+ const destinationPanel = await DSShuttleV2CO.getListWrapperMid(1);
56
+ const destinationItems = (await DSShuttleV2CO.getItemsFromDestination()).length;
57
+ await expect(destinationItems).toBe(3);
58
+ await expect(destinationPanel).toBeFocused();
59
+ });
60
+ });
61
+ }
@@ -0,0 +1,44 @@
1
+ /* eslint-disable max-statements */
2
+ import DSSliderV2CO from './DSSliderV2CO';
3
+
4
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
5
+ describe('PUI-16581 - SliderV2 - Track Click, Single -Func', () => {
6
+ before('loading page', async () => {
7
+ const errorOnGo = await DSSliderV2CO.singleURL.go();
8
+ if (errorOnGo) throw errorOnGo;
9
+ });
10
+ it('01: should change slider value with click jump (click on track right)', async () => {
11
+ const handler = await DSSliderV2CO.getSliderThumb();
12
+ await handler.click({ x: 400, y: 0 });
13
+ const valueAfterChange = await DSSliderV2CO.getSliderValue(handler);
14
+ await expect(valueAfterChange).toEqual('20');
15
+ });
16
+ it('02: should change slider value with click jump (click on track left)', async () => {
17
+ const handler = await DSSliderV2CO.getSliderThumb();
18
+ await handler.click({ x: -200, y: 0 });
19
+ const valueAfterChange = await DSSliderV2CO.getSliderValue(handler);
20
+ await expect(valueAfterChange).toEqual('10');
21
+ });
22
+ });
23
+
24
+ describe('PUI-16582 - SliderV2 - Track Click, Multi - Func', () => {
25
+ before('loading page', async () => {
26
+ const errorOnGo = await DSSliderV2CO.multipleURL.go();
27
+ if (errorOnGo) throw errorOnGo;
28
+ await browser.maximizeWindow();
29
+ });
30
+ it('01: should move both handlers when moving the selected track', async () => {
31
+ const maxValue = await DSSliderV2CO.getSliderThumb(1);
32
+ await maxValue.dragAndDrop({ x: -300, y: -0 });
33
+ const maxValueBeforechange = await DSSliderV2CO.getSliderValue(maxValue);
34
+ const track = await DSSliderV2CO.getSliderTrack();
35
+ await track.dragAndDrop({ x: 300, y: -0 });
36
+ const minValue = await DSSliderV2CO.getSliderThumb(0);
37
+ const valueAfterChange = await DSSliderV2CO.getSliderValue(minValue);
38
+ const value2AfterChange = await DSSliderV2CO.getSliderValue(maxValue);
39
+ await expect(maxValueBeforechange).toEqual('75');
40
+ await expect(valueAfterChange).toEqual('25');
41
+ await expect(value2AfterChange).toEqual('100');
42
+ });
43
+ });
44
+ }
@@ -179,6 +179,104 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
179
179
  });
180
180
  });
181
181
 
182
+ describe('PUI-12328 - SliderV2 - Multiple, mouse -Func', () => {
183
+ before('loading page', async () => {
184
+ const errorOnGo = await DSSliderV2CO.multipleURL.go();
185
+ if (errorOnGo) throw errorOnGo;
186
+ });
187
+ it('01: should change value of both handlers (same track) (with mouse)', async () => {
188
+ await browser.maximizeWindow();
189
+ const handler1 = await DSSliderV2CO.getSliderThumb(0);
190
+ const handler2 = await DSSliderV2CO.getSliderThumb(1);
191
+ const valueHandler1 = await DSSliderV2CO.getSliderValue(handler1);
192
+ const valueHandler2 = await DSSliderV2CO.getSliderValue(handler2);
193
+ await handler1.dragAndDrop({ x: 250, y: 0 });
194
+ await handler2.dragAndDrop({ x: -250, y: 0 });
195
+ const valueHandler1after = await DSSliderV2CO.getSliderValue(handler1);
196
+ const valueHandler2after = await DSSliderV2CO.getSliderValue(handler2);
197
+ await expect(valueHandler1).toEqual('0');
198
+ await expect(valueHandler2).toEqual('100');
199
+ await expect(valueHandler1after).toEqual('25');
200
+ await expect(valueHandler2after).toEqual('75');
201
+ });
202
+ it('02: should be able to change the handlers order (with mouse)', async () => {
203
+ const minSlider = await DSSliderV2CO.getMinHandlerByAriaLabel();
204
+ const maxSlider = await DSSliderV2CO.getMaxHandlerByAriaLabel();
205
+ await minSlider.dragAndDrop({ x: 550, y: 0 });
206
+ await maxSlider.dragAndDrop({ x: -1200, y: 0 });
207
+ const valueMinSliderAfter = await DSSliderV2CO.getSliderValue(minSlider);
208
+ const valueMaxSliderAfter = await DSSliderV2CO.getSliderValue(maxSlider);
209
+ await expect(valueMinSliderAfter).toEqual('50');
210
+ await expect(valueMaxSliderAfter).toEqual('0');
211
+ });
212
+ it('03: should be to set both handlers at the same value with mouse', async () => {
213
+ const minSlider = await DSSliderV2CO.getMinHandlerByAriaLabel();
214
+ const maxSlider = await DSSliderV2CO.getMaxHandlerByAriaLabel();
215
+ await minSlider.dragAndDrop({ x: 900, y: 0 });
216
+ await maxSlider.dragAndDrop({ x: 900, y: 0 });
217
+ await maxSlider.dragAndDrop({ x: 900, y: 0 });
218
+ const valueMinSliderAfter = await DSSliderV2CO.getSliderValue(minSlider);
219
+ const valueMaxSliderAfter = await DSSliderV2CO.getSliderValue(maxSlider);
220
+ await expect(valueMinSliderAfter).toEqual('100');
221
+ await expect(valueMaxSliderAfter).toEqual('100');
222
+ });
223
+ it('04: should be to move from 100', async () => {
224
+ const minSlider = await DSSliderV2CO.getMinHandlerByAriaLabel();
225
+ const maxSlider = await DSSliderV2CO.getMaxHandlerByAriaLabel();
226
+ await minSlider.dragAndDrop({ x: -750, y: 0 });
227
+ const valueMinSliderAfter = await DSSliderV2CO.getSliderValue(minSlider);
228
+ const valueMaxSliderAfter = await DSSliderV2CO.getSliderValue(maxSlider);
229
+ await expect(valueMinSliderAfter).toEqual('100');
230
+ await expect(valueMaxSliderAfter).toEqual('50');
231
+ });
232
+ });
233
+
234
+ describe('PUI-16290 - SliderV2 - Multiple, keyboard -Func', () => {
235
+ before('loading page', async () => {
236
+ const errorOnGo = await DSSliderV2CO.multipleURL.go();
237
+ if (errorOnGo) throw errorOnGo;
238
+ });
239
+ it('01: should change value of both handlers (same track) (with KB)', async () => {
240
+ await browser.maximizeWindow();
241
+ const handler1 = await DSSliderV2CO.getSliderThumb(0);
242
+ const handler2 = await DSSliderV2CO.getSliderThumb(1);
243
+ const valueHandler1 = await DSSliderV2CO.getSliderValue(handler1);
244
+ const valueHandler2 = await DSSliderV2CO.getSliderValue(handler2);
245
+ await browser.keys(Key.Tab);
246
+ await browser.keys(Key.ArrowRight);
247
+ await browser.keys(Key.Tab);
248
+ await browser.keys(Key.ArrowLeft);
249
+ const valueHandler1after = await DSSliderV2CO.getSliderValue(handler1);
250
+ const valueHandler2after = await DSSliderV2CO.getSliderValue(handler2);
251
+ await expect(valueHandler1).toEqual('0');
252
+ await expect(valueHandler2).toEqual('100');
253
+ await expect(valueHandler1after).toEqual('25');
254
+ await expect(valueHandler2after).toEqual('75');
255
+ });
256
+ it('02: should be able to change the handlers order (with KB)', async () => {
257
+ const minSlider = await DSSliderV2CO.getMinHandlerByAriaLabel();
258
+ const maxSlider = await DSSliderV2CO.getMaxHandlerByAriaLabel();
259
+ await browser.keys(Key.ArrowLeft);
260
+ await browser.keys(Key.ArrowLeft);
261
+ await browser.keys([Key.Shift, Key.Tab]);
262
+ await browser.keys(Key.ArrowRight);
263
+ const valueMinSliderAfter = await DSSliderV2CO.getSliderValue(minSlider);
264
+ const valueMaxSliderAfter = await DSSliderV2CO.getSliderValue(maxSlider);
265
+ await expect(valueMinSliderAfter).toEqual('50');
266
+ await expect(valueMaxSliderAfter).toEqual('25');
267
+ });
268
+ it('03: should be to set both handlers at the same value (with KB)', async () => {
269
+ const minSlider = await DSSliderV2CO.getMinHandlerByAriaLabel();
270
+ const maxSlider = await DSSliderV2CO.getMaxHandlerByAriaLabel();
271
+ await browser.keys(Key.Tab);
272
+ await browser.keys(Key.ArrowRight);
273
+ const valueMinSliderAfter = await DSSliderV2CO.getSliderValue(minSlider);
274
+ const valueMaxSliderAfter = await DSSliderV2CO.getSliderValue(maxSlider);
275
+ await expect(valueMinSliderAfter).toEqual('50');
276
+ await expect(valueMaxSliderAfter).toEqual('50');
277
+ });
278
+ });
279
+
182
280
  if (browser.capabilities.browserName === 'chrome' || browser.capabilities.browserName === 'Chrome') {
183
281
  describe('PUI-16006 - SliderV2 - Data-testid and Aria-label presence - Func', () => {
184
282
  before('loading page', async () => {
@@ -85,6 +85,14 @@ export default class DSSliderCO extends PageObject {
85
85
  return $$('[data-testid="ds-sliderv2-tick-mark-value"]');
86
86
  }
87
87
 
88
+ static async getMinHandlerByAriaLabel() {
89
+ return $('[aria-label="Min Range slider multiple aria"]');
90
+ }
91
+
92
+ static async getMaxHandlerByAriaLabel() {
93
+ return $('[aria-label="Max Range slider multiple aria"]');
94
+ }
95
+
88
96
  // actions
89
97
  static async getSliderValue(sliderThumb) {
90
98
  return sliderThumb.getAttribute('aria-valuenow');
@@ -0,0 +1,32 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSSvgCO from './DSSvgCO';
3
+ import { axeCoreCheck } from '../helpers';
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-17527 - Svg:: Sizes - AxeCore Test', () => {
12
+ before('loading page', async () => {
13
+ const errorOnGo = await DSSvgCO.sizes.go();
14
+ if (errorOnGo) throw errorOnGo;
15
+ });
16
+ it('01: should displaysizes showcase for svg and pass axe-core checks', async () => {
17
+ const result = await axeCoreCheck();
18
+ expect(result.length).toBe(0);
19
+ });
20
+ });
21
+ describe('PUI-17526 - Svg:: Interactive element - AxeCore Test', () => {
22
+ before('loading page', async () => {
23
+ const errorOnGo = await DSSvgCO.insideInteractive.go();
24
+ if (errorOnGo) throw errorOnGo;
25
+ });
26
+ it('01: should display svg inside interactive elements and pass axe-core checks', async () => {
27
+ await browser.keys(Key.Tab);
28
+ const result = await axeCoreCheck();
29
+ expect(result.length).toBe(0);
30
+ });
31
+ });
32
+ }
package/ds-svg/DSSvgCO.js CHANGED
@@ -1,4 +1,3 @@
1
- import { SVG_DATA_TESTID } from '@elliemae/ds-svg';
2
1
  import { PATH_E2E_SVG } from '../paths';
3
2
  import { PageObject, Urlbuilder } from '../helpers';
4
3
 
@@ -15,11 +14,11 @@ export default class DSSvgCO extends PageObject {
15
14
 
16
15
  // Selectors
17
16
  static async getWrapper() {
18
- return $(`[data-testid="${SVG_DATA_TESTID.ROOT}"]`);
17
+ return $(`[data-testid="ds-svg-root"]`);
19
18
  }
20
19
 
21
20
  static async getWrapperByIndex(index = 0) {
22
- return $$(`[data-testid="${SVG_DATA_TESTID.ROOT}"]`)[index];
21
+ return $$(`[data-testid="ds-svg-root"]`)[index];
23
22
  }
24
23
 
25
24
  static async getButtonByIndex(index = 0) {
@@ -0,0 +1,33 @@
1
+ /* eslint-disable no-plusplus */
2
+ /* eslint-disable max-lines */
3
+ import DSTabsCO from './DSTabsCO';
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-17211 - activeTab - onTabChange event test', () => {
12
+ before('loading page', async () => {
13
+ const errorOnGo = await DSTabsCO.onlyActiveContent.go();
14
+ if (errorOnGo) throw errorOnGo;
15
+ });
16
+ it('01: Should be displayed: tab2 Total: 1', async () => {
17
+ const secondTab = await DSTabsCO.getTabsByIndex(1);
18
+ await secondTab.click();
19
+ const counter = await $('[data-testid="counter"]');
20
+ await expect(counter).toHaveText('tab2');
21
+ const count = await $('[data-testid="count"]');
22
+ await expect(count).toHaveText(expect.stringContaining('1'));
23
+ });
24
+ it('02: Should be displayed: tab2,tab3 Total: 2', async () => {
25
+ const thirdTab = await DSTabsCO.getTabsByIndex(2);
26
+ await thirdTab.click();
27
+ const counter = await $('[data-testid="counter"]');
28
+ await expect(counter).toHaveText('tab2, tab3');
29
+ const count = await $('[data-testid="count"]');
30
+ await expect(count).toHaveText(expect.stringContaining('2'));
31
+ });
32
+ });
33
+ }
@@ -48,6 +48,16 @@ export default class DSTabsCO extends PageObject {
48
48
 
49
49
  static integratedCarouselFull = new Urlbuilder(PATH_E2E_TABS, 'integrated-example-carousel-full-test');
50
50
 
51
+ static slotsBasic = new Urlbuilder(PATH_E2E_TABS, 'slot-test-basic');
52
+
53
+ static slotsCarousel = new Urlbuilder(PATH_E2E_TABS, 'slot-test-carousel');
54
+
55
+ static slotsNested = new Urlbuilder(PATH_E2E_TABS, 'slot-test-nested');
56
+
57
+ static slotsSecondary = new Urlbuilder(PATH_E2E_TABS, 'slot-test-secondary');
58
+
59
+ static onlyActiveContent = new Urlbuilder(PATH_E2E_TABS, 'only-active-content-test');
60
+
51
61
  static getUrl(component = 'basic') {
52
62
  return PageObject.getUrl(PATH_E2E_TABS, component);
53
63
  }
@@ -124,5 +134,23 @@ export default class DSTabsCO extends PageObject {
124
134
  }
125
135
  }
126
136
  }
127
- // utils
137
+
138
+ // Slots
139
+ static getTabContainerSlotByIndex = async (index = 0) => $$('[data-dimsum-slot="dsTabsContainer"]')[index];
140
+
141
+ static getTabListSlotByIndex = async (index = 0) => $$('[data-dimsum-slot="dsTabsTabList"]')[index];
142
+
143
+ static getTabButtonSlotByIndex = async (index = 0) => $$('[data-dimsum-slot="dsTabsTabButton"]')[index];
144
+
145
+ static getTabPanelSlotByIndex = async (index = 0) => $$('[data-dimsum-slot="dsTabsTabPanel"]')[index];
146
+
147
+ static getSubtabsListSlotByIndex = async (index = 0) => $$('[data-dimsum-slot="dsTabsSubtabsList"]')[index];
148
+
149
+ static getSubtabButtonSlotByIndex = async (index = 0) => $$('[data-dimsum-slot="dsTabsSubtabButton"]')[index];
150
+
151
+ static getChevronRightParentSlotByIndex = async (index = 0) =>
152
+ $$('[data-dimsum-parent-slot="dsTabsChevronRight"]')[index];
153
+
154
+ static getChevronLeftParentSlotByIndex = async (index = 0) =>
155
+ $$('[data-dimsum-parent-slot="dsTabsChevronLeft"]')[index];
128
156
  }