dimsum-e2e-tests 3.25.0-next.3 → 3.25.0-next.5
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-circular-indeterminate-indicator/DSCircularIndicator.func.spec.js +15 -0
- package/ds-circular-indeterminate-indicator/DSCircularIndicatorCO.js +4 -0
- package/ds-comments-card/DSComments.axe-core.func.spec.js +1 -2
- package/ds-controlled-form/ds-controlled-date-time-picker/date-input/DateInput.keyboard-nav.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-radio/DSControlledRadio.func.spec.js +43 -1
- package/ds-controlled-form/ds-input-text/DSInputText.visual.spec.js +21 -0
- package/ds-controlled-form/ds-input-text/DSInputTextCO.js +2 -0
- package/ds-data-table-async/DSDataTableCO.js +2 -0
- package/ds-data-table-async/basic/DSDataTable.global-attributes.func.spec.js +33 -0
- package/ds-data-table-async/basic/DSDataTable.usecases.func.spec.js +0 -11
- package/ds-data-table-async/components/PaginationNavCO.js +1 -1
- package/ds-data-table-async/filters/DSDataTable.filteredMultipleTables.visual.spec.js +16 -3
- package/ds-dropdownmenu-v2/basic/DSDDMenuV2.basic.func.spec.js +15 -15
- package/ds-dropdownmenu-v2/mandatory-single/DSDDMenuV2.mandatory-single.func.spec.js +4 -4
- package/ds-eol/ds-filterbar/DSFilterBar-basic.axe-core.func.spec.js +2 -2
- package/ds-eol/ds-number-range-field/NumberRangeField.visual.spec.js +30 -0
- package/{ds-number-range-field → ds-eol/ds-number-range-field}/NumberRangeFieldCO.js +9 -3
- package/ds-eol/ds-page-number/DSPageNumber.visual.spec.js +39 -0
- package/{ds-page-number → ds-eol/ds-page-number}/DSPageNumberCO.js +9 -3
- package/ds-eol/ds-search-field/SearchField.visual.spec.js +86 -0
- package/{ds-search-field → ds-eol/ds-search-field}/SearchFieldCO.js +16 -2
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItem.visual.spec.js +26 -0
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +2 -0
- package/ds-hooks/DSHookCO.js +1 -1
- package/ds-pagination/DSPaginationCO.js +1 -1
- package/package.json +119 -119
- /package/{ds-number-range-field → ds-eol/ds-number-range-field}/NumberRangeField.func.spec.js +0 -0
- /package/{ds-page-number → ds-eol/ds-page-number}/DSPageNumber.func.spec.js +0 -0
- /package/{ds-search-field → ds-eol/ds-search-field}/SearchField.func.spec.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.25.0-next.5](https://git.elliemae.io/platform-ui/dimsum/compare/v3.25.0-next.4...v3.25.0-next.5) (2023-12-01)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
9
|
+
|
|
10
|
+
## [3.25.0-next.4](https://git.elliemae.io/platform-ui/dimsum/compare/v3.25.0-next.3...v3.25.0-next.4) (2023-11-29)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
13
|
+
|
|
6
14
|
## [3.25.0-next.3](https://git.elliemae.io/platform-ui/dimsum/compare/v3.25.0-next.2...v3.25.0-next.3) (2023-11-28)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package dimsum-e2e-tests
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
1
2
|
import DSCircularIndicatorCO from './DSCircularIndicatorCO';
|
|
2
3
|
import { mouseOver } from '../helpers';
|
|
3
4
|
|
|
@@ -14,4 +15,18 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
14
15
|
await expect(tooltip).toBeDisplayed();
|
|
15
16
|
});
|
|
16
17
|
});
|
|
18
|
+
|
|
19
|
+
describe('PUI-11972 - Circular Indeterminate Indicator - Backdropp prevent interactive background -Func', () => {
|
|
20
|
+
before('loading page', async () => {
|
|
21
|
+
const errorOnGo = await DSCircularIndicatorCO.fullScreenURL.go();
|
|
22
|
+
if (errorOnGo) throw errorOnGo;
|
|
23
|
+
});
|
|
24
|
+
it('should NOT focus interactive elements on the background', async () => {
|
|
25
|
+
const tooltipWrapper = await DSCircularIndicatorCO.getCircularIndicator(0);
|
|
26
|
+
await tooltipWrapper.waitForDisplayed();
|
|
27
|
+
await browser.keys(Key.Tab);
|
|
28
|
+
const skipToButton = await DSCircularIndicatorCO.getSkipToButton();
|
|
29
|
+
await expect(skipToButton).not.toBeFocused();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
17
32
|
}
|
|
@@ -13,6 +13,10 @@ export default class DSSquareIndicator extends PageObject {
|
|
|
13
13
|
return PageObject.getSnapshotPathBuilder('CircularIndeterminateIndicator', example, 'ds-circularindicator');
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
static async getSkipToButton() {
|
|
17
|
+
return $(`[id="ds-sb-main"] button`);
|
|
18
|
+
}
|
|
19
|
+
|
|
16
20
|
static async getCircularIndicator() {
|
|
17
21
|
return $('[data-testid="ds-circular-indeterminate-indicator-root"]');
|
|
18
22
|
}
|
|
@@ -5,8 +5,7 @@ if (
|
|
|
5
5
|
(!browser.capabilities['ice:options'].isPhone && browser.capabilities.browserName === 'chrome') ||
|
|
6
6
|
browser.capabilities.browserName === 'Chrome'
|
|
7
7
|
) {
|
|
8
|
-
describe
|
|
9
|
-
// unskip after PUI-11706 is fixed
|
|
8
|
+
describe('PUI-10808 - DSCommentsCard, Basic -AxeCore test', () => {
|
|
10
9
|
before('loading page', async () => {
|
|
11
10
|
const errorOnGo = await DSCommentsCO.basicURL.go();
|
|
12
11
|
if (errorOnGo) throw errorOnGo;
|
|
@@ -80,10 +80,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
80
80
|
await expect(pickerBtn).toBeFocused();
|
|
81
81
|
});
|
|
82
82
|
it('05: should complete with current date - Ctrl + ;', async () => {
|
|
83
|
-
const currentDate = new Date();
|
|
84
|
-
const currentMonth = String(currentDate.getMonth() + 1).padStart(2, '0');
|
|
85
|
-
const currentDay = String(currentDate.getDate()).padStart(2, '0');
|
|
86
|
-
const currentYear = String(currentDate.getFullYear());
|
|
87
83
|
const month = await DateTimePickerCO.getMonthInput('date-full-clearable');
|
|
88
84
|
const day = await DateTimePickerCO.getDayInput('date-full-clearable');
|
|
89
85
|
const year = await DateTimePickerCO.getYearInput('date-full-clearable');
|
|
@@ -91,6 +87,10 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
91
87
|
|
|
92
88
|
await month.click();
|
|
93
89
|
await browser.keys([Key.Control, ';']);
|
|
90
|
+
const currentDate = new Date();
|
|
91
|
+
const currentMonth = String(currentDate.getMonth() + 1).padStart(2, '0');
|
|
92
|
+
const currentDay = String(currentDate.getDate()).padStart(2, '0');
|
|
93
|
+
const currentYear = String(currentDate.getFullYear());
|
|
94
94
|
await expect(month).toHaveValueContaining(currentMonth);
|
|
95
95
|
await expect(day).toHaveValueContaining(currentDay);
|
|
96
96
|
await expect(year).toHaveValueContaining(currentYear);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
1
2
|
import DSControlledRadioCO from './DSControlledRadioCO';
|
|
2
3
|
|
|
3
4
|
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
4
|
-
describe('PUI-11697 - DSControlledRadio -
|
|
5
|
+
describe('PUI-11697 - DSControlledRadio - Basic selection -Func.', () => {
|
|
5
6
|
before('loading page', async () => {
|
|
6
7
|
const errorOnGo = await DSControlledRadioCO.formLayoutBlockItem.go();
|
|
7
8
|
if (errorOnGo) throw errorOnGo;
|
|
@@ -19,4 +20,45 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
19
20
|
await expect(await DSControlledRadioCO.isChecked(radio)).toBe(true);
|
|
20
21
|
});
|
|
21
22
|
});
|
|
23
|
+
|
|
24
|
+
describe('PUI-11976 - DSControlledRadio - Basic keyboard selection -Func.', () => {
|
|
25
|
+
before('loading page', async () => {
|
|
26
|
+
const errorOnGo = await DSControlledRadioCO.formLayoutBlockItem.go();
|
|
27
|
+
if (errorOnGo) throw errorOnGo;
|
|
28
|
+
});
|
|
29
|
+
it('01: should have bottom radio selected by default', async () => {
|
|
30
|
+
const radioTop = await DSControlledRadioCO.getRadioByIndex(0);
|
|
31
|
+
const radioBottom = await DSControlledRadioCO.getRadioByIndex(1);
|
|
32
|
+
await browser.keys(Key.Tab);
|
|
33
|
+
await expect(await DSControlledRadioCO.isChecked(radioTop)).toBe(false);
|
|
34
|
+
await expect(await DSControlledRadioCO.isChecked(radioBottom)).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
// Safari has specific behavior agains focus trap in this scenario
|
|
37
|
+
it('02: should move the pseudo focus and selection to upper radio using the focus trap', async () => {
|
|
38
|
+
const radioTop = await DSControlledRadioCO.getRadioByIndex(0);
|
|
39
|
+
const radioBottom = await DSControlledRadioCO.getRadioByIndex(1);
|
|
40
|
+
if (browser.capabilities.browserName !== 'Safari') {
|
|
41
|
+
await browser.keys(Key.ArrowDown);
|
|
42
|
+
} else {
|
|
43
|
+
await browser.keys(Key.ArrowUp);
|
|
44
|
+
}
|
|
45
|
+
await expect(await DSControlledRadioCO.isChecked(radioTop)).toBe(true);
|
|
46
|
+
await expect(await DSControlledRadioCO.isChecked(radioBottom)).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('03: should use arrowDown to move pseudo focus and selection to bottom radio', async () => {
|
|
50
|
+
const radioTop = await DSControlledRadioCO.getRadioByIndex(0);
|
|
51
|
+
const radioBottom = await DSControlledRadioCO.getRadioByIndex(1);
|
|
52
|
+
await browser.keys(Key.ArrowDown);
|
|
53
|
+
await expect(await DSControlledRadioCO.isChecked(radioTop)).toBe(false);
|
|
54
|
+
await expect(await DSControlledRadioCO.isChecked(radioBottom)).toBe(true);
|
|
55
|
+
});
|
|
56
|
+
it('04: should use arrowUp to move pseudo focus and selection to top radio', async () => {
|
|
57
|
+
const radioTop = await DSControlledRadioCO.getRadioByIndex(0);
|
|
58
|
+
const radioBottom = await DSControlledRadioCO.getRadioByIndex(1);
|
|
59
|
+
await browser.keys(Key.ArrowUp);
|
|
60
|
+
await expect(await DSControlledRadioCO.isChecked(radioTop)).toBe(true);
|
|
61
|
+
await expect(await DSControlledRadioCO.isChecked(radioBottom)).toBe(false);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
22
64
|
}
|
|
@@ -124,4 +124,25 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
124
124
|
await expect(snapshot).toEqual(0);
|
|
125
125
|
});
|
|
126
126
|
});
|
|
127
|
+
|
|
128
|
+
describe('PUI-11984 - DSControlledInputText - HasError -Visual', () => {
|
|
129
|
+
before('loading page', async () => {
|
|
130
|
+
const errorOnGo = await DSInputTextCO.hasError.go();
|
|
131
|
+
if (errorOnGo) throw errorOnGo;
|
|
132
|
+
});
|
|
133
|
+
it('should display errored input uninteracted and with hover (no hover style)', async () => {
|
|
134
|
+
await browser.eyesOpen();
|
|
135
|
+
const input1 = await DSInputTextCO.getInputTextByIndex(0);
|
|
136
|
+
await mouseOver(input1);
|
|
137
|
+
const snapshot = await browser.eyesCheckSnapshot(DSInputTextCO.snapshotPath('input-haserror-default'));
|
|
138
|
+
await expect(snapshot).toEqual(0);
|
|
139
|
+
});
|
|
140
|
+
it('should display errored input focused (style overriden)', async () => {
|
|
141
|
+
await browser.eyesOpen();
|
|
142
|
+
const input1 = await DSInputTextCO.getInputTextByIndex(0);
|
|
143
|
+
await input1.click();
|
|
144
|
+
const snapshot = await browser.eyesCheckSnapshot(DSInputTextCO.snapshotPath('input-haserror-focused'));
|
|
145
|
+
await expect(snapshot).toEqual(0);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
127
148
|
}
|
|
@@ -15,6 +15,8 @@ export default class DSLargeInputCO extends PageObject {
|
|
|
15
15
|
|
|
16
16
|
static basicURL = new Urlbuilder(PATH_E2E_CONTROLLEDINPUT, 'basic-E-2-e');
|
|
17
17
|
|
|
18
|
+
static hasError = new Urlbuilder(PATH_E2E_CONTROLLEDINPUT, 'has-error-test');
|
|
19
|
+
|
|
18
20
|
static autocompleteURL = new Urlbuilder(PATH_E2E_CONTROLLEDINPUT, 'with-autocomplete');
|
|
19
21
|
|
|
20
22
|
static async getAutocompleteMenuList() {
|
|
@@ -163,6 +163,8 @@ export default class DataTableCO extends PageObject {
|
|
|
163
163
|
|
|
164
164
|
static requiredColumnsMulti = new Urlbuilder(PATH_E2E_DATATABLE, 'required-columns-multi');
|
|
165
165
|
|
|
166
|
+
static configurableAriaLabelTest = new Urlbuilder(PATH_E2E_DATATABLE, 'configurable-aria-label-test');
|
|
167
|
+
|
|
166
168
|
// SELECTORS
|
|
167
169
|
|
|
168
170
|
static getTable = async () => $('[data-testid="data-table-table"]');
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* eslint-disable wdio/no-pause */
|
|
2
|
+
/* eslint-disable max-len */
|
|
3
|
+
/* eslint-disable prettier/prettier */
|
|
4
|
+
import DSDataTableCO from '../DSDataTableCO';
|
|
5
|
+
import { FilterBarCO, RowCO } from '../components';
|
|
6
|
+
|
|
7
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
8
|
+
describe('PUI-9986 - DataTable, filterbar button aria-label', async () => {
|
|
9
|
+
before('loading page', async () => {
|
|
10
|
+
const errorOnGo = await DSDataTableCO.filteredColumnWithControlledFilterbar.go();
|
|
11
|
+
if (errorOnGo) throw errorOnGo;
|
|
12
|
+
await DSDataTableCO.waitForDataTable();
|
|
13
|
+
});
|
|
14
|
+
it('01: aria-label should be present', async () => {
|
|
15
|
+
const filterbarButton = await FilterBarCO.getFilterBarDropdownMenuButton();
|
|
16
|
+
await expect(filterbarButton).toHaveAttribute('aria-label', 'Filter bar addon');
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('PUI-12019 - DataTable, configurable aria-label in the row', async () => {
|
|
20
|
+
before('loading page', async () => {
|
|
21
|
+
const errorOnGo = await DSDataTableCO.configurableAriaLabelTest.go();
|
|
22
|
+
if (errorOnGo) throw errorOnGo;
|
|
23
|
+
await DSDataTableCO.waitForDataTable();
|
|
24
|
+
});
|
|
25
|
+
it('01: custom aria-label should be present in the row', async () => {
|
|
26
|
+
const firstRow = await RowCO.getRowFocuseableByIndex(0);
|
|
27
|
+
await expect(firstRow).toHaveAttribute(
|
|
28
|
+
'aria-label',
|
|
29
|
+
'This is a custom aria-label for the row with id 0 with index 0',
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
@@ -274,17 +274,6 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
274
274
|
await expect(tooltipCount).toBe(1);
|
|
275
275
|
});
|
|
276
276
|
});
|
|
277
|
-
describe('PUI-9986 - DataTable, filterbar button aria-label', async () => {
|
|
278
|
-
before('loading page', async () => {
|
|
279
|
-
const errorOnGo = await DSDataTableCO.filteredColumnWithControlledFilterbar.go();
|
|
280
|
-
if (errorOnGo) throw errorOnGo;
|
|
281
|
-
await DSDataTableCO.waitForDataTable();
|
|
282
|
-
});
|
|
283
|
-
it('01: aria-label should be present', async () => {
|
|
284
|
-
const filterbarButton = await FilterBarCO.getFilterBarDropdownMenuButton();
|
|
285
|
-
await expect(filterbarButton).toHaveAttribute('aria-label', 'Filter bar addon');
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
277
|
|
|
289
278
|
describe('PUI-10204 - DataTable:: SkipTo', () => {
|
|
290
279
|
before('loading page', async () => {
|
|
@@ -27,5 +27,5 @@ export default class PaginationNavCO extends PageObject {
|
|
|
27
27
|
|
|
28
28
|
static getSegPagSpans = async () => (await this.getPagesMenu()).$$(' div > span');
|
|
29
29
|
|
|
30
|
-
static getSegPagContent = async () => $$('
|
|
30
|
+
static getSegPagContent = async () => $$('[data-testid="ds-pagination-paginator"] > div > span')[1];
|
|
31
31
|
}
|
|
@@ -5,17 +5,30 @@ import { FiltersCO } from '../components';
|
|
|
5
5
|
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
6
|
describe('PUI-7370 - DataTable, filtered multiple tables - Visual Test', () => {
|
|
7
7
|
before('loading page', async () => {
|
|
8
|
-
const errorOnGo = await DSDataTableCO.
|
|
8
|
+
const errorOnGo = await DSDataTableCO.filterableTablesE2e.go();
|
|
9
9
|
if (errorOnGo) throw errorOnGo;
|
|
10
10
|
await DSDataTableCO.waitForDataTable();
|
|
11
11
|
});
|
|
12
|
-
it('should display the date picker correctly', async () => {
|
|
12
|
+
it('01: should display the date picker correctly of first table', async () => {
|
|
13
13
|
await FiltersCO.openFilterPopperByColumnName('single date', 0);
|
|
14
14
|
await DSDataTableCO.type('1');
|
|
15
15
|
await browser.keys(Key.Tab);
|
|
16
16
|
await DSDataTableCO.type('10');
|
|
17
17
|
await DSDataTableCO.type('2020');
|
|
18
|
-
const snapshot = await browser.checkSnapshot(
|
|
18
|
+
const snapshot = await browser.checkSnapshot(
|
|
19
|
+
DSDataTableCO.snapshotPath('multiple-tables-single-date-opened-first-table'),
|
|
20
|
+
);
|
|
21
|
+
await expect(snapshot).toEqual(0);
|
|
22
|
+
});
|
|
23
|
+
it('02: should display the date picker correctly of last table', async () => {
|
|
24
|
+
await FiltersCO.openFilterPopperByColumnName('single date', 3);
|
|
25
|
+
await DSDataTableCO.type('1');
|
|
26
|
+
await browser.keys(Key.Tab);
|
|
27
|
+
await DSDataTableCO.type('10');
|
|
28
|
+
await DSDataTableCO.type('2020');
|
|
29
|
+
const snapshot = await browser.checkSnapshot(
|
|
30
|
+
DSDataTableCO.snapshotPath('multiple-tables-single-date-opened-last-table'),
|
|
31
|
+
);
|
|
19
32
|
await expect(snapshot).toEqual(0);
|
|
20
33
|
});
|
|
21
34
|
});
|
|
@@ -12,13 +12,13 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
12
12
|
const ddMenuTrigger = await DSDDMenuV2CO.getDropDownTrigger();
|
|
13
13
|
await ddMenuTrigger.click();
|
|
14
14
|
const optionsPresent = (await DSDDMenuV2CO.getOptions()).length;
|
|
15
|
-
await expect(optionsPresent).toEqual(
|
|
15
|
+
await expect(optionsPresent).toEqual(9);
|
|
16
16
|
});
|
|
17
17
|
it('02: should open also a submenu and have 5 more options', async () => {
|
|
18
18
|
const submenuIcon = await DSDDMenuV2CO.getSubmenuIconByIndex(0);
|
|
19
19
|
await submenuIcon.click();
|
|
20
20
|
const optionsPresent = (await DSDDMenuV2CO.getOptions()).length;
|
|
21
|
-
await expect(optionsPresent).toEqual(
|
|
21
|
+
await expect(optionsPresent).toEqual(16);
|
|
22
22
|
});
|
|
23
23
|
});
|
|
24
24
|
describe('PUI-11827 - DropdownMenuV2 - onOptionClick - mouse functional test', () => {
|
|
@@ -30,56 +30,56 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
30
30
|
const ddMenuTrigger = await DSDDMenuV2CO.getDropDownTrigger();
|
|
31
31
|
await ddMenuTrigger.click();
|
|
32
32
|
// option label: Standard
|
|
33
|
-
const firstOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
33
|
+
const firstOption = await DSDDMenuV2CO.getOptionByIndex(1);
|
|
34
34
|
await firstOption.click();
|
|
35
35
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
36
36
|
await expect(counterValue).toHaveTextContaining('Clicks: 1');
|
|
37
37
|
});
|
|
38
38
|
it('02: should increase the counter by clicking option type single', async () => {
|
|
39
39
|
// option label: View names are sentence case
|
|
40
|
-
const secondOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
40
|
+
const secondOption = await DSDDMenuV2CO.getOptionByIndex(2);
|
|
41
41
|
await secondOption.click();
|
|
42
42
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
43
43
|
await expect(counterValue).toHaveTextContaining('Clicks: 2');
|
|
44
44
|
});
|
|
45
45
|
it('03: should not increase the counter by clicking option type singleWithSubmenu - disabled', async () => {
|
|
46
46
|
// option label: View names can be long
|
|
47
|
-
const thirdOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
47
|
+
const thirdOption = await DSDDMenuV2CO.getOptionByIndex(3);
|
|
48
48
|
await thirdOption.click();
|
|
49
49
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
50
50
|
await expect(counterValue).toHaveTextContaining('Clicks: 2');
|
|
51
51
|
});
|
|
52
52
|
it('04: should increase the counter by clicking option type singleWithSubmenu', async () => {
|
|
53
53
|
// option label: Monthly views
|
|
54
|
-
const fourthOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
54
|
+
const fourthOption = await DSDDMenuV2CO.getOptionByIndex(4);
|
|
55
55
|
await fourthOption.click();
|
|
56
56
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
57
57
|
await expect(counterValue).toHaveTextContaining('Clicks: 3');
|
|
58
58
|
});
|
|
59
59
|
it('05: should not increase the counter by clicking option type submenu', async () => {
|
|
60
60
|
// option label: Other views
|
|
61
|
-
const fifthOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
61
|
+
const fifthOption = await DSDDMenuV2CO.getOptionByIndex(5);
|
|
62
62
|
await fifthOption.click();
|
|
63
63
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
64
64
|
await expect(counterValue).toHaveTextContaining('Clicks: 3');
|
|
65
65
|
});
|
|
66
66
|
it('06: should not increase the counter by clicking option type single - disabled', async () => {
|
|
67
67
|
// option label: Random view
|
|
68
|
-
const ninthOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
68
|
+
const ninthOption = await DSDDMenuV2CO.getOptionByIndex(11);
|
|
69
69
|
await ninthOption.click();
|
|
70
70
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
71
71
|
await expect(counterValue).toHaveTextContaining('Clicks: 3');
|
|
72
72
|
});
|
|
73
73
|
it('07: should not increase the counter by clicking option type action - disabled', async () => {
|
|
74
74
|
// option label: Rename
|
|
75
|
-
const tenthOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
75
|
+
const tenthOption = await DSDDMenuV2CO.getOptionByIndex(13);
|
|
76
76
|
await tenthOption.click();
|
|
77
77
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
78
78
|
await expect(counterValue).toHaveTextContaining('Clicks: 3');
|
|
79
79
|
});
|
|
80
80
|
it('08: should increase the counter by clicking option type action', async () => {
|
|
81
81
|
// Create new view
|
|
82
|
-
const sixthOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
82
|
+
const sixthOption = await DSDDMenuV2CO.getOptionByIndex(8);
|
|
83
83
|
await sixthOption.click();
|
|
84
84
|
const counterValue = await DSDDMenuV2CO.getCounterValue();
|
|
85
85
|
await expect(counterValue).toHaveTextContaining('Clicks: 4');
|
|
@@ -129,27 +129,27 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
129
129
|
it('01: type singleWithSubmenu: check global attributes', async () => {
|
|
130
130
|
const ddMenuTrigger = await DSDDMenuV2CO.getDropDownTrigger();
|
|
131
131
|
await ddMenuTrigger.click();
|
|
132
|
-
const firstOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
132
|
+
const firstOption = await DSDDMenuV2CO.getOptionByIndex(1);
|
|
133
133
|
await expect(firstOption).toHaveAttribute('aria-label', 'Standard case aria label');
|
|
134
134
|
await expect(firstOption).toHaveAttribute('aria-describedby', 'mycustomID');
|
|
135
135
|
await expect(firstOption).toHaveAttribute('data-testid', 'single-with-submenu-item-id1');
|
|
136
136
|
});
|
|
137
137
|
it('02: type single: check global attributes', async () => {
|
|
138
|
-
const secondOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
138
|
+
const secondOption = await DSDDMenuV2CO.getOptionByIndex(2);
|
|
139
139
|
await expect(secondOption).toHaveAttribute('aria-label', 'View names are sentence case aria label');
|
|
140
140
|
await expect(secondOption).toHaveAttribute('aria-describedby', 'mycustomID2');
|
|
141
141
|
await expect(secondOption).toHaveAttribute('data-testid', 'single-item-id2');
|
|
142
142
|
});
|
|
143
143
|
it('03: type submenu: check global attributes', async () => {
|
|
144
|
-
const fifthOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
144
|
+
const fifthOption = await DSDDMenuV2CO.getOptionByIndex(5);
|
|
145
145
|
await expect(fifthOption).toHaveAttribute('aria-label', 'Other views aria label');
|
|
146
146
|
await expect(fifthOption).toHaveAttribute('aria-describedby', 'mycustomID3');
|
|
147
147
|
await expect(fifthOption).toHaveAttribute('data-testid', 'submenu-item-id5');
|
|
148
148
|
});
|
|
149
149
|
it('04: type singleWithSubmenu (2nd level): check global attributes', async () => {
|
|
150
|
-
const fifthOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
150
|
+
const fifthOption = await DSDDMenuV2CO.getOptionByIndex(5);
|
|
151
151
|
await fifthOption.click();
|
|
152
|
-
const yearlyViewsOption = await DSDDMenuV2CO.getOptionByIndex(
|
|
152
|
+
const yearlyViewsOption = await DSDDMenuV2CO.getOptionByIndex(9);
|
|
153
153
|
await yearlyViewsOption.waitForDisplayed();
|
|
154
154
|
await expect(yearlyViewsOption).toHaveAttribute('aria-label', 'Yearly views aria label');
|
|
155
155
|
await expect(yearlyViewsOption).toHaveAttribute('aria-describedby', 'mycustomID4');
|
|
@@ -9,13 +9,13 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
9
9
|
it('01: should open ddmenu and have option 1 automatically checked', async () => {
|
|
10
10
|
const ddMenuTrigger = await DSDDMenuV2CO.getDropDownTrigger();
|
|
11
11
|
await ddMenuTrigger.click();
|
|
12
|
-
const opt1 = await DSDDMenuV2CO.getOptionByIndex(
|
|
12
|
+
const opt1 = await DSDDMenuV2CO.getOptionByIndex(1);
|
|
13
13
|
const isOpt1Checked = await opt1.getAttribute('aria-selected');
|
|
14
14
|
await expect(isOpt1Checked).toEqual('true');
|
|
15
15
|
});
|
|
16
16
|
it('02: should click option 2 and have this option checked and option 1 unchecked', async () => {
|
|
17
|
-
const opt1 = await DSDDMenuV2CO.getOptionByIndex(
|
|
18
|
-
const opt2 = await DSDDMenuV2CO.getOptionByIndex(
|
|
17
|
+
const opt1 = await DSDDMenuV2CO.getOptionByIndex(1);
|
|
18
|
+
const opt2 = await DSDDMenuV2CO.getOptionByIndex(3);
|
|
19
19
|
await opt2.click();
|
|
20
20
|
const isOpt1Checked = await opt1.getAttribute('aria-selected');
|
|
21
21
|
await expect(isOpt1Checked).toEqual('false');
|
|
@@ -23,7 +23,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
23
23
|
await expect(isOpt2Checked).toEqual('true');
|
|
24
24
|
});
|
|
25
25
|
it('03: should not deselect the only option selected with click (mandatory select)', async () => {
|
|
26
|
-
const opt2 = await DSDDMenuV2CO.getOptionByIndex(
|
|
26
|
+
const opt2 = await DSDDMenuV2CO.getOptionByIndex(3);
|
|
27
27
|
await opt2.click();
|
|
28
28
|
const isOpt2Checked = await opt2.getAttribute('aria-selected');
|
|
29
29
|
await expect(isOpt2Checked).toEqual('true');
|
|
@@ -26,8 +26,8 @@ if (
|
|
|
26
26
|
expect(result.length).toBe(0);
|
|
27
27
|
});
|
|
28
28
|
});
|
|
29
|
-
|
|
30
|
-
describe
|
|
29
|
+
|
|
30
|
+
describe('PUI-11877: FilterBar Multi migrated -AxeCore', () => {
|
|
31
31
|
before(async () => {
|
|
32
32
|
const errorOnGo = await FilterbarCO.migratedMulti.go();
|
|
33
33
|
if (errorOnGo) throw errorOnGo;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import NumberRangeFieldCO from './NumberRangeFieldCO';
|
|
3
|
+
import { type } from '../../helpers';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-11994 - NumberRangeField: after migration -Visual', () => {
|
|
7
|
+
before(async () => {
|
|
8
|
+
const errorOnGo = await NumberRangeFieldCO.migratedURL.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display empty number range field by default', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
const input = await NumberRangeFieldCO.getInput(0);
|
|
14
|
+
await input.waitForDisplayed();
|
|
15
|
+
const snapshot = await browser.eyesCheckSnapshot(NumberRangeFieldCO.snapshotPath('numberrange-migrated-default'));
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
it('02: should display populated number range field, one focused', async () => {
|
|
19
|
+
await browser.eyesOpen();
|
|
20
|
+
await browser.keys(Key.Tab);
|
|
21
|
+
await type('3');
|
|
22
|
+
await browser.keys(Key.Tab);
|
|
23
|
+
await type('9');
|
|
24
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
25
|
+
NumberRangeFieldCO.snapshotPath('numberrange-migrated-populated'),
|
|
26
|
+
);
|
|
27
|
+
await expect(snapshot).toEqual(0);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PATH_NUMBER_RANGE_FIELD } from '
|
|
2
|
-
import { PageObject, Urlbuilder } from '
|
|
1
|
+
import { PATH_NUMBER_RANGE_FIELD, PATH_E2E_NUMBERRANGEFIELD } from '../../../environments/storybook/paths';
|
|
2
|
+
import { PageObject, Urlbuilder } from '../../helpers';
|
|
3
3
|
|
|
4
4
|
export const knobs = {
|
|
5
5
|
minFrom: 'knob-minFrom',
|
|
@@ -8,7 +8,9 @@ export const knobs = {
|
|
|
8
8
|
maxTo: 'knob-maxTo',
|
|
9
9
|
};
|
|
10
10
|
export default class NumberRangeField extends PageObject {
|
|
11
|
-
static basicURL = new Urlbuilder(PATH_NUMBER_RANGE_FIELD, '
|
|
11
|
+
static basicURL = new Urlbuilder(PATH_NUMBER_RANGE_FIELD, 'widget-usage');
|
|
12
|
+
|
|
13
|
+
static migratedURL = new Urlbuilder(PATH_E2E_NUMBERRANGEFIELD, 'migrated-test');
|
|
12
14
|
|
|
13
15
|
static async getFromInput() {
|
|
14
16
|
return $('[data-testid="ds-number-range-field__from-input"]');
|
|
@@ -18,6 +20,10 @@ export default class NumberRangeField extends PageObject {
|
|
|
18
20
|
return $('[data-testid="ds-number-range-field__to-input"]');
|
|
19
21
|
}
|
|
20
22
|
|
|
23
|
+
static async getInput(index = 0) {
|
|
24
|
+
return $$('[data-testid="ds-input-text-input"]')[index];
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
// Snapshots
|
|
22
28
|
static snapshotPath(example = 'basic') {
|
|
23
29
|
return PageObject.getSnapshotPathBuilder('DSNumberRangeField', example, 'ds-number-range-field');
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import DSPageNumberCO from './DSPageNumberCO';
|
|
3
|
+
|
|
4
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
5
|
+
describe('PUI-11995 - Page Number: After migration - Visual', () => {
|
|
6
|
+
before('loading page', async () => {
|
|
7
|
+
const errorOnGo = await DSPageNumberCO.migratedURL.go();
|
|
8
|
+
if (errorOnGo) throw errorOnGo;
|
|
9
|
+
});
|
|
10
|
+
it('01: should display pageNumber marking "1" by default', async () => {
|
|
11
|
+
await browser.eyesOpen();
|
|
12
|
+
const currentPageInput = await DSPageNumberCO.getMigCurrPage();
|
|
13
|
+
await currentPageInput.waitForDisplayed();
|
|
14
|
+
const snapshot = await browser.eyesCheckSnapshot(DSPageNumberCO.snapshotPath('pagenumber-migrated-default'));
|
|
15
|
+
await expect(snapshot).toEqual(0);
|
|
16
|
+
});
|
|
17
|
+
it('02: should display pageNumber marking "3" after using upArrow button twice', async () => {
|
|
18
|
+
await browser.eyesOpen();
|
|
19
|
+
const currentPageInput = await DSPageNumberCO.getMigCurrPage();
|
|
20
|
+
await currentPageInput.waitForDisplayed();
|
|
21
|
+
await browser.keys(Key.Tab);
|
|
22
|
+
await browser.keys(Key.Tab);
|
|
23
|
+
await browser.keys(Key.Enter);
|
|
24
|
+
await browser.keys(Key.Enter);
|
|
25
|
+
const snapshot = await browser.eyesCheckSnapshot(DSPageNumberCO.snapshotPath('pagenumber-migrated-increased'));
|
|
26
|
+
await expect(snapshot).toEqual(0);
|
|
27
|
+
});
|
|
28
|
+
it('03: should display pageNumber empty', async () => {
|
|
29
|
+
await browser.eyesOpen();
|
|
30
|
+
const currentPageInput = await DSPageNumberCO.getMigCurrPage();
|
|
31
|
+
await currentPageInput.click();
|
|
32
|
+
await browser.keys(Key.ArrowRight);
|
|
33
|
+
await browser.keys(Key.Backspace);
|
|
34
|
+
await browser.keys(Key.Tab);
|
|
35
|
+
const snapshot = await browser.eyesCheckSnapshot(DSPageNumberCO.snapshotPath('pagenumber-migrated-empty'));
|
|
36
|
+
await expect(snapshot).toEqual(0);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { PATH_PAGE_NUMBER } from '
|
|
2
|
-
import { PageObject, Urlbuilder } from '
|
|
1
|
+
import { PATH_PAGE_NUMBER, PATH_E2E_PAGENUMBER } from '../../../environments/storybook/paths';
|
|
2
|
+
import { PageObject, Urlbuilder } from '../../helpers';
|
|
3
3
|
|
|
4
4
|
export default class DSPageNumberCO extends PageObject {
|
|
5
5
|
// Desktop
|
|
6
|
-
static basicURL = new Urlbuilder(PATH_PAGE_NUMBER, '
|
|
6
|
+
static basicURL = new Urlbuilder(PATH_PAGE_NUMBER, 'widget-usage');
|
|
7
|
+
|
|
8
|
+
static migratedURL = new Urlbuilder(PATH_E2E_PAGENUMBER, 'migrated-test');
|
|
7
9
|
|
|
8
10
|
static getUrl(component = 'basic') {
|
|
9
11
|
return PageObject.getUrl(PATH_PAGE_NUMBER, component);
|
|
@@ -18,6 +20,10 @@ export default class DSPageNumberCO extends PageObject {
|
|
|
18
20
|
return $('//input[@data-testid="page-number__current-page"]');
|
|
19
21
|
}
|
|
20
22
|
|
|
23
|
+
static async getMigCurrPage() {
|
|
24
|
+
return $('[aria-label="Current Page"]');
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
static async getTotalPages() {
|
|
22
28
|
return $('[data-testid="page-number__total-pages"]');
|
|
23
29
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import SearchFieldCO from './SearchFieldCO';
|
|
3
|
+
import { type } from '../../helpers';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-11996 - SearchField: After migration -Visual', () => {
|
|
7
|
+
before(async () => {
|
|
8
|
+
const errorOnGo = await SearchFieldCO.migratedURL.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: searchField should be displayed', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
const comboBoxField = await SearchFieldCO.getComboInputByIndex(0);
|
|
14
|
+
await comboBoxField.waitForDisplayed();
|
|
15
|
+
const snapshot = await browser.eyesCheckSnapshot(SearchFieldCO.snapshotPath('searchfield-migrated-default'));
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
it('02: searchField should be expanded', async () => {
|
|
19
|
+
await browser.eyesOpen();
|
|
20
|
+
const comboBoxField = await SearchFieldCO.getComboInputByIndex(0);
|
|
21
|
+
await comboBoxField.click();
|
|
22
|
+
const snapshot = await browser.eyesCheckSnapshot(SearchFieldCO.snapshotPath('searchfield-migrated-expanded'));
|
|
23
|
+
await expect(snapshot).toEqual(0);
|
|
24
|
+
});
|
|
25
|
+
it('03: searchField should be populated', async () => {
|
|
26
|
+
await browser.eyesOpen();
|
|
27
|
+
const comboBoxField = await SearchFieldCO.getComboInputByIndex(0);
|
|
28
|
+
await comboBoxField.waitForDisplayed();
|
|
29
|
+
await browser.keys(Key.Enter);
|
|
30
|
+
const snapshot = await browser.eyesCheckSnapshot(SearchFieldCO.snapshotPath('searchfield-migrated-populated'));
|
|
31
|
+
await expect(snapshot).toEqual(0);
|
|
32
|
+
});
|
|
33
|
+
it('04: searchField should have advanced configuration modal expanded', async () => {
|
|
34
|
+
await browser.eyesOpen();
|
|
35
|
+
const advancedButton = await SearchFieldCO.getButtonByindex(0);
|
|
36
|
+
await advancedButton.click();
|
|
37
|
+
const snapshot = await browser.eyesCheckSnapshot(SearchFieldCO.snapshotPath('searchfield-migrated-advanced'));
|
|
38
|
+
await expect(snapshot).toEqual(0);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
describe('PUI-1997 - SearchField: After migration: queryBuilder example -Visual', () => {
|
|
43
|
+
before(async () => {
|
|
44
|
+
const errorOnGo = await SearchFieldCO.migratedURL.go();
|
|
45
|
+
if (errorOnGo) throw errorOnGo;
|
|
46
|
+
});
|
|
47
|
+
it('01: searchField should be displayed (expanded output)', async () => {
|
|
48
|
+
await browser.eyesOpen();
|
|
49
|
+
const comboBoxField = await SearchFieldCO.getOutputAccordion();
|
|
50
|
+
await comboBoxField.click();
|
|
51
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
52
|
+
SearchFieldCO.snapshotPath('searchfield-migrated-queryb-default'),
|
|
53
|
+
);
|
|
54
|
+
await expect(snapshot).toEqual(0);
|
|
55
|
+
});
|
|
56
|
+
it('02: searchField should be expanded', async () => {
|
|
57
|
+
await browser.eyesOpen();
|
|
58
|
+
const comboBoxField = await SearchFieldCO.getComboInputByIndex(1);
|
|
59
|
+
await comboBoxField.click();
|
|
60
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
61
|
+
SearchFieldCO.snapshotPath('searchfield-migrated-queryb-expanded'),
|
|
62
|
+
);
|
|
63
|
+
await expect(snapshot).toEqual(0);
|
|
64
|
+
});
|
|
65
|
+
it('03: searchField should be populated', async () => {
|
|
66
|
+
await browser.eyesOpen();
|
|
67
|
+
await browser.keys(Key.Enter);
|
|
68
|
+
await browser.keys(Key.Tab);
|
|
69
|
+
await browser.keys(Key.Tab);
|
|
70
|
+
await type('10');
|
|
71
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
72
|
+
SearchFieldCO.snapshotPath('searchfield-migrated-queryb-populated'),
|
|
73
|
+
);
|
|
74
|
+
await expect(snapshot).toEqual(0);
|
|
75
|
+
});
|
|
76
|
+
it('04: searchField should be advanced expanded', async () => {
|
|
77
|
+
await browser.eyesOpen();
|
|
78
|
+
const advancedButton = await SearchFieldCO.getButtonByindex(1);
|
|
79
|
+
await advancedButton.click();
|
|
80
|
+
const snapshot = await browser.eyesCheckSnapshot(
|
|
81
|
+
SearchFieldCO.snapshotPath('searchfield-migrated-queryb-advanced'),
|
|
82
|
+
);
|
|
83
|
+
await expect(snapshot).toEqual(0);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Key } from 'webdriverio';
|
|
2
|
-
import { PATH_SEARCH_FIELD } from '
|
|
3
|
-
import { PageObject, Urlbuilder, type } from '
|
|
2
|
+
import { PATH_SEARCH_FIELD, PATH_E2E_SEARCHFIELD } from '../../../environments/storybook/paths';
|
|
3
|
+
import { PageObject, Urlbuilder, type } from '../../helpers';
|
|
4
4
|
|
|
5
5
|
export default class QueryBuilderCO extends PageObject {
|
|
6
6
|
static withoutLookupIndicator = new Urlbuilder(PATH_SEARCH_FIELD, 'without-lookup-indicator');
|
|
7
7
|
|
|
8
|
+
static migratedURL = new Urlbuilder(PATH_E2E_SEARCHFIELD, 'migrated-test');
|
|
9
|
+
|
|
8
10
|
static modalStandaloneURL = new Urlbuilder(PATH_SEARCH_FIELD, 'modal-search-field-standalone');
|
|
9
11
|
|
|
10
12
|
static tabsCallbackInSearchFieldURL = new Urlbuilder(PATH_SEARCH_FIELD, 'tabs-callback-in-search-field');
|
|
@@ -21,6 +23,14 @@ export default class QueryBuilderCO extends PageObject {
|
|
|
21
23
|
return $$('[data-testid="combobox-option"]');
|
|
22
24
|
}
|
|
23
25
|
|
|
26
|
+
static async getButtonByindex(index = 0) {
|
|
27
|
+
return $$('[data-testid="ds-button"]')[index];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static async getComboInputByIndex(index = 0) {
|
|
31
|
+
return $$('[data-testid="combobox-input"]')[index];
|
|
32
|
+
}
|
|
33
|
+
|
|
24
34
|
static async getCombobox(index) {
|
|
25
35
|
return $$('[data-testid="combobox"]')[index];
|
|
26
36
|
}
|
|
@@ -41,6 +51,10 @@ export default class QueryBuilderCO extends PageObject {
|
|
|
41
51
|
return $('[data-testid="combobox"]').$('input');
|
|
42
52
|
}
|
|
43
53
|
|
|
54
|
+
static async getOutputAccordion() {
|
|
55
|
+
return $('[data-testid="ds-accordion-item-header-addon"]');
|
|
56
|
+
}
|
|
57
|
+
|
|
44
58
|
static async getPillsText() {
|
|
45
59
|
const pillsText = [];
|
|
46
60
|
// eslint-disable-next-line no-restricted-syntax, no-unused-vars
|
|
@@ -152,4 +152,30 @@ if (!browser.capabilities['ice:options'].isPhone) {
|
|
|
152
152
|
});
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
|
+
|
|
156
|
+
describe('PUI-11980 - DSFormLayoutBlockItem: Customization, Highlight - visual test', () => {
|
|
157
|
+
before('loading page', async () => {
|
|
158
|
+
const errorOnGo = await DSFormLayoutBlockItemCO.withCustomHighlight.go();
|
|
159
|
+
if (errorOnGo) throw errorOnGo;
|
|
160
|
+
});
|
|
161
|
+
it('should display form layout block item with custom highlight: default state', async () => {
|
|
162
|
+
await (await DSFormLayoutBlockItemCO.firstNameLabel()).waitForDisplayed();
|
|
163
|
+
const snapshot = await browser.checkSnapshot(DSFormLayoutBlockItemCO.snapshotPath('custom-highlight-default'));
|
|
164
|
+
await expect(snapshot).toEqual(0);
|
|
165
|
+
});
|
|
166
|
+
if (!browser.capabilities['ice:options'].isTablet) {
|
|
167
|
+
it('should display form layout block item with custom highlight: hover state', async () => {
|
|
168
|
+
await mouseOver(await DSFormLayoutBlockItemCO.middleNameLabel());
|
|
169
|
+
const snapshot = await browser.checkSnapshot(DSFormLayoutBlockItemCO.snapshotPath('custom-highlight-hovered'));
|
|
170
|
+
await expect(snapshot).toEqual(0);
|
|
171
|
+
});
|
|
172
|
+
it('should display form layout block item with custom highlight: keyboard focus', async () => {
|
|
173
|
+
await browser.keys(Key.Tab);
|
|
174
|
+
const snapshot = await browser.checkSnapshot(
|
|
175
|
+
DSFormLayoutBlockItemCO.snapshotPath('custom-highlight-keyboard-focus'),
|
|
176
|
+
);
|
|
177
|
+
await expect(snapshot).toEqual(0);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
});
|
|
155
181
|
}
|
|
@@ -12,6 +12,8 @@ export default class DSFormLayoutBlockItemCO extends PageObject {
|
|
|
12
12
|
|
|
13
13
|
static withHighlight = new Urlbuilder(PATH_E2E_FORM_LAYOUT_BLOCK_ITEM, 'with-highlight');
|
|
14
14
|
|
|
15
|
+
static withCustomHighlight = new Urlbuilder(PATH_E2E_FORM_LAYOUT_BLOCK_ITEM, 'custom-highlight-test');
|
|
16
|
+
|
|
15
17
|
static withWrapping = new Urlbuilder(PATH_E2E_FORM_LAYOUT_BLOCK_ITEM, 'wrapping-e-2-e');
|
|
16
18
|
|
|
17
19
|
static optionalAndRequired = new Urlbuilder(PATH_E2E_FORM_LAYOUT_BLOCK_ITEM, 'optional-and-required');
|
package/ds-hooks/DSHookCO.js
CHANGED
|
@@ -71,7 +71,7 @@ export default class DSHookCO extends PageObject {
|
|
|
71
71
|
static getAddChildBtnByIndex = async (index) => getElementByIndex(this.getAddChildButtons, index);
|
|
72
72
|
|
|
73
73
|
static async getBreadCrumbItems() {
|
|
74
|
-
return $$('[data-testid="ds-
|
|
74
|
+
return $$('[data-testid="ds-breadcrumb-item"]');
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
static getBreadCrumbItemByIndex = async (index) => getElementByIndex(this.getBreadCrumbItems, index);
|
|
@@ -31,7 +31,7 @@ export default class DSPaginationCO extends PageObject {
|
|
|
31
31
|
|
|
32
32
|
static getCustomButton = async () => $('[data-testid="ds-button"]');
|
|
33
33
|
|
|
34
|
-
static getCustomLegend = async () => $('[data-testid="
|
|
34
|
+
static getCustomLegend = async () => $('[data-testid="custom-legend"]');
|
|
35
35
|
|
|
36
36
|
// Snapshots
|
|
37
37
|
static snapshotPath(example = 'basic') {
|
package/package.json
CHANGED
|
@@ -1,125 +1,125 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dimsum-e2e-tests",
|
|
3
|
-
"version": "3.25.0-next.
|
|
3
|
+
"version": "3.25.0-next.5",
|
|
4
4
|
"description": "End-to-end tests for dimsum library",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@elliemae/ds-
|
|
7
|
-
"@elliemae/ds-
|
|
8
|
-
"@elliemae/ds-
|
|
9
|
-
"@elliemae/ds-
|
|
10
|
-
"@elliemae/ds-breadcrumb": "3.25.0-next.
|
|
11
|
-
"@elliemae/ds-button
|
|
12
|
-
"@elliemae/ds-
|
|
13
|
-
"@elliemae/ds-button": "3.25.0-next.
|
|
14
|
-
"@elliemae/ds-card
|
|
15
|
-
"@elliemae/ds-card-
|
|
16
|
-
"@elliemae/ds-card-
|
|
17
|
-
"@elliemae/ds-card-v2
|
|
18
|
-
"@elliemae/ds-
|
|
19
|
-
"@elliemae/ds-
|
|
20
|
-
"@elliemae/ds-
|
|
21
|
-
"@elliemae/ds-
|
|
22
|
-
"@elliemae/ds-
|
|
23
|
-
"@elliemae/ds-
|
|
24
|
-
"@elliemae/ds-
|
|
25
|
-
"@elliemae/ds-
|
|
26
|
-
"@elliemae/ds-
|
|
27
|
-
"@elliemae/ds-
|
|
28
|
-
"@elliemae/ds-
|
|
29
|
-
"@elliemae/ds-
|
|
30
|
-
"@elliemae/ds-
|
|
31
|
-
"@elliemae/ds-
|
|
32
|
-
"@elliemae/ds-
|
|
33
|
-
"@elliemae/ds-date-
|
|
34
|
-
"@elliemae/ds-date-
|
|
35
|
-
"@elliemae/ds-date-
|
|
36
|
-
"@elliemae/ds-
|
|
37
|
-
"@elliemae/ds-
|
|
38
|
-
"@elliemae/ds-
|
|
39
|
-
"@elliemae/ds-dataviz-pie": "3.25.0-next.
|
|
40
|
-
"@elliemae/ds-
|
|
41
|
-
"@elliemae/ds-
|
|
42
|
-
"@elliemae/ds-
|
|
43
|
-
"@elliemae/ds-
|
|
44
|
-
"@elliemae/ds-
|
|
45
|
-
"@elliemae/ds-form
|
|
46
|
-
"@elliemae/ds-form": "3.25.0-next.
|
|
47
|
-
"@elliemae/ds-
|
|
48
|
-
"@elliemae/ds-
|
|
49
|
-
"@elliemae/ds-
|
|
50
|
-
"@elliemae/ds-
|
|
51
|
-
"@elliemae/ds-
|
|
52
|
-
"@elliemae/ds-
|
|
53
|
-
"@elliemae/ds-header": "3.25.0-next.
|
|
54
|
-
"@elliemae/ds-
|
|
55
|
-
"@elliemae/ds-
|
|
56
|
-
"@elliemae/ds-
|
|
57
|
-
"@elliemae/ds-
|
|
58
|
-
"@elliemae/ds-
|
|
59
|
-
"@elliemae/ds-
|
|
60
|
-
"@elliemae/ds-
|
|
61
|
-
"@elliemae/ds-
|
|
62
|
-
"@elliemae/ds-
|
|
63
|
-
"@elliemae/ds-
|
|
64
|
-
"@elliemae/ds-
|
|
65
|
-
"@elliemae/ds-menu
|
|
66
|
-
"@elliemae/ds-
|
|
67
|
-
"@elliemae/ds-
|
|
68
|
-
"@elliemae/ds-
|
|
69
|
-
"@elliemae/ds-
|
|
70
|
-
"@elliemae/ds-
|
|
71
|
-
"@elliemae/ds-
|
|
72
|
-
"@elliemae/ds-
|
|
73
|
-
"@elliemae/ds-
|
|
74
|
-
"@elliemae/ds-
|
|
75
|
-
"@elliemae/ds-page-
|
|
76
|
-
"@elliemae/ds-left-navigation": "3.25.0-next.
|
|
77
|
-
"@elliemae/ds-
|
|
78
|
-
"@elliemae/ds-
|
|
79
|
-
"@elliemae/ds-
|
|
80
|
-
"@elliemae/ds-
|
|
81
|
-
"@elliemae/ds-
|
|
82
|
-
"@elliemae/ds-
|
|
83
|
-
"@elliemae/ds-
|
|
84
|
-
"@elliemae/ds-
|
|
85
|
-
"@elliemae/ds-
|
|
86
|
-
"@elliemae/ds-
|
|
87
|
-
"@elliemae/ds-
|
|
88
|
-
"@elliemae/ds-
|
|
89
|
-
"@elliemae/ds-
|
|
90
|
-
"@elliemae/ds-
|
|
91
|
-
"@elliemae/ds-
|
|
92
|
-
"@elliemae/ds-
|
|
93
|
-
"@elliemae/ds-
|
|
94
|
-
"@elliemae/ds-
|
|
95
|
-
"@elliemae/ds-
|
|
96
|
-
"@elliemae/ds-
|
|
97
|
-
"@elliemae/ds-
|
|
98
|
-
"@elliemae/ds-
|
|
99
|
-
"@elliemae/ds-
|
|
100
|
-
"@elliemae/ds-
|
|
101
|
-
"@elliemae/ds-
|
|
102
|
-
"@elliemae/ds-
|
|
103
|
-
"@elliemae/ds-
|
|
104
|
-
"@elliemae/ds-
|
|
105
|
-
"@elliemae/ds-
|
|
106
|
-
"@elliemae/ds-
|
|
107
|
-
"@elliemae/ds-
|
|
108
|
-
"@elliemae/ds-
|
|
109
|
-
"@elliemae/ds-
|
|
110
|
-
"@elliemae/ds-
|
|
111
|
-
"@elliemae/ds-
|
|
112
|
-
"@elliemae/ds-
|
|
113
|
-
"@elliemae/ds-
|
|
114
|
-
"@elliemae/ds-
|
|
115
|
-
"@elliemae/ds-
|
|
116
|
-
"@elliemae/ds-
|
|
117
|
-
"@elliemae/ds-
|
|
118
|
-
"@elliemae/ds-
|
|
119
|
-
"@elliemae/ds-
|
|
120
|
-
"@elliemae/ds-
|
|
121
|
-
"@elliemae/ds-
|
|
122
|
-
"@elliemae/ds-virtual-list": "3.25.0-next.
|
|
123
|
-
"@elliemae/ds-
|
|
6
|
+
"@elliemae/ds-accessibility": "3.25.0-next.5",
|
|
7
|
+
"@elliemae/ds-basic": "3.25.0-next.5",
|
|
8
|
+
"@elliemae/ds-banner": "3.25.0-next.5",
|
|
9
|
+
"@elliemae/ds-backdrop": "3.25.0-next.5",
|
|
10
|
+
"@elliemae/ds-breadcrumb": "3.25.0-next.5",
|
|
11
|
+
"@elliemae/ds-button": "3.25.0-next.5",
|
|
12
|
+
"@elliemae/ds-app-picker": "3.25.0-next.5",
|
|
13
|
+
"@elliemae/ds-button-v2": "3.25.0-next.5",
|
|
14
|
+
"@elliemae/ds-card": "3.25.0-next.5",
|
|
15
|
+
"@elliemae/ds-card-array": "3.25.0-next.5",
|
|
16
|
+
"@elliemae/ds-card-navigation": "3.25.0-next.5",
|
|
17
|
+
"@elliemae/ds-card-v2": "3.25.0-next.5",
|
|
18
|
+
"@elliemae/ds-card-v2-action-addon": "3.25.0-next.5",
|
|
19
|
+
"@elliemae/ds-card-v2-group": "3.25.0-next.5",
|
|
20
|
+
"@elliemae/ds-accordion": "3.25.0-next.5",
|
|
21
|
+
"@elliemae/ds-button-group": "3.25.0-next.5",
|
|
22
|
+
"@elliemae/ds-button-v1": "3.25.0-next.5",
|
|
23
|
+
"@elliemae/ds-chat-bubble": "3.25.0-next.5",
|
|
24
|
+
"@elliemae/ds-circular-progress-indicator": "3.25.0-next.5",
|
|
25
|
+
"@elliemae/ds-codeeditor": "3.25.0-next.5",
|
|
26
|
+
"@elliemae/ds-comments": "3.25.0-next.5",
|
|
27
|
+
"@elliemae/ds-controlled-form": "3.25.0-next.5",
|
|
28
|
+
"@elliemae/ds-chat": "3.25.0-next.5",
|
|
29
|
+
"@elliemae/ds-data-table": "3.25.0-next.5",
|
|
30
|
+
"@elliemae/ds-datagrids": "3.25.0-next.5",
|
|
31
|
+
"@elliemae/ds-chat-tile": "3.25.0-next.5",
|
|
32
|
+
"@elliemae/ds-chip": "3.25.0-next.5",
|
|
33
|
+
"@elliemae/ds-date-picker": "3.25.0-next.5",
|
|
34
|
+
"@elliemae/ds-date-range-picker": "3.25.0-next.5",
|
|
35
|
+
"@elliemae/ds-date-range-selector": "3.25.0-next.5",
|
|
36
|
+
"@elliemae/ds-date-time-picker": "3.25.0-next.5",
|
|
37
|
+
"@elliemae/ds-date-time-recurrence-picker": "3.25.0-next.5",
|
|
38
|
+
"@elliemae/ds-csv-converter": "3.25.0-next.5",
|
|
39
|
+
"@elliemae/ds-dataviz-pie": "3.25.0-next.5",
|
|
40
|
+
"@elliemae/ds-drag-and-drop": "3.25.0-next.5",
|
|
41
|
+
"@elliemae/ds-dropdownmenu": "3.25.0-next.5",
|
|
42
|
+
"@elliemae/ds-decision-graph": "3.25.0-next.5",
|
|
43
|
+
"@elliemae/ds-dataviz": "3.25.0-next.5",
|
|
44
|
+
"@elliemae/ds-filterbar": "3.25.0-next.5",
|
|
45
|
+
"@elliemae/ds-form": "3.25.0-next.5",
|
|
46
|
+
"@elliemae/ds-form-date-range-picker": "3.25.0-next.5",
|
|
47
|
+
"@elliemae/ds-form-date-time-picker": "3.25.0-next.5",
|
|
48
|
+
"@elliemae/ds-form-layout-blocks": "3.25.0-next.5",
|
|
49
|
+
"@elliemae/ds-dialog": "3.25.0-next.5",
|
|
50
|
+
"@elliemae/ds-dropzone": "3.25.0-next.5",
|
|
51
|
+
"@elliemae/ds-grid": "3.25.0-next.5",
|
|
52
|
+
"@elliemae/ds-fast-list": "3.25.0-next.5",
|
|
53
|
+
"@elliemae/ds-header": "3.25.0-next.5",
|
|
54
|
+
"@elliemae/ds-form-layout-label": "3.25.0-next.5",
|
|
55
|
+
"@elliemae/ds-group-box": "3.25.0-next.5",
|
|
56
|
+
"@elliemae/ds-icon": "3.25.0-next.5",
|
|
57
|
+
"@elliemae/ds-hooks-fontsize-detector": "3.25.0-next.5",
|
|
58
|
+
"@elliemae/ds-icons": "3.25.0-next.5",
|
|
59
|
+
"@elliemae/ds-imagelibrarymodal": "3.25.0-next.5",
|
|
60
|
+
"@elliemae/ds-hooks-fontsize-media": "3.25.0-next.5",
|
|
61
|
+
"@elliemae/ds-global-header": "3.25.0-next.5",
|
|
62
|
+
"@elliemae/ds-indeterminate-progress-indicator": "3.25.0-next.5",
|
|
63
|
+
"@elliemae/ds-label-value": "3.25.0-next.5",
|
|
64
|
+
"@elliemae/ds-image": "3.25.0-next.5",
|
|
65
|
+
"@elliemae/ds-menu": "3.25.0-next.5",
|
|
66
|
+
"@elliemae/ds-list-section-header": "3.25.0-next.5",
|
|
67
|
+
"@elliemae/ds-loading-indicator": "3.25.0-next.5",
|
|
68
|
+
"@elliemae/ds-mini-toolbar": "3.25.0-next.5",
|
|
69
|
+
"@elliemae/ds-modal": "3.25.0-next.5",
|
|
70
|
+
"@elliemae/ds-modal-slide": "3.25.0-next.5",
|
|
71
|
+
"@elliemae/ds-menu-items": "3.25.0-next.5",
|
|
72
|
+
"@elliemae/ds-number-range-field": "3.25.0-next.5",
|
|
73
|
+
"@elliemae/ds-page-header": "3.25.0-next.5",
|
|
74
|
+
"@elliemae/ds-page-header-v1": "3.25.0-next.5",
|
|
75
|
+
"@elliemae/ds-page-header-v2": "3.25.0-next.5",
|
|
76
|
+
"@elliemae/ds-left-navigation": "3.25.0-next.5",
|
|
77
|
+
"@elliemae/ds-notification-badge": "3.25.0-next.5",
|
|
78
|
+
"@elliemae/ds-pills": "3.25.0-next.5",
|
|
79
|
+
"@elliemae/ds-pagination": "3.25.0-next.5",
|
|
80
|
+
"@elliemae/ds-popover": "3.25.0-next.5",
|
|
81
|
+
"@elliemae/ds-popper": "3.25.0-next.5",
|
|
82
|
+
"@elliemae/ds-popperjs": "3.25.0-next.5",
|
|
83
|
+
"@elliemae/ds-page-number": "3.25.0-next.5",
|
|
84
|
+
"@elliemae/ds-read-more": "3.25.0-next.5",
|
|
85
|
+
"@elliemae/ds-query-builder": "3.25.0-next.5",
|
|
86
|
+
"@elliemae/ds-page-layout": "3.25.0-next.5",
|
|
87
|
+
"@elliemae/ds-ribbon": "3.25.0-next.5",
|
|
88
|
+
"@elliemae/ds-search-field": "3.25.0-next.5",
|
|
89
|
+
"@elliemae/ds-separator": "3.25.0-next.5",
|
|
90
|
+
"@elliemae/ds-progress-indicator": "3.25.0-next.5",
|
|
91
|
+
"@elliemae/ds-shuttle": "3.25.0-next.5",
|
|
92
|
+
"@elliemae/ds-skeleton": "3.25.0-next.5",
|
|
93
|
+
"@elliemae/ds-mobile": "3.25.0-next.5",
|
|
94
|
+
"@elliemae/ds-resizeable-container": "3.25.0-next.5",
|
|
95
|
+
"@elliemae/ds-spinner": "3.25.0-next.5",
|
|
96
|
+
"@elliemae/ds-shuttle-v2": "3.25.0-next.5",
|
|
97
|
+
"@elliemae/ds-side-panel": "3.25.0-next.5",
|
|
98
|
+
"@elliemae/ds-square-indicator": "3.25.0-next.5",
|
|
99
|
+
"@elliemae/ds-system": "3.25.0-next.5",
|
|
100
|
+
"@elliemae/ds-tabs": "3.25.0-next.5",
|
|
101
|
+
"@elliemae/ds-slider": "3.25.0-next.5",
|
|
102
|
+
"@elliemae/ds-stepper": "3.25.0-next.5",
|
|
103
|
+
"@elliemae/ds-test-utils": "3.25.0-next.5",
|
|
104
|
+
"@elliemae/ds-svg": "3.25.0-next.5",
|
|
105
|
+
"@elliemae/ds-toolbar": "3.25.0-next.5",
|
|
106
|
+
"@elliemae/ds-text-wrapper": "3.25.0-next.5",
|
|
107
|
+
"@elliemae/ds-tooltip": "3.25.0-next.5",
|
|
108
|
+
"@elliemae/ds-time-picker": "3.25.0-next.5",
|
|
109
|
+
"@elliemae/ds-toast": "3.25.0-next.5",
|
|
110
|
+
"@elliemae/ds-treeview": "3.25.0-next.5",
|
|
111
|
+
"@elliemae/ds-transition": "3.25.0-next.5",
|
|
112
|
+
"@elliemae/ds-truncated-tooltip-text": "3.25.0-next.5",
|
|
113
|
+
"@elliemae/ds-toolbar-v2": "3.25.0-next.5",
|
|
114
|
+
"@elliemae/ds-uploader": "3.25.0-next.5",
|
|
115
|
+
"@elliemae/ds-utilities": "3.25.0-next.5",
|
|
116
|
+
"@elliemae/ds-truncated-expandable-text": "3.25.0-next.5",
|
|
117
|
+
"@elliemae/ds-wizard": "3.25.0-next.5",
|
|
118
|
+
"@elliemae/ds-wysiwygeditor": "3.25.0-next.5",
|
|
119
|
+
"@elliemae/ds-zipcode-search": "3.25.0-next.5",
|
|
120
|
+
"@elliemae/ds-typography": "3.25.0-next.5",
|
|
121
|
+
"@elliemae/ds-tree-model": "3.25.0-next.5",
|
|
122
|
+
"@elliemae/ds-virtual-list": "3.25.0-next.5",
|
|
123
|
+
"@elliemae/ds-zoom": "3.25.0-next.5"
|
|
124
124
|
}
|
|
125
125
|
}
|
/package/{ds-number-range-field → ds-eol/ds-number-range-field}/NumberRangeField.func.spec.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|