dimsum-e2e-tests 3.70.0-next.3 → 3.70.0-next.30
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 +152 -0
- package/ds-accordion-native/DSAccordionNative.axe-core.func.spec.js +117 -0
- package/ds-accordion-native/DSAccordionNative.func.spec.js +178 -0
- package/ds-accordion-native/DSAccordionNative.visual.spec.js +131 -0
- package/ds-accordion-native/DSAccordionNativeCO.js +149 -0
- package/ds-accordion-native/aria-disabled/DSAccordionNative.aria-disabled.axe-core.func.spec.js +25 -0
- package/ds-accordion-native/aria-disabled/DSAccordionNative.aria-disabled.visual.spec.js +27 -0
- package/ds-accordion-native/role/DSAccordionNative.role-heading.func.spec.js +27 -0
- package/ds-accordion-native/scrollable-content/DSAccordionNative.scrollable-content.visual.spec.js +48 -0
- package/ds-accordion-native/slots/DSAccordionNative.slots.axe-core.func.spec.js +25 -0
- package/ds-accordion-native/slots/DSAccordionNative.slots.func.spec.js +73 -0
- package/ds-accordion-native/slots/DSAccordionNative.slots.visual.spec.js +18 -0
- package/ds-accordion-native/wrapLabel/DSAccordionNative.wrap-label.visual.spec.js +22 -0
- package/ds-apppicker/DSAppPickerCO.js +1 -1
- package/ds-autocomplete/DSAutocomplete.visual.spec.js +34 -0
- package/ds-autocomplete/DSAutocompleteCO.js +2 -0
- package/ds-chat/DSChat.axe-core.func.spec.js +2 -2
- package/ds-chat/DSChat.visual.spec.js +3 -3
- package/ds-chat/DSChatCO.js +17 -23
- package/ds-chat/bubbles/slots/DSChatBubble.slots.axe-core.func.spec.js +24 -0
- package/ds-chat/bubbles/slots/DSChatBubble.slots.func.spec.js +49 -0
- package/ds-chat/bubbles/slots/DSChatBubble.slots.visual.spec.js +25 -0
- package/ds-chat/card/slots/DSChatCard.slots.axe-core.func.spec.js +24 -0
- package/ds-chat/card/slots/DSChatCard.slots.func.spec.js +47 -0
- package/ds-chat/card/slots/DSChatCard.slots.visual.spec.js +18 -0
- package/ds-chat/card/truncated-text/DSChatCard.truncated-text.func.spec.js +32 -0
- package/ds-chat/card/truncated-text/DSChatCard.truncated-text.visual.spec.js +26 -0
- package/ds-chat/card/with-notification-badges/DSChatCard.with-notification-badges.axe-core.func.spec.js +23 -0
- package/ds-chat/card/with-notification-badges/DSChatCard.with-notification-badges.visual.spec.js +17 -0
- package/ds-chat/components/BubbleCO.js +46 -3
- package/ds-chat/components/CardCO.js +77 -0
- package/ds-chat/components/ComposerCO.js +6 -6
- package/ds-chat/components/FloatingButtonCO.js +2 -2
- package/ds-chat/components/HeaderCO.js +2 -2
- package/ds-chat/components/TileCO.js +82 -0
- package/ds-chat/components/index.js +3 -2
- package/ds-chat/loadmore/DSChat-loadmore.func.spec.js +1 -1
- package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.axe-core.func.spec.js +2 -2
- package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.func.spec.js +1 -1
- package/{ds-chat-tile → ds-chat/tile}/DSChat-tile.visual.spec.js +2 -2
- package/{ds-chat-tile → ds-chat/tile}/aria-disabled/DSChat-tile.aria-disabled.axe-core.func.spec.js +2 -2
- package/{ds-chat-tile → ds-chat/tile}/aria-disabled/DSChat-tile.aria-disabled.visual.spec.js +1 -1
- package/ds-chat/tile/slots/DSChatTile.slots.func.spec.js +53 -0
- package/ds-chat/tile/slots/DSChatTile.slots.visual.spec.js +18 -0
- package/ds-controlled-form/ds-combobox/DSComboboxCO.js +2 -2
- package/ds-controlled-form/ds-controlled-checkbox/DSControlledCheckboxCO.js +1 -1
- package/ds-controlled-form/ds-controlled-inputgroup/DSControlledInputGroupCO.js +1 -1
- package/ds-data-table-async/DSDataTableCO.js +10 -12
- package/ds-data-table-async/basic/DSDataTable.basic.visual.spec.js +1 -1
- package/ds-data-table-async/components/FiltersCO.js +1 -1
- package/ds-data-table-async/components/HeaderCO.js +22 -10
- package/ds-dialog/DSDialog.visual.spec.js +16 -31
- package/ds-dialog/DSDialogCO.js +58 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-critical.axe-core.func.spec.js +27 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-critical.func.spec.js +56 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-critical.visual.spec.js +20 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-dismissible.axe-core.func.spec.js +25 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-dismissible.func.spec.js +52 -0
- package/ds-dialog/alert-dialog/DSDialog.alert-dialog-dismissible.visual.spec.js +20 -0
- package/ds-dialog/axe-core/DSDialog.accessible-form.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.basic.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.centered.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.decision.axe-core.func.spec.js +57 -0
- package/ds-dialog/axe-core/DSDialog.long-body.axe-core.func.spec.js +25 -0
- package/ds-dialog/axe-core/DSDialog.warning.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.wizard.axe-core.func.spec.js +28 -0
- package/ds-dialog/click-outside/DSDialog.click-outside.func.spec.js +31 -0
- package/ds-dialog/esc-close/DSDialog.esc-close.func.spec.js +31 -0
- package/ds-dialog/flexible-heading-level/DSDialog.flexible-heading-level.axe-core.func.spec.js +46 -0
- package/ds-dialog/flexible-heading-level/DSDialog.flexible-heading-level.func.spec.js +50 -0
- package/ds-dialog/form-dialog-datepicker/DSDialog.form-datepicker.axe-core.func.spec.js +25 -0
- package/ds-dialog/form-dialog-datepicker/DSDialog.form-datepicker.visual.spec.js +37 -0
- package/ds-dialog/single-button-footer/DSDialog.single-button-footer.axe-core.func.spec.js +25 -0
- package/ds-dialog/single-button-footer/DSDialog.single-button-footer.visual.spec.js +20 -0
- package/ds-dialog/size-variants/DSDialog.size-variants.visual.spec.js +116 -0
- package/ds-floating-context/DSFloatingContextCO.js +10 -0
- package/ds-floating-context/placement/DSFloatingContext.placement.visual.spec.js +48 -0
- package/ds-form-combobox-multi/DSComboboxMultiCO.js +8 -2
- package/ds-form-combobox-multi/aria-busy-loading/DSComboboxMulti.aria-busy-loading.axe-core.func.spec.js +55 -0
- package/ds-form-combobox-multi/aria-busy-loading/DSComboboxMulti.aria-busy-loading.func.spec.js +57 -0
- package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +15 -0
- package/ds-form-combobox-multi/disabled/DSComboboxMulti.disabled.axe-core.func.spec.js +24 -0
- package/ds-form-combobox-multi/inline/DSComboboxMulti.inline.visual.spec.js +21 -0
- package/ds-form-combobox-single/DSComboboxSingleCO.js +8 -2
- package/ds-form-combobox-single/aria-busy-loading/DSComboboxSingle.aria-busy-loading.axe-core.func.spec.js +49 -0
- package/ds-form-combobox-single/aria-busy-loading/DSComboboxSingle.aria-busy-loading.func.spec.js +54 -0
- package/ds-form-combobox-single/aria-disabled/DSComboboxSingle.aria-disabled.visual.spec.js +18 -0
- package/ds-form-combobox-single/disabled/DSComboboxSingle.disabled.axe-core.func.spec.js +24 -0
- package/ds-form-combobox-single/inline/DSComboboxSingle.inline.visual.spec.js +23 -0
- package/ds-form-native-select/NativeSelect.axe-core.func.spec.js +39 -0
- package/ds-form-native-select/NativeSelect.visual.spec.js +33 -0
- package/ds-form-native-select/NativeSelectCO.js +6 -0
- package/ds-form-native-select/option-selection/NativeSelect.option-selection.func.spec.js +25 -0
- package/ds-global-header/GlobalHeader.axe-core.func.spec.js +30 -0
- package/ds-global-header/GlobalHeader.visual.spec.js +31 -0
- package/ds-leftnavigation/LeftNavigationCO.js +2 -2
- package/ds-menu-button/DSMenuButtonCO.js +23 -0
- package/ds-menu-button/slots/DSMenuButton.slots.func.spec.js +40 -0
- package/ds-menu-button/slots/DSMenuButton.slots.visual.spec.js +26 -0
- package/ds-modal-slide/ModalSlideCO.js +39 -0
- package/ds-modal-slide/custom-header/ModalSlide.customHeader.focusRing.visual.spec.js +2 -1
- package/ds-modal-slide/slots/ModalSlide.slots.func.spec.js +74 -0
- package/ds-modal-slide/slots/ModalSlide.slots.visual.spec.js +27 -0
- package/ds-page-layout/PageLayoutCO.js +4 -4
- package/ds-progress-indicator/DSProgressIndicator.axe-core.func.spec.js +2 -0
- package/ds-progress-indicator/DSProgressIndicatorCO.js +1 -1
- package/ds-tab-button/DSTabButton.func.spec.js +1 -1
- package/ds-tabs/DSTabs.visual.spec.js +1 -2
- package/ds-tabs/DSTabsCO.js +2 -2
- package/ds-tabs/with-carousel/DSTabs.with-carousel.func.spec.js +22 -7
- package/ds-tabs/with-carousel/DSTabs.with-carousel.visual.spec.js +9 -9
- package/ds-tooltip-v3/DSTooltipV3CO.js +6 -0
- package/ds-tooltip-v3/aria-tooltip-pattern/DSTooltipV3.aria-tooltip-pattern.axe-core.func.spec.js +23 -0
- package/ds-tooltip-v3/aria-tooltip-pattern/DSTooltipV3.aria-tooltip-pattern.func.spec.js +29 -0
- package/ds-treeview/DSTreeViewCO.js +2 -2
- package/package.json +150 -153
- package/paths.js +8 -1
- package/ds-chat-tile/TileCO.js +0 -35
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import DSDialog from '../DSDialogCO';
|
|
2
|
+
|
|
3
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
4
|
+
// Visual tests for all dialog size/width variants
|
|
5
|
+
describe('PUI-18405 - DSDialog:: size small layout -Visual', () => {
|
|
6
|
+
before('loading page', async () => {
|
|
7
|
+
const errorOnGo = await DSDialog.sizeVariantsURL.go();
|
|
8
|
+
if (errorOnGo) throw errorOnGo;
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('01: should display small (320px) dialog correctly', async () => {
|
|
12
|
+
const btn = await DSDialog.getOpenDialogBySize('small');
|
|
13
|
+
await btn.click();
|
|
14
|
+
const dialog = await DSDialog.getDialog();
|
|
15
|
+
await dialog.waitForDisplayed();
|
|
16
|
+
const snapshot = await browser.percyCheckScreenshot(DSDialog.snapshotPath('size-small'));
|
|
17
|
+
await expect(snapshot).toEqual(0);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
describe('PUI-18406 - DSDialog:: size default layout -Visual', () => {
|
|
22
|
+
before('loading page', async () => {
|
|
23
|
+
const errorOnGo = await DSDialog.sizeVariantsURL.go();
|
|
24
|
+
if (errorOnGo) throw errorOnGo;
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('01: should display default (576px) dialog correctly', async () => {
|
|
28
|
+
const btn = await DSDialog.getOpenDialogBySize('default');
|
|
29
|
+
await btn.click();
|
|
30
|
+
const dialog = await DSDialog.getDialog();
|
|
31
|
+
await dialog.waitForDisplayed();
|
|
32
|
+
const snapshot = await browser.percyCheckScreenshot(DSDialog.snapshotPath('size-default'));
|
|
33
|
+
await expect(snapshot).toEqual(0);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe('PUI-18407 - DSDialog:: size medium layout -Visual', () => {
|
|
38
|
+
before('loading page', async () => {
|
|
39
|
+
const errorOnGo = await DSDialog.sizeVariantsURL.go();
|
|
40
|
+
if (errorOnGo) throw errorOnGo;
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('01: should display medium (656px) dialog correctly', async () => {
|
|
44
|
+
const btn = await DSDialog.getOpenDialogBySize('medium');
|
|
45
|
+
await btn.click();
|
|
46
|
+
const dialog = await DSDialog.getDialog();
|
|
47
|
+
await dialog.waitForDisplayed();
|
|
48
|
+
const snapshot = await browser.percyCheckScreenshot(DSDialog.snapshotPath('size-medium'));
|
|
49
|
+
await expect(snapshot).toEqual(0);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe('PUI-18408 - DSDialog:: size large layout -Visual', () => {
|
|
54
|
+
before('loading page', async () => {
|
|
55
|
+
const errorOnGo = await DSDialog.sizeVariantsURL.go();
|
|
56
|
+
if (errorOnGo) throw errorOnGo;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('01: should display large (848px) dialog correctly', async () => {
|
|
60
|
+
const btn = await DSDialog.getOpenDialogBySize('large');
|
|
61
|
+
await btn.click();
|
|
62
|
+
const dialog = await DSDialog.getDialog();
|
|
63
|
+
await dialog.waitForDisplayed();
|
|
64
|
+
const snapshot = await browser.percyCheckScreenshot(DSDialog.snapshotPath('size-large'));
|
|
65
|
+
await expect(snapshot).toEqual(0);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
describe('PUI-18409 - DSDialog:: size x-large layout -Visual', () => {
|
|
70
|
+
before('loading page', async () => {
|
|
71
|
+
const errorOnGo = await DSDialog.sizeVariantsURL.go();
|
|
72
|
+
if (errorOnGo) throw errorOnGo;
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('01: should display x-large (1042px) dialog correctly', async () => {
|
|
76
|
+
const btn = await DSDialog.getOpenDialogBySize('x-large');
|
|
77
|
+
await btn.click();
|
|
78
|
+
const dialog = await DSDialog.getDialog();
|
|
79
|
+
await dialog.waitForDisplayed();
|
|
80
|
+
const snapshot = await browser.percyCheckScreenshot(DSDialog.snapshotPath('size-x-large'));
|
|
81
|
+
await expect(snapshot).toEqual(0);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('PUI-18410 - DSDialog:: size xx-large layout -Visual', () => {
|
|
86
|
+
before('loading page', async () => {
|
|
87
|
+
const errorOnGo = await DSDialog.sizeVariantsURL.go();
|
|
88
|
+
if (errorOnGo) throw errorOnGo;
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it('01: should display xx-large (1440px) dialog correctly', async () => {
|
|
92
|
+
const btn = await DSDialog.getOpenDialogBySize('xx-large');
|
|
93
|
+
await btn.click();
|
|
94
|
+
const dialog = await DSDialog.getDialog();
|
|
95
|
+
await dialog.waitForDisplayed();
|
|
96
|
+
const snapshot = await browser.percyCheckScreenshot(DSDialog.snapshotPath('size-xx-large'));
|
|
97
|
+
await expect(snapshot).toEqual(0);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
describe('PUI-18411 - DSDialog:: custom width layout -Visual', () => {
|
|
102
|
+
before('loading page', async () => {
|
|
103
|
+
const errorOnGo = await DSDialog.sizeVariantsURL.go();
|
|
104
|
+
if (errorOnGo) throw errorOnGo;
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('01: should display custom width (700px) dialog correctly', async () => {
|
|
108
|
+
const btn = await DSDialog.getOpenDialogBySize('custom');
|
|
109
|
+
await btn.click();
|
|
110
|
+
const dialog = await DSDialog.getDialog();
|
|
111
|
+
await dialog.waitForDisplayed();
|
|
112
|
+
const snapshot = await browser.percyCheckScreenshot(DSDialog.snapshotPath('size-custom-700'));
|
|
113
|
+
await expect(snapshot).toEqual(0);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
}
|
|
@@ -10,6 +10,8 @@ export default class DSFloatingContextCO extends PageObject {
|
|
|
10
10
|
|
|
11
11
|
static slotsURL = new Urlbuilder(PATH_E2E_FLOATING_CONTEXT, 'slots-test');
|
|
12
12
|
|
|
13
|
+
static positionsTestURL = new Urlbuilder(PATH_E2E_FLOATING_CONTEXT, 'positions-test');
|
|
14
|
+
|
|
13
15
|
static async getFloatingContextWrapper() {
|
|
14
16
|
return $('[data-testid="ds-floating-wrapper-root"]');
|
|
15
17
|
}
|
|
@@ -18,6 +20,14 @@ export default class DSFloatingContextCO extends PageObject {
|
|
|
18
20
|
return $('[data-testid="ds-floatingwrapper-content"]');
|
|
19
21
|
}
|
|
20
22
|
|
|
23
|
+
static async getFloatingContextContents() {
|
|
24
|
+
return $$('[data-testid="ds-floatingwrapper-content"]');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static async getHelpButtons() {
|
|
28
|
+
return $$('[aria-label="Help"]');
|
|
29
|
+
}
|
|
30
|
+
|
|
21
31
|
static async getFloatingContextArrowSlot() {
|
|
22
32
|
return $('[data-dimsum-slot="dsFloatingwrapperArrow"]');
|
|
23
33
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Tests for the fix introduced in PUI-14527 (useFloatingContext placement string type mismatch)
|
|
2
|
+
import { mouseOver } from '../../helpers';
|
|
3
|
+
import DSFloatingContextCO from '../DSFloatingContextCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-18529 - DSFloatingContext:: useFloatingContext placement directions - visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSFloatingContextCO.positionsTestURL.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('01: should display tooltip with right placement on hover', async () => {
|
|
13
|
+
const buttons = await DSFloatingContextCO.getHelpButtons();
|
|
14
|
+
await mouseOver(buttons[0]);
|
|
15
|
+
const contents = await DSFloatingContextCO.getFloatingContextContents();
|
|
16
|
+
await contents[0].waitForDisplayed();
|
|
17
|
+
const snapshot = await browser.percyCheckScreenshot(DSFloatingContextCO.snapshotPath('placement-right'));
|
|
18
|
+
await expect(snapshot).toEqual(0);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('02: should display tooltip with top placement on hover', async () => {
|
|
22
|
+
const buttons = await DSFloatingContextCO.getHelpButtons();
|
|
23
|
+
await mouseOver(buttons[1]);
|
|
24
|
+
const contents = await DSFloatingContextCO.getFloatingContextContents();
|
|
25
|
+
await contents[0].waitForDisplayed();
|
|
26
|
+
const snapshot = await browser.percyCheckScreenshot(DSFloatingContextCO.snapshotPath('placement-top'));
|
|
27
|
+
await expect(snapshot).toEqual(0);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('03: should display tooltip with bottom placement on hover', async () => {
|
|
31
|
+
const buttons = await DSFloatingContextCO.getHelpButtons();
|
|
32
|
+
await mouseOver(buttons[2]);
|
|
33
|
+
const contents = await DSFloatingContextCO.getFloatingContextContents();
|
|
34
|
+
await contents[0].waitForDisplayed();
|
|
35
|
+
const snapshot = await browser.percyCheckScreenshot(DSFloatingContextCO.snapshotPath('placement-bottom'));
|
|
36
|
+
await expect(snapshot).toEqual(0);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('04: should display tooltip with left placement on hover', async () => {
|
|
40
|
+
const buttons = await DSFloatingContextCO.getHelpButtons();
|
|
41
|
+
await mouseOver(buttons[3]);
|
|
42
|
+
const contents = await DSFloatingContextCO.getFloatingContextContents();
|
|
43
|
+
await contents[0].waitForDisplayed();
|
|
44
|
+
const snapshot = await browser.percyCheckScreenshot(DSFloatingContextCO.snapshotPath('placement-left'));
|
|
45
|
+
await expect(snapshot).toEqual(0);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
@@ -6,6 +6,10 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
6
6
|
// STORIES
|
|
7
7
|
static basicTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'basic-test');
|
|
8
8
|
|
|
9
|
+
static loadingTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'loading-test');
|
|
10
|
+
|
|
11
|
+
static skeletonTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'skeleton-test');
|
|
12
|
+
|
|
9
13
|
static applyAriaDisabled = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'apply-aria-disabled-test');
|
|
10
14
|
|
|
11
15
|
static readOnly = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'read-only-test');
|
|
@@ -29,6 +33,8 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
29
33
|
|
|
30
34
|
static disabled = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'disabled-test');
|
|
31
35
|
|
|
36
|
+
static inlineTest = new Urlbuilder(PATH_E2E_COMBOBOX_MULTI, 'inline-test');
|
|
37
|
+
|
|
32
38
|
static controlledMenuStateWithSectionsSlotsTest = new Urlbuilder(
|
|
33
39
|
PATH_E2E_COMBOBOX_MULTI_SLOTS,
|
|
34
40
|
'controlled-menu-state-with-section-slots-test',
|
|
@@ -142,7 +148,7 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
142
148
|
}
|
|
143
149
|
|
|
144
150
|
static async getSimpleTruncateText() {
|
|
145
|
-
return $('[data-testid="
|
|
151
|
+
return $('[data-testid="combobox-selected-values"]');
|
|
146
152
|
}
|
|
147
153
|
|
|
148
154
|
static async getNumberOptions() {
|
|
@@ -191,7 +197,7 @@ export default class DSComboboxMultiCO extends PageObject {
|
|
|
191
197
|
}
|
|
192
198
|
|
|
193
199
|
static async getTooltip() {
|
|
194
|
-
return $('[data-testid="
|
|
200
|
+
return $('[data-testid="ds-floating-wrapper-root"]');
|
|
195
201
|
}
|
|
196
202
|
|
|
197
203
|
// actions
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
2
|
+
import { axeCoreCheck } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
// Tests for the fix introduced in PUI-18034
|
|
5
|
+
// (busy listbox with aria-busy + aria-label so screen readers announce the
|
|
6
|
+
// in-progress state via the input's aria-controls linkage; this spec verifies
|
|
7
|
+
// the busy listbox surface passes axe-core).
|
|
8
|
+
if (
|
|
9
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
10
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
11
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
12
|
+
browser.capabilities.browserName === 'Chrome'
|
|
13
|
+
) {
|
|
14
|
+
describe('PUI-18471 - ComboboxMulti:: busy listbox while isLoading - axe-core', () => {
|
|
15
|
+
before('loading page', async () => {
|
|
16
|
+
const errorOnGo = await DSComboboxMultiCO.loadingTest.go();
|
|
17
|
+
if (errorOnGo) throw errorOnGo;
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('01: busy listbox while isLoading should pass axe-core scan', async () => {
|
|
21
|
+
const dropdownMenuBtn = await DSComboboxMultiCO.getDropDownMenuBtn();
|
|
22
|
+
await dropdownMenuBtn.click();
|
|
23
|
+
|
|
24
|
+
const listbox = await DSComboboxMultiCO.getComboListbox();
|
|
25
|
+
await listbox.waitForExist();
|
|
26
|
+
|
|
27
|
+
// `scrollable-region-focusable` is disabled here as a documented false positive:
|
|
28
|
+
// in the busy/isLoading state the fast-list container is empty, so the region is
|
|
29
|
+
// not authentically scrollable from a user's perspective — TanStack Virtual leaves
|
|
30
|
+
// a residual scrollHeight that triggers the rule. The container's tabindex=-1 is a
|
|
31
|
+
// long-standing Firefox scroll-prevention workaround. The rule remains active for
|
|
32
|
+
// all other states (open menu with items, read-only, etc.).
|
|
33
|
+
const result = await axeCoreCheck({ extraDisabledRules: ['scrollable-region-focusable'] });
|
|
34
|
+
expect(result.length).toBe(0);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('PUI-18472 - ComboboxMulti:: busy listbox while isSkeleton - axe-core', () => {
|
|
39
|
+
before('loading page', async () => {
|
|
40
|
+
const errorOnGo = await DSComboboxMultiCO.skeletonTest.go();
|
|
41
|
+
if (errorOnGo) throw errorOnGo;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('01: busy listbox while isSkeleton should pass axe-core scan', async () => {
|
|
45
|
+
const dropdownMenuBtn = await DSComboboxMultiCO.getDropDownMenuBtn();
|
|
46
|
+
await dropdownMenuBtn.click();
|
|
47
|
+
|
|
48
|
+
const listbox = await DSComboboxMultiCO.getComboListbox();
|
|
49
|
+
await listbox.waitForExist();
|
|
50
|
+
|
|
51
|
+
const result = await axeCoreCheck();
|
|
52
|
+
expect(result.length).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
package/ds-form-combobox-multi/aria-busy-loading/DSComboboxMulti.aria-busy-loading.func.spec.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
2
|
+
|
|
3
|
+
// Tests for the fix introduced in PUI-18034
|
|
4
|
+
// (carries aria-busy + aria-label on the listbox during loading/skeleton so
|
|
5
|
+
// screen readers announce the in-progress state via the input's aria-controls
|
|
6
|
+
// linkage; replaces the prior racing assertive live region).
|
|
7
|
+
// aria-multiselectable is preserved on the busy listbox.
|
|
8
|
+
if (
|
|
9
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
10
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
11
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
12
|
+
browser.capabilities.browserName === 'Chrome'
|
|
13
|
+
) {
|
|
14
|
+
describe('PUI-18447 - ComboboxMulti:: busy listbox while isLoading - Func', () => {
|
|
15
|
+
before('loading page', async () => {
|
|
16
|
+
const errorOnGo = await DSComboboxMultiCO.loadingTest.go();
|
|
17
|
+
if (errorOnGo) throw errorOnGo;
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('01: listbox is aria-busy + aria-multiselectable and aria-controls linked', async () => {
|
|
21
|
+
const dropdownMenuBtn = await DSComboboxMultiCO.getDropDownMenuBtn();
|
|
22
|
+
await dropdownMenuBtn.click();
|
|
23
|
+
|
|
24
|
+
const listbox = await DSComboboxMultiCO.getComboListbox();
|
|
25
|
+
await listbox.waitForExist();
|
|
26
|
+
|
|
27
|
+
await expect(listbox).toHaveAttribute('role', 'listbox');
|
|
28
|
+
await expect(listbox).toHaveAttribute('aria-busy', 'true');
|
|
29
|
+
await expect(listbox).toHaveAttribute('aria-label', 'Loading options please wait');
|
|
30
|
+
await expect(listbox).toHaveAttribute('aria-multiselectable', 'true');
|
|
31
|
+
|
|
32
|
+
const listboxId = await listbox.getAttribute('id');
|
|
33
|
+
const input = await DSComboboxMultiCO.getComboboxInput();
|
|
34
|
+
await expect(input).toHaveAttribute('aria-controls', listboxId);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('PUI-18448 - ComboboxMulti:: busy listbox while isSkeleton - Func', () => {
|
|
39
|
+
before('loading page', async () => {
|
|
40
|
+
const errorOnGo = await DSComboboxMultiCO.skeletonTest.go();
|
|
41
|
+
if (errorOnGo) throw errorOnGo;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('01: listbox is aria-busy + aria-multiselectable with aria-label', async () => {
|
|
45
|
+
const dropdownMenuBtn = await DSComboboxMultiCO.getDropDownMenuBtn();
|
|
46
|
+
await dropdownMenuBtn.click();
|
|
47
|
+
|
|
48
|
+
const listbox = await DSComboboxMultiCO.getComboListbox();
|
|
49
|
+
await listbox.waitForExist();
|
|
50
|
+
|
|
51
|
+
await expect(listbox).toHaveAttribute('role', 'listbox');
|
|
52
|
+
await expect(listbox).toHaveAttribute('aria-busy', 'true');
|
|
53
|
+
await expect(listbox).toHaveAttribute('aria-label', 'Loading options please wait');
|
|
54
|
+
await expect(listbox).toHaveAttribute('aria-multiselectable', 'true');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
import { Key } from 'webdriverio';
|
|
3
3
|
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
4
|
+
import { mouseOver } from '../../helpers';
|
|
4
5
|
|
|
5
6
|
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
7
|
describe('PUI-14364 - ComboboxMulti:: applyAriaDisabled prop - visual', () => {
|
|
@@ -43,5 +44,19 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
43
44
|
);
|
|
44
45
|
await expect(snapshot).toEqual(0);
|
|
45
46
|
});
|
|
47
|
+
// PUI-15476: aria-disabled item text color must change to n600 on hover
|
|
48
|
+
it('04: listbox with aria-disabled item hovered should display n600 text color', async () => {
|
|
49
|
+
await browser.eyesOpen();
|
|
50
|
+
const secondCombobox = await DSComboboxMultiCO.getComboboxWrapperByIndex(1);
|
|
51
|
+
await secondCombobox.click();
|
|
52
|
+
const menuList = await DSComboboxMultiCO.getMenuList();
|
|
53
|
+
await menuList.waitForDisplayed();
|
|
54
|
+
const ariaDisabledOption = await DSComboboxMultiCO.getOptionByIndex(1);
|
|
55
|
+
await mouseOver(ariaDisabledOption);
|
|
56
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
57
|
+
DSComboboxMultiCO.snapshotPath('combobox-multi-aria-disabled-item-hovered'),
|
|
58
|
+
);
|
|
59
|
+
await expect(snapshot).toEqual(0);
|
|
60
|
+
});
|
|
46
61
|
});
|
|
47
62
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
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-18473 - ComboboxMulti:: disabled - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSComboboxMultiCO.disabled.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('01: disabled combobox should pass axe-core scan', async () => {
|
|
17
|
+
const combobox = await DSComboboxMultiCO.getCombobox();
|
|
18
|
+
await combobox.waitForExist();
|
|
19
|
+
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSComboboxMultiCO from '../DSComboboxMultiCO';
|
|
3
|
+
|
|
4
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
5
|
+
// Tests for the fix introduced in PUI-15481 (inline padding 8px top/bottom — was 10px)
|
|
6
|
+
describe('PUI-18560 - ComboboxMulti:: inline config padding - visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSComboboxMultiCO.inlineTest.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: inline combobox should render with the corrected 8px padding', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
const pillDropdownBtn = await DSComboboxMultiCO.getPillDropDownBtn();
|
|
14
|
+
await pillDropdownBtn.click();
|
|
15
|
+
const menuList = await DSComboboxMultiCO.getMenuList();
|
|
16
|
+
await menuList.waitForDisplayed();
|
|
17
|
+
const snapshot = await browser.eyesCheckSnapshot(DSComboboxMultiCO.snapshotPath('combobox-multi-inline-padding'));
|
|
18
|
+
await expect(snapshot).toEqual(0);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -4,6 +4,10 @@ import { PageObject, Urlbuilder } from '../helpers';
|
|
|
4
4
|
|
|
5
5
|
export default class DSComboboxSingleCO extends PageObject {
|
|
6
6
|
// STORIES
|
|
7
|
+
static loadingTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'loading-test');
|
|
8
|
+
|
|
9
|
+
static skeletonTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'skeleton-test');
|
|
10
|
+
|
|
7
11
|
static applyAriaDisabled = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'apply-aria-disabled-test');
|
|
8
12
|
|
|
9
13
|
static readOnly = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'read-only-test');
|
|
@@ -33,6 +37,8 @@ export default class DSComboboxSingleCO extends PageObject {
|
|
|
33
37
|
|
|
34
38
|
static disabled = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'disabled-test');
|
|
35
39
|
|
|
40
|
+
static inlineTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'inline-test');
|
|
41
|
+
|
|
36
42
|
// COMBOBOX - INPUT
|
|
37
43
|
static async getCombobox() {
|
|
38
44
|
return $('[data-testid="combobox-container"]');
|
|
@@ -133,7 +139,7 @@ export default class DSComboboxSingleCO extends PageObject {
|
|
|
133
139
|
}
|
|
134
140
|
|
|
135
141
|
static async getSimpleTruncateText() {
|
|
136
|
-
return $('[data-testid="
|
|
142
|
+
return $('[data-testid="combobox-selected-values"]');
|
|
137
143
|
}
|
|
138
144
|
|
|
139
145
|
static async getNumberOptions() {
|
|
@@ -182,7 +188,7 @@ export default class DSComboboxSingleCO extends PageObject {
|
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
static async getTooltip() {
|
|
185
|
-
return $('[data-testid="
|
|
191
|
+
return $('[data-testid="ds-floating-wrapper-root"]');
|
|
186
192
|
}
|
|
187
193
|
|
|
188
194
|
// Slots
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
2
|
+
import { axeCoreCheck } from '../../helpers';
|
|
3
|
+
|
|
4
|
+
// Tests for the fix introduced in PUI-18034
|
|
5
|
+
// (busy listbox with aria-busy + aria-label so screen readers announce the
|
|
6
|
+
// in-progress state via the input's aria-controls linkage; this spec verifies
|
|
7
|
+
// the busy listbox surface passes axe-core).
|
|
8
|
+
if (
|
|
9
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
10
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
11
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
12
|
+
browser.capabilities.browserName === 'Chrome'
|
|
13
|
+
) {
|
|
14
|
+
describe('PUI-18474 - ComboboxSingle:: busy listbox while isLoading - axe-core', () => {
|
|
15
|
+
before('loading page', async () => {
|
|
16
|
+
const errorOnGo = await DSComboboxSingleCO.loadingTest.go();
|
|
17
|
+
if (errorOnGo) throw errorOnGo;
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('01: busy listbox while isLoading should pass axe-core scan', async () => {
|
|
21
|
+
const dropdownMenuBtn = await DSComboboxSingleCO.getDropDownMenuBtn();
|
|
22
|
+
await dropdownMenuBtn.click();
|
|
23
|
+
|
|
24
|
+
const listbox = await DSComboboxSingleCO.getComboListbox();
|
|
25
|
+
await listbox.waitForExist();
|
|
26
|
+
|
|
27
|
+
const result = await axeCoreCheck();
|
|
28
|
+
expect(result.length).toBe(0);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('PUI-18475 - ComboboxSingle:: busy listbox while isSkeleton - axe-core', () => {
|
|
33
|
+
before('loading page', async () => {
|
|
34
|
+
const errorOnGo = await DSComboboxSingleCO.skeletonTest.go();
|
|
35
|
+
if (errorOnGo) throw errorOnGo;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('01: busy listbox while isSkeleton should pass axe-core scan', async () => {
|
|
39
|
+
const dropdownMenuBtn = await DSComboboxSingleCO.getDropDownMenuBtn();
|
|
40
|
+
await dropdownMenuBtn.click();
|
|
41
|
+
|
|
42
|
+
const listbox = await DSComboboxSingleCO.getComboListbox();
|
|
43
|
+
await listbox.waitForExist();
|
|
44
|
+
|
|
45
|
+
const result = await axeCoreCheck();
|
|
46
|
+
expect(result.length).toBe(0);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
package/ds-form-combobox-single/aria-busy-loading/DSComboboxSingle.aria-busy-loading.func.spec.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
2
|
+
|
|
3
|
+
// Tests for the fix introduced in PUI-18034
|
|
4
|
+
// (carries aria-busy + aria-label on the listbox during loading/skeleton so
|
|
5
|
+
// screen readers announce the in-progress state via the input's aria-controls
|
|
6
|
+
// linkage; replaces the prior racing assertive live region).
|
|
7
|
+
if (
|
|
8
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
9
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
10
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
11
|
+
browser.capabilities.browserName === 'Chrome'
|
|
12
|
+
) {
|
|
13
|
+
describe('PUI-18445 - ComboboxSingle:: busy listbox while isLoading - Func', () => {
|
|
14
|
+
before('loading page', async () => {
|
|
15
|
+
const errorOnGo = await DSComboboxSingleCO.loadingTest.go();
|
|
16
|
+
if (errorOnGo) throw errorOnGo;
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('01: listbox is aria-busy with aria-label and input aria-controls links to it', async () => {
|
|
20
|
+
const dropdownMenuBtn = await DSComboboxSingleCO.getDropDownMenuBtn();
|
|
21
|
+
await dropdownMenuBtn.click();
|
|
22
|
+
|
|
23
|
+
const listbox = await DSComboboxSingleCO.getComboListbox();
|
|
24
|
+
await listbox.waitForExist();
|
|
25
|
+
|
|
26
|
+
await expect(listbox).toHaveAttribute('role', 'listbox');
|
|
27
|
+
await expect(listbox).toHaveAttribute('aria-busy', 'true');
|
|
28
|
+
await expect(listbox).toHaveAttribute('aria-label', 'Loading options please wait');
|
|
29
|
+
|
|
30
|
+
const listboxId = await listbox.getAttribute('id');
|
|
31
|
+
const input = await DSComboboxSingleCO.getComboboxInput();
|
|
32
|
+
await expect(input).toHaveAttribute('aria-controls', listboxId);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe('PUI-18446 - ComboboxSingle:: busy listbox while isSkeleton - Func', () => {
|
|
37
|
+
before('loading page', async () => {
|
|
38
|
+
const errorOnGo = await DSComboboxSingleCO.skeletonTest.go();
|
|
39
|
+
if (errorOnGo) throw errorOnGo;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('01: listbox is aria-busy with aria-label', async () => {
|
|
43
|
+
const dropdownMenuBtn = await DSComboboxSingleCO.getDropDownMenuBtn();
|
|
44
|
+
await dropdownMenuBtn.click();
|
|
45
|
+
|
|
46
|
+
const listbox = await DSComboboxSingleCO.getComboListbox();
|
|
47
|
+
await listbox.waitForExist();
|
|
48
|
+
|
|
49
|
+
await expect(listbox).toHaveAttribute('role', 'listbox');
|
|
50
|
+
await expect(listbox).toHaveAttribute('aria-busy', 'true');
|
|
51
|
+
await expect(listbox).toHaveAttribute('aria-label', 'Loading options please wait');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
import { Key } from 'webdriverio';
|
|
3
3
|
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
4
|
+
import DSControlledCheckboxCO from '../../ds-controlled-form/ds-controlled-checkbox/DSControlledCheckboxCO';
|
|
5
|
+
import { mouseOver } from '../../helpers';
|
|
4
6
|
|
|
5
7
|
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
8
|
describe('PUI-14367 - ComboboxSingle:: applyAriaDisabled prop - visual', () => {
|
|
@@ -16,5 +18,21 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
16
18
|
);
|
|
17
19
|
await expect(snapshot).toEqual(0);
|
|
18
20
|
});
|
|
21
|
+
// PUI-15476: aria-disabled item text color must change to n600 on hover
|
|
22
|
+
it('02: listbox with aria-disabled item hovered should display n600 text color', async () => {
|
|
23
|
+
await browser.eyesOpen();
|
|
24
|
+
const checkbox = await DSControlledCheckboxCO.getCheckbox();
|
|
25
|
+
await checkbox.click();
|
|
26
|
+
const combobox = await DSComboboxSingleCO.getCombobox();
|
|
27
|
+
await combobox.click();
|
|
28
|
+
const menuList = await DSComboboxSingleCO.getMenuList();
|
|
29
|
+
await menuList.waitForDisplayed();
|
|
30
|
+
const ariaDisabledOption = await DSComboboxSingleCO.getOptionByIndex(1);
|
|
31
|
+
await mouseOver(ariaDisabledOption);
|
|
32
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
33
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-aria-disabled-item-hovered'),
|
|
34
|
+
);
|
|
35
|
+
await expect(snapshot).toEqual(0);
|
|
36
|
+
});
|
|
19
37
|
});
|
|
20
38
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
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-18476 - ComboboxSingle:: disabled - axe-core', () => {
|
|
11
|
+
before('loading page', async () => {
|
|
12
|
+
const errorOnGo = await DSComboboxSingleCO.disabled.go();
|
|
13
|
+
if (errorOnGo) throw errorOnGo;
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('01: disabled combobox should pass axe-core scan', async () => {
|
|
17
|
+
const combobox = await DSComboboxSingleCO.getComboboxByIndex(0);
|
|
18
|
+
await combobox.waitForExist();
|
|
19
|
+
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSComboboxSingleCO from '../DSComboboxSingleCO';
|
|
3
|
+
|
|
4
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
5
|
+
// Tests for the fix introduced in PUI-15481 (inline padding 8px top/bottom — was 10px)
|
|
6
|
+
describe('PUI-18559 - ComboboxSingle:: inline config padding - visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSComboboxSingleCO.inlineTest.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: inline combobox should render with the corrected 8px padding', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
const pillDropdownBtn = await DSComboboxSingleCO.getPillDropDownBtn();
|
|
14
|
+
await pillDropdownBtn.click();
|
|
15
|
+
const menuList = await DSComboboxSingleCO.getMenuList();
|
|
16
|
+
await menuList.waitForDisplayed();
|
|
17
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
18
|
+
DSComboboxSingleCO.snapshotPath('combobox-single-inline-padding'),
|
|
19
|
+
);
|
|
20
|
+
await expect(snapshot).toEqual(0);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|