dimsum-e2e-tests 3.57.0-next.2 → 3.57.0-next.22

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 (38) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/ds-accordion/DSAccordionCO.js +1 -2
  3. package/ds-accordion/slots/DSAccordion.slots.func.spec.js +12 -0
  4. package/ds-card-navigation/CardNavigationCO.js +50 -0
  5. package/ds-card-navigation/DSCardNavigation.slots.func.spec.js +127 -0
  6. package/ds-card-navigation/DSCardNavigation.slots.visual.spec.js +26 -0
  7. package/ds-data-table-async/DSDataTableCO.js +6 -1
  8. package/ds-data-table-async/components/FilterBarCO.js +8 -0
  9. package/ds-data-table-async/components/FiltersCO.js +8 -0
  10. package/ds-data-table-async/filters/DSDataTable.free-text-search.keyboard.func.spec.js +70 -5
  11. package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +3 -3
  12. package/ds-data-table-async/select/DSDataTable.select.func.spec.js +1 -1
  13. package/ds-data-table-async/slots/DSDataTable.slots.func.spec.js +40 -0
  14. package/ds-data-table-async/slots/DSDataTable.slots.visual.spec.js +19 -0
  15. package/ds-dialog/DSDialog.visual.spec.js +1 -1
  16. package/ds-dialog/DSDialogCO.js +5 -13
  17. package/ds-dialog/axe-core/DSDialog.error.axe-core.func.spec.js +24 -0
  18. package/ds-dialog/axe-core/DSDialog.info.axe-core.func.spec.js +24 -0
  19. package/ds-dialog/axe-core/DSDialog.scroll-body.axe-core.func.spec.js +24 -0
  20. package/ds-dialog/axe-core/DSDialog.success.axe-core.func.spec.js +24 -0
  21. package/ds-dialog/axe-core/DSDialog.warning.axe-core.spec.func.js +24 -0
  22. package/ds-form-combobox-multi/DSComboboxMultiCO.js +80 -1
  23. package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.func.spec.js +100 -0
  24. package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.visual.spec.js +51 -0
  25. package/ds-form-combobox-single/DSComboboxSingleCO.js +16 -14
  26. package/ds-form-combobox-single/slots/DSComboboxSingle.slots.func.spec.js +65 -35
  27. package/ds-form-combobox-single/slots/DSComboboxSingle.slots.visual.spec.js +53 -0
  28. package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItem.axe-core.func.spec.js +4 -1
  29. package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +4 -0
  30. package/{ds-toggle → ds-form-toggle}/DSToggle.axe-core.func.spec.js +6 -2
  31. package/{ds-toggle → ds-form-toggle}/DSToggle.func.spec.js +13 -8
  32. package/{ds-toggle → ds-form-toggle}/DSToggle.visual.spec.js +2 -2
  33. package/{ds-toggle → ds-form-toggle}/DSToggleCO.js +1 -1
  34. package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +1 -2
  35. package/ds-read-more/DSReadMore.width-change.visual.spec.js +85 -0
  36. package/package.json +187 -187
  37. package/paths.js +2 -0
  38. package/ds-dialog/DSDialog.smoke.spec.js +0 -133
@@ -38,7 +38,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
38
38
  });
39
39
  describe('PUI-7878 - DSDialog, ScrollBody layout -visual', () => {
40
40
  before('loading page', async () => {
41
- const errorOnGo = await DSDialog.scrollBodyURL.go();
41
+ const errorOnGo = await DSDialog.scrollBodyContent.go();
42
42
  if (errorOnGo) throw errorOnGo;
43
43
  });
44
44
  it('should display scrollable DSDialog correctly', async () => {
@@ -1,32 +1,24 @@
1
1
  /* eslint-disable import/no-relative-packages */
2
2
  import { getElementByIndex } from './helpers/getElementByIndex';
3
- import { PATH_DIALOG_EXAMPLES, PATH_E2E_DIALOG } from '../paths';
3
+ import { PATH_E2E_DIALOG } from '../paths';
4
4
  import { PageObject, Urlbuilder } from '../helpers';
5
5
 
6
6
  export default class DSDialog extends PageObject {
7
7
  static basicURL = new Urlbuilder(PATH_E2E_DIALOG, 'basic');
8
8
 
9
- static centeredURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'centered');
9
+ static centeredURL = new Urlbuilder(PATH_E2E_DIALOG, 'centered-test');
10
10
 
11
11
  static withPopperjs = new Urlbuilder(PATH_E2E_DIALOG, 'with-popperjs');
12
12
 
13
13
  static decisionURL = new Urlbuilder(PATH_E2E_DIALOG, 'decision-test');
14
14
 
15
- static formDialogURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'form-dialog');
16
-
17
15
  static informationURL = new Urlbuilder(PATH_E2E_DIALOG, 'informational-test');
18
16
 
19
- static manageFocusURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'manage-focus-after-close');
20
-
21
- static removeFocusURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'remove-auto-focus');
22
-
23
- static scrollBodyURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'scroll-body');
24
-
25
- static shuttleURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'shuttle');
17
+ static removeFocusURL = new Urlbuilder(PATH_E2E_DIALOG, 'remove-auto-focus-test');
26
18
 
27
- static tabloopURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'tab-loop');
19
+ static shuttleURL = new Urlbuilder(PATH_E2E_DIALOG, 'shuttle-test');
28
20
 
29
- static wizardURL = new Urlbuilder(PATH_DIALOG_EXAMPLES, 'wizard');
21
+ static wizardURL = new Urlbuilder(PATH_E2E_DIALOG, 'wizard-test');
30
22
 
31
23
  static preventBackgroundShifting = new Urlbuilder(PATH_E2E_DIALOG, 'prevent-background-shifting');
32
24
 
@@ -0,0 +1,24 @@
1
+ import DSDialog from '../DSDialogCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet &&
7
+ browser.capabilities.browserName === 'chrome') ||
8
+ browser.capabilities.browserName === 'Chrome'
9
+ ) {
10
+ describe('PUI-17332 - DSDialog:: Error dialog - axe-core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSDialog.errorURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('should display Error DSDialog correctly and pass axe-core scan', async () => {
16
+ const triggerBtn = await DSDialog.getTriggerBtn();
17
+ await triggerBtn.click();
18
+ const dialog = await DSDialog.getDialog();
19
+ await dialog.waitForDisplayed();
20
+ const result = await axeCoreCheck();
21
+ expect(result.length).toBe(0);
22
+ });
23
+ });
24
+ }
@@ -0,0 +1,24 @@
1
+ import DSDialog from '../DSDialogCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet &&
7
+ browser.capabilities.browserName === 'chrome') ||
8
+ browser.capabilities.browserName === 'Chrome'
9
+ ) {
10
+ describe('PUI-17330 - DSDialog:: Information dialog - axe-core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSDialog.informationURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('should display Information DSDialog correctly and pass axe-core scan', async () => {
16
+ const triggerBtn = await DSDialog.getTriggerBtn();
17
+ await triggerBtn.click();
18
+ const dialog = await DSDialog.getDialog();
19
+ await dialog.waitForDisplayed();
20
+ const result = await axeCoreCheck();
21
+ expect(result.length).toBe(0);
22
+ });
23
+ });
24
+ }
@@ -0,0 +1,24 @@
1
+ import DSDialog from '../DSDialogCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet &&
7
+ browser.capabilities.browserName === 'chrome') ||
8
+ browser.capabilities.browserName === 'Chrome'
9
+ ) {
10
+ describe('PUI-17329 - DSDialog:: ScrollBody layout - axe-core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSDialog.scrollBodyContent.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('should display scrollable DSDialog correctly and pass axe-core scan', async () => {
16
+ const triggerBtn = await DSDialog.getTriggerBtn();
17
+ await triggerBtn.click();
18
+ const dialog = await DSDialog.getDialog();
19
+ await dialog.waitForDisplayed();
20
+ const result = await axeCoreCheck();
21
+ expect(result.length).toBe(0);
22
+ });
23
+ });
24
+ }
@@ -0,0 +1,24 @@
1
+ import DSDialog from '../DSDialogCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet &&
7
+ browser.capabilities.browserName === 'chrome') ||
8
+ browser.capabilities.browserName === 'Chrome'
9
+ ) {
10
+ describe('PUI-17333 - DSDialog, Success dialog - axe-core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSDialog.successURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('should display Success DSDialog correctly and pass axe-core scan', async () => {
16
+ const triggerBtn = await DSDialog.getTriggerBtn();
17
+ await triggerBtn.click();
18
+ const dialog = await DSDialog.getDialog();
19
+ await dialog.waitForDisplayed();
20
+ const result = await axeCoreCheck();
21
+ expect(result.length).toBe(0);
22
+ });
23
+ });
24
+ }
@@ -0,0 +1,24 @@
1
+ import DSDialog from '../DSDialogCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet &&
7
+ browser.capabilities.browserName === 'chrome') ||
8
+ browser.capabilities.browserName === 'Chrome'
9
+ ) {
10
+ describe('PUI-17331 - DSDialog:: Warning dialog - axe-core', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSDialog.warningURL.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('should display Warning DSDialog correctly and pass axe-core scan', async () => {
16
+ const triggerBtn = await DSDialog.getTriggerBtn();
17
+ await triggerBtn.click();
18
+ const dialog = await DSDialog.getDialog();
19
+ await dialog.waitForDisplayed();
20
+ const result = await axeCoreCheck();
21
+ expect(result.length).toBe(0);
22
+ });
23
+ });
24
+ }
@@ -1,5 +1,5 @@
1
1
  import { Key } from 'webdriverio';
2
- import { PATH_E2E_COMBOBOX_MULTI } from '../paths';
2
+ import { PATH_E2E_COMBOBOX_MULTI, PATH_E2E_COMBOBOX_MULTI_SLOTS } from '../paths';
3
3
  import { PageObject, Urlbuilder } from '../helpers';
4
4
 
5
5
  export default class DSComboboxMultiCO extends PageObject {
@@ -23,6 +23,15 @@ export default class DSComboboxMultiCO extends PageObject {
23
23
 
24
24
  static disabled = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'disabled-test');
25
25
 
26
+ static controlledMenuStateWithSectionsSlotsTest = new Urlbuilder(
27
+ PATH_E2E_COMBOBOX_MULTI_SLOTS,
28
+ 'controlled-menu-state-with-section-slots-test',
29
+ );
30
+
31
+ static loadingIndicatorSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI_SLOTS, 'loading-indicator-slots-test');
32
+
33
+ static skeletonSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI_SLOTS, 'skeleton-slots-test');
34
+
26
35
  // COMBOBOX - INPUT
27
36
  static async getCombobox() {
28
37
  return $('[data-testid="combobox-container"]');
@@ -195,6 +204,76 @@ export default class DSComboboxMultiCO extends PageObject {
195
204
  await menuList.waitForExist();
196
205
  }
197
206
 
207
+ // Slots
208
+
209
+ static async getComboboxRootSlot() {
210
+ return $('[data-dimsum-slot="dsComboboxRoot"]');
211
+ }
212
+
213
+ static async getComboboxInputWrapperSlot() {
214
+ return $('[data-dimsum-slot="dsComboboxInputWrapper"]');
215
+ }
216
+
217
+ static async getComboboxInputSlot() {
218
+ return $('[data-dimsum-slot="dsComboboxInput"]');
219
+ }
220
+
221
+ static async getComboboxDropDownMenuBtnSlot() {
222
+ return $('[data-dimsum-parent-slot="dsComboboxDropdownButton"]');
223
+ }
224
+
225
+ static async getFloatingWrapperRootSlot() {
226
+ return $('[data-dimsum-slot="dsFloatingwrapperRoot"]');
227
+ }
228
+
229
+ static async getFloatingWrapperContentSlot() {
230
+ return $('[data-dimsum-slot="dsFloatingwrapperContent"]');
231
+ }
232
+
233
+ static async getFastListSlot() {
234
+ return $('[data-dimsum-parent-slot="dsComboboxFastList"]');
235
+ }
236
+
237
+ static async getFastListWrapperListSlot() {
238
+ return $('[data-dimsum-slot="dsFastlistWrapperList"]');
239
+ }
240
+
241
+ static async getFastListItemSlot() {
242
+ return $('[data-dimsum-slot="dsFastlistItem"]');
243
+ }
244
+
245
+ static async getMenuitemMenuItemWrapperSlot() {
246
+ return $('[data-dimsum-slot="dsMenuitemMenuItemWrapper"]');
247
+ }
248
+
249
+ static async getMenuitemMenuItemsContentWrapperSlotByIndex(index) {
250
+ return $$('[data-dimsum-slot="dsMenuitemMenuItemContentWrapper"]')[index];
251
+ }
252
+
253
+ static async getMenuitemMenuItemLabelSlotByIndex(index) {
254
+ return $$('[data-dimsum-slot="dsMenuitemMenuItemLabel"]')[index];
255
+ }
256
+
257
+ static async getComboboxLoadingIndicator() {
258
+ return $('[data-dimsum-parent-slot="dsComboboxLoadingIndicator"]');
259
+ }
260
+
261
+ static async getComboboxSkeletonMenuItem() {
262
+ return $('[data-dimsum-parent-slot="dsComboboxSkeletonMenuItem"]');
263
+ }
264
+
265
+ static async getComboboxMenuItemSlotByIndex(index) {
266
+ return $$('[data-dimsum-parent-slot="dsComboboxMultiMenuItem"]')[index];
267
+ }
268
+
269
+ static async getComboboxSectionLabelByIndex(index) {
270
+ return $$('[data-dimsum-slot="dsComboboxSectionLabel"]')[index];
271
+ }
272
+
273
+ static async getComboboxSectionWrapperSlotByIndex(index) {
274
+ return $$('[data-dimsum-slot="dsComboboxSectionWrapper"]')[index];
275
+ }
276
+
198
277
  static snapshotPath(example = 'basic') {
199
278
  return PageObject.getSnapshotPathBuilder('DSComboboxMulti', example, 'ds-combobox-multi');
200
279
  }
@@ -0,0 +1,100 @@
1
+ /* eslint-disable max-lines */
2
+ import DSComboboxMultiCO from '../DSComboboxMultiCO';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet &&
7
+ browser.capabilities.browserName === 'chrome') ||
8
+ browser.capabilities.browserName === 'Chrome'
9
+ ) {
10
+ describe('PUI-17260 - ComboboxMulti:: Slots - Controlled Menu and Sections -Func', () => {
11
+ before('loading page', async () => {
12
+ const errorOnGo = await DSComboboxMultiCO.controlledMenuStateWithSectionsSlotsTest.go();
13
+ if (errorOnGo) throw errorOnGo;
14
+ });
15
+ it('01: should have custom aria-* for each slot', async () => {
16
+ const comboboxRootSlot = await DSComboboxMultiCO.getComboboxRootSlot();
17
+ const comboboxInputWrapperSlot = await DSComboboxMultiCO.getComboboxInputWrapperSlot();
18
+ const comboboxInputSlot = await DSComboboxMultiCO.getComboboxInputSlot();
19
+ const comboboxDropdownButtonSlot = await DSComboboxMultiCO.getComboboxDropDownMenuBtnSlot();
20
+ const comboboxFastlistWrapperList = await DSComboboxMultiCO.getFastListSlot();
21
+ const comboboxMenuItemLabel = await DSComboboxMultiCO.getComboboxMenuItemSlotByIndex(0);
22
+ const comboboxSectionLabel = await DSComboboxMultiCO.getComboboxSectionLabelByIndex(0);
23
+ const comboboxSectionWrapper = await DSComboboxMultiCO.getComboboxSectionWrapperSlotByIndex(0);
24
+ await expect(comboboxRootSlot).toHaveAttribute('aria-label', 'root aria');
25
+ await expect(comboboxInputWrapperSlot).toHaveAttribute('aria-label', 'inputwrapper aria');
26
+ await expect(comboboxInputSlot).toHaveAttribute('aria-label', 'input aria');
27
+ await expect(comboboxDropdownButtonSlot).toHaveAttribute('aria-label', 'ddbutton aria');
28
+ await expect(comboboxFastlistWrapperList).toHaveAttribute('aria-label', 'fastlist aria');
29
+ await expect(comboboxMenuItemLabel).toHaveAttribute('aria-label', 'multimenuitem aria');
30
+ await expect(comboboxSectionLabel).toHaveAttribute('aria-label', 'sectionlabel aria');
31
+ await expect(comboboxSectionWrapper).toHaveAttribute('aria-label', 'sectionwrapper aria');
32
+ });
33
+ it('02: should have custom data-* for each slot', async () => {
34
+ const comboboxRootSlot = await DSComboboxMultiCO.getComboboxRootSlot();
35
+ const comboboxInputWrapperSlot = await DSComboboxMultiCO.getComboboxInputWrapperSlot();
36
+ const comboboxInputSlot = await DSComboboxMultiCO.getComboboxInputSlot();
37
+ const comboboxDropdownButtonSlot = await DSComboboxMultiCO.getComboboxDropDownMenuBtnSlot();
38
+ const comboboxFastlistWrapperList = await DSComboboxMultiCO.getFastListSlot();
39
+ const comboboxMenuItemLabel = await DSComboboxMultiCO.getComboboxMenuItemSlotByIndex(0);
40
+ const comboboxSectionLabel = await DSComboboxMultiCO.getComboboxSectionLabelByIndex(0);
41
+ const comboboxSectionWrapper = await DSComboboxMultiCO.getComboboxSectionWrapperSlotByIndex(0);
42
+ await expect(comboboxRootSlot).toHaveAttribute('data-testid', 'root data');
43
+ await expect(comboboxInputWrapperSlot).toHaveAttribute('data-testid', 'inputwrapper data');
44
+ await expect(comboboxInputSlot).toHaveAttribute('data-testid', 'input data');
45
+ await expect(comboboxDropdownButtonSlot).toHaveAttribute('data-testid', 'ddbutton data');
46
+ await expect(comboboxFastlistWrapperList).toHaveAttribute('data-testid', 'fastlist data');
47
+ await expect(comboboxMenuItemLabel).toHaveAttribute('data-testid', 'multimenuitem data');
48
+ await expect(comboboxSectionLabel).toHaveAttribute('data-testid', 'sectionlabel data');
49
+ await expect(comboboxSectionWrapper).toHaveAttribute('data-testid', 'sectionwrapper data');
50
+ });
51
+ it('03: should have custom lang for each slot', async () => {
52
+ const comboboxRootSlot = await DSComboboxMultiCO.getComboboxRootSlot();
53
+ const comboboxInputWrapperSlot = await DSComboboxMultiCO.getComboboxInputWrapperSlot();
54
+ const comboboxInputSlot = await DSComboboxMultiCO.getComboboxInputSlot();
55
+ const comboboxDropdownButtonSlot = await DSComboboxMultiCO.getComboboxDropDownMenuBtnSlot();
56
+ const comboboxFastlistWrapperList = await DSComboboxMultiCO.getFastListSlot();
57
+ const comboboxMenuItemLabel = await DSComboboxMultiCO.getComboboxMenuItemSlotByIndex(0);
58
+ const comboboxSectionLabel = await DSComboboxMultiCO.getComboboxSectionLabelByIndex(0);
59
+ const comboboxSectionWrapper = await DSComboboxMultiCO.getComboboxSectionWrapperSlotByIndex(0);
60
+ await expect(comboboxRootSlot).toHaveAttribute('lang', 'pt');
61
+ await expect(comboboxInputWrapperSlot).toHaveAttribute('lang', 'es');
62
+ await expect(comboboxInputSlot).toHaveAttribute('lang', 'de');
63
+ await expect(comboboxDropdownButtonSlot).toHaveAttribute('lang', 'en');
64
+ await expect(comboboxFastlistWrapperList).toHaveAttribute('lang', 'fr');
65
+ await expect(comboboxMenuItemLabel).toHaveAttribute('lang', 'it');
66
+ await expect(comboboxSectionLabel).toHaveAttribute('lang', 'nl');
67
+ await expect(comboboxSectionWrapper).toHaveAttribute('lang', 'sv');
68
+ });
69
+ });
70
+
71
+ describe('PUI-17261 - ComboboxMulti:: Slots - Loading Indicator -Func', () => {
72
+ before('loading page', async () => {
73
+ const errorOnGo = await DSComboboxMultiCO.loadingIndicatorSlotsTest.go();
74
+ if (errorOnGo) throw errorOnGo;
75
+ });
76
+ it('01: should have custom data-*, aria-* and lang for loading indicator specific slots', async () => {
77
+ const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
78
+ await combobox.click();
79
+ const dsComboboxLoadingIndicator = await DSComboboxMultiCO.getComboboxLoadingIndicator();
80
+ await expect(dsComboboxLoadingIndicator).toHaveAttribute('aria-label', 'loadingindicator aria');
81
+ await expect(dsComboboxLoadingIndicator).toHaveAttribute('data-testid', 'loadingindicator data');
82
+ await expect(dsComboboxLoadingIndicator).toHaveAttribute('lang', 'it');
83
+ });
84
+ });
85
+
86
+ describe('PUI-17262 - ComboboxMulti:: Slots - Skeleton -Func', () => {
87
+ before('loading page', async () => {
88
+ const errorOnGo = await DSComboboxMultiCO.skeletonSlotsTest.go();
89
+ if (errorOnGo) throw errorOnGo;
90
+ });
91
+ it('01: should have custom data-*, aria-* and lang for skeleton specific slots', async () => {
92
+ const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
93
+ await combobox.click();
94
+ const comboboxSkeleton = await DSComboboxMultiCO.getComboboxSkeletonMenuItem();
95
+ await expect(comboboxSkeleton).toHaveAttribute('aria-label', 'skeletonmenuitem aria');
96
+ await expect(comboboxSkeleton).toHaveAttribute('data-testid', 'skeletonmenuitem data');
97
+ await expect(comboboxSkeleton).toHaveAttribute('lang', 'ja');
98
+ });
99
+ });
100
+ }
@@ -0,0 +1,51 @@
1
+ /* eslint-disable max-lines */
2
+ import DSComboboxMultiCO from '../DSComboboxMultiCO';
3
+
4
+ if (
5
+ (!browser.capabilities['ice:options'].isPhone &&
6
+ !browser.capabilities['ice:options'].isTablet
7
+ ) {
8
+ describe('PUI-17269 - ComboboxMulti:: Slots - Controlled Menu and Sections -Visual', () => {
9
+ before('loading page', async () => {
10
+ const errorOnGo = await DSComboboxMultiCO.controlledMenuStateWithSectionsSlotsTest.go();
11
+ if (errorOnGo) throw errorOnGo;
12
+ });
13
+ it('01: should display basic combobox multi with customized slots', async () => {
14
+ await browser.eyesOpen();
15
+ const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
16
+ await combobox.waitForDisplayed();
17
+ const snapshot = await browser.eyesCheckSnapshot(DSComboboxMultiCO.snapshotPath('combo-multi-slots-basic'));
18
+ await expect(snapshot).toEqual(0);
19
+ });
20
+ });
21
+
22
+ describe('PUI-17268 - ComboboxMulti:: Slots - Loading Indicator -Visual', () => {
23
+ before('loading page', async () => {
24
+ const errorOnGo = await DSComboboxMultiCO.loadingIndicatorSlotsTest.go();
25
+ if (errorOnGo) throw errorOnGo;
26
+ });
27
+ it('01: should display combobox multi with loading indicator with customized slots', async () => {
28
+ await browser.eyesOpen();
29
+ const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
30
+ await combobox.click();
31
+ const snapshot = await browser.eyesCheckSnapshot(
32
+ DSComboboxMultiCO.snapshotPath('combo-multi-slots-loading-indicator'),
33
+ );
34
+ await expect(snapshot).toEqual(0);
35
+ });
36
+ });
37
+
38
+ describe('PUI-17267 - ComboboxMulti:: Slots - Skeleton -Visual', () => {
39
+ before('loading page', async () => {
40
+ const errorOnGo = await DSComboboxMultiCO.skeletonSlotsTest.go();
41
+ if (errorOnGo) throw errorOnGo;
42
+ });
43
+ it('01: should display basic combobox multi with skeleton with customized slots', async () => {
44
+ await browser.eyesOpen();
45
+ const combobox = await DSComboboxMultiCO.getComboboxRootSlot();
46
+ await combobox.click();
47
+ const snapshot = await browser.eyesCheckSnapshot(DSComboboxMultiCO.snapshotPath('combo-multi-slots-skeleton'));
48
+ await expect(snapshot).toEqual(0);
49
+ });
50
+ });
51
+ }
@@ -16,20 +16,14 @@ export default class DSComboboxSingleCO extends PageObject {
16
16
 
17
17
  static readOnlyWithMenuOpenable = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'read-only-with-menu-openable-test');
18
18
 
19
- static controlledMenuStateAdvancedCustomizationTest = new Urlbuilder(
19
+ static controlledMenuStateWithSectionsSlotsTest = new Urlbuilder(
20
20
  PATH_E2E_COMBOBOX_SINGLE_SLOTS,
21
- 'controlled-menu-state-advanced-customization-test',
21
+ 'controlled-menu-state-with-section-slots-test',
22
22
  );
23
23
 
24
- static loadingAdvancedCustomizationTest = new Urlbuilder(
25
- PATH_E2E_COMBOBOX_SINGLE_SLOTS,
26
- 'loading-advanced-customization-test',
27
- );
24
+ static loadingIndicatorSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE_SLOTS, 'loading-indicator-slots-test');
28
25
 
29
- static skeletonAdvancedCustomizationTest = new Urlbuilder(
30
- PATH_E2E_COMBOBOX_SINGLE_SLOTS,
31
- 'skeleton-advanced-customization-test',
32
- );
26
+ static skeletonSlotsTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE_SLOTS, 'skeleton-slots-test');
33
27
 
34
28
  static floatingAfterFiltering = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'floating-after-filtering');
35
29
 
@@ -217,8 +211,8 @@ export default class DSComboboxSingleCO extends PageObject {
217
211
  return $('[data-dimsum-parent-slot="dsComboboxFastList"]');
218
212
  }
219
213
 
220
- static async getFastListWrapperListSlot() {
221
- return $('[data-dimsum-slot="dsFastlistWrapperList"]');
214
+ static async getFastListSlot() {
215
+ return $('[data-dimsum-slot="dsFastlistContainer"]');
222
216
  }
223
217
 
224
218
  static async getFastListItemSlot() {
@@ -233,8 +227,8 @@ export default class DSComboboxSingleCO extends PageObject {
233
227
  return $$('[data-dimsum-slot="dsMenuitemMenuItemContentWrapper"]')[index];
234
228
  }
235
229
 
236
- static async getMenuitemMenuItemLabelSlotByIndex(index) {
237
- return $$('[data-dimsum-slot="dsMenuitemMenuItemLabel"]')[index];
230
+ static async getComboboxMenuItemSlotByIndex(index) {
231
+ return $$('[data-dimsum-parent-slot="dsComboboxSingleMenuItem"]')[index];
238
232
  }
239
233
 
240
234
  static async getComboboxLoadingIndicator() {
@@ -244,6 +238,14 @@ export default class DSComboboxSingleCO extends PageObject {
244
238
  static async getComboboxSkeletonMenuItem() {
245
239
  return $('[data-dimsum-parent-slot="dsComboboxSkeletonMenuItem"]');
246
240
  }
241
+
242
+ static async getComboboxSectionLabelByIndex(index) {
243
+ return $$('[data-dimsum-slot="dsComboboxSectionLabel"]')[index];
244
+ }
245
+
246
+ static async getComboboxSectionWrapperSlotByIndex(index) {
247
+ return $$('[data-dimsum-slot="dsComboboxSectionWrapper"]')[index];
248
+ }
247
249
  // Slots end
248
250
 
249
251
  // actions
@@ -7,64 +7,94 @@ if (
7
7
  browser.capabilities.browserName === 'chrome') ||
8
8
  browser.capabilities.browserName === 'Chrome'
9
9
  ) {
10
- describe('PUI-16558 - ComboboxSingle:: Slots - Controlled Menu Customization', () => {
10
+ describe('PUI-16558 - ComboboxSingle:: Slots - Controlled Menu and Sections -Func', () => {
11
11
  before('loading page', async () => {
12
- const errorOnGo = await DSComboboxSingleCO.controlledMenuStateAdvancedCustomizationTest.go();
12
+ const errorOnGo = await DSComboboxSingleCO.controlledMenuStateWithSectionsSlotsTest.go();
13
13
  if (errorOnGo) throw errorOnGo;
14
14
  });
15
- it('01: should have custom data-* and aria-*', async () => {
15
+ it('01: should have custom aria-* for each slot', async () => {
16
16
  const comboboxRootSlot = await DSComboboxSingleCO.getComboboxRootSlot();
17
17
  const comboboxInputWrapperSlot = await DSComboboxSingleCO.getComboboxInputWrapperSlot();
18
18
  const comboboxInputSlot = await DSComboboxSingleCO.getComboboxInputSlot();
19
19
  const comboboxDropdownButtonSlot = await DSComboboxSingleCO.getComboboxDropDownMenuBtnSlot();
20
- const comboboxFastlistWrapperList = await DSComboboxSingleCO.getFastListWrapperListSlot();
21
- const comboboxMenuItemContent = await DSComboboxSingleCO.getMenuitemMenuItemsContentWrapperSlotByIndex(0);
22
- const comboboxMenuItemLabel = await DSComboboxSingleCO.getMenuitemMenuItemLabelSlotByIndex(0);
23
-
24
- await expect(comboboxRootSlot).toHaveAttribute('aria-label', 'Combobox with custom attributes');
25
- await expect(comboboxInputWrapperSlot).toHaveAttribute(
26
- 'aria-label',
27
- 'Combobox input wrapper with custom attributes',
28
- );
29
- await expect(comboboxInputSlot).toHaveAttribute('aria-label', 'Combobox input with custom attributes');
30
- await expect(comboboxDropdownButtonSlot).toHaveAttribute('aria-label', 'Combobox dropdown toggle menu button');
31
- await expect(comboboxFastlistWrapperList).toHaveAttribute(
32
- 'aria-label',
33
- 'Combobox fast list wrapper with custom attributes',
34
- );
35
- await expect(comboboxMenuItemContent).toHaveAttribute('data-testid', 'custom-menu-item-content-wrapper-0');
36
- await expect(comboboxMenuItemLabel).toHaveAttribute(
37
- 'aria-label',
38
- 'Custom Luke Skywalker too long this text is super long',
39
- );
20
+ const comboboxFastlistWrapperList = await DSComboboxSingleCO.getFastListSlot();
21
+ const comboboxMenuItemLabel = await DSComboboxSingleCO.getComboboxMenuItemSlotByIndex(0);
22
+ const comboboxSectionLabel = await DSComboboxSingleCO.getComboboxSectionLabelByIndex(0);
23
+ const comboboxSectionWrapper = await DSComboboxSingleCO.getComboboxSectionWrapperSlotByIndex(0);
24
+ await expect(comboboxRootSlot).toHaveAttribute('aria-label', 'root aria');
25
+ await expect(comboboxInputWrapperSlot).toHaveAttribute('aria-label', 'inputwrapper aria');
26
+ await expect(comboboxInputSlot).toHaveAttribute('aria-label', 'input aria');
27
+ await expect(comboboxDropdownButtonSlot).toHaveAttribute('aria-label', 'ddbutton aria');
28
+ await expect(comboboxFastlistWrapperList).toHaveAttribute('aria-label', 'fastlist aria');
29
+ await expect(comboboxMenuItemLabel).toHaveAttribute('aria-label', 'singlemenuitem aria');
30
+ await expect(comboboxSectionLabel).toHaveAttribute('aria-label', 'sectionlabel aria');
31
+ await expect(comboboxSectionWrapper).toHaveAttribute('aria-label', 'sectionwrapper aria');
32
+ });
33
+ it('02: should have custom data-* for each slot', async () => {
34
+ const comboboxRootSlot = await DSComboboxSingleCO.getComboboxRootSlot();
35
+ const comboboxInputWrapperSlot = await DSComboboxSingleCO.getComboboxInputWrapperSlot();
36
+ const comboboxInputSlot = await DSComboboxSingleCO.getComboboxInputSlot();
37
+ const comboboxDropdownButtonSlot = await DSComboboxSingleCO.getComboboxDropDownMenuBtnSlot();
38
+ const comboboxFastlistWrapperList = await DSComboboxSingleCO.getFastListSlot();
39
+ const comboboxMenuItemLabel = await DSComboboxSingleCO.getComboboxMenuItemSlotByIndex(0);
40
+ const comboboxSectionLabel = await DSComboboxSingleCO.getComboboxSectionLabelByIndex(0);
41
+ const comboboxSectionWrapper = await DSComboboxSingleCO.getComboboxSectionWrapperSlotByIndex(0);
42
+ await expect(comboboxRootSlot).toHaveAttribute('data-testid', 'root data');
43
+ await expect(comboboxInputWrapperSlot).toHaveAttribute('data-testid', 'inputwrapper data');
44
+ await expect(comboboxInputSlot).toHaveAttribute('data-testid', 'input data');
45
+ await expect(comboboxDropdownButtonSlot).toHaveAttribute('data-testid', 'ddbutton data');
46
+ await expect(comboboxFastlistWrapperList).toHaveAttribute('data-testid', 'fastlist data');
47
+ await expect(comboboxMenuItemLabel).toHaveAttribute('data-testid', 'singlemenuitem data');
48
+ await expect(comboboxSectionLabel).toHaveAttribute('data-testid', 'sectionlabel data');
49
+ await expect(comboboxSectionWrapper).toHaveAttribute('data-testid', 'sectionwrapper data');
50
+ });
51
+ it('03: should have custom lang for each slot', async () => {
52
+ const comboboxRootSlot = await DSComboboxSingleCO.getComboboxRootSlot();
53
+ const comboboxInputWrapperSlot = await DSComboboxSingleCO.getComboboxInputWrapperSlot();
54
+ const comboboxInputSlot = await DSComboboxSingleCO.getComboboxInputSlot();
55
+ const comboboxDropdownButtonSlot = await DSComboboxSingleCO.getComboboxDropDownMenuBtnSlot();
56
+ const comboboxFastlistWrapperList = await DSComboboxSingleCO.getFastListSlot();
57
+ const comboboxMenuItemLabel = await DSComboboxSingleCO.getComboboxMenuItemSlotByIndex(0);
58
+ const comboboxSectionLabel = await DSComboboxSingleCO.getComboboxSectionLabelByIndex(0);
59
+ const comboboxSectionWrapper = await DSComboboxSingleCO.getComboboxSectionWrapperSlotByIndex(0);
60
+ await expect(comboboxRootSlot).toHaveAttribute('lang', 'ja');
61
+ await expect(comboboxInputWrapperSlot).toHaveAttribute('lang', 'it');
62
+ await expect(comboboxInputSlot).toHaveAttribute('lang', 'de');
63
+ await expect(comboboxDropdownButtonSlot).toHaveAttribute('lang', 'fr');
64
+ await expect(comboboxFastlistWrapperList).toHaveAttribute('lang', 'es');
65
+ await expect(comboboxMenuItemLabel).toHaveAttribute('lang', 'pt');
66
+ await expect(comboboxSectionLabel).toHaveAttribute('lang', 'zh');
67
+ await expect(comboboxSectionWrapper).toHaveAttribute('lang', 'ru');
40
68
  });
41
69
  });
42
70
 
43
- describe('PUI-16559 - ComboboxSingle:: Slots - loading advanced customization', () => {
71
+ describe('PUI-16559 - ComboboxSingle:: Slots - Loading Indicator -Func', () => {
44
72
  before('loading page', async () => {
45
- const errorOnGo = await DSComboboxSingleCO.loadingAdvancedCustomizationTest.go();
73
+ const errorOnGo = await DSComboboxSingleCO.loadingIndicatorSlotsTest.go();
46
74
  if (errorOnGo) throw errorOnGo;
47
75
  });
48
- it('01: should have custom data-* and aria-*', async () => {
49
- const combobox = await DSComboboxSingleCO.getCombobox();
76
+ it('01: should have custom data-*, aria-* and lang for loading indicator specific slots', async () => {
77
+ const combobox = await DSComboboxSingleCO.getComboboxRootSlot();
50
78
  await combobox.click();
51
79
  const dsComboboxLoadingIndicator = await DSComboboxSingleCO.getComboboxLoadingIndicator();
52
-
53
- await expect(dsComboboxLoadingIndicator).toHaveAttribute('aria-label', 'Loading characters...');
80
+ await expect(dsComboboxLoadingIndicator).toHaveAttribute('aria-label', 'loadingindicator aria');
81
+ await expect(dsComboboxLoadingIndicator).toHaveAttribute('data-testid', 'loadingindicator data');
82
+ await expect(dsComboboxLoadingIndicator).toHaveAttribute('lang', 'it');
54
83
  });
55
84
  });
56
85
 
57
- describe('PUI-16560 - ComboboxSingle:: Slots - skeleton advanced customization', () => {
86
+ describe('PUI-16560 - ComboboxSingle:: Slots - Skeleton -Func', () => {
58
87
  before('loading page', async () => {
59
- const errorOnGo = await DSComboboxSingleCO.skeletonAdvancedCustomizationTest.go();
88
+ const errorOnGo = await DSComboboxSingleCO.skeletonSlotsTest.go();
60
89
  if (errorOnGo) throw errorOnGo;
61
90
  });
62
- it('01: should have custom data-* and aria-*', async () => {
63
- const combobox = await DSComboboxSingleCO.getCombobox();
91
+ it('01: should have custom data-*, aria-* and lang for skeleton specific slots', async () => {
92
+ const combobox = await DSComboboxSingleCO.getComboboxRootSlot();
64
93
  await combobox.click();
65
94
  const comboboxSkeleton = await DSComboboxSingleCO.getComboboxSkeletonMenuItem();
66
-
67
- await expect(comboboxSkeleton).toHaveAttribute('data-testid', 'ds-form-combobox-skeleton-menu-item');
95
+ await expect(comboboxSkeleton).toHaveAttribute('aria-label', 'skeleton aria');
96
+ await expect(comboboxSkeleton).toHaveAttribute('data-testid', 'skeleton data');
97
+ await expect(comboboxSkeleton).toHaveAttribute('lang', 'ja');
68
98
  });
69
99
  });
70
100
  }