dimsum-e2e-tests 3.50.1-next.9 → 3.51.0-beta.2

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 (119) hide show
  1. package/CHANGELOG.md +268 -310
  2. package/ds-autocomplete/DSAutocompleteCO.js +1 -1
  3. package/ds-banner/DSBanner.func.spec.js +55 -0
  4. package/ds-banner/DSBanner.visual.spec.js +14 -0
  5. package/ds-banner/DSBannerCO.js +30 -0
  6. package/ds-breadcrumb/DSBreadcrumb.axe-core.func.spec.js +21 -6
  7. package/ds-breadcrumb/DSBreadcrumb.func.spec.js +69 -40
  8. package/ds-breadcrumb/DSBreadcrumb.visual.spec.js +20 -15
  9. package/ds-breadcrumb/DSBreadcrumbCO.js +17 -1
  10. package/ds-button-v3/DSButtonV3.func.spec.js +22 -0
  11. package/ds-button-v3/DSButtonV3.visual.spec.js +8 -2
  12. package/ds-button-v3/DSButtonV3CO.js +14 -0
  13. package/ds-card-v3/DSCardV3CO.js +10 -10
  14. package/ds-card-v3/global-attributes/DSCardV3.global-attributes.func.spec.js +4 -4
  15. package/ds-comments-card/DSComments.visual.spec.js +3 -4
  16. package/ds-comments-card/DSCommentsCO.js +2 -2
  17. package/ds-controlled-form/ds-combobox/DSCombobox.func.spec.js +1 -0
  18. package/ds-controlled-form/ds-combobox/DSCombobox.smoke.spec.js +4 -56
  19. package/ds-controlled-form/ds-combobox/DSComboboxCO.js +0 -9
  20. package/ds-controlled-form/ds-combobox/creatable/DSCombobox.keyboard-creatable.func.spec.js +3 -0
  21. package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.axe-core.spec.js +0 -1
  22. package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.keyboard.func.spec.js +5 -0
  23. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.keyboard-multi-select.func.spec.js +6 -68
  24. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.mouse-touch-multi-select.func.spec.js +0 -58
  25. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.multi.visual.spec.js +1 -16
  26. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.ten-thousand-options.func.spec.js +2 -22
  27. package/ds-controlled-form/ds-combobox/single-select/DSCombobox.keyboard-single-select.func.spec.js +4 -0
  28. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.axe-core.spec.js +85 -0
  29. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.functional.spec.js +242 -0
  30. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.visual.spec.js +115 -0
  31. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePickerCO.js +56 -2
  32. package/ds-controlled-form/ds-controlled-date-range-picker/read-only/DSControlledDateRangePicker.ReadOnly.axe-core.spec.js +17 -0
  33. package/ds-controlled-form/ds-controlled-date-time-picker/DSControlledDateTimePickerCO.js +12 -0
  34. package/ds-controlled-form/ds-controlled-date-time-picker/date-full/DateFull.axe-core.func.spec.js +27 -0
  35. package/ds-controlled-form/ds-controlled-date-time-picker/date-input/DateInput.axe-core.func.spec.js +27 -0
  36. package/ds-controlled-form/ds-controlled-date-time-picker/date-time-full/DateTimeFull.axe-core.func.spec.js +27 -0
  37. package/ds-controlled-form/ds-controlled-date-time-picker/date-time-input/DateTimeInput.axe-core.func.spec.js +27 -0
  38. package/ds-controlled-form/ds-controlled-date-time-picker/time-full/TimeFull.axe-core.func.spec.js +27 -0
  39. package/ds-controlled-form/ds-controlled-date-time-picker/time-input/TimeInput.axe-core.func.spec.js +27 -0
  40. package/ds-controlled-form/ds-controlled-inputgroup/DSControlledInputGroupCO.js +4 -0
  41. package/ds-controlled-form/ds-controlled-inputgroup/autocomplete/DSControlledInputGroup.autocomplete.axe-core.func.spec.js +1 -0
  42. package/ds-controlled-form/ds-controlled-inputgroup/combobox/DSControlledInputGroup.combobox.axe-core.func.spec.js +1 -1
  43. package/ds-controlled-form/ds-controlled-large-input-text/DSLargeInputTextCO.js +4 -4
  44. package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.axe-core.func.spec.js +1 -1
  45. package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.func.spec.js +36 -0
  46. package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.visual.spec.js +12 -1
  47. package/ds-controlled-form/ds-input-text/DSInputText.func.spec.js +14 -12
  48. package/ds-controlled-form/react-hook-form/ReactHook.visual.spec.js +1 -0
  49. package/ds-data-table-async/DSDataTable.smoke.spec.js +4 -0
  50. package/ds-data-table-async/basic/DSDataTable.basic.axe-core.func.spec.js +1 -1
  51. package/ds-data-table-async/basic/DSDataTable.usecases.func.spec.js +5 -4
  52. package/ds-data-table-async/basic/DSDataTable.usecases.visual.spec.js +1 -0
  53. package/ds-data-table-async/components/HeaderCO.js +1 -1
  54. package/ds-data-table-async/components/RowCO.js +4 -0
  55. package/ds-data-table-async/dnd/DSDataTable.dnd.visual.spec.js +1 -1
  56. package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +4 -0
  57. package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +1 -0
  58. package/ds-data-table-async/select/DSDataTable.select.axe-core.func.spec.js +2 -0
  59. package/ds-data-table-async/select/DSDataTable.select.func.spec.js +2 -86
  60. package/ds-data-table-async/select/DSDataTable.select.shift.func.spec.js +126 -0
  61. package/ds-data-table-async/vissibility/DSDataTable.vissibility.visual.spec.js +6 -0
  62. package/ds-dialog/DSDialog.func.spec.js +14 -14
  63. package/ds-dialog/DSDialogCO.js +1 -1
  64. package/ds-dropdownmenu-v2/DSDDMenuV2.axe-core.func.spec.js +2 -0
  65. package/ds-dropdownmenu-v2/DSDDMenuV2CO.js +6 -2
  66. package/ds-form-combobox-multi/DSComboboxMultiCO.js +2 -9
  67. package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +2 -11
  68. package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.axe-core.func.spec.js +26 -0
  69. package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.keyboard-nav.func.spec.js +27 -0
  70. package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.visual.spec.js +33 -0
  71. package/ds-form-combobox-single/DSComboboxSingleCO.js +2 -9
  72. package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.axe-core.func.spec.js +26 -0
  73. package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.keyboard-nav.func.spec.js +27 -0
  74. package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.visual.spec.js +33 -0
  75. package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +9 -5
  76. package/ds-form-layout-blocks/form-layout-checkbox-group/DSFormLayoutCheckboxGroup.visual.spec.js +1 -1
  77. package/ds-form-layout-blocks/form-layout-checkbox-group/DSFormLayoutCheckboxGroupCO.js +2 -2
  78. package/ds-menu-button/DSMenuButtonCO.js +16 -12
  79. package/ds-menu-button/activable/DSMenuButton.activableMenuItem.func.spec.js +32 -0
  80. package/ds-menu-button/{basic/DSMenuButton.activableMenuItem.func.spec.js → activable/DSMenuButton.activableMenuItem.keyboardnav.func.spec.js} +1 -26
  81. package/ds-menu-button/disabled/DSMenuButton.axe-core.disabled.func.spec.js +20 -0
  82. package/ds-menu-button/disabled/DSMenuButton.disabled.func.spec.js +28 -0
  83. package/ds-menu-button/leftdecorations/DSMenuButton.axe-core.leftDecor.func.spec.js +20 -0
  84. package/ds-menu-button/multiselect/DSMenuButton.axe-core.multiselect.func.spec.js +28 -0
  85. package/ds-menu-button/multiselect/DSMenuButton.multiSelectItem.func.spec.js +34 -0
  86. package/ds-menu-button/{basic/DSMenuButton.multiSelectItem.func.spec.js → multiselect/DSMenuButton.multiSelectItem.keyboardnav.func.spec.js} +0 -29
  87. package/ds-menu-button/singleSelect/DSMenuButton.axe-core.singleSelect.func.spec.js +28 -0
  88. package/ds-menu-button/singleSelect/DSMenuButton.singleSelectItem.func.spec.js +39 -0
  89. package/ds-menu-button/{basic/DSMenuButton.singleSelectItem.func.spec.js → singleSelect/DSMenuButton.singleSelectItem.keyboardnav.func.spec.js} +11 -42
  90. package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +20 -0
  91. package/ds-menu-button/submenu/DSMenuButton.subMenuItem.func.spec.js +42 -0
  92. package/ds-menu-button/{basic/DSMenuButton.subMenuItem.func.spec.js → submenu/DSMenuButton.subMenuItem.keyboardnav.func.spec.js} +1 -38
  93. package/ds-mobile/MobileLoadingPage/MobileLoadingPageCO.js +1 -1
  94. package/ds-notification-badge/DSNotificationBadge.axe-core.func.spec.js +1 -0
  95. package/ds-pills-v2/DSPills.axe-core.func.spec.js +2 -2
  96. package/ds-pills-v2/DSPills.func.spec.js +26 -0
  97. package/ds-pills-v2/DSPills.visual.spec.js +1 -1
  98. package/ds-pills-v2/DSPillsV2CO.js +19 -1
  99. package/ds-pills-v2/selection/DSPills.axe-core.func.spec.js +77 -0
  100. package/ds-pills-v2/selection/DSPills.func.spec.js +155 -0
  101. package/ds-pills-v2/selection/DSPills.visual.spec.js +72 -0
  102. package/ds-query-builder/DSQueryBuilder.visual.spec.js +2 -1
  103. package/ds-query-builder/DSQueryBuilderCO.js +0 -5
  104. package/ds-shuttle-v2/DSShuttleV2CO.js +2 -4
  105. package/ds-shuttle-v2/Dnd/DSShuttleV2.DnD.visual.spec.js +0 -5
  106. package/ds-shuttle-v2/basic/DSShuttleV2.keyboard.func.spec.js +46 -66
  107. package/ds-shuttle-v2/drillingdown/DSShuttleV2.drilldown.kb.func.spec.js +3 -5
  108. package/ds-shuttle-v2/filtering/DSShuttleV2.filter.kb.func.spec.js +1 -7
  109. package/ds-shuttle-v2/globalcheckbox/DSShuttleV2.globalcheckbox.kb.func.spec.js +0 -2
  110. package/ds-shuttle-v2/items/DSShuttleV2.items.kb.func.spec.js +0 -2
  111. package/ds-slider-v2/DSSliderV2CO.js +10 -10
  112. package/ds-toast/DSToastCO.js +1 -1
  113. package/ds-toggle/DSToggle.func.spec.js +21 -18
  114. package/ds-toggle/DSToggle.visual.spec.js +56 -12
  115. package/package.json +119 -119
  116. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.DateInput.visual.spec.js +0 -57
  117. package/ds-menu-button/DSMenuButton.axe-core.func.spec.js +0 -66
  118. /package/ds-controlled-form/ds-controlled-date-time-picker/{date-time-picker → date-time-full}/DateTimePicker.custom.attributes.spec.js +0 -0
  119. /package/ds-controlled-form/ds-controlled-date-time-picker/{date-time-picker → date-time-full}/DateTimePicker.func.spec.js +0 -0
@@ -0,0 +1,20 @@
1
+ import { axeCoreCheck } from '../../helpers';
2
+ import DSMenuButtonCO from '../DSMenuButtonCO';
3
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
4
+
5
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
6
+ describe('PUI-14909 - DSMenuButton:: Disabled - AxeCore', () => {
7
+ before('loading page', async () => {
8
+ const errorOnGo = await DSMenuButtonCO.withDisabled.go();
9
+ if (errorOnGo) throw errorOnGo;
10
+ });
11
+ it('01: should have menu disabled items and pass axe-core scan', async () => {
12
+ const menuTrigger = await DSButtonV3CO.getButton();
13
+ await menuTrigger.click();
14
+ const menu = await DSMenuButtonCO.getMenuFloatingWrapperRoot();
15
+ await menu.waitForDisplayed();
16
+ const result = await axeCoreCheck();
17
+ expect(result.length).toBe(0);
18
+ });
19
+ });
20
+ }
@@ -0,0 +1,28 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSMenuButtonCO from '../DSMenuButtonCO';
3
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
4
+
5
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
6
+ describe('PUI-14910 - DSMenuButton:: Disabled - AxeCore', () => {
7
+ beforeEach('loading page', async () => {
8
+ const errorOnGo = await DSMenuButtonCO.withDisabled.go();
9
+ if (errorOnGo) throw errorOnGo;
10
+ });
11
+ it('01: should trigger a disabled menu item and not close the menu (no action triggered)', async () => {
12
+ const menuTrigger = await DSButtonV3CO.getButton();
13
+ await menuTrigger.click();
14
+ const disabledItem = await DSMenuButtonCO.getMenuItemByID('2');
15
+ await disabledItem.click();
16
+ const menu = await DSMenuButtonCO.getMenuFloatingWrapperRoot();
17
+ await expect(menu).toBeDisplayed();
18
+ });
19
+ it('02: should trigger a disabled menu item with KB and not close the menu (no action triggered)', async () => {
20
+ const menuTrigger = await DSButtonV3CO.getButton();
21
+ await menuTrigger.click();
22
+ await browser.keys(Key.ArrowDown);
23
+ await browser.keys(Key.Space);
24
+ const menu = await DSMenuButtonCO.getMenuFloatingWrapperRoot();
25
+ await expect(menu).toBeDisplayed();
26
+ });
27
+ });
28
+ }
@@ -0,0 +1,20 @@
1
+ import { axeCoreCheck } from '../../helpers';
2
+ import DSMenuButtonCO from '../DSMenuButtonCO';
3
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
4
+
5
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
6
+ describe('PUI-14911 - DSMenuButton:: Left decorations - AxeCore', () => {
7
+ before('loading page', async () => {
8
+ const errorOnGo = await DSMenuButtonCO.withLeftDecorations.go();
9
+ if (errorOnGo) throw errorOnGo;
10
+ });
11
+ it('01: should have menu with left decorators and pass axe-core scan', async () => {
12
+ const menuTrigger = await DSButtonV3CO.getButton();
13
+ await menuTrigger.click();
14
+ const menu = await DSMenuButtonCO.getMenuFloatingWrapperRoot();
15
+ await menu.waitForDisplayed();
16
+ const result = await axeCoreCheck();
17
+ expect(result.length).toBe(0);
18
+ });
19
+ });
20
+ }
@@ -0,0 +1,28 @@
1
+ import { axeCoreCheck } from '../../helpers';
2
+ import DSMenuButtonCO from '../DSMenuButtonCO';
3
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
4
+
5
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
6
+ describe('PUI-14642 - DSMenuButton:: Multi Select Menu Item - AxeCore', () => {
7
+ before('loading page', async () => {
8
+ const errorOnGo = await DSMenuButtonCO.multipleSelectMenuItem.go();
9
+ if (errorOnGo) throw errorOnGo;
10
+ });
11
+ it('01: should have untriggered menubutton and pass axe-core scan', async () => {
12
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('Multiple selection example');
13
+ await menuTrigger.waitForDisplayed();
14
+ const result = await axeCoreCheck({ selector: "[data-testid='ds-cardv3-root']" });
15
+ expect(result.length).toBe(0);
16
+ });
17
+ it('02: should have multi select menu with multiple opts selected and pass axe-core scan', async () => {
18
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('Multiple selection example');
19
+ await menuTrigger.click();
20
+ const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
21
+ await menuItem1.click();
22
+ const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
23
+ await menuItem2.click();
24
+ const result = await axeCoreCheck({ selector: "[data-testid='ds-cardv3-root']" });
25
+ expect(result.length).toBe(0);
26
+ });
27
+ });
28
+ }
@@ -0,0 +1,34 @@
1
+ /* eslint-disable max-statements */
2
+ import DSMenuButtonCO from '../DSMenuButtonCO';
3
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
4
+ import DSCardV3CO from '../../ds-card-v3/DSCardV3CO';
5
+
6
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
7
+ describe('PUI-14647 - DSMenuButton:: Multi Select Menu Item: Mouse - Func', () => {
8
+ before('loading page', async () => {
9
+ const errorOnGo = await DSMenuButtonCO.multipleSelectMenuItem.go();
10
+ if (errorOnGo) throw errorOnGo;
11
+ });
12
+ it('01: should select two items with MOUSE and have two cards (as produced changes)', async () => {
13
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('Multiple selection example');
14
+ await menuTrigger.click();
15
+ const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
16
+ await menuItem1.click();
17
+ const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
18
+ await menuItem2.click();
19
+ const triggeredCards = (await DSCardV3CO.getCards()).length;
20
+ await expect(triggeredCards).toEqual(3); // One card is already on this story containing the trigger (+1).
21
+ await expect(menuItem1).toHaveAttribute('aria-checked', 'true');
22
+ await expect(menuItem2).toHaveAttribute('aria-checked', 'true');
23
+ });
24
+ it('02: should deselect an item with MOUSE and have one less card (as produced changes)', async () => {
25
+ const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
26
+ await menuItem1.click();
27
+ const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
28
+ const triggeredCards = (await DSCardV3CO.getCards()).length;
29
+ await expect(triggeredCards).toEqual(2); // One card is already on this story containing the trigger (+1).
30
+ await expect(menuItem1).toHaveAttribute('aria-checked', 'false');
31
+ await expect(menuItem2).toHaveAttribute('aria-checked', 'true');
32
+ });
33
+ });
34
+ }
@@ -1,38 +1,9 @@
1
1
  /* eslint-disable max-statements */
2
2
  import { Key } from 'webdriverio';
3
3
  import DSMenuButtonCO from '../DSMenuButtonCO';
4
- import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
5
4
  import DSCardV3CO from '../../ds-card-v3/DSCardV3CO';
6
5
 
7
6
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
- describe('PUI-14647 - DSMenuButton:: Multi Select Menu Item: Mouse - Func', () => {
9
- before('loading page', async () => {
10
- const errorOnGo = await DSMenuButtonCO.multipleSelectMenuItem.go();
11
- if (errorOnGo) throw errorOnGo;
12
- });
13
- it('01: should select two items with MOUSE and have two cards (as produced changes)', async () => {
14
- const menuTrigger = await DSButtonV3CO.getButton();
15
- await menuTrigger.click();
16
- const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
17
- await menuItem1.click();
18
- const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
19
- await menuItem2.click();
20
- const triggeredCards = (await DSCardV3CO.getCards()).length;
21
- await expect(triggeredCards).toEqual(3); // One card is already on this story containing the trigger (+1).
22
- await expect(menuItem1).toHaveAttribute('aria-checked', 'true');
23
- await expect(menuItem2).toHaveAttribute('aria-checked', 'true');
24
- });
25
- it('02: should deselect an item with MOUSE and have one less card (as produced changes)', async () => {
26
- const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
27
- await menuItem1.click();
28
- const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
29
- const triggeredCards = (await DSCardV3CO.getCards()).length;
30
- await expect(triggeredCards).toEqual(2); // One card is already on this story containing the trigger (+1).
31
- await expect(menuItem1).toHaveAttribute('aria-checked', 'false');
32
- await expect(menuItem2).toHaveAttribute('aria-checked', 'true');
33
- });
34
- });
35
-
36
7
  describe('PUI-14648 - DSMenuButton:: Multi Select Menu Item: Keyboard - Func', () => {
37
8
  before('loading page', async () => {
38
9
  const errorOnGo = await DSMenuButtonCO.multipleSelectMenuItem.go();
@@ -0,0 +1,28 @@
1
+ import { axeCoreCheck } from '../../helpers';
2
+ import DSMenuButtonCO from '../DSMenuButtonCO';
3
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
4
+
5
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
6
+ describe('PUI-14643 - DSMenuButton:: Single Select Menu Item - AxeCore', () => {
7
+ before('loading page', async () => {
8
+ const errorOnGo = await DSMenuButtonCO.singleSelectMenuItem.go();
9
+ if (errorOnGo) throw errorOnGo;
10
+ });
11
+ it('01: should have single menu (unselected) and pass axe-core scan', async () => {
12
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('(multiple) Single selection example');
13
+ await menuTrigger.click();
14
+ const result = await axeCoreCheck({ selector: "[data-testid='ds-cardv3-root']" });
15
+ expect(result.length).toBe(0);
16
+ });
17
+ it('02: should have single menu (opt selected) and pass axe-core scan', async () => {
18
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('(multiple) Single selection example');
19
+ await menuTrigger.click();
20
+ const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
21
+ await menuItem1.click();
22
+ const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
23
+ await menuItem2.click();
24
+ const result = await axeCoreCheck({ selector: "[data-testid='ds-cardv3-root']" });
25
+ expect(result.length).toBe(0);
26
+ });
27
+ });
28
+ }
@@ -0,0 +1,39 @@
1
+ /* eslint-disable max-statements */
2
+ import { Key } from 'webdriverio';
3
+ import DSMenuButtonCO from '../DSMenuButtonCO';
4
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
5
+ import DSCardV3CO from '../../ds-card-v3/DSCardV3CO';
6
+
7
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
+ describe('PUI-14650 - DSMenuButton:: Single Select Menu Item: Mouse - Func', () => {
9
+ before('loading page', async () => {
10
+ const errorOnGo = await DSMenuButtonCO.singleSelectMenuItem.go();
11
+ if (errorOnGo) throw errorOnGo;
12
+ });
13
+ it('01: should select two items with MOUSE and have only last opt selected', async () => {
14
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('(multiple) Single selection example');
15
+ await menuTrigger.click();
16
+ const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
17
+ await menuItem1.click();
18
+ const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
19
+ await menuItem2.click();
20
+ const triggeredCards = (await DSCardV3CO.getCards()).length;
21
+ const cardActiveFromOption = await (await DSCardV3CO.getHByLevel(2)).getText();
22
+ await expect(triggeredCards).toEqual(2); // One card is already on this story containing the trigger (+1).
23
+ await expect(menuItem1).toHaveAttribute('aria-checked', 'false');
24
+ await expect(menuItem2).toHaveAttribute('aria-checked', 'true');
25
+ await expect(cardActiveFromOption).toBe('Option 2');
26
+ });
27
+ it('02: should be able to pick two single options from different sections with MOUSE', async () => {
28
+ const menuItem3 = await DSMenuButtonCO.getMenuItemOptByIndex('3');
29
+ await menuItem3.click();
30
+ const menuItem4 = await DSMenuButtonCO.getMenuItemOptByIndex('4');
31
+ await browser.keys(Key.ArrowDown);
32
+ await browser.keys(Key.Space);
33
+ const menu = await DSMenuButtonCO.getMenuRoot();
34
+ await expect(menu).toBeDisplayedInViewport();
35
+ await expect(menuItem3).toHaveAttribute('aria-checked', 'true');
36
+ await expect(menuItem4).toHaveAttribute('aria-checked', 'true');
37
+ });
38
+ });
39
+ }
@@ -1,42 +1,9 @@
1
1
  /* eslint-disable max-statements */
2
2
  import { Key } from 'webdriverio';
3
3
  import DSMenuButtonCO from '../DSMenuButtonCO';
4
- import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
5
4
  import DSCardV3CO from '../../ds-card-v3/DSCardV3CO';
6
5
 
7
6
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
- describe('PUI-14650 - DSMenuButton:: Single Select Menu Item: Mouse - Func', () => {
9
- before('loading page', async () => {
10
- const errorOnGo = await DSMenuButtonCO.singleSelectMenuItem.go();
11
- if (errorOnGo) throw errorOnGo;
12
- });
13
- it('01: should select two items with MOUSE and have only last opt selected', async () => {
14
- const menuTrigger = await DSButtonV3CO.getButton();
15
- await menuTrigger.click();
16
- const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
17
- await menuItem1.click();
18
- const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
19
- await menuItem2.click();
20
- const triggeredCards = (await DSCardV3CO.getCards()).length;
21
- const cardActiveFromOption = await (await DSCardV3CO.getHByLevel(2)).getText();
22
- await expect(triggeredCards).toEqual(2); // One card is already on this story containing the trigger (+1).
23
- await expect(menuItem1).toHaveAttribute('aria-checked', 'false');
24
- await expect(menuItem2).toHaveAttribute('aria-checked', 'true');
25
- await expect(cardActiveFromOption).toBe('Option 2');
26
- });
27
- it('02: should be able to pick two single options from different sections with MOUSE', async () => {
28
- const menuItem3 = await DSMenuButtonCO.getMenuItemOptByIndex('3');
29
- await menuItem3.click();
30
- const menuItem4 = await DSMenuButtonCO.getMenuItemOptByIndex('4');
31
- await browser.keys(Key.ArrowDown);
32
- await browser.keys(Key.Space);
33
- const menu = await DSMenuButtonCO.getMenuRoot();
34
- await expect(menu).toBeDisplayedInViewport();
35
- await expect(menuItem3).toHaveAttribute('aria-checked', 'true');
36
- await expect(menuItem4).toHaveAttribute('aria-checked', 'true');
37
- });
38
- });
39
-
40
7
  describe('PUI-14649 - DSMenuButton:: Single Select Menu Item: Keyboard - Func', () => {
41
8
  before('loading page', async () => {
42
9
  const errorOnGo = await DSMenuButtonCO.singleSelectMenuItem.go();
@@ -44,38 +11,40 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
44
11
  });
45
12
  it('01: should select two options with KEYBOARD (space) and have only last opt selected', async () => {
46
13
  await browser.keys(Key.Tab);
47
- await browser.keys(Key.Return);
48
- await browser.keys(Key.Space);
14
+ await browser.keys(Key.Enter);
15
+ const menu = await DSMenuButtonCO.getMenuRoot();
16
+ await menu.waitForDisplayed();
49
17
  await browser.keys(Key.ArrowDown);
50
18
  await browser.keys(Key.Space);
51
19
  const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
52
20
  const menuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('2');
53
21
  const menuItem3 = await DSMenuButtonCO.getMenuItemOptByIndex('3');
54
- const triggeredCards = (await DSCardV3CO.getCards()).length;
55
- const cardActiveFromOption = await (await DSCardV3CO.getHByLevel(2)).getText();
56
- await expect(triggeredCards).toEqual(2); // One card is already on this story containing the trigger (+1).
57
22
  await expect(menuItem1).toHaveAttribute('aria-checked', 'false');
58
23
  await expect(menuItem2).toHaveAttribute('aria-checked', 'true');
59
24
  await expect(menuItem3).toHaveAttribute('aria-checked', 'false');
25
+ const triggeredCards = await (await DSCardV3CO.getCards()).length;
26
+ const cardActiveFromOption = await (await DSCardV3CO.getHByLevel(2)).getText();
27
+ await expect(triggeredCards).toEqual(2); // One card is already on this story containing the trigger (+1).
60
28
  await expect(cardActiveFromOption).toBe('Option 2');
61
29
  });
62
30
  it('02: should trigger option with KEYBOARD (return) and have only last opt selected (closed menu)', async () => {
63
- await browser.keys(Key.ArrowUp);
31
+ await browser.keys(Key.ArrowDown);
64
32
  await browser.keys(Key.Return);
65
- const triggeredCards = (await DSCardV3CO.getCards()).length;
33
+ const triggeredCards = await (await DSCardV3CO.getCards()).length;
66
34
  const cardsActiveFromOption = await (await DSCardV3CO.getHByLevel(2)).getText();
67
35
  const menu = await DSMenuButtonCO.getMenuRoot();
68
36
  await expect(menu).not.toBeDisplayedInViewport();
69
37
  await expect(triggeredCards).toEqual(2); // One card is already on this story containing the trigger (+1).
70
- await expect(cardsActiveFromOption).toBe('Option 1');
38
+ await expect(cardsActiveFromOption).toBe('Option 3');
71
39
  });
72
40
  it('03: should be able to pick two single options from different sections with KEYBOARD', async () => {
73
- const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
74
41
  await browser.keys(Key.Return);
42
+ await browser.keys(Key.Space);
75
43
  await browser.keys(Key.ArrowDown);
76
44
  await browser.keys(Key.ArrowDown);
77
45
  await browser.keys(Key.ArrowDown);
78
46
  await browser.keys(Key.Space);
47
+ const menuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1');
79
48
  const menuItem4 = await DSMenuButtonCO.getMenuItemOptByIndex('4');
80
49
  const menu = await DSMenuButtonCO.getMenuRoot();
81
50
  await expect(menu).toBeDisplayedInViewport();
@@ -0,0 +1,20 @@
1
+ import { Key } from 'webdriverio';
2
+ import { axeCoreCheck } from '../../helpers';
3
+ import DSMenuButtonCO from '../DSMenuButtonCO';
4
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
5
+
6
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
7
+ describe('PUI-14644 - DSMenuButton:: Submenu Menu Item && Action Menu Item - AxeCore', () => {
8
+ before('loading page', async () => {
9
+ const errorOnGo = await DSMenuButtonCO.withSubmenuMenuItem.go();
10
+ if (errorOnGo) throw errorOnGo;
11
+ });
12
+ it('01: should have menu with submenus and action menu items and pass axe-core scan', async () => {
13
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('Submenus example');
14
+ await menuTrigger.click();
15
+ await browser.keys(Key.ArrowRight);
16
+ const result = await axeCoreCheck({ selector: "[data-testid='ds-cardv3-root']" });
17
+ expect(result.length).toBe(0);
18
+ });
19
+ });
20
+ }
@@ -0,0 +1,42 @@
1
+ /* eslint-disable max-statements */
2
+ import DSMenuButtonCO from '../DSMenuButtonCO';
3
+ import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
4
+ import DSDialog from '../../ds-dialog/DSDialogCO';
5
+ import { mouseOver } from '../../helpers';
6
+
7
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
+ describe('PUI-14651 - DSMenuButton:: Submenu Menu Item - Func', () => {
9
+ before('loading page', async () => {
10
+ const errorOnGo = await DSMenuButtonCO.withSubmenuMenuItem.go();
11
+ if (errorOnGo) throw errorOnGo;
12
+ });
13
+ it('01: should trigger menu and have first option focused first submenu expanded', async () => {
14
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('Submenus example');
15
+ await menuTrigger.click();
16
+ const subMenuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1.1');
17
+ const subMenuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('1.2');
18
+ const subMenuItem3 = await DSMenuButtonCO.getMenuItemOptByIndex('1.3');
19
+ await expect(subMenuItem1).toBeDisplayed();
20
+ await expect(subMenuItem2).toBeDisplayed();
21
+ await expect(subMenuItem3).toBeDisplayed();
22
+ });
23
+ it('02: should hover third option with MOUSE to have third submenu expanded', async () => {
24
+ const menuItem = await DSMenuButtonCO.getMenuItemOptByIndex('3');
25
+ await mouseOver(menuItem);
26
+ const subMenuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('3.1');
27
+ const subMenuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('3.2');
28
+ const subMenuItem3 = await DSMenuButtonCO.getMenuItemOptByIndex('3.3');
29
+ const subMenuItemPrevious = await DSMenuButtonCO.getMenuItemOptByIndex('1.1');
30
+ await expect(subMenuItemPrevious).not.toBeDisplayed();
31
+ await expect(subMenuItem1).toBeDisplayed();
32
+ await expect(subMenuItem2).toBeDisplayed();
33
+ await expect(subMenuItem3).toBeDisplayed();
34
+ });
35
+ it('03: should trigger a submenu action with mouse', async () => {
36
+ const subMenuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('3.1');
37
+ await subMenuItem2.click();
38
+ const triggeredDialog = DSDialog.getDialog();
39
+ await expect(triggeredDialog).toBeDisplayed();
40
+ });
41
+ });
42
+ }
@@ -2,46 +2,9 @@
2
2
  import { Key } from 'webdriverio';
3
3
  import DSMenuButtonCO from '../DSMenuButtonCO';
4
4
  import DSButtonV3CO from '../../ds-button-v3/DSButtonV3CO';
5
- import DSDialog from '../../ds-dialog/DSDialogCO';
6
5
  import DSCardV3CO from '../../ds-card-v3/DSCardV3CO';
7
- import { mouseOver } from '../../helpers';
8
6
 
9
7
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
10
- describe('PUI-14651 - DSMenuButton:: Submenu Menu Item - Func', () => {
11
- before('loading page', async () => {
12
- const errorOnGo = await DSMenuButtonCO.withSubmenuMenuItem.go();
13
- if (errorOnGo) throw errorOnGo;
14
- });
15
- it('01: should trigger menu and have first option focused first submenu expanded', async () => {
16
- const menuTrigger = await DSButtonV3CO.getButton();
17
- await menuTrigger.click();
18
- const subMenuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('1.1');
19
- const subMenuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('1.2');
20
- const subMenuItem3 = await DSMenuButtonCO.getMenuItemOptByIndex('1.3');
21
- await expect(subMenuItem1).toBeDisplayed();
22
- await expect(subMenuItem2).toBeDisplayed();
23
- await expect(subMenuItem3).toBeDisplayed();
24
- });
25
- it('02: should hover third option with MOUSE to have third submenu expanded', async () => {
26
- const menuItem = await DSMenuButtonCO.getMenuItemOptByIndex('3');
27
- await mouseOver(menuItem);
28
- const subMenuItem1 = await DSMenuButtonCO.getMenuItemOptByIndex('3.1');
29
- const subMenuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('3.2');
30
- const subMenuItem3 = await DSMenuButtonCO.getMenuItemOptByIndex('3.3');
31
- const subMenuItemPrevious = await DSMenuButtonCO.getMenuItemOptByIndex('1.1');
32
- await expect(subMenuItemPrevious).not.toBeDisplayed();
33
- await expect(subMenuItem1).toBeDisplayed();
34
- await expect(subMenuItem2).toBeDisplayed();
35
- await expect(subMenuItem3).toBeDisplayed();
36
- });
37
- it('03: should trigger a submenu action with mouse', async () => {
38
- const subMenuItem2 = await DSMenuButtonCO.getMenuItemOptByIndex('3.1');
39
- await subMenuItem2.click();
40
- const triggeredDialog = DSDialog.getDialog();
41
- await expect(triggeredDialog).toBeDisplayed();
42
- });
43
- });
44
-
45
8
  describe('PUI-14652 - DSMenuButton:: Submenu Menu Item: Keyboard - Func', () => {
46
9
  before('loading page', async () => {
47
10
  const errorOnGo = await DSMenuButtonCO.withSubmenuMenuItem.go();
@@ -80,7 +43,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
80
43
  beforeEach('loading page', async () => {
81
44
  const errorOnGo = await DSMenuButtonCO.withSubmenuMenuItem.go();
82
45
  if (errorOnGo) throw errorOnGo;
83
- const menuTrigger = await DSButtonV3CO.getButton();
46
+ const menuTrigger = await DSButtonV3CO.getButtonByLabel('Submenus example');
84
47
  await menuTrigger.waitForDisplayed();
85
48
  await browser.keys(Key.Tab);
86
49
  await browser.keys(Key.Return);
@@ -9,7 +9,7 @@ export default class MobileLoadingPageCO extends PageObject {
9
9
  static withIconURL = new Urlbuilder(PATH_MOBILE_LOADING_PAGE, 'with-icon');
10
10
 
11
11
  static async getLoadingText() {
12
- return $('[data-testid="ds-circular-indeterminate-indicator-label"]');
12
+ return $('[data-testid="ds-circularindeterminateindicator-label"]');
13
13
  }
14
14
 
15
15
  static async getLoadingTextIcon() {
@@ -46,6 +46,7 @@ if (
46
46
  expect(result.length).toBe(0);
47
47
  });
48
48
  });
49
+ // Defect PUI-14981
49
50
  describe('PUI-11417:: [NotificationBadge] Chip, Icon and Button integration - Axe-core Validation', () => {
50
51
  before('loading page', async () => {
51
52
  const errorOnGo = await DSNotificationBadgeCO.componentCasesTest.go();
@@ -15,13 +15,13 @@ if (
15
15
  if (errorOnGo) throw errorOnGo;
16
16
  });
17
17
  it('01: Evaluate dropdown pills accessibility with axe-core', async () => {
18
- const dropDownTrigger = await DSPillsV2CO.getChevronbyIndex(1);
18
+ const dropDownTrigger = await DSPillsV2CO.getDDChevronbyIndex(1);
19
19
  await dropDownTrigger.waitForDisplayed();
20
20
  const result = await axeCoreCheck();
21
21
  expect(result.length).toBe(0);
22
22
  });
23
23
  it('02: Evaluate dropdown pills accessibility with axe-core - dropdown menu opened', async () => {
24
- const dropDownTrigger = await DSPillsV2CO.getChevronbyIndex(1);
24
+ const dropDownTrigger = await DSPillsV2CO.getDDChevronbyIndex(1);
25
25
  await dropDownTrigger.click();
26
26
  const dropDownMenu = await DSPillsV2CO.dropDownMenu();
27
27
  await dropDownMenu.waitForDisplayed();
@@ -43,4 +43,30 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
43
43
  await expect(howManyPills).toEqual(4);
44
44
  });
45
45
  });
46
+ describe('PUI-14923 - Pills v2:: Dropdown Pills, Basic -Func', () => {
47
+ before('loading page', async () => {
48
+ const errorOnGo = await DSPillsV2CO.requiredSelectMB.go();
49
+ if (errorOnGo) throw errorOnGo;
50
+ });
51
+ it('01: should have collapsed ddmenu by default (reflected on aria-expanded)', async () => {
52
+ const ddMenuChevron = await DSPillsV2CO.getMBChevronByIndex(0);
53
+ const menu = await DSPillsV2CO.getFloatingWrapper();
54
+ await expect(menu).not.toBeDisplayed();
55
+ await expect(ddMenuChevron).toHaveAttribute('aria-expanded', 'false');
56
+ });
57
+ it('02: should have expanded ddmenu after trigger (reflected on aria-expanded)', async () => {
58
+ const ddMenuChevron = await DSPillsV2CO.getMBChevronByIndex(0);
59
+ await ddMenuChevron.click();
60
+ const menu = await DSPillsV2CO.getFloatingWrapper();
61
+ await expect(menu).toBeDisplayed();
62
+ await expect(ddMenuChevron).toHaveAttribute('aria-expanded', 'true');
63
+ });
64
+ it('03: should collapse dd menu and have it reflected on aria-expanded', async () => {
65
+ await browser.keys(Key.Escape);
66
+ const ddMenuChevron = await DSPillsV2CO.getMBChevronByIndex(0);
67
+ const menu = await DSPillsV2CO.getFloatingWrapper();
68
+ await expect(menu).not.toBeDisplayed();
69
+ await expect(ddMenuChevron).toHaveAttribute('aria-expanded', 'false');
70
+ });
71
+ });
46
72
  }
@@ -11,7 +11,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
11
11
  if (errorOnGo) throw errorOnGo;
12
12
  });
13
13
  it('should correctly display the dropdown pills', async () => {
14
- const dropDownTrigger = await DSPillsV2CO.getChevronbyIndex(1);
14
+ const dropDownTrigger = await DSPillsV2CO.getDDChevronbyIndex(1);
15
15
  await dropDownTrigger.click();
16
16
  const snapshot = await browser.checkSnapshot(DSPillsV2CO.snapshotPath('pills-v2-dropdown'));
17
17
  await expect(snapshot).toEqual(0);
@@ -21,6 +21,12 @@ export default class DSPillsV2CO extends PageObject {
21
21
 
22
22
  static applyTooltipOverflowWrap = new Urlbuilder(PATH_E2E_PILLS_V2, 'pui-14447-tooltip-overflow');
23
23
 
24
+ static requiredSelectMB = new Urlbuilder(PATH_E2E_PILLS_V2, 'required-select-menu-button-test');
25
+
26
+ static singleSelectMB = new Urlbuilder(PATH_E2E_PILLS_V2, 'single-select-menu-button-test');
27
+
28
+ static multiSelectMB = new Urlbuilder(PATH_E2E_PILLS_V2, 'multi-select-menu-button-test');
29
+
24
30
  static getUrl(component = 'basic') {
25
31
  return PageObject.getUrl(PATH_E2E_PILLS_V2, component);
26
32
  }
@@ -35,7 +41,11 @@ export default class DSPillsV2CO extends PageObject {
35
41
  return $$('[data-testid="ds-pill-dropdown-chevron"]');
36
42
  }
37
43
 
38
- static getChevronbyIndex = async (index) => getElementByIndex(this.getDDChevrons, index);
44
+ static getDDChevronbyIndex = async (index) => getElementByIndex(this.getDDChevrons, index);
45
+
46
+ static async getMBChevronByIndex(index = 0) {
47
+ return $$('[data-testid="ds-pill-menu-button-chevron"]')[index];
48
+ }
39
49
 
40
50
  static async getInputs() {
41
51
  return $$('[data-testid="ds-pill-input"]');
@@ -53,8 +63,16 @@ export default class DSPillsV2CO extends PageObject {
53
63
  return $$(' [data-testid="ds-pill-wrapper"]');
54
64
  }
55
65
 
66
+ static async getFloatingWrapper() {
67
+ return $('[data-testid="ds-floating-wrapper-root"]');
68
+ }
69
+
56
70
  static getPillByIndex = async (index) => getElementByIndex(this.getPills, index);
57
71
 
72
+ static async getPillsTextByIndex(index = 0) {
73
+ return $$('[data-testid="ds-pill-wrapper"] [data-testid="DS-SimpleTruncateText"]')[index];
74
+ }
75
+
58
76
  static async getResetBtn() {
59
77
  return $('[data-testid="ds-button"]');
60
78
  }