dimsum-e2e-tests 3.49.0-rc.4 → 3.50.0-next.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 (56) hide show
  1. package/CHANGELOG.md +321 -227
  2. package/ds-breadcrumb/DSBreadcrumb.visual.spec.js +13 -18
  3. package/ds-button-v3/DSButtonV3CO.js +0 -4
  4. package/ds-controlled-form/ds-combobox/DSCombobox.func.spec.js +0 -1
  5. package/ds-controlled-form/ds-combobox/DSCombobox.smoke.spec.js +56 -4
  6. package/ds-controlled-form/ds-combobox/DSComboboxCO.js +9 -0
  7. package/ds-controlled-form/ds-combobox/creatable/DSCombobox.keyboard-creatable.func.spec.js +0 -3
  8. package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.axe-core.spec.js +1 -0
  9. package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.keyboard.func.spec.js +0 -3
  10. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.keyboard-multi-select.func.spec.js +68 -5
  11. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.mouse-touch-multi-select.func.spec.js +58 -0
  12. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.multi.visual.spec.js +16 -0
  13. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.ten-thousand-options.func.spec.js +22 -2
  14. package/ds-controlled-form/ds-combobox/single-select/DSCombobox.keyboard-single-select.func.spec.js +0 -3
  15. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.DateInput.visual.spec.js +57 -0
  16. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePickerCO.js +2 -54
  17. package/ds-controlled-form/ds-controlled-inputgroup/DSControlledInputGroupCO.js +0 -4
  18. package/ds-controlled-form/ds-controlled-inputgroup/combobox/DSControlledInputGroup.combobox.axe-core.func.spec.js +1 -1
  19. package/ds-data-table-async/DSDataTable.smoke.spec.js +0 -4
  20. package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +0 -4
  21. package/ds-data-table-async/select/DSDataTable.select.axe-core.func.spec.js +0 -2
  22. package/ds-form-combobox-multi/DSComboboxMultiCO.js +9 -0
  23. package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +10 -0
  24. package/ds-form-combobox-single/DSComboboxSingleCO.js +9 -0
  25. package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +0 -4
  26. package/ds-menu-button/DSMenuButton.axe-core.func.spec.js +66 -0
  27. package/ds-menu-button/DSMenuButtonCO.js +5 -5
  28. package/ds-menu-button/{activable/DSMenuButton.activableMenuItem.keyboardnav.func.spec.js → basic/DSMenuButton.activableMenuItem.func.spec.js} +26 -1
  29. package/ds-menu-button/{multiselect/DSMenuButton.multiSelectItem.keyboardnav.func.spec.js → basic/DSMenuButton.multiSelectItem.func.spec.js} +29 -0
  30. package/ds-menu-button/{singleSelect/DSMenuButton.singleSelectItem.keyboardnav.func.spec.js → basic/DSMenuButton.singleSelectItem.func.spec.js} +42 -11
  31. package/ds-menu-button/{submenu/DSMenuButton.subMenuItem.keyboardnav.func.spec.js → basic/DSMenuButton.subMenuItem.func.spec.js} +38 -1
  32. package/ds-pills-v2/DSPills.axe-core.func.spec.js +2 -2
  33. package/ds-pills-v2/DSPills.visual.spec.js +1 -1
  34. package/ds-pills-v2/DSPillsV2CO.js +1 -15
  35. package/ds-shuttle-v2/DSShuttleV2CO.js +4 -2
  36. package/ds-shuttle-v2/basic/DSShuttleV2.keyboard.func.spec.js +66 -46
  37. package/ds-shuttle-v2/drillingdown/DSShuttleV2.drilldown.kb.func.spec.js +5 -3
  38. package/ds-shuttle-v2/filtering/DSShuttleV2.filter.kb.func.spec.js +7 -1
  39. package/ds-shuttle-v2/globalcheckbox/DSShuttleV2.globalcheckbox.kb.func.spec.js +2 -0
  40. package/ds-shuttle-v2/items/DSShuttleV2.items.kb.func.spec.js +2 -0
  41. package/ds-toggle/DSToggle.func.spec.js +18 -21
  42. package/ds-toggle/DSToggle.visual.spec.js +12 -36
  43. package/package.json +119 -119
  44. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.axe-core.spec.js +0 -85
  45. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.functional.spec.js +0 -242
  46. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.visual.spec.js +0 -115
  47. package/ds-menu-button/activable/DSMenuButton.activableMenuItem.func.spec.js +0 -32
  48. package/ds-menu-button/multiselect/DSMenuButton.axe-core.multiselect.func.spec.js +0 -28
  49. package/ds-menu-button/multiselect/DSMenuButton.multiSelectItem.func.spec.js +0 -34
  50. package/ds-menu-button/singleSelect/DSMenuButton.axe-core.singleSelect.func.spec.js +0 -28
  51. package/ds-menu-button/singleSelect/DSMenuButton.singleSelectItem.func.spec.js +0 -39
  52. package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +0 -20
  53. package/ds-menu-button/submenu/DSMenuButton.subMenuItem.func.spec.js +0 -42
  54. package/ds-pills-v2/selection/DSPills.axe-core.func.spec.js +0 -77
  55. package/ds-pills-v2/selection/DSPills.func.spec.js +0 -155
  56. package/ds-pills-v2/selection/DSPills.visual.spec.js +0 -72
@@ -8,10 +8,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
8
8
  if (errorOnGo) throw errorOnGo;
9
9
  });
10
10
  it('should display a title variant correctly', async () => {
11
- await browser.eyesOpen();
12
11
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
13
12
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
14
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('title'));
13
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('title'));
15
14
  await expect(snapshot).toEqual(0);
16
15
  });
17
16
  });
@@ -22,12 +21,11 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
22
21
  if (errorOnGo) throw errorOnGo;
23
22
  });
24
23
  it('should display a trailing slash for non title variant', async () => {
25
- await browser.eyesOpen();
26
24
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
27
25
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
28
26
  const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(2);
29
27
  await mouseOver(otherBreadcrumb);
30
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('non-title'));
28
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('non-title'));
31
29
  await expect(snapshot).toEqual(0);
32
30
  });
33
31
  });
@@ -38,20 +36,21 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
38
36
  if (errorOnGo) throw errorOnGo;
39
37
  });
40
38
  it('should show every link truncated', async () => {
41
- await browser.eyesOpen();
42
39
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
43
- await mouseOver(breadcrumb, 200, 200);
44
40
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
45
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-all-truncated'));
41
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-all-truncated'));
46
42
  await expect(snapshot).toEqual(0);
47
43
  });
48
44
  it('should show one the links not truncated after mouse hover', async () => {
49
- await browser.eyesOpen();
50
45
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
51
46
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
52
47
  const bcLink = await DSBreadcrumbCO.getBreadcrumbItem('Aenean non ante eu nunc volutpat');
53
- await mouseOver(bcLink);
54
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-one-not-truncated'));
48
+ if (browser.capabilities.browserName !== 'firefox') {
49
+ await mouseOver(bcLink);
50
+ } else {
51
+ await bcLink.moveTo();
52
+ }
53
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-one-not-truncated'));
55
54
  await expect(snapshot).toEqual(0);
56
55
  });
57
56
  });
@@ -62,12 +61,11 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
62
61
  if (errorOnGo) throw errorOnGo;
63
62
  });
64
63
  it('should breadcrumb of different custom colors', async () => {
65
- await browser.eyesOpen();
66
64
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
67
65
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
68
66
  const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(2);
69
67
  await mouseOver(otherBreadcrumb);
70
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-custom-colors'));
68
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-custom-colors'));
71
69
  await expect(snapshot).toEqual(0);
72
70
  });
73
71
  });
@@ -78,17 +76,15 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
78
76
  if (errorOnGo) throw errorOnGo;
79
77
  });
80
78
  it('should show breadcrumb above title', async () => {
81
- await browser.eyesOpen();
82
79
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
83
80
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
84
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-above-title'));
81
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-above-title'));
85
82
  await expect(snapshot).toEqual(0);
86
83
  });
87
84
  it('should show hovered editable title', async () => {
88
- await browser.eyesOpen();
89
85
  const title = await DSBreadcrumbCO.getEditableTitle();
90
86
  await mouseOver(title);
91
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-hovered-title'));
87
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-hovered-title'));
92
88
  await expect(snapshot).toEqual(0);
93
89
  });
94
90
  });
@@ -99,10 +95,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
99
95
  if (errorOnGo) throw errorOnGo;
100
96
  });
101
97
  it('should display the breadcrumb item 7 as active by default', async () => {
102
- await browser.eyesOpen();
103
98
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
104
99
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
105
- const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-active-7'));
100
+ const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-active-7'));
106
101
  await expect(snapshot).toEqual(0);
107
102
  });
108
103
  });
@@ -22,10 +22,6 @@ export default class DSButtonV3CO extends PageObject {
22
22
  return $('[data-testid="ds-button"]');
23
23
  }
24
24
 
25
- static async getButtonByLabel(label) {
26
- return $(`button*=${label}`);
27
- }
28
-
29
25
  // Snapshot
30
26
  static snapshotPath(example = 'basic') {
31
27
  return PageObject.getSnapshotPathBuilder('ButtonV3', example);
@@ -37,7 +37,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
37
37
  await browser.keys(Key.Tab);
38
38
  await browser.keys(Key.Enter);
39
39
  await browser.keys(Key.ArrowDown);
40
- await browser.keys(Key.ArrowDown);
41
40
  await browser.keys(Key.Tab);
42
41
  const selectedOption = await DSComboboxCO.getSelectedValues();
43
42
  await expect(combobox).not.toBeFocused();
@@ -171,7 +171,62 @@ if (
171
171
  await expect(dropdownMenu).toBeDisplayed();
172
172
  });
173
173
  });
174
-
174
+ describe('PUI-8166 - ComboboxV3:: Multi Select - selectAll - func', () => {
175
+ before('loading page', async () => {
176
+ const errorOnGo = await DSComboboxCO.multiSelectFixedWidth.go();
177
+ if (errorOnGo) throw errorOnGo;
178
+ });
179
+ it('01: select all options', async () => {
180
+ await DSComboboxCO.openMenuListMouse();
181
+ const selectAllCheckbox = await DSComboboxCO.getSelectAllCheckbox();
182
+ await selectAllCheckbox.click();
183
+ const selectedOption = await DSComboboxCO.getOptionByLabel('Luke Skywalker too long this text is super long 1');
184
+ const overflowPill = await DSComboboxCO.getPillByLabel('+8');
185
+ const menulist = await DSComboboxCO.getMenuList();
186
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
187
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW SELECTED [9]');
188
+ await expect(overflowPill).toBeDisplayedInViewport();
189
+ await expect(menulist).toBeDisplayedInViewport();
190
+ await expect(selectedOption).toBeDisplayedInViewport();
191
+ });
192
+ it('02: should display only selected options', async () => {
193
+ const selectedOptionBtn = await DSComboboxCO.getSelectedOptionsToggle();
194
+ await selectedOptionBtn.click();
195
+ const numOptions = await DSComboboxCO.getNumberOptions();
196
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
197
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW ALL');
198
+ await expect(numOptions).toBe(9);
199
+ });
200
+ it('03: should display all options', async () => {
201
+ const showAllBtn = await DSComboboxCO.getSelectedOptionsToggle();
202
+ await showAllBtn.click();
203
+ const numOptions = await DSComboboxCO.getNumberOptions();
204
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
205
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW SELECTED [9]');
206
+ await expect(numOptions).toBe(11);
207
+ });
208
+ it('04: should unselect last item', async () => {
209
+ await browser.keys(Key.ArrowUp);
210
+ const option2 = await DSComboboxCO.getOptionByIndex(9);
211
+ await option2.click();
212
+ const overflowPill = await DSComboboxCO.getPillByLabel('+7');
213
+ await expect(overflowPill).toBeDisplayedInViewport();
214
+ });
215
+ it('05: should unselect all items', async () => {
216
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
217
+ await showSelectedBtn.click();
218
+ const selectAllCheckbox = await DSComboboxCO.getSelectAllCheckbox();
219
+ await selectAllCheckbox.click();
220
+ const numOptions = await DSComboboxCO.getNumberOptions();
221
+ const zeroSelected = await DSComboboxCO.getZeroSelectedMsg();
222
+ const selectedOption = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long 1');
223
+ const overflowPill = await DSComboboxCO.getPillByLabel('+7');
224
+ await expect(zeroSelected).toBeDisplayedInViewport();
225
+ await expect(numOptions).toBe(11);
226
+ await expect(selectedOption).not.toBeDisplayedInViewport();
227
+ await expect(overflowPill).not.toBeDisplayedInViewport();
228
+ });
229
+ });
175
230
  describe('PUI-8130 - ComboboxV3:: Single Select - basic- keyboard func', () => {
176
231
  before('loading page', async () => {
177
232
  const errorOnGo = await DSComboboxCO.singleSelectFixedWidth.go();
@@ -201,7 +256,6 @@ if (
201
256
  });
202
257
  it('05: should select an option and close the menu - ENTER', async () => {
203
258
  const menulist = await DSComboboxCO.getMenuList();
204
- await browser.keys(Key.ArrowDown);
205
259
  await browser.keys(Key.Enter);
206
260
  const selectedOption = await DSComboboxCO.getSelectedValues();
207
261
  await expect(menulist).not.toBeDisplayed();
@@ -227,7 +281,6 @@ if (
227
281
  await browser.keys(Key.ArrowDown);
228
282
  await browser.keys(Key.ArrowDown);
229
283
  await browser.keys(Key.ArrowDown);
230
- await browser.keys(Key.ArrowDown);
231
284
  await browser.keys(Key.Enter);
232
285
  const selectedOption = await DSComboboxCO.getSelectedValues();
233
286
  await expect(selectedOption).toHaveTextContaining('(555) 555-5555');
@@ -260,7 +313,6 @@ if (
260
313
  await expect(numOptions).toBe(2);
261
314
  });
262
315
  it('04: select filtered option - Enter', async () => {
263
- await browser.keys(Key.ArrowDown);
264
316
  await browser.keys(Key.Enter);
265
317
  const selectedOption = await (await DSComboboxCO.getSimpleTruncateText()).getText();
266
318
  await expect(selectedOption).toBe('Luke Skywalker too long this text is super long');
@@ -82,6 +82,15 @@ export default class DSComboboxCO extends PageObject {
82
82
  return $('[data-testid="combobox-ally-selected-values"]');
83
83
  }
84
84
 
85
+ // MENU
86
+ static async getSelectAllCheckbox() {
87
+ return $('#select-all-checkbox');
88
+ }
89
+
90
+ static async getSelectedOptionsToggle() {
91
+ return $('[data-testid="combobox-selected-options-toggle"]');
92
+ }
93
+
85
94
  static async getMenuList() {
86
95
  return $('[data-testid="combobox-menu-list"]');
87
96
  }
@@ -15,7 +15,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
15
15
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.';
16
16
  await browser.keys(Key.Tab);
17
17
  await type(longText);
18
- await browser.keys(Key.ArrowDown);
19
18
  await browser.keys(Key.Enter);
20
19
  const pill = await DSComboboxCO.getPillByLabel(longText);
21
20
  const option = await DSComboboxCO.getOptionByLabel(longText);
@@ -25,7 +24,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
25
24
  it('02: create another option', async () => {
26
25
  const newOption = 'Lorem ipsum dolor sit amet';
27
26
  await type(newOption);
28
- await browser.keys(Key.ArrowDown);
29
27
  await browser.keys(Key.Enter);
30
28
  const pill = await DSComboboxCO.getPillByLabel('+1');
31
29
  const option = await DSComboboxCO.getOptionByLabel(newOption);
@@ -37,7 +35,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
37
35
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.';
38
36
  const checkbox = await DSComboboxCO.getCheckboxByLabel(longText);
39
37
  await browser.keys(Key.ArrowDown);
40
- await browser.keys(Key.ArrowDown);
41
38
  await browser.keys(Key.Enter);
42
39
  const pill = await DSComboboxCO.getPillByLabel(longText);
43
40
  const isChecked = await DSComboboxCO.isChecked(checkbox);
@@ -16,6 +16,7 @@ if (
16
16
  if (errorOnGo) throw errorOnGo;
17
17
  });
18
18
  it('should have a INLINE combobox integrated with dropdownPill and be axecore compliant', async () => {
19
+ await browser.eyesOpen();
19
20
  const dropDownPillBtn = await DSComboboxCO.getPillDropDownBtn();
20
21
  await dropDownPillBtn.click();
21
22
  const option1 = await DSComboboxCO.getOptionByIndex(0);
@@ -28,7 +28,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
28
28
  it('03: should open the dropdown menu and select an option - SPACE-ENTER', async () => {
29
29
  await browser.keys(Key.Enter);
30
30
  await browser.keys(Key.ArrowDown);
31
- await browser.keys(Key.ArrowDown);
32
31
  await browser.keys(Key.Enter);
33
32
  const pill = await DSComboboxCO.getPillByLabel('Obi-Wan Kenobi');
34
33
  const checkbox = await DSComboboxCO.getCheckboxByIndex(1);
@@ -71,7 +70,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
71
70
  await expect(numOptions).toBe(2);
72
71
  });
73
72
  it('02: should select a filtered option - Enter', async () => {
74
- await browser.keys(Key.ArrowDown);
75
73
  await browser.keys(Key.ArrowDown);
76
74
  await browser.keys(Key.Enter);
77
75
  const pill = await DSComboboxCO.getPillByLabel('Anakin Skywalker');
@@ -90,7 +88,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
90
88
  await expect(numOptions).toBe(1);
91
89
  });
92
90
  it('05: select an option - ENTER', async () => {
93
- await browser.keys(Key.ArrowDown);
94
91
  await browser.keys(Key.Enter);
95
92
  const pill = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long');
96
93
  const checkbox = await DSComboboxCO.getCheckboxByIndex(0);
@@ -33,7 +33,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
33
33
  });
34
34
  it('05: should select an option and not close the menu - ENTER', async () => {
35
35
  const menulist = await DSComboboxCO.getMenuList();
36
- await browser.keys(Key.ArrowDown);
37
36
  await browser.keys(Key.Enter);
38
37
  const selectedOption = await DSComboboxCO.getSelectedValues();
39
38
  await expect(menulist).toBeDisplayed();
@@ -56,7 +55,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
56
55
  await browser.keys(Key.ArrowDown);
57
56
  await browser.keys(Key.ArrowDown);
58
57
  await browser.keys(Key.ArrowDown);
59
- await browser.keys(Key.ArrowDown);
60
58
  await browser.keys(Key.Enter);
61
59
  const selectedOption = await DSComboboxCO.getPillByLabel('+1');
62
60
  await expect(selectedOption).toBeDisplayedInViewport();
@@ -70,7 +68,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
70
68
  it('01: should unselect an option - Backspace', async () => {
71
69
  await browser.keys(Key.Tab);
72
70
  await type(')');
73
- await browser.keys(Key.ArrowDown);
74
71
  await browser.keys(Key.Enter);
75
72
  const selectedOption = await DSComboboxCO.getPillByLabel('(555) 555-5555');
76
73
  await selectedOption.waitForDisplayed();
@@ -79,7 +76,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
79
76
  });
80
77
  it('02: should unselect an option - using X close pill btn', async () => {
81
78
  await type('2');
82
- await browser.keys(Key.ArrowDown);
83
79
  await browser.keys(Key.Enter);
84
80
  const selectedOption = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long 2');
85
81
  await selectedOption.waitForDisplayed();
@@ -115,7 +111,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
115
111
  await expect(numOptions).toBe(3);
116
112
  });
117
113
  it('04: select filtered option - Enter', async () => {
118
- await browser.keys(Key.ArrowDown);
119
114
  await browser.keys(Key.Enter);
120
115
  const selectedOption = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long 1');
121
116
  await expect(selectedOption).toBeDisplayed();
@@ -149,4 +144,72 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
149
144
  await expect(inputText).toBeFocused();
150
145
  });
151
146
  });
147
+ describe('PUI-8139 - ComboboxV3:: Multi Select - selectAll - keyboard func', () => {
148
+ before('loading page', async () => {
149
+ const errorOnGo = await DSComboboxCO.multiSelectFixedWidth.go();
150
+ if (errorOnGo) throw errorOnGo;
151
+ });
152
+ it('01: select all options', async () => {
153
+ await DSComboboxCO.openMenuUsingKeyboard();
154
+ await browser.keys(Key.Tab);
155
+ await browser.keys(Key.Space);
156
+ const selectedOption = await DSComboboxCO.getOptionByLabel('Luke Skywalker too long this text is super long 1');
157
+ const overflowPill = await DSComboboxCO.getPillByLabel('+8');
158
+ const menulist = await DSComboboxCO.getMenuList();
159
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
160
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW SELECTED [9]');
161
+ await expect(overflowPill).toBeDisplayedInViewport();
162
+ await expect(menulist).toBeDisplayedInViewport();
163
+ await expect(selectedOption).toBeDisplayedInViewport();
164
+ });
165
+ it('02: should display only selected options', async () => {
166
+ await browser.keys(Key.Tab);
167
+ await browser.keys(Key.Space);
168
+ const numOptions = await DSComboboxCO.getNumberOptions();
169
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
170
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW ALL');
171
+ await expect(numOptions).toBe(9);
172
+ });
173
+ it('03: should unselect last item', async () => {
174
+ await browser.keys(Key.Tab);
175
+ await browser.keys(Key.Enter);
176
+ const option = await DSComboboxCO.getOptionByLabel('Anakin Skywalker 5');
177
+ const overflowPill = await DSComboboxCO.getPillByLabel('+7');
178
+ await expect(option).not.toBeDisplayedInViewport();
179
+ await expect(overflowPill).toBeDisplayedInViewport();
180
+ });
181
+ it('04: should unselect all items', async () => {
182
+ await browser.keys(Key.Tab);
183
+ await browser.keys(Key.Space);
184
+ const numOptions = await DSComboboxCO.getNumberOptions();
185
+ const zeroSelected = await DSComboboxCO.getZeroSelectedMsg();
186
+ const selectedOption = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long 1');
187
+ const overflowPill = await DSComboboxCO.getPillByLabel('+8');
188
+ await expect(zeroSelected).toBeDisplayedInViewport();
189
+ await expect(numOptions).toBe(11);
190
+ await expect(selectedOption).not.toBeDisplayedInViewport();
191
+ await expect(overflowPill).not.toBeDisplayedInViewport();
192
+ });
193
+ it('05: should close menu list correctly - focus in selectAll checkbox', async () => {
194
+ await browser.keys(Key.Tab);
195
+ await browser.keys(Key.Escape);
196
+ const menulist = await DSComboboxCO.getMenuList();
197
+ const comboboxInput = await DSComboboxCO.getComboboxInput();
198
+ await expect(menulist).not.toBeDisplayedInViewport();
199
+ await expect(comboboxInput).toBeFocused();
200
+ });
201
+ it('06: should close menu list correctly - focus in show selected toggle btn', async () => {
202
+ await browser.keys(Key.Enter);
203
+ await browser.keys(Key.Tab);
204
+ await browser.keys(Key.Space);
205
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
206
+ await showSelectedBtn.waitForDisplayed();
207
+ await browser.keys(Key.Tab);
208
+ await browser.keys(Key.Escape);
209
+ const menulist = await DSComboboxCO.getMenuList();
210
+ const comboboxInput = await DSComboboxCO.getComboboxInput();
211
+ await expect(menulist).not.toBeDisplayedInViewport();
212
+ await expect(comboboxInput).toBeFocused();
213
+ });
214
+ });
152
215
  }
@@ -162,4 +162,62 @@ if (!browser.capabilities['ice:options'].isPhone && browser.capabilities.browser
162
162
  });
163
163
  });
164
164
  }
165
+ describe('PUI-8166 - ComboboxV3:: Multi Select - selectAll - func', () => {
166
+ before('loading page', async () => {
167
+ const errorOnGo = await DSComboboxCO.multiSelectFixedWidth.go();
168
+ if (errorOnGo) throw errorOnGo;
169
+ });
170
+ it('01: select all options', async () => {
171
+ await DSComboboxCO.openMenuListMouse();
172
+ const selectAllCheckbox = await DSComboboxCO.getSelectAllCheckbox();
173
+ await selectAllCheckbox.click();
174
+ const selectedOption = await DSComboboxCO.getOptionByLabel('Luke Skywalker too long this text is super long 1');
175
+ const overflowPill = await DSComboboxCO.getPillByLabel('+8');
176
+ const menulist = await DSComboboxCO.getMenuList();
177
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
178
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW SELECTED [9]');
179
+ await expect(overflowPill).toBeDisplayedInViewport();
180
+ await expect(menulist).toBeDisplayedInViewport();
181
+ await expect(selectedOption).toBeDisplayedInViewport();
182
+ });
183
+ it('02: should display only selected options', async () => {
184
+ const selectedOptionBtn = await DSComboboxCO.getSelectedOptionsToggle();
185
+ await selectedOptionBtn.click();
186
+ const numOptions = await DSComboboxCO.getNumberOptions();
187
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
188
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW ALL');
189
+ await expect(numOptions).toBe(9);
190
+ });
191
+ it('03: should display all options', async () => {
192
+ const showAllBtn = await DSComboboxCO.getSelectedOptionsToggle();
193
+ await showAllBtn.click();
194
+ const numOptions = await DSComboboxCO.getNumberOptions();
195
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
196
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW SELECTED [9]');
197
+ await expect(numOptions).toBe(11);
198
+ });
199
+ it('04: should unselect last item', async () => {
200
+ const option = await DSComboboxCO.getOptionByLabel('Padme Amidala 3');
201
+ await option.scrollIntoView();
202
+ const option2 = await DSComboboxCO.getOptionByLabel('Anakin Skywalker 5');
203
+ await option2.scrollIntoView();
204
+ await option2.click();
205
+ const overflowPill = await DSComboboxCO.getPillByLabel('+7');
206
+ await expect(overflowPill).toBeDisplayedInViewport();
207
+ });
208
+ it('05: should unselect all items', async () => {
209
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
210
+ await showSelectedBtn.click();
211
+ const selectAllCheckbox = await DSComboboxCO.getSelectAllCheckbox();
212
+ await selectAllCheckbox.click();
213
+ const numOptions = await DSComboboxCO.getNumberOptions();
214
+ const zeroSelected = await DSComboboxCO.getZeroSelectedMsg();
215
+ const selectedOption = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long 1');
216
+ const overflowPill = await DSComboboxCO.getPillByLabel('+7');
217
+ await expect(zeroSelected).toBeDisplayedInViewport();
218
+ await expect(numOptions).toBe(11);
219
+ await expect(selectedOption).not.toBeDisplayedInViewport();
220
+ await expect(overflowPill).not.toBeDisplayedInViewport();
221
+ });
222
+ });
165
223
  }
@@ -43,6 +43,22 @@ if (!browser.capabilities['ice:options'].isPhone && browser.capabilities.browser
43
43
  );
44
44
  await expect(snapshot).toEqual(0);
45
45
  });
46
+ it('05: should display only selected options - click show selected', async () => {
47
+ await browser.eyesOpen();
48
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
49
+ await showSelectedBtn.click();
50
+ const snapshot = await browser.eyesCheckSnapshot(DSComboboxCO.snapshotPath('comboboxV3-multi-show-selected'));
51
+ await expect(snapshot).toEqual(0);
52
+ });
53
+ it('06: should display all options - click select all', async () => {
54
+ await browser.eyesOpen();
55
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
56
+ await showSelectedBtn.click();
57
+ const selectAll = await DSComboboxCO.getSelectAllCheckbox();
58
+ await selectAll.click();
59
+ const snapshot = await browser.eyesCheckSnapshot(DSComboboxCO.snapshotPath('comboboxV3-multi-all-selected'));
60
+ await expect(snapshot).toEqual(0);
61
+ });
46
62
  if (browser.capabilities['ice:options'].isTablet) {
47
63
  it('07: should display tooltip - touch truncated pill', async () => {
48
64
  await browser.eyesOpen();
@@ -10,9 +10,12 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
10
10
  });
11
11
  it('01: should select all the options correctly', async () => {
12
12
  await DSComboboxCO.openMenuListMouse();
13
- await browser.keys(['Control', 'a']);
14
- const selectedOption = await DSComboboxCO.getOptionByLabel('Option 0');
13
+ const selectAllCheckbox = await DSComboboxCO.getSelectAllCheckbox();
14
+ await selectAllCheckbox.click();
15
+ const selectedOption = await DSComboboxCO.getOptionByLabel('Option 9999');
15
16
  const overflowPill = await DSComboboxCO.getPillByLabel('+9999');
17
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
18
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW SELECTED [10000]');
16
19
  await expect(overflowPill).toBeDisplayedInViewport();
17
20
  await expect(selectedOption).toBeDisplayedInViewport();
18
21
  });
@@ -23,5 +26,22 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
23
26
  const overflowPill = await DSComboboxCO.getPillByLabel('+9998');
24
27
  await expect(overflowPill).toBeDisplayedInViewport();
25
28
  });
29
+ it('03: should display selected options', async () => {
30
+ const option7 = await DSComboboxCO.getOptionByLabel('Option 7');
31
+ const selectedOptionBtn = await DSComboboxCO.getSelectedOptionsToggle();
32
+ await selectedOptionBtn.click();
33
+ const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
34
+ await showSelectedBtn.waitForDisplayed();
35
+ await expect(showSelectedBtn).toHaveTextContaining('SHOW ALL');
36
+ await expect(option7).not.toBeDisplayedInViewport();
37
+ });
38
+ it('04: should unselect all options', async () => {
39
+ const overflowPill = await DSComboboxCO.getPillByLabel('+9998');
40
+ const selectedOption = await DSComboboxCO.getPillByLabel('Option 0');
41
+ const selectAllCheckbox = await DSComboboxCO.getSelectAllCheckbox();
42
+ await selectAllCheckbox.click();
43
+ await expect(overflowPill).not.toBeDisplayedInViewport();
44
+ await expect(selectedOption).not.toBeDisplayedInViewport();
45
+ });
26
46
  });
27
47
  }
@@ -34,7 +34,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
34
34
  });
35
35
  it('05: should select an option and close the menu - ENTER', async () => {
36
36
  const menulist = await DSComboboxCO.getMenuList();
37
- await browser.keys(Key.ArrowDown);
38
37
  await browser.keys(Key.Enter);
39
38
  const selectedOption = await DSComboboxCO.getSelectedValues();
40
39
  await expect(menulist).not.toBeDisplayed();
@@ -60,7 +59,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
60
59
  await browser.keys(Key.ArrowDown);
61
60
  await browser.keys(Key.ArrowDown);
62
61
  await browser.keys(Key.ArrowDown);
63
- await browser.keys(Key.ArrowDown);
64
62
  await browser.keys(Key.Enter);
65
63
  const selectedOption = await DSComboboxCO.getSelectedValues();
66
64
  await expect(selectedOption).toHaveTextContaining('(555) 555-5555');
@@ -93,7 +91,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
93
91
  await expect(numOptions).toBe(2);
94
92
  });
95
93
  it('04: select filtered option - Enter', async () => {
96
- await browser.keys(Key.ArrowDown);
97
94
  await browser.keys(Key.Enter);
98
95
  const selectedOption = await (await DSComboboxCO.getSimpleTruncateText()).getText();
99
96
  await expect(selectedOption).toBe('Luke Skywalker too long this text is super long');
@@ -0,0 +1,57 @@
1
+ import DSControlledDateRangePickerCO from './DSControlledDateRangePickerCO';
2
+
3
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
4
+ describe('PUI-9219 - DSControlledDateRangePicker:: Basic visual test', () => {
5
+ before('loading page', async () => {
6
+ const errorOnGo = await DSControlledDateRangePickerCO.basic.go();
7
+ if (errorOnGo) throw errorOnGo;
8
+ });
9
+ it('01: should display contr. date range picker empty and closed', async () => {
10
+ await browser.eyesOpen();
11
+ const snapshot = await browser.eyesCheckSnapshot(
12
+ DSControlledDateRangePickerCO.snapshotPath('date-range-picker-empty'),
13
+ );
14
+ await expect(snapshot).toEqual(0);
15
+ });
16
+ it('02: should display contr. date range picker open and with 1 date selected', async () => {
17
+ await browser.eyesOpen();
18
+ const openDatePicker = await DSControlledDateRangePickerCO.getPickerBtn();
19
+ await openDatePicker.click();
20
+ const day = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(10);
21
+ await day.click();
22
+ const snapshot = await browser.eyesCheckSnapshot(
23
+ DSControlledDateRangePickerCO.snapshotPath('date-range-picker-one-date'),
24
+ );
25
+ await expect(snapshot).toEqual(0);
26
+ });
27
+ it('03: should display contr. date range picker open and with 2 dates selected', async () => {
28
+ await browser.eyesOpen();
29
+ const day = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(20);
30
+ await day.click();
31
+ const snapshot = await browser.eyesCheckSnapshot(
32
+ DSControlledDateRangePickerCO.snapshotPath('date-range-picker-two-date'),
33
+ );
34
+ await expect(snapshot).toEqual(0);
35
+ });
36
+ it('04: should display contr. date range picker open and with long range end', async () => {
37
+ await browser.eyesOpen();
38
+ const nextMonthArrow = await DSControlledDateRangePickerCO.getNextMonthBtn();
39
+ await nextMonthArrow.click();
40
+ const day = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(10);
41
+ await day.click();
42
+ const snapshot = await browser.eyesCheckSnapshot(
43
+ DSControlledDateRangePickerCO.snapshotPath('date-range-picker-long-end'),
44
+ );
45
+ await expect(snapshot).toEqual(0);
46
+ });
47
+ it('05: should display contr. date range picker open and with long range start', async () => {
48
+ await browser.eyesOpen();
49
+ const prevMonthArrow = await DSControlledDateRangePickerCO.getPrevMonthBtn();
50
+ await prevMonthArrow.click();
51
+ const snapshot = await browser.eyesCheckSnapshot(
52
+ DSControlledDateRangePickerCO.snapshotPath('date-range-picker-long-start'),
53
+ );
54
+ await expect(snapshot).toEqual(0);
55
+ });
56
+ });
57
+ }