dimsum-e2e-tests 3.51.0-next.2 → 3.51.0-next.4
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 +8 -0
- package/ds-breadcrumb/DSBreadcrumb.axe-core.func.spec.js +21 -6
- package/ds-breadcrumb/DSBreadcrumb.func.spec.js +23 -2
- package/ds-breadcrumb/DSBreadcrumb.visual.spec.js +20 -15
- package/ds-breadcrumb/DSBreadcrumbCO.js +17 -1
- package/ds-button-v3/DSButtonV3CO.js +4 -0
- package/ds-controlled-form/ds-combobox/DSCombobox.func.spec.js +1 -0
- package/ds-controlled-form/ds-combobox/DSCombobox.smoke.spec.js +4 -56
- package/ds-controlled-form/ds-combobox/DSComboboxCO.js +0 -9
- package/ds-controlled-form/ds-combobox/creatable/DSCombobox.keyboard-creatable.func.spec.js +3 -0
- package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.axe-core.spec.js +0 -1
- package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.keyboard.func.spec.js +5 -0
- package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.keyboard-multi-select.func.spec.js +6 -68
- package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.mouse-touch-multi-select.func.spec.js +0 -58
- package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.multi.visual.spec.js +0 -16
- package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.ten-thousand-options.func.spec.js +2 -22
- package/ds-controlled-form/ds-combobox/single-select/DSCombobox.keyboard-single-select.func.spec.js +4 -0
- package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.axe-core.spec.js +85 -0
- package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.functional.spec.js +242 -0
- package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.visual.spec.js +115 -0
- package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePickerCO.js +54 -2
- package/ds-controlled-form/ds-controlled-inputgroup/DSControlledInputGroupCO.js +4 -0
- package/ds-controlled-form/ds-controlled-inputgroup/autocomplete/DSControlledInputGroup.autocomplete.axe-core.func.spec.js +1 -0
- package/ds-controlled-form/ds-controlled-inputgroup/combobox/DSControlledInputGroup.combobox.axe-core.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.axe-core.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.func.spec.js +36 -0
- package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.visual.spec.js +12 -1
- package/ds-controlled-form/ds-input-text/DSInputText.func.spec.js +14 -12
- package/ds-controlled-form/react-hook-form/ReactHook.visual.spec.js +1 -0
- package/ds-data-table-async/DSDataTable.smoke.spec.js +4 -0
- package/ds-data-table-async/basic/DSDataTable.usecases.func.spec.js +5 -4
- package/ds-data-table-async/basic/DSDataTable.usecases.visual.spec.js +1 -0
- package/ds-data-table-async/components/RowCO.js +4 -0
- package/ds-data-table-async/dnd/DSDataTable.dnd.visual.spec.js +1 -1
- package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +4 -0
- package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +1 -0
- package/ds-data-table-async/select/DSDataTable.select.axe-core.func.spec.js +2 -0
- package/ds-data-table-async/select/DSDataTable.select.func.spec.js +2 -86
- package/ds-data-table-async/select/DSDataTable.select.shift.func.spec.js +126 -0
- package/ds-data-table-async/vissibility/DSDataTable.vissibility.visual.spec.js +6 -0
- package/ds-form-combobox-multi/DSComboboxMultiCO.js +2 -9
- package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +2 -11
- package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.axe-core.func.spec.js +26 -0
- package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.visual.spec.js +39 -0
- package/ds-form-combobox-single/DSComboboxSingleCO.js +2 -9
- package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.axe-core.func.spec.js +26 -0
- package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.visual.spec.js +39 -0
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +4 -0
- package/ds-menu-button/DSMenuButtonCO.js +9 -5
- package/ds-menu-button/activable/DSMenuButton.activableMenuItem.func.spec.js +32 -0
- package/ds-menu-button/{basic/DSMenuButton.activableMenuItem.func.spec.js → activable/DSMenuButton.activableMenuItem.keyboardnav.func.spec.js} +1 -26
- package/ds-menu-button/disabled/DSMenuButton.axe-core.disabled.func.spec.js +20 -0
- package/ds-menu-button/disabled/DSMenuButton.disabled.func.spec.js +28 -0
- package/ds-menu-button/leftdecorations/DSMenuButton.axe-core.leftDecor.func.spec.js +20 -0
- package/ds-menu-button/multiselect/DSMenuButton.axe-core.multiselect.func.spec.js +28 -0
- package/ds-menu-button/multiselect/DSMenuButton.multiSelectItem.func.spec.js +34 -0
- package/ds-menu-button/{basic/DSMenuButton.multiSelectItem.func.spec.js → multiselect/DSMenuButton.multiSelectItem.keyboardnav.func.spec.js} +0 -29
- package/ds-menu-button/singleSelect/DSMenuButton.axe-core.singleSelect.func.spec.js +28 -0
- package/ds-menu-button/singleSelect/DSMenuButton.singleSelectItem.func.spec.js +39 -0
- package/ds-menu-button/{basic/DSMenuButton.singleSelectItem.func.spec.js → singleSelect/DSMenuButton.singleSelectItem.keyboardnav.func.spec.js} +11 -42
- package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +20 -0
- package/ds-menu-button/submenu/DSMenuButton.subMenuItem.func.spec.js +42 -0
- package/ds-menu-button/{basic/DSMenuButton.subMenuItem.func.spec.js → submenu/DSMenuButton.subMenuItem.keyboardnav.func.spec.js} +1 -38
- package/ds-pills-v2/DSPills.axe-core.func.spec.js +2 -2
- package/ds-pills-v2/DSPills.func.spec.js +26 -0
- package/ds-pills-v2/DSPills.visual.spec.js +1 -1
- package/ds-pills-v2/DSPillsV2CO.js +19 -1
- package/ds-pills-v2/selection/DSPills.axe-core.func.spec.js +77 -0
- package/ds-pills-v2/selection/DSPills.func.spec.js +155 -0
- package/ds-pills-v2/selection/DSPills.visual.spec.js +72 -0
- package/ds-query-builder/DSQueryBuilder.visual.spec.js +2 -1
- package/ds-query-builder/DSQueryBuilderCO.js +0 -5
- package/ds-shuttle-v2/DSShuttleV2CO.js +2 -4
- package/ds-shuttle-v2/Dnd/DSShuttleV2.DnD.visual.spec.js +0 -5
- package/ds-shuttle-v2/basic/DSShuttleV2.keyboard.func.spec.js +46 -66
- package/ds-shuttle-v2/drillingdown/DSShuttleV2.drilldown.kb.func.spec.js +3 -5
- package/ds-shuttle-v2/filtering/DSShuttleV2.filter.kb.func.spec.js +1 -7
- package/ds-shuttle-v2/globalcheckbox/DSShuttleV2.globalcheckbox.kb.func.spec.js +0 -2
- package/ds-shuttle-v2/items/DSShuttleV2.items.kb.func.spec.js +0 -2
- package/ds-toggle/DSToggle.func.spec.js +21 -18
- package/ds-toggle/DSToggle.visual.spec.js +56 -12
- package/package.json +119 -119
- package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.DateInput.visual.spec.js +0 -57
- package/ds-menu-button/DSMenuButton.axe-core.func.spec.js +0 -66
package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.ten-thousand-options.func.spec.js
CHANGED
|
@@ -10,12 +10,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
10
10
|
});
|
|
11
11
|
it('01: should select all the options correctly', async () => {
|
|
12
12
|
await DSComboboxCO.openMenuListMouse();
|
|
13
|
-
|
|
14
|
-
await
|
|
15
|
-
const selectedOption = await DSComboboxCO.getOptionByLabel('Option 9999');
|
|
13
|
+
await browser.keys(['Control', 'a']);
|
|
14
|
+
const selectedOption = await DSComboboxCO.getOptionByLabel('Option 0');
|
|
16
15
|
const overflowPill = await DSComboboxCO.getPillByLabel('+9999');
|
|
17
|
-
const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
|
|
18
|
-
await expect(showSelectedBtn).toHaveTextContaining('SHOW SELECTED [10000]');
|
|
19
16
|
await expect(overflowPill).toBeDisplayedInViewport();
|
|
20
17
|
await expect(selectedOption).toBeDisplayedInViewport();
|
|
21
18
|
});
|
|
@@ -26,22 +23,5 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
26
23
|
const overflowPill = await DSComboboxCO.getPillByLabel('+9998');
|
|
27
24
|
await expect(overflowPill).toBeDisplayedInViewport();
|
|
28
25
|
});
|
|
29
|
-
it('03: should display selected options', async () => {
|
|
30
|
-
const option7 = await DSComboboxCO.getOptionByLabel('Option 7');
|
|
31
|
-
const selectedOptionBtn = await DSComboboxCO.getSelectedOptionsToggle();
|
|
32
|
-
await selectedOptionBtn.click();
|
|
33
|
-
const showSelectedBtn = await DSComboboxCO.getSelectedOptionsToggle();
|
|
34
|
-
await showSelectedBtn.waitForDisplayed();
|
|
35
|
-
await expect(showSelectedBtn).toHaveTextContaining('SHOW ALL');
|
|
36
|
-
await expect(option7).not.toBeDisplayedInViewport();
|
|
37
|
-
});
|
|
38
|
-
it('04: should unselect all options', async () => {
|
|
39
|
-
const overflowPill = await DSComboboxCO.getPillByLabel('+9998');
|
|
40
|
-
const selectedOption = await DSComboboxCO.getPillByLabel('Option 0');
|
|
41
|
-
const selectAllCheckbox = await DSComboboxCO.getSelectAllCheckbox();
|
|
42
|
-
await selectAllCheckbox.click();
|
|
43
|
-
await expect(overflowPill).not.toBeDisplayedInViewport();
|
|
44
|
-
await expect(selectedOption).not.toBeDisplayedInViewport();
|
|
45
|
-
});
|
|
46
26
|
});
|
|
47
27
|
}
|
package/ds-controlled-form/ds-combobox/single-select/DSCombobox.keyboard-single-select.func.spec.js
CHANGED
|
@@ -34,6 +34,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
34
34
|
});
|
|
35
35
|
it('05: should select an option and close the menu - ENTER', async () => {
|
|
36
36
|
const menulist = await DSComboboxCO.getMenuList();
|
|
37
|
+
await browser.keys(Key.ArrowDown);
|
|
37
38
|
await browser.keys(Key.Enter);
|
|
38
39
|
const selectedOption = await DSComboboxCO.getSelectedValues();
|
|
39
40
|
await expect(menulist).not.toBeDisplayed();
|
|
@@ -59,6 +60,8 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
59
60
|
await browser.keys(Key.ArrowDown);
|
|
60
61
|
await browser.keys(Key.ArrowDown);
|
|
61
62
|
await browser.keys(Key.ArrowDown);
|
|
63
|
+
await browser.keys(Key.ArrowDown);
|
|
64
|
+
await browser.keys(Key.ArrowDown);
|
|
62
65
|
await browser.keys(Key.Enter);
|
|
63
66
|
const selectedOption = await DSComboboxCO.getSelectedValues();
|
|
64
67
|
await expect(selectedOption).toHaveTextContaining('(555) 555-5555');
|
|
@@ -91,6 +94,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
91
94
|
await expect(numOptions).toBe(2);
|
|
92
95
|
});
|
|
93
96
|
it('04: select filtered option - Enter', async () => {
|
|
97
|
+
await browser.keys(Key.ArrowDown);
|
|
94
98
|
await browser.keys(Key.Enter);
|
|
95
99
|
const selectedOption = await (await DSComboboxCO.getSimpleTruncateText()).getText();
|
|
96
100
|
await expect(selectedOption).toBe('Luke Skywalker too long this text is super long');
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import DSControlledDateRangePickerCO from './DSControlledDateRangePickerCO';
|
|
2
|
+
import { axeCoreCheck, type } from '../../helpers';
|
|
3
|
+
import { Key } from 'webdriverio';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-14853 - DSControlledDateRangePicker:: Basic -AxeCore', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSControlledDateRangePickerCO.basic.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should have closed calendar, empty input and pass axe-core scan', async () => {
|
|
12
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
13
|
+
await calendarTrigger.waitForDisplayed();
|
|
14
|
+
const result = await axeCoreCheck();
|
|
15
|
+
expect(result.length).toBe(0);
|
|
16
|
+
});
|
|
17
|
+
it('02: should have expanded calendar, empty input and pass axe-core scan', async () => {
|
|
18
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
19
|
+
await calendarTrigger.click();
|
|
20
|
+
const result = await axeCoreCheck();
|
|
21
|
+
expect(result.length).toBe(0);
|
|
22
|
+
});
|
|
23
|
+
it('03: should have expanded calendar, populated input and pass axe-core scan', async () => {
|
|
24
|
+
const beginDate = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(10);
|
|
25
|
+
await beginDate.click();
|
|
26
|
+
const endDate = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(16);
|
|
27
|
+
await endDate.click();
|
|
28
|
+
const result = await axeCoreCheck();
|
|
29
|
+
expect(result.length).toBe(0);
|
|
30
|
+
});
|
|
31
|
+
it('04: should have expanded calendar, populated input and pass axe-core scan', async () => {
|
|
32
|
+
await browser.keys(Key.Escape);
|
|
33
|
+
const result = await axeCoreCheck();
|
|
34
|
+
expect(result.length).toBe(0);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('PUI-14855 - DSControlledDateRangePicker:: Invalid selection -AxeCore', () => {
|
|
39
|
+
before('loading page', async () => {
|
|
40
|
+
const errorOnGo = await DSControlledDateRangePickerCO.invalidSelection.go();
|
|
41
|
+
if (errorOnGo) throw errorOnGo;
|
|
42
|
+
});
|
|
43
|
+
it('01: should have invalid date range picker with closed calendar and pass axe-core scan', async () => {
|
|
44
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
45
|
+
await calendarTrigger.waitForDisplayed();
|
|
46
|
+
const result = await axeCoreCheck();
|
|
47
|
+
expect(result.length).toBe(0);
|
|
48
|
+
});
|
|
49
|
+
it('02: should have invalid date range picker with expanded calendar and pass axe-core scan', async () => {
|
|
50
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
51
|
+
await calendarTrigger.click();
|
|
52
|
+
const result = await axeCoreCheck();
|
|
53
|
+
expect(result.length).toBe(0);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe('PUI-14854 - DSControlledDateRangePicker:: Disabled -AxeCore', () => {
|
|
58
|
+
before('loading page', async () => {
|
|
59
|
+
const errorOnGo = await DSControlledDateRangePickerCO.disabled.go();
|
|
60
|
+
if (errorOnGo) throw errorOnGo;
|
|
61
|
+
});
|
|
62
|
+
it('01: should have disabled date range picker and pass axe-core scan', async () => {
|
|
63
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
64
|
+
await calendarTrigger.waitForDisplayed();
|
|
65
|
+
const result = await axeCoreCheck();
|
|
66
|
+
expect(result.length).toBe(0);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
describe('PUI-14862 - DSControlledDateRangePicker:: Clearable -AxeCore', () => {
|
|
71
|
+
before('loading page', async () => {
|
|
72
|
+
const errorOnGo = await DSControlledDateRangePickerCO.clearable.go();
|
|
73
|
+
if (errorOnGo) throw errorOnGo;
|
|
74
|
+
});
|
|
75
|
+
it('01: should have two clearable inputs. One populated, one empty and pass axe-core scan', async () => {
|
|
76
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
77
|
+
await calendarTrigger.waitForDisplayed();
|
|
78
|
+
await browser.keys(Key.Tab);
|
|
79
|
+
await browser.keys(Key.Tab);
|
|
80
|
+
await type('02032020');
|
|
81
|
+
const result = await axeCoreCheck();
|
|
82
|
+
expect(result.length).toBe(0);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSControlledDateRangePickerCO from './DSControlledDateRangePickerCO';
|
|
3
|
+
import { Key } from 'webdriverio';
|
|
4
|
+
import { type } from '../../helpers';
|
|
5
|
+
import DSFormLayoutBlockItemCO from '../../ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO';
|
|
6
|
+
|
|
7
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
8
|
+
describe('PUI-14860 - DSControlledDateRangePicker:: Basic -Func', () => {
|
|
9
|
+
before('loading page', async () => {
|
|
10
|
+
const errorOnGo = await DSControlledDateRangePickerCO.basic.go();
|
|
11
|
+
if (errorOnGo) throw errorOnGo;
|
|
12
|
+
});
|
|
13
|
+
it('01: should pupulate input', async () => {
|
|
14
|
+
await browser.keys(Key.Tab);
|
|
15
|
+
await type('02032020');
|
|
16
|
+
await browser.keys(Key.Tab);
|
|
17
|
+
await type('02082020');
|
|
18
|
+
const startingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(0);
|
|
19
|
+
const startingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(0);
|
|
20
|
+
const startingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(0);
|
|
21
|
+
const endingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(1);
|
|
22
|
+
const endingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(1);
|
|
23
|
+
const endingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(1);
|
|
24
|
+
await expect(startingMonth).toHaveValueContaining('02');
|
|
25
|
+
await expect(startingDay).toHaveValueContaining('03');
|
|
26
|
+
await expect(startingYear).toHaveValueContaining('2020');
|
|
27
|
+
await expect(endingMonth).toHaveValueContaining('02');
|
|
28
|
+
await expect(endingDay).toHaveValueContaining('08');
|
|
29
|
+
await expect(endingYear).toHaveValueContaining('2020');
|
|
30
|
+
await expect(endingYear).toBeFocused();
|
|
31
|
+
});
|
|
32
|
+
it('02: should have the input date selected on calendar', async () => {
|
|
33
|
+
const openPickerBtn = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
34
|
+
await openPickerBtn.click();
|
|
35
|
+
const startDate = await DSControlledDateRangePickerCO.getRangeStartDay();
|
|
36
|
+
const endDate = await DSControlledDateRangePickerCO.getRangeEndDay();
|
|
37
|
+
await expect(startDate).toHaveAttribute('aria-label', 'February third 2020, Monday');
|
|
38
|
+
await expect(endDate).toHaveAttribute('aria-label', 'February eighth 2020, Saturday');
|
|
39
|
+
});
|
|
40
|
+
it('03: should change the text input to the picked date (mouse)', async () => {
|
|
41
|
+
const exampleDate1 = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(16);
|
|
42
|
+
await exampleDate1.click();
|
|
43
|
+
const exampleDate2 = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(20);
|
|
44
|
+
await exampleDate2.click();
|
|
45
|
+
const startingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(0);
|
|
46
|
+
const startingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(0);
|
|
47
|
+
const startingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(0);
|
|
48
|
+
const endingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(1);
|
|
49
|
+
const endingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(1);
|
|
50
|
+
const endingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(1);
|
|
51
|
+
await expect(startingMonth).toHaveValueContaining('02');
|
|
52
|
+
await expect(startingDay).toHaveValueContaining('07');
|
|
53
|
+
await expect(startingYear).toHaveValueContaining('2020');
|
|
54
|
+
await expect(endingMonth).toHaveValueContaining('02');
|
|
55
|
+
await expect(endingDay).toHaveValueContaining('09');
|
|
56
|
+
await expect(endingYear).toHaveValueContaining('2020');
|
|
57
|
+
});
|
|
58
|
+
it('04: should change the text input to the picked date (KB)', async () => {
|
|
59
|
+
await browser.keys(Key.ArrowDown);
|
|
60
|
+
await browser.keys(Key.Return);
|
|
61
|
+
await browser.keys(Key.ArrowRight);
|
|
62
|
+
await browser.keys(Key.ArrowRight);
|
|
63
|
+
await browser.keys(Key.Space);
|
|
64
|
+
const startingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(0);
|
|
65
|
+
const startingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(0);
|
|
66
|
+
const startingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(0);
|
|
67
|
+
const endingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(1);
|
|
68
|
+
const endingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(1);
|
|
69
|
+
const endingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(1);
|
|
70
|
+
await expect(startingMonth).toHaveValueContaining('02');
|
|
71
|
+
await expect(startingDay).toHaveValueContaining('14');
|
|
72
|
+
await expect(startingYear).toHaveValueContaining('2020');
|
|
73
|
+
await expect(endingMonth).toHaveValueContaining('02');
|
|
74
|
+
await expect(endingDay).toHaveValueContaining('16');
|
|
75
|
+
await expect(endingYear).toHaveValueContaining('2020');
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
describe('PUI-14861 - DSControlledDateRangePicker:: Disabled -Func', () => {
|
|
80
|
+
before('loading page', async () => {
|
|
81
|
+
const errorOnGo = await DSControlledDateRangePickerCO.disabled.go();
|
|
82
|
+
if (errorOnGo) throw errorOnGo;
|
|
83
|
+
});
|
|
84
|
+
it('01: should not be able to trigger/focus disabled date range picker', async () => {
|
|
85
|
+
const openPickerBtn = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
86
|
+
await openPickerBtn.click();
|
|
87
|
+
const calendar = await DSControlledDateRangePickerCO.getDayOnCalendarWrapper();
|
|
88
|
+
await expect(openPickerBtn).toHaveAttribute('disabled', 'true');
|
|
89
|
+
await expect(calendar).not.toBeDisplayedInViewport();
|
|
90
|
+
});
|
|
91
|
+
it('02: should not be able to focus disabled date range picker', async () => {
|
|
92
|
+
await browser.keys(Key.Tab);
|
|
93
|
+
const monthInput = await DSControlledDateRangePickerCO.getMonthInput();
|
|
94
|
+
await expect(monthInput).not.toBeFocused();
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe('PUI-14856 - DSControlledDateRangePicker:: Clearable -Func', () => {
|
|
99
|
+
before('loading page', async () => {
|
|
100
|
+
const errorOnGo = await DSControlledDateRangePickerCO.clearable.go();
|
|
101
|
+
if (errorOnGo) throw errorOnGo;
|
|
102
|
+
});
|
|
103
|
+
it('01: should have clearable date range pickers w/o clear button since theyre empty', async () => {
|
|
104
|
+
const openPickerBtn = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
105
|
+
await openPickerBtn.waitForDisplayed();
|
|
106
|
+
const clearableBtn = await DSControlledDateRangePickerCO.getClearableByIndex(0);
|
|
107
|
+
await expect(clearableBtn).not.toBeDisplayedInViewport();
|
|
108
|
+
});
|
|
109
|
+
it('02: should populate one input and show only one clearable btn', async () => {
|
|
110
|
+
await browser.keys(Key.Tab);
|
|
111
|
+
await type('02032020');
|
|
112
|
+
const clearableStart = await DSControlledDateRangePickerCO.getClearableByIndex(0);
|
|
113
|
+
const clearableEnd = await DSControlledDateRangePickerCO.getClearableByIndex(1);
|
|
114
|
+
await expect(clearableStart).toBeDisplayedInViewport();
|
|
115
|
+
await expect(clearableEnd).not.toBeDisplayedInViewport();
|
|
116
|
+
});
|
|
117
|
+
it('03: should populate one input and show both clearable btns', async () => {
|
|
118
|
+
await browser.keys(Key.Tab);
|
|
119
|
+
await type('02032020');
|
|
120
|
+
const clearableStart = await DSControlledDateRangePickerCO.getClearableByIndex(0);
|
|
121
|
+
const clearableEnd = await DSControlledDateRangePickerCO.getClearableByIndex(1);
|
|
122
|
+
await expect(clearableStart).toBeDisplayedInViewport();
|
|
123
|
+
await expect(clearableEnd).toBeDisplayedInViewport();
|
|
124
|
+
});
|
|
125
|
+
it('04: should clear both inputs (one with mouse one with keyboard)', async () => {
|
|
126
|
+
await browser.keys(Key.Space);
|
|
127
|
+
const clearableBtn = await DSControlledDateRangePickerCO.getClearableByIndex(0);
|
|
128
|
+
await clearableBtn.click();
|
|
129
|
+
const startingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(0);
|
|
130
|
+
const startingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(0);
|
|
131
|
+
const startingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(0);
|
|
132
|
+
const endingMonth = await DSControlledDateRangePickerCO.getMonthInputByIndex(1);
|
|
133
|
+
const endingDay = await DSControlledDateRangePickerCO.getDayInputByIndex(1);
|
|
134
|
+
const endingYear = await DSControlledDateRangePickerCO.getYearInputByIndex(1);
|
|
135
|
+
await expect(startingMonth).toHaveValueContaining('');
|
|
136
|
+
await expect(startingDay).toHaveValueContaining('');
|
|
137
|
+
await expect(startingYear).toHaveValueContaining('');
|
|
138
|
+
await expect(endingMonth).toHaveValueContaining('');
|
|
139
|
+
await expect(endingDay).toHaveValueContaining('');
|
|
140
|
+
await expect(endingYear).toHaveValueContaining('');
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
describe('PUI-14864 - DSControlledDateRangePicker:: Invalid selection -Func', () => {
|
|
145
|
+
before('loading page', async () => {
|
|
146
|
+
const errorOnGo = await DSControlledDateRangePickerCO.invalidSelection.go();
|
|
147
|
+
if (errorOnGo) throw errorOnGo;
|
|
148
|
+
});
|
|
149
|
+
it('01: should have invalid date range picker', async () => {
|
|
150
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
151
|
+
await calendarTrigger.waitForDisplayed();
|
|
152
|
+
const errorMessage = DSFormLayoutBlockItemCO.getErrorMessage();
|
|
153
|
+
const firstInput = await DSControlledDateRangePickerCO.getMonthInputByIndex(0);
|
|
154
|
+
await expect(firstInput).toHaveAttribute('aria-invalid', 'true');
|
|
155
|
+
await expect(errorMessage).toBeDisplayedInViewport();
|
|
156
|
+
});
|
|
157
|
+
it('02: should change the error message for feedback message after fixing the error', async () => {
|
|
158
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
159
|
+
await calendarTrigger.click();
|
|
160
|
+
const exampleDate1 = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(10);
|
|
161
|
+
await exampleDate1.click();
|
|
162
|
+
const exampleDate2 = await DSControlledDateRangePickerCO.getInRangeDayByIndex(2);
|
|
163
|
+
await exampleDate2.click();
|
|
164
|
+
const errorMessage = await DSFormLayoutBlockItemCO.getErrorMessage();
|
|
165
|
+
const feedbackMessage = await DSFormLayoutBlockItemCO.getFeedbackMessage();
|
|
166
|
+
const firstInput = await DSControlledDateRangePickerCO.getMonthInputByIndex(0);
|
|
167
|
+
await expect(firstInput).toHaveAttribute('aria-invalid', 'false');
|
|
168
|
+
await expect(errorMessage).not.toBeDisplayedInViewport();
|
|
169
|
+
await expect(feedbackMessage).toBeDisplayedInViewport();
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
describe('PUI-14863 - DSControlledDateRangePicker:: TabStops & Nav -Func', () => {
|
|
174
|
+
before('loading page', async () => {
|
|
175
|
+
const errorOnGo = await DSControlledDateRangePickerCO.clearable.go();
|
|
176
|
+
if (errorOnGo) throw errorOnGo;
|
|
177
|
+
});
|
|
178
|
+
it('01: should tab and have first input focused', async () => {
|
|
179
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
180
|
+
await calendarTrigger.waitForDisplayed();
|
|
181
|
+
await browser.keys(Key.Tab);
|
|
182
|
+
const monthInput = await DSControlledDateRangePickerCO.getMonthInput();
|
|
183
|
+
await expect(monthInput).toBeFocused();
|
|
184
|
+
});
|
|
185
|
+
it('02: should move to the next input after populating the current one', async () => {
|
|
186
|
+
await type('10');
|
|
187
|
+
const dayInput = await DSControlledDateRangePickerCO.getDayInput();
|
|
188
|
+
await expect(dayInput).toBeFocused();
|
|
189
|
+
});
|
|
190
|
+
it('03: should tab to clearable button', async () => {
|
|
191
|
+
await browser.keys(Key.Tab);
|
|
192
|
+
await browser.keys(Key.Tab);
|
|
193
|
+
await browser.keys(Key.Tab);
|
|
194
|
+
await browser.keys([Key.Shift, Key.Tab]);
|
|
195
|
+
const clearableBtn = await DSControlledDateRangePickerCO.getClearableByIndex(0);
|
|
196
|
+
await expect(clearableBtn).toBeFocused();
|
|
197
|
+
});
|
|
198
|
+
it('04: should tab through next input to picker trigger', async () => {
|
|
199
|
+
await browser.keys(Key.Tab);
|
|
200
|
+
await browser.keys(Key.Tab);
|
|
201
|
+
await browser.keys(Key.Tab);
|
|
202
|
+
await browser.keys(Key.Tab);
|
|
203
|
+
const clearableBtn = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
204
|
+
await expect(clearableBtn).toBeFocused();
|
|
205
|
+
});
|
|
206
|
+
it('05: should open trigger and have first navigation button focused', async () => {
|
|
207
|
+
await browser.keys(Key.Return);
|
|
208
|
+
await browser.keys(Key.Return);
|
|
209
|
+
const prevMonthBtn = await DSControlledDateRangePickerCO.getPrevMonthBtn();
|
|
210
|
+
const calendarLabel = await (await DSControlledDateRangePickerCO.getCalendarHeaderLabel()).getText();
|
|
211
|
+
await expect(calendarLabel).toEqual('September 2000');
|
|
212
|
+
await expect(prevMonthBtn).toBeFocused();
|
|
213
|
+
});
|
|
214
|
+
it('06: should tab through navigation buttons to last one', async () => {
|
|
215
|
+
await browser.keys(Key.Tab);
|
|
216
|
+
await browser.keys(Key.Tab);
|
|
217
|
+
await browser.keys(Key.Tab);
|
|
218
|
+
await browser.keys(Key.Return);
|
|
219
|
+
const nextYearBtn = await DSControlledDateRangePickerCO.getNextYearBtn();
|
|
220
|
+
const calendarLabel = await (await DSControlledDateRangePickerCO.getCalendarHeaderLabel()).getText();
|
|
221
|
+
await expect(calendarLabel).toEqual('September 2001');
|
|
222
|
+
await expect(nextYearBtn).toBeFocused();
|
|
223
|
+
});
|
|
224
|
+
it('07: should tab and navigate using header controllers with KB', async () => {
|
|
225
|
+
await browser.keys([Key.Shift, Key.Tab]);
|
|
226
|
+
await browser.keys(Key.Return);
|
|
227
|
+
await browser.keys([Key.Shift, Key.Tab]);
|
|
228
|
+
await browser.keys(Key.Return);
|
|
229
|
+
const nextYearBtn = await DSControlledDateRangePickerCO.getNextMonthBtn();
|
|
230
|
+
const calendarLabel = await (await DSControlledDateRangePickerCO.getCalendarHeaderLabel()).getText();
|
|
231
|
+
await expect(calendarLabel).toEqual('October 2000');
|
|
232
|
+
await expect(nextYearBtn).toBeFocused();
|
|
233
|
+
});
|
|
234
|
+
it('08: should tab to calendar and have day focused', async () => {
|
|
235
|
+
await browser.keys(Key.Tab);
|
|
236
|
+
await browser.keys(Key.Tab);
|
|
237
|
+
await browser.keys(Key.Tab);
|
|
238
|
+
const focusedDay = await DSControlledDateRangePickerCO.getFocusedDay();
|
|
239
|
+
await expect(focusedDay).toBeFocused();
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DSControlledDateRangePickerCO from './DSControlledDateRangePickerCO';
|
|
3
|
+
import { type } from '../../helpers';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-9219 - DSControlledDateRangePicker:: Basic -Visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSControlledDateRangePickerCO.basic.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display contr. date range picker empty and closed', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
14
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-empty'),
|
|
15
|
+
);
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
it('02: should display contr. date range picker open and with 1 date selected', async () => {
|
|
19
|
+
await browser.eyesOpen();
|
|
20
|
+
const openDatePicker = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
21
|
+
await openDatePicker.click();
|
|
22
|
+
const day = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(10);
|
|
23
|
+
await day.click();
|
|
24
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
25
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-one-date'),
|
|
26
|
+
);
|
|
27
|
+
await expect(snapshot).toEqual(0);
|
|
28
|
+
});
|
|
29
|
+
it('03: should display contr. date range picker open and with 2 dates selected', async () => {
|
|
30
|
+
await browser.eyesOpen();
|
|
31
|
+
const day = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(20);
|
|
32
|
+
await day.click();
|
|
33
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
34
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-two-date'),
|
|
35
|
+
);
|
|
36
|
+
await expect(snapshot).toEqual(0);
|
|
37
|
+
});
|
|
38
|
+
it('04: should display contr. date range picker open and with long range end', async () => {
|
|
39
|
+
await browser.eyesOpen();
|
|
40
|
+
const nextMonthArrow = await DSControlledDateRangePickerCO.getNextMonthBtn();
|
|
41
|
+
await nextMonthArrow.click();
|
|
42
|
+
const day = await DSControlledDateRangePickerCO.getDayOnCalendarByIndex(10);
|
|
43
|
+
await day.click();
|
|
44
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
45
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-long-end'),
|
|
46
|
+
);
|
|
47
|
+
await expect(snapshot).toEqual(0);
|
|
48
|
+
});
|
|
49
|
+
it('05: should display contr. date range picker open and with long range start', async () => {
|
|
50
|
+
await browser.eyesOpen();
|
|
51
|
+
const prevMonthArrow = await DSControlledDateRangePickerCO.getPrevMonthBtn();
|
|
52
|
+
await prevMonthArrow.click();
|
|
53
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
54
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-long-start'),
|
|
55
|
+
);
|
|
56
|
+
await expect(snapshot).toEqual(0);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe('PUI-14859 - DSControlledDateRangePicker:: Invalid selection -Visual', () => {
|
|
61
|
+
before('loading page', async () => {
|
|
62
|
+
const errorOnGo = await DSControlledDateRangePickerCO.invalidSelection.go();
|
|
63
|
+
if (errorOnGo) throw errorOnGo;
|
|
64
|
+
});
|
|
65
|
+
it('01: should display invalid date range picker with closed calendar matching baseline', async () => {
|
|
66
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
67
|
+
await calendarTrigger.waitForDisplayed();
|
|
68
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
69
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-invalid-close'),
|
|
70
|
+
);
|
|
71
|
+
await expect(snapshot).toEqual(0);
|
|
72
|
+
});
|
|
73
|
+
it('02: should display invalid date range picker with expanded calendar matching baseline', async () => {
|
|
74
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
75
|
+
await calendarTrigger.click();
|
|
76
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
77
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-invalid-open'),
|
|
78
|
+
);
|
|
79
|
+
await expect(snapshot).toEqual(0);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('PUI-14858 - DSControlledDateRangePicker:: Disabled -Visual', () => {
|
|
84
|
+
before('loading page', async () => {
|
|
85
|
+
const errorOnGo = await DSControlledDateRangePickerCO.disabled.go();
|
|
86
|
+
if (errorOnGo) throw errorOnGo;
|
|
87
|
+
});
|
|
88
|
+
it('01: should display disabled date range picker and matching baseline', async () => {
|
|
89
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
90
|
+
await calendarTrigger.waitForDisplayed();
|
|
91
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
92
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-disabled'),
|
|
93
|
+
);
|
|
94
|
+
await expect(snapshot).toEqual(0);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe('PUI-14857 - DSControlledDateRangePicker:: Clearable -Visual', () => {
|
|
99
|
+
before('loading page', async () => {
|
|
100
|
+
const errorOnGo = await DSControlledDateRangePickerCO.clearable.go();
|
|
101
|
+
if (errorOnGo) throw errorOnGo;
|
|
102
|
+
});
|
|
103
|
+
it('01: should display two clearable inputs. One populated, one empty', async () => {
|
|
104
|
+
const calendarTrigger = await DSControlledDateRangePickerCO.getPickerBtn();
|
|
105
|
+
await calendarTrigger.waitForDisplayed();
|
|
106
|
+
await browser.keys(Key.Tab);
|
|
107
|
+
await browser.keys(Key.Tab);
|
|
108
|
+
await type('02032020');
|
|
109
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
110
|
+
DSControlledDateRangePickerCO.snapshotPath('date-range-picker-clearable'),
|
|
111
|
+
);
|
|
112
|
+
await expect(snapshot).toEqual(0);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
/* eslint-disable import/no-relative-packages */
|
|
2
2
|
/* eslint-disable max-lines */
|
|
3
|
-
import {
|
|
3
|
+
import { PATH_E2E_CONTROLLED_FORM_DATE_RANGE_PICKER } from '../../../environments/storybook/paths';
|
|
4
4
|
import { PageObject, Urlbuilder, getElementByIndex } from '../../helpers';
|
|
5
5
|
|
|
6
6
|
export default class DSControlledDateRangePickerCO extends PageObject {
|
|
7
|
-
static basic = new Urlbuilder(
|
|
7
|
+
static basic = new Urlbuilder(PATH_E2E_CONTROLLED_FORM_DATE_RANGE_PICKER, 'basic-test');
|
|
8
|
+
|
|
9
|
+
static clearable = new Urlbuilder(PATH_E2E_CONTROLLED_FORM_DATE_RANGE_PICKER, 'clearable-test');
|
|
10
|
+
|
|
11
|
+
static invalidSelection = new Urlbuilder(PATH_E2E_CONTROLLED_FORM_DATE_RANGE_PICKER, 'invalid-selection-test');
|
|
12
|
+
|
|
13
|
+
static fullFeatures = new Urlbuilder(PATH_E2E_CONTROLLED_FORM_DATE_RANGE_PICKER, 'full-features-test');
|
|
14
|
+
|
|
15
|
+
static disabled = new Urlbuilder(PATH_E2E_CONTROLLED_FORM_DATE_RANGE_PICKER, 'disabled-test');
|
|
16
|
+
|
|
17
|
+
static withValidation = new Urlbuilder(PATH_E2E_CONTROLLED_FORM_DATE_RANGE_PICKER, 'example-with-validation-test');
|
|
8
18
|
|
|
9
19
|
// Story elements
|
|
10
20
|
|
|
@@ -12,6 +22,10 @@ export default class DSControlledDateRangePickerCO extends PageObject {
|
|
|
12
22
|
|
|
13
23
|
static getPrevMonthBtn = async () => $('[data-testid="ds-controlled-date-time-picker-calendar-prev-month"]');
|
|
14
24
|
|
|
25
|
+
static getNextYearBtn = async () => $('[data-testid="ds-controlled-date-time-picker-calendar-next-year"]');
|
|
26
|
+
|
|
27
|
+
static getPrevYearBtn = async () => $('[data-testid="ds-controlled-date-time-picker-calendar-prev-year"]');
|
|
28
|
+
|
|
15
29
|
// DateInput
|
|
16
30
|
static getMonthInput = async () => $('[data-testid="ds-controlled-date-time-picker-month-input"]');
|
|
17
31
|
|
|
@@ -19,6 +33,20 @@ export default class DSControlledDateRangePickerCO extends PageObject {
|
|
|
19
33
|
|
|
20
34
|
static getYearInput = async () => $('[data-testid="ds-controlled-date-time-picker-year-input"]');
|
|
21
35
|
|
|
36
|
+
static getMonthInputByIndex = async (index = 0) =>
|
|
37
|
+
$$('[data-testid="ds-controlled-date-time-picker-month-input"]')[index];
|
|
38
|
+
|
|
39
|
+
static getDayInputByIndex = async (index = 0) =>
|
|
40
|
+
$$('[data-testid="ds-controlled-date-time-picker-day-input"]')[index];
|
|
41
|
+
|
|
42
|
+
static getYearInputByIndex = async (index = 0) =>
|
|
43
|
+
$$('[data-testid="ds-controlled-date-time-picker-year-input"]')[index];
|
|
44
|
+
|
|
45
|
+
static getClearableBtns = async () => $$(`[data-testid="ds-controlled-date-time-picker-clear-btn"]`);
|
|
46
|
+
|
|
47
|
+
static getClearableByIndex = async (index = 0) =>
|
|
48
|
+
$$(`[data-testid="ds-controlled-date-time-picker-clear-btn"]`)[index];
|
|
49
|
+
|
|
22
50
|
// TimeInput
|
|
23
51
|
static getHourInput = async () => $('[data-testid="ds-controlled-date-time-picker-hour-input"]');
|
|
24
52
|
|
|
@@ -30,6 +58,9 @@ export default class DSControlledDateRangePickerCO extends PageObject {
|
|
|
30
58
|
|
|
31
59
|
static getDayOnCalendarByIndex = async (index) => getElementByIndex(this.getDaysOnCalendar, index);
|
|
32
60
|
|
|
61
|
+
static getInRangeDayByIndex = async (index = 0) =>
|
|
62
|
+
$$('[data-testid="ds-controlled-date-time-picker-calendar-in-range-day"]')[index];
|
|
63
|
+
|
|
33
64
|
// Picker
|
|
34
65
|
static getPickerBtn = async () => $('[data-testid="ds-controlled-date-time-picker-calendar-trigger-icon"]');
|
|
35
66
|
|
|
@@ -44,7 +75,28 @@ export default class DSControlledDateRangePickerCO extends PageObject {
|
|
|
44
75
|
return $(`[data-testid="ds-controlled-date-time-picker-timewheel-minute"]=${value}`);
|
|
45
76
|
}
|
|
46
77
|
|
|
78
|
+
static async getRangeStartDay() {
|
|
79
|
+
return $(`[data-testid="ds-controlled-date-time-picker-calendar-start-range-day"]`);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static async getRangeEndDay() {
|
|
83
|
+
return $(`[data-testid="ds-controlled-date-time-picker-calendar-end-range-day"]`);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static async getFocusedDay() {
|
|
87
|
+
return $(`[data-testid="ds-controlled-date-time-picker-calendar-focused-day"]`);
|
|
88
|
+
}
|
|
89
|
+
|
|
47
90
|
// Calendar
|
|
91
|
+
|
|
92
|
+
static async getDayOnCalendarWrapper() {
|
|
93
|
+
return $(`[data-testid="ds-controlled-date-time-picker-calendar-context-content-wrapper"]`);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static async getCalendarHeaderLabel() {
|
|
97
|
+
return $(`[data-testid="ds-controlled-date-time-picker-calendar-header-label"]`);
|
|
98
|
+
}
|
|
99
|
+
|
|
48
100
|
// Time Wheel
|
|
49
101
|
// Screenshots
|
|
50
102
|
static snapshotPath(example = 'basic') {
|
|
@@ -72,6 +72,10 @@ export default class DSControlledInputGroupCO extends PageObject {
|
|
|
72
72
|
return $$('[data-testid="combobox-option"]')[index];
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
static async getComboboxWrapper() {
|
|
76
|
+
return $('[data-testid="combobox-controls-wrapper"]');
|
|
77
|
+
}
|
|
78
|
+
|
|
75
79
|
static snapshotPath(example = 'basic') {
|
|
76
80
|
return PageObject.getSnapshotPathBuilder('DSControlledInputGroup', example, 'ds-controlled-inputgroup');
|
|
77
81
|
}
|
|
@@ -39,6 +39,7 @@ if (
|
|
|
39
39
|
await type('a');
|
|
40
40
|
const menuList = await DSControlledInputGroupCO.getAutocompleteMenuList();
|
|
41
41
|
await menuList.waitForDisplayed();
|
|
42
|
+
await browser.keys(Key.ArrowDown);
|
|
42
43
|
await browser.keys(Key.Enter);
|
|
43
44
|
const inputValue = await DSControlledInputGroupCO.getInputValue(
|
|
44
45
|
'Luke Skywalker too long this text is super long',
|
|
@@ -30,7 +30,7 @@ if (
|
|
|
30
30
|
expect(result.length).toBe(0);
|
|
31
31
|
});
|
|
32
32
|
it('03: should pass axe-core scan without violations after select an option', async () => {
|
|
33
|
-
const input = await DSControlledInputGroupCO.
|
|
33
|
+
const input = await DSControlledInputGroupCO.getComboboxWrapper();
|
|
34
34
|
await input.waitForDisplayed();
|
|
35
35
|
await input.click();
|
|
36
36
|
const menuList = await DSControlledInputGroupCO.getMenuList();
|
|
@@ -13,7 +13,7 @@ if (
|
|
|
13
13
|
const errorOnGo = await DSLargeInputTextCO.readOnlyURL.go();
|
|
14
14
|
if (errorOnGo) throw errorOnGo;
|
|
15
15
|
});
|
|
16
|
-
it('01: should pass axe-core scan without violations', async () => {
|
|
16
|
+
it('01: should have readOnly large text input and pass axe-core scan without violations', async () => {
|
|
17
17
|
const input = await DSLargeInputTextCO.getInputByIndex(0);
|
|
18
18
|
await input.waitForDisplayed();
|
|
19
19
|
const result = await axeCoreCheck();
|