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.
- package/CHANGELOG.md +108 -0
- package/ds-accordion/DSAccordionCO.js +1 -2
- package/ds-accordion/slots/DSAccordion.slots.func.spec.js +12 -0
- package/ds-card-navigation/CardNavigationCO.js +50 -0
- package/ds-card-navigation/DSCardNavigation.slots.func.spec.js +127 -0
- package/ds-card-navigation/DSCardNavigation.slots.visual.spec.js +26 -0
- package/ds-data-table-async/DSDataTableCO.js +6 -1
- package/ds-data-table-async/components/FilterBarCO.js +8 -0
- package/ds-data-table-async/components/FiltersCO.js +8 -0
- package/ds-data-table-async/filters/DSDataTable.free-text-search.keyboard.func.spec.js +70 -5
- package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +3 -3
- package/ds-data-table-async/select/DSDataTable.select.func.spec.js +1 -1
- package/ds-data-table-async/slots/DSDataTable.slots.func.spec.js +40 -0
- package/ds-data-table-async/slots/DSDataTable.slots.visual.spec.js +19 -0
- package/ds-dialog/DSDialog.visual.spec.js +1 -1
- package/ds-dialog/DSDialogCO.js +5 -13
- package/ds-dialog/axe-core/DSDialog.error.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.info.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.scroll-body.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.success.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.warning.axe-core.spec.func.js +24 -0
- package/ds-form-combobox-multi/DSComboboxMultiCO.js +80 -1
- package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.func.spec.js +100 -0
- package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.visual.spec.js +51 -0
- package/ds-form-combobox-single/DSComboboxSingleCO.js +16 -14
- package/ds-form-combobox-single/slots/DSComboboxSingle.slots.func.spec.js +65 -35
- package/ds-form-combobox-single/slots/DSComboboxSingle.slots.visual.spec.js +53 -0
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItem.axe-core.func.spec.js +4 -1
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +4 -0
- package/{ds-toggle → ds-form-toggle}/DSToggle.axe-core.func.spec.js +6 -2
- package/{ds-toggle → ds-form-toggle}/DSToggle.func.spec.js +13 -8
- package/{ds-toggle → ds-form-toggle}/DSToggle.visual.spec.js +2 -2
- package/{ds-toggle → ds-form-toggle}/DSToggleCO.js +1 -1
- package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +1 -2
- package/ds-read-more/DSReadMore.width-change.visual.spec.js +85 -0
- package/package.json +187 -187
- package/paths.js +2 -0
- 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.
|
|
41
|
+
const errorOnGo = await DSDialog.scrollBodyContent.go();
|
|
42
42
|
if (errorOnGo) throw errorOnGo;
|
|
43
43
|
});
|
|
44
44
|
it('should display scrollable DSDialog correctly', async () => {
|
package/ds-dialog/DSDialogCO.js
CHANGED
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
/* eslint-disable import/no-relative-packages */
|
|
2
2
|
import { getElementByIndex } from './helpers/getElementByIndex';
|
|
3
|
-
import {
|
|
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(
|
|
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
|
|
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
|
|
19
|
+
static shuttleURL = new Urlbuilder(PATH_E2E_DIALOG, 'shuttle-test');
|
|
28
20
|
|
|
29
|
-
static wizardURL = new Urlbuilder(
|
|
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
|
|
19
|
+
static controlledMenuStateWithSectionsSlotsTest = new Urlbuilder(
|
|
20
20
|
PATH_E2E_COMBOBOX_SINGLE_SLOTS,
|
|
21
|
-
'controlled-menu-state-
|
|
21
|
+
'controlled-menu-state-with-section-slots-test',
|
|
22
22
|
);
|
|
23
23
|
|
|
24
|
-
static
|
|
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
|
|
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
|
|
221
|
-
return $('[data-dimsum-slot="
|
|
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
|
|
237
|
-
return $$('[data-dimsum-slot="
|
|
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
|
|
10
|
+
describe('PUI-16558 - ComboboxSingle:: Slots - Controlled Menu and Sections -Func', () => {
|
|
11
11
|
before('loading page', async () => {
|
|
12
|
-
const errorOnGo = await DSComboboxSingleCO.
|
|
12
|
+
const errorOnGo = await DSComboboxSingleCO.controlledMenuStateWithSectionsSlotsTest.go();
|
|
13
13
|
if (errorOnGo) throw errorOnGo;
|
|
14
14
|
});
|
|
15
|
-
it('01: should have custom
|
|
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.
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
await expect(comboboxRootSlot).toHaveAttribute('aria-label', '
|
|
25
|
-
await expect(comboboxInputWrapperSlot).toHaveAttribute(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
);
|
|
29
|
-
await expect(
|
|
30
|
-
await expect(
|
|
31
|
-
await expect(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
);
|
|
35
|
-
await
|
|
36
|
-
await
|
|
37
|
-
|
|
38
|
-
|
|
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 -
|
|
71
|
+
describe('PUI-16559 - ComboboxSingle:: Slots - Loading Indicator -Func', () => {
|
|
44
72
|
before('loading page', async () => {
|
|
45
|
-
const errorOnGo = await DSComboboxSingleCO.
|
|
73
|
+
const errorOnGo = await DSComboboxSingleCO.loadingIndicatorSlotsTest.go();
|
|
46
74
|
if (errorOnGo) throw errorOnGo;
|
|
47
75
|
});
|
|
48
|
-
it('01: should have custom data-* and
|
|
49
|
-
const combobox = await DSComboboxSingleCO.
|
|
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('
|
|
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 -
|
|
86
|
+
describe('PUI-16560 - ComboboxSingle:: Slots - Skeleton -Func', () => {
|
|
58
87
|
before('loading page', async () => {
|
|
59
|
-
const errorOnGo = await DSComboboxSingleCO.
|
|
88
|
+
const errorOnGo = await DSComboboxSingleCO.skeletonSlotsTest.go();
|
|
60
89
|
if (errorOnGo) throw errorOnGo;
|
|
61
90
|
});
|
|
62
|
-
it('01: should have custom data-* and
|
|
63
|
-
const combobox = await DSComboboxSingleCO.
|
|
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', '
|
|
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
|
}
|