dimsum-e2e-tests 3.57.0-next.2 → 3.57.0-next.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +108 -0
- package/ds-accordion/DSAccordionCO.js +1 -2
- package/ds-accordion/slots/DSAccordion.slots.func.spec.js +12 -0
- package/ds-card-navigation/CardNavigationCO.js +50 -0
- package/ds-card-navigation/DSCardNavigation.slots.func.spec.js +127 -0
- package/ds-card-navigation/DSCardNavigation.slots.visual.spec.js +26 -0
- package/ds-data-table-async/DSDataTableCO.js +6 -1
- package/ds-data-table-async/components/FilterBarCO.js +8 -0
- package/ds-data-table-async/components/FiltersCO.js +8 -0
- package/ds-data-table-async/filters/DSDataTable.free-text-search.keyboard.func.spec.js +70 -5
- package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +3 -3
- package/ds-data-table-async/select/DSDataTable.select.func.spec.js +1 -1
- package/ds-data-table-async/slots/DSDataTable.slots.func.spec.js +40 -0
- package/ds-data-table-async/slots/DSDataTable.slots.visual.spec.js +19 -0
- package/ds-dialog/DSDialog.visual.spec.js +1 -1
- package/ds-dialog/DSDialogCO.js +5 -13
- package/ds-dialog/axe-core/DSDialog.error.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.info.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.scroll-body.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.success.axe-core.func.spec.js +24 -0
- package/ds-dialog/axe-core/DSDialog.warning.axe-core.spec.func.js +24 -0
- package/ds-form-combobox-multi/DSComboboxMultiCO.js +80 -1
- package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.func.spec.js +100 -0
- package/ds-form-combobox-multi/slots/DSComboboxMulti.slots.visual.spec.js +51 -0
- package/ds-form-combobox-single/DSComboboxSingleCO.js +16 -14
- package/ds-form-combobox-single/slots/DSComboboxSingle.slots.func.spec.js +65 -35
- package/ds-form-combobox-single/slots/DSComboboxSingle.slots.visual.spec.js +53 -0
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItem.axe-core.func.spec.js +4 -1
- package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +4 -0
- package/{ds-toggle → ds-form-toggle}/DSToggle.axe-core.func.spec.js +6 -2
- package/{ds-toggle → ds-form-toggle}/DSToggle.func.spec.js +13 -8
- package/{ds-toggle → ds-form-toggle}/DSToggle.visual.spec.js +2 -2
- package/{ds-toggle → ds-form-toggle}/DSToggleCO.js +1 -1
- package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +1 -2
- package/ds-read-more/DSReadMore.width-change.visual.spec.js +85 -0
- package/package.json +187 -187
- package/paths.js +2 -0
- package/ds-dialog/DSDialog.smoke.spec.js +0 -133
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,114 @@
|
|
|
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.57.0-next.22 (2025-11-04)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- ds-read-more:: add visual test for 1 line use case [PUI-17309](https://jira.elliemae.io/browse/PUI-17309) ([#7730](https://git.elliemae.io/platform-ui/dimsum/issues/7730)) ([7033077](https://git.elliemae.io/platform-ui/dimsum/commit/703307710918421df948e8272a3e07f95340785a))
|
|
11
|
+
|
|
12
|
+
## [3.57.0-next.21](https://git.elliemae.io/platform-ui/dimsum/compare/v3.57.0-next.20...v3.57.0-next.21) (2025-10-31)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
15
|
+
|
|
16
|
+
## 3.57.0-next.20 (2025-10-31)
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- ds-form-combobox:: tabindex -1 for menue items restored ([#7733](https://git.elliemae.io/platform-ui/dimsum/issues/7733)) ([4509365](https://git.elliemae.io/platform-ui/dimsum/commit/4509365665582440236798bc57504ff7128d13e0))
|
|
21
|
+
|
|
22
|
+
## [3.57.0-next.19](https://git.elliemae.io/platform-ui/dimsum/compare/v3.57.0-next.18...v3.57.0-next.19) (2025-10-31)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
25
|
+
|
|
26
|
+
## [3.57.0-next.18](https://git.elliemae.io/platform-ui/dimsum/compare/v3.57.0-next.17...v3.57.0-next.18) (2025-10-30)
|
|
27
|
+
|
|
28
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
29
|
+
|
|
30
|
+
## 3.57.0-next.17 (2025-10-30)
|
|
31
|
+
|
|
32
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
33
|
+
|
|
34
|
+
## [3.57.0-next.16](https://git.elliemae.io/platform-ui/dimsum/compare/v3.57.0-next.15...v3.57.0-next.16) (2025-10-30)
|
|
35
|
+
|
|
36
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
37
|
+
|
|
38
|
+
## 3.57.0-next.15 (2025-10-29)
|
|
39
|
+
|
|
40
|
+
### Bug Fixes
|
|
41
|
+
|
|
42
|
+
- ds-form-input-text:: restored focus tracking logic per regression [PUI-17351](https://jira.elliemae.io/browse/PUI-17351) ([#7728](https://git.elliemae.io/platform-ui/dimsum/issues/7728)) ([b08d9c8](https://git.elliemae.io/platform-ui/dimsum/commit/b08d9c8b21fa3de563c041067d3d83950d11eac4))
|
|
43
|
+
|
|
44
|
+
## 3.57.0-next.14 (2025-10-29)
|
|
45
|
+
|
|
46
|
+
### Bug Fixes
|
|
47
|
+
|
|
48
|
+
- ds-data-table:: fixed axe-core unit test ([#7727](https://git.elliemae.io/platform-ui/dimsum/issues/7727)) ([93a1929](https://git.elliemae.io/platform-ui/dimsum/commit/93a19293301bd564cc75b27e8c7367c554b6c123))
|
|
49
|
+
|
|
50
|
+
## 3.57.0-next.13 (2025-10-29)
|
|
51
|
+
|
|
52
|
+
### Bug Fixes
|
|
53
|
+
|
|
54
|
+
- ds-form-input-text:: fixed unit tests ([#7721](https://git.elliemae.io/platform-ui/dimsum/issues/7721)) ([66970ab](https://git.elliemae.io/platform-ui/dimsum/commit/66970abea2be7aba90c7231c9feb7b873b8c819a))
|
|
55
|
+
|
|
56
|
+
## 3.57.0-next.12 (2025-10-23)
|
|
57
|
+
|
|
58
|
+
### Bug Fixes
|
|
59
|
+
|
|
60
|
+
- ds-mobile:: mobile card update ([#7702](https://git.elliemae.io/platform-ui/dimsum/issues/7702)) ([3c718ae](https://git.elliemae.io/platform-ui/dimsum/commit/3c718ae2b97b77f9eefbd262eb093f22cc21a4fd))
|
|
61
|
+
|
|
62
|
+
## 3.57.0-next.11 (2025-10-23)
|
|
63
|
+
|
|
64
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
65
|
+
|
|
66
|
+
## 3.57.0-next.10 (2025-10-21)
|
|
67
|
+
|
|
68
|
+
### Bug Fixes
|
|
69
|
+
|
|
70
|
+
- ds-data-table:: adding a slot for the popover wrapper [PUI-17259](https://jira.elliemae.io/browse/PUI-17259) ([#7700](https://git.elliemae.io/platform-ui/dimsum/issues/7700)) ([e841c77](https://git.elliemae.io/platform-ui/dimsum/commit/e841c776c9c1c203056bbdf7dcd8196175184007))
|
|
71
|
+
|
|
72
|
+
## 3.57.0-next.9 (2025-10-21)
|
|
73
|
+
|
|
74
|
+
### Features
|
|
75
|
+
|
|
76
|
+
- dimsum:: third parties from catalog + mobile removed polished [PUI-17293](https://jira.elliemae.io/browse/PUI-17293) ([#7696](https://git.elliemae.io/platform-ui/dimsum/issues/7696)) ([8b060f7](https://git.elliemae.io/platform-ui/dimsum/commit/8b060f75541a9ed33f686636f0830d7a47299367))
|
|
77
|
+
|
|
78
|
+
## 3.57.0-next.8 (2025-10-21)
|
|
79
|
+
|
|
80
|
+
### Bug Fixes
|
|
81
|
+
|
|
82
|
+
- ds-floating-context:: removed default role complementary [PUI-16416](https://jira.elliemae.io/browse/PUI-16416) ([#7691](https://git.elliemae.io/platform-ui/dimsum/issues/7691)) ([fa86dbc](https://git.elliemae.io/platform-ui/dimsum/commit/fa86dbc94423f829e19fc7f3c01b83fa99d067f6))
|
|
83
|
+
|
|
84
|
+
## 3.57.0-next.7 (2025-10-20)
|
|
85
|
+
|
|
86
|
+
### Features
|
|
87
|
+
|
|
88
|
+
- ds-shuttle-v2:: ts testing [PUI-16342](https://jira.elliemae.io/browse/PUI-16342) ([#7695](https://git.elliemae.io/platform-ui/dimsum/issues/7695)) ([2213170](https://git.elliemae.io/platform-ui/dimsum/commit/22131708777560dc3342270a036dcb7ee91dfff7))
|
|
89
|
+
|
|
90
|
+
## 3.57.0-next.6 (2025-10-16)
|
|
91
|
+
|
|
92
|
+
### Features
|
|
93
|
+
|
|
94
|
+
- ds-shuttle-v2:: dimsum compliace constant relocation [PUI-16342](https://jira.elliemae.io/browse/PUI-16342) ([#7694](https://git.elliemae.io/platform-ui/dimsum/issues/7694)) ([a2ae67f](https://git.elliemae.io/platform-ui/dimsum/commit/a2ae67fc72eece35752ff2cc83d0e65d1e127c06))
|
|
95
|
+
|
|
96
|
+
## 3.57.0-next.5 (2025-10-15)
|
|
97
|
+
|
|
98
|
+
### Bug Fixes
|
|
99
|
+
|
|
100
|
+
- ds-accordion:: add functional tests for lang attribute customization [PUI-14885](https://jira.elliemae.io/browse/PUI-14885) ([#7692](https://git.elliemae.io/platform-ui/dimsum/issues/7692)) ([777e42e](https://git.elliemae.io/platform-ui/dimsum/commit/777e42ee9bdefb3e2b91eaa1fb51633dd8853d3b))
|
|
101
|
+
|
|
102
|
+
## 3.57.0-next.4 (2025-10-13)
|
|
103
|
+
|
|
104
|
+
### Features
|
|
105
|
+
|
|
106
|
+
- ds-shuttle-v2:: dimsum compliance [PUI-16342](https://jira.elliemae.io/browse/PUI-16342) ([#7687](https://git.elliemae.io/platform-ui/dimsum/issues/7687)) ([2408054](https://git.elliemae.io/platform-ui/dimsum/commit/2408054f546d9cd01d138edf57321b4317b98aa4))
|
|
107
|
+
|
|
108
|
+
## 3.57.0-next.3 (2025-10-13)
|
|
109
|
+
|
|
110
|
+
### Bug Fixes
|
|
111
|
+
|
|
112
|
+
- ds-form-layout-blocks:: updated e2e test for required [PUI-10970](https://jira.elliemae.io/browse/PUI-10970) ([#7671](https://git.elliemae.io/platform-ui/dimsum/issues/7671)) ([67a471b](https://git.elliemae.io/platform-ui/dimsum/commit/67a471b30a92e03b0d6a7fb9ad8cfe45c2692c71))
|
|
113
|
+
|
|
6
114
|
## 3.57.0-next.2 (2025-10-13)
|
|
7
115
|
|
|
8
116
|
### Bug Fixes
|
|
@@ -139,8 +139,7 @@ export default class DSAccordionCO extends PageObject {
|
|
|
139
139
|
return $$('[data-dimsum-slot="dsAccordionItemContentContainer"]')[index];
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
static async
|
|
143
|
-
// not used on example
|
|
142
|
+
static async getAccordionItemHeaderSecondaryTitleSlotByIndex(index = 0) {
|
|
144
143
|
return $$('[data-dimsum-slot="dsAccordionItemHeaderSecondaryTitle"]')[index];
|
|
145
144
|
}
|
|
146
145
|
|
|
@@ -19,6 +19,7 @@ if (
|
|
|
19
19
|
const itemHeaderAddon = await DSAccordionCO.getAccordionItemHeaderAddonSlotByIndex();
|
|
20
20
|
const itemHeaderContainer = await DSAccordionCO.getAccordionItemHeaderContainerSlotByIndex();
|
|
21
21
|
const headerPrimaryTitle = await DSAccordionCO.getAccordionItemHeaderPrimaryTitleSlotByIndex();
|
|
22
|
+
const headerSecondaryTitle = await DSAccordionCO.getAccordionItemHeaderSecondaryTitleSlotByIndex();
|
|
22
23
|
const headerTitlesContainer = await DSAccordionCO.getAccordionItemHeaderTitlesContainerSlotByIndex();
|
|
23
24
|
await itemHeader.click();
|
|
24
25
|
const itemContentContainer = await DSAccordionCO.getAccordionItemContentContainerSlotByIndex();
|
|
@@ -30,6 +31,7 @@ if (
|
|
|
30
31
|
await expect(itemHeaderContainer).toHaveAttribute('aria-label', 'im itemheadercontainer aria');
|
|
31
32
|
await expect(itemContentContainer).toHaveAttribute('aria-label', 'im itemcontentcontainer aria');
|
|
32
33
|
await expect(headerPrimaryTitle).toHaveAttribute('aria-label', 'im itemheaderprimarytitle aria');
|
|
34
|
+
await expect(headerSecondaryTitle).toHaveAttribute('aria-label', 'im itemheadersecondarytitle aria');
|
|
33
35
|
await expect(headerTitlesContainer).toHaveAttribute('aria-label', 'im itemheadertitlecontainer aria');
|
|
34
36
|
});
|
|
35
37
|
it('02: should have a custom data-testid for each slot', async () => {
|
|
@@ -39,6 +41,7 @@ if (
|
|
|
39
41
|
const itemHeaderAddon = await DSAccordionCO.getAccordionItemHeaderAddonSlotByIndex();
|
|
40
42
|
const itemHeaderContainer = await DSAccordionCO.getAccordionItemHeaderContainerSlotByIndex();
|
|
41
43
|
const headerPrimaryTitle = await DSAccordionCO.getAccordionItemHeaderPrimaryTitleSlotByIndex();
|
|
44
|
+
const headerSecondaryTitle = await DSAccordionCO.getAccordionItemHeaderSecondaryTitleSlotByIndex();
|
|
42
45
|
const headerTitlesContainer = await DSAccordionCO.getAccordionItemHeaderTitlesContainerSlotByIndex();
|
|
43
46
|
const itemContentContainer = await DSAccordionCO.getAccordionItemContentContainerSlotByIndex();
|
|
44
47
|
await itemContentContainer.waitForDisplayed();
|
|
@@ -49,7 +52,16 @@ if (
|
|
|
49
52
|
await expect(itemHeaderContainer).toHaveAttribute('data-testid', 'im itemheadercontainer data');
|
|
50
53
|
await expect(itemContentContainer).toHaveAttribute('data-testid', 'im itemcontentcontainer data');
|
|
51
54
|
await expect(headerPrimaryTitle).toHaveAttribute('data-testid', 'im itemheaderprimarytitle data');
|
|
55
|
+
await expect(headerSecondaryTitle).toHaveAttribute('data-testid', 'im itemheadersecondarytitle data');
|
|
52
56
|
await expect(headerTitlesContainer).toHaveAttribute('data-testid', 'im itemheadertitlecontainer data');
|
|
53
57
|
});
|
|
58
|
+
it('03: should have a custom lang attribute for header, primary and secondary titles', async () => {
|
|
59
|
+
const headerPrimaryTitle = await DSAccordionCO.getAccordionItemHeaderPrimaryTitleSlotByIndex();
|
|
60
|
+
const headerSecondaryTitle = await DSAccordionCO.getAccordionItemHeaderSecondaryTitleSlotByIndex();
|
|
61
|
+
const itemHeader = await DSAccordionCO.getAccordionItemHeaderSlotByIndex();
|
|
62
|
+
await expect(headerPrimaryTitle).toHaveAttribute('lang', 'en-US');
|
|
63
|
+
await expect(headerSecondaryTitle).toHaveAttribute('lang', 'es-ES');
|
|
64
|
+
await expect(itemHeader).toHaveAttribute('lang', 'en-US');
|
|
65
|
+
});
|
|
54
66
|
});
|
|
55
67
|
}
|
|
@@ -8,6 +8,8 @@ export default class CardNavigation extends PageObject {
|
|
|
8
8
|
|
|
9
9
|
static textWrapURL = new Urlbuilder(PATH_E2E_CARD_NAVIGATION, 'wrap-text-test');
|
|
10
10
|
|
|
11
|
+
static slotsTest = new Urlbuilder(PATH_E2E_CARD_NAVIGATION, 'slots-test');
|
|
12
|
+
|
|
11
13
|
static getDescription() {
|
|
12
14
|
return $('[data-testid="ds-card-navigation--description"]');
|
|
13
15
|
}
|
|
@@ -20,6 +22,54 @@ export default class CardNavigation extends PageObject {
|
|
|
20
22
|
return $$('[data-testid="ds-button"]')[index];
|
|
21
23
|
}
|
|
22
24
|
|
|
25
|
+
static getCardNavigationActionsSlotByIndex(index = 0) {
|
|
26
|
+
return $$('[data-dimsum-slot="dsCardnavigationActions"]')[index];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static getCardNavigationActionButtonSlotByIndex(index = 0) {
|
|
30
|
+
return $$('[data-dimsum-parent-slot="dsCardnavigationActionButton"]')[index];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static getCardNavigationButtonWrapperSlotByIndex(index = 0) {
|
|
34
|
+
return $$('[data-dimsum-slot="dsCardnavigationButtonWrapper"]')[index];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static getCardNavigationCentralContentSlotByIndex(index = 0) {
|
|
38
|
+
return $$('[data-dimsum-slot="dsCardnavigationCentralContent"]')[index];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static getCardNavigationContentSlotByIndex(index = 0) {
|
|
42
|
+
return $$('[data-dimsum-slot="dsCardnavigationContent"]')[index];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static getCardNavigationDescriptionTextSlotByIndex(index = 0) {
|
|
46
|
+
return $$('[data-dimsum-parent-slot="dsCardnavigationDescriptionText"]')[index];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static getCardNavigationInteractiveElementRegionSlotByIndex(index = 0) {
|
|
50
|
+
return $$('[data-dimsum-slot="dsCardnavigationInteractiveElementRegion"]')[index];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
static getCardNavigationTitleSlotByIndex(index = 0) {
|
|
54
|
+
return $$('[data-dimsum-slot="dsCardnavigationTitle"]')[index];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static getCardNavigationRootSlotByIndex(index = 0) {
|
|
58
|
+
return $$('[data-dimsum-slot="dsCardnavigationRoot"]')[index];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static getCardNavigationTitleTypographySlotByIndex(index = 0) {
|
|
62
|
+
return $$('[data-dimsum-parent-slot="dsCardnavigationTitleTypography"]')[index];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static getCardNavigationTitleWrapperSlotByIndex(index = 0) {
|
|
66
|
+
return $$('[data-dimsum-slot="dsCardnavigationTitleWrapper"]')[index];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static getCardNavigationTypeSlotByIndex(index = 0) {
|
|
70
|
+
return $$('[data-dimsum-slot="dsCardnavigationType"]')[index];
|
|
71
|
+
}
|
|
72
|
+
|
|
23
73
|
// Snapshots
|
|
24
74
|
static snapshotPath(example = 'truncated-text') {
|
|
25
75
|
return PageObject.getSnapshotPathBuilder('DSCardNavigation', example, 'ds-card-navigation');
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
2
|
+
/* eslint-disable max-len */
|
|
3
|
+
import CardNavigationCO from './CardNavigationCO';
|
|
4
|
+
|
|
5
|
+
if (
|
|
6
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
7
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
8
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
9
|
+
browser.capabilities.browserName === 'Chrome'
|
|
10
|
+
) {
|
|
11
|
+
describe('PUI-17279: CardNavigation: Slots -Func', () => {
|
|
12
|
+
before('loading page', async () => {
|
|
13
|
+
const errorOnGo = await CardNavigationCO.slotsTest.go();
|
|
14
|
+
if (errorOnGo) throw errorOnGo;
|
|
15
|
+
});
|
|
16
|
+
it('01: should have a custom aria-* for each slot', async () => {
|
|
17
|
+
const cardNavActions = await (
|
|
18
|
+
await CardNavigationCO.getCardNavigationActionsSlotByIndex()
|
|
19
|
+
).getAttribute('aria-label');
|
|
20
|
+
const cardNavActionButton = await (
|
|
21
|
+
await CardNavigationCO.getCardNavigationActionButtonSlotByIndex()
|
|
22
|
+
).getAttribute('aria-label');
|
|
23
|
+
const cardNavButtonWrapper = await (
|
|
24
|
+
await CardNavigationCO.getCardNavigationButtonWrapperSlotByIndex()
|
|
25
|
+
).getAttribute('aria-label');
|
|
26
|
+
const cardNavCentralContent = await (
|
|
27
|
+
await CardNavigationCO.getCardNavigationCentralContentSlotByIndex()
|
|
28
|
+
).getAttribute('aria-label');
|
|
29
|
+
const cardNavContent = await (
|
|
30
|
+
await CardNavigationCO.getCardNavigationContentSlotByIndex()
|
|
31
|
+
).getAttribute('aria-label');
|
|
32
|
+
const cardNavDescText = await (
|
|
33
|
+
await CardNavigationCO.getCardNavigationDescriptionTextSlotByIndex()
|
|
34
|
+
).getAttribute('aria-label');
|
|
35
|
+
const cardNavInteractElemReg = await (
|
|
36
|
+
await CardNavigationCO.getCardNavigationInteractiveElementRegionSlotByIndex()
|
|
37
|
+
).getAttribute('aria-label');
|
|
38
|
+
const cardNavTitle = await (
|
|
39
|
+
await CardNavigationCO.getCardNavigationTitleSlotByIndex()
|
|
40
|
+
).getAttribute('aria-label');
|
|
41
|
+
const cardNavRoot = await (await CardNavigationCO.getCardNavigationRootSlotByIndex()).getAttribute('aria-label');
|
|
42
|
+
const cardNavTitleTypography = await (
|
|
43
|
+
await CardNavigationCO.getCardNavigationTitleTypographySlotByIndex()
|
|
44
|
+
).getAttribute('aria-label');
|
|
45
|
+
const cardNavTitleWrapper = await (
|
|
46
|
+
await CardNavigationCO.getCardNavigationTitleWrapperSlotByIndex()
|
|
47
|
+
).getAttribute('aria-label');
|
|
48
|
+
const cardNavType = await (await CardNavigationCO.getCardNavigationTypeSlotByIndex()).getAttribute('aria-label');
|
|
49
|
+
await expect(cardNavActions).toEqual('actions aria');
|
|
50
|
+
await expect(cardNavActionButton).toEqual('actionbutton aria');
|
|
51
|
+
await expect(cardNavButtonWrapper).toEqual('buttonwrapper aria');
|
|
52
|
+
await expect(cardNavCentralContent).toEqual('centralcontent aria');
|
|
53
|
+
await expect(cardNavContent).toEqual('content aria');
|
|
54
|
+
await expect(cardNavDescText).toEqual('descriptiontext aria');
|
|
55
|
+
await expect(cardNavInteractElemReg).toEqual('interactiveelemregion aria');
|
|
56
|
+
await expect(cardNavTitle).toEqual('title aria');
|
|
57
|
+
await expect(cardNavRoot).toEqual('root aria');
|
|
58
|
+
await expect(cardNavTitleTypography).toEqual('titletypography aria');
|
|
59
|
+
await expect(cardNavTitleWrapper).toEqual('titlewrapper aria');
|
|
60
|
+
await expect(cardNavType).toEqual('type aria');
|
|
61
|
+
});
|
|
62
|
+
it('02: should have a custom data-testid for each slot', async () => {
|
|
63
|
+
const cardNavActions = await (
|
|
64
|
+
await CardNavigationCO.getCardNavigationActionsSlotByIndex()
|
|
65
|
+
).getAttribute('data-testid');
|
|
66
|
+
const cardNavActionButton = await (
|
|
67
|
+
await CardNavigationCO.getCardNavigationActionButtonSlotByIndex()
|
|
68
|
+
).getAttribute('data-testid');
|
|
69
|
+
const cardNavButtonWrapper = await (
|
|
70
|
+
await CardNavigationCO.getCardNavigationButtonWrapperSlotByIndex()
|
|
71
|
+
).getAttribute('data-testid');
|
|
72
|
+
const cardNavCentralContent = await (
|
|
73
|
+
await CardNavigationCO.getCardNavigationCentralContentSlotByIndex()
|
|
74
|
+
).getAttribute('data-testid');
|
|
75
|
+
const cardNavContent = await (
|
|
76
|
+
await CardNavigationCO.getCardNavigationContentSlotByIndex()
|
|
77
|
+
).getAttribute('data-testid');
|
|
78
|
+
const cardNavDescText = await (
|
|
79
|
+
await CardNavigationCO.getCardNavigationDescriptionTextSlotByIndex()
|
|
80
|
+
).getAttribute('data-testid');
|
|
81
|
+
const cardNavInteractElemReg = await (
|
|
82
|
+
await CardNavigationCO.getCardNavigationInteractiveElementRegionSlotByIndex()
|
|
83
|
+
).getAttribute('data-testid');
|
|
84
|
+
const cardNavTitle = await (
|
|
85
|
+
await CardNavigationCO.getCardNavigationTitleSlotByIndex()
|
|
86
|
+
).getAttribute('data-testid');
|
|
87
|
+
const cardNavRoot = await (await CardNavigationCO.getCardNavigationRootSlotByIndex()).getAttribute('data-testid');
|
|
88
|
+
const cardNavTitleTypography = await (
|
|
89
|
+
await CardNavigationCO.getCardNavigationTitleTypographySlotByIndex()
|
|
90
|
+
).getAttribute('data-testid');
|
|
91
|
+
const cardNavTitleWrapper = await (
|
|
92
|
+
await CardNavigationCO.getCardNavigationTitleWrapperSlotByIndex()
|
|
93
|
+
).getAttribute('data-testid');
|
|
94
|
+
const cardNavType = await (await CardNavigationCO.getCardNavigationTypeSlotByIndex()).getAttribute('data-testid');
|
|
95
|
+
await expect(cardNavActions).toEqual('actions data');
|
|
96
|
+
await expect(cardNavActionButton).toEqual('actionbutton data');
|
|
97
|
+
await expect(cardNavButtonWrapper).toEqual('buttonwrapper data');
|
|
98
|
+
await expect(cardNavCentralContent).toEqual('centralcontent data');
|
|
99
|
+
await expect(cardNavContent).toEqual('content data');
|
|
100
|
+
await expect(cardNavDescText).toEqual('descriptiontext data');
|
|
101
|
+
await expect(cardNavInteractElemReg).toEqual('interactiveelemregion data');
|
|
102
|
+
await expect(cardNavTitle).toEqual('title data');
|
|
103
|
+
await expect(cardNavRoot).toEqual('root data');
|
|
104
|
+
await expect(cardNavTitleTypography).toEqual('titletypography data');
|
|
105
|
+
await expect(cardNavTitleWrapper).toEqual('titlewrapper data');
|
|
106
|
+
await expect(cardNavType).toEqual('type data');
|
|
107
|
+
});
|
|
108
|
+
it('03: should have a custom lang for each text-containing slot', async () => {
|
|
109
|
+
const cardNavCentralContent = await (
|
|
110
|
+
await CardNavigationCO.getCardNavigationCentralContentSlotByIndex()
|
|
111
|
+
).getAttribute('lang');
|
|
112
|
+
const cardNavContent = await (await CardNavigationCO.getCardNavigationContentSlotByIndex()).getAttribute('lang');
|
|
113
|
+
const cardNavDescText = await (
|
|
114
|
+
await CardNavigationCO.getCardNavigationDescriptionTextSlotByIndex()
|
|
115
|
+
).getAttribute('lang');
|
|
116
|
+
const cardNavTitle = await (await CardNavigationCO.getCardNavigationTitleSlotByIndex()).getAttribute('lang');
|
|
117
|
+
const cardNavTitleTypography = await (
|
|
118
|
+
await CardNavigationCO.getCardNavigationTitleTypographySlotByIndex()
|
|
119
|
+
).getAttribute('lang');
|
|
120
|
+
await expect(cardNavCentralContent).toEqual('es');
|
|
121
|
+
await expect(cardNavContent).toEqual('es');
|
|
122
|
+
await expect(cardNavDescText).toEqual('es');
|
|
123
|
+
await expect(cardNavTitle).toEqual('es');
|
|
124
|
+
await expect(cardNavTitleTypography).toEqual('es');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
2
|
+
/* eslint-disable prettier/prettier */
|
|
3
|
+
/* eslint-disable max-len */
|
|
4
|
+
// import { Key } from 'webdriverio';
|
|
5
|
+
import CardNavigationCO from './CardNavigationCO';
|
|
6
|
+
|
|
7
|
+
if (
|
|
8
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
9
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
10
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
11
|
+
browser.capabilities.browserName === 'Chrome'
|
|
12
|
+
) {
|
|
13
|
+
describe('PUI-17283: CardNavigation: Slots -Visual', () => {
|
|
14
|
+
before('loading page', async () => {
|
|
15
|
+
const errorOnGo = await CardNavigationCO.slotsTest.go();
|
|
16
|
+
if (errorOnGo) throw errorOnGo;
|
|
17
|
+
});
|
|
18
|
+
it('01: should have a custom aria-* for each slot', async () => {
|
|
19
|
+
await browser.eyesOpen();
|
|
20
|
+
const cardNavRoot = await CardNavigationCO.getCardNavigationRootSlotByIndex();
|
|
21
|
+
await cardNavRoot.waitForDisplayed();
|
|
22
|
+
const snapshot = await browser.eyesCheckSnapshot(CardNavigationCO.snapshotPath('cardnav-slots-test'));
|
|
23
|
+
await expect(snapshot).toEqual(0);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
PATH_E2E_DATATABLE_STATES,
|
|
15
15
|
PATH_E2E_DATATABLE_CELL,
|
|
16
16
|
PATH_E2E_DATATABLE_USE_CASES,
|
|
17
|
+
PATH_E2E_DATATABLE_SLOTS,
|
|
17
18
|
} from '../paths';
|
|
18
19
|
import { PageObject, Urlbuilder } from '../helpers';
|
|
19
20
|
import { CellCO } from './components';
|
|
@@ -206,6 +207,10 @@ export default class DataTableCO extends PageObject {
|
|
|
206
207
|
|
|
207
208
|
static integratedExampleWithFilters = new Urlbuilder(PATH_E2E_DATATABLE_USE_CASES, 'integrated-example-with-filters');
|
|
208
209
|
|
|
210
|
+
// Slots
|
|
211
|
+
|
|
212
|
+
static slotsFilters = new Urlbuilder(PATH_E2E_DATATABLE_SLOTS, 'slots-filters');
|
|
213
|
+
|
|
209
214
|
// E2E FOLDER -- TO BE MOVED TO ITS OWN FOLDER
|
|
210
215
|
|
|
211
216
|
static basic = new Urlbuilder(PATH_E2E_DATATABLE, 'basic');
|
|
@@ -218,7 +223,7 @@ export default class DataTableCO extends PageObject {
|
|
|
218
223
|
|
|
219
224
|
static controlledWidthTest = new Urlbuilder(PATH_E2E_DATATABLE, 'controlled-width-test');
|
|
220
225
|
|
|
221
|
-
static customWithDate = new Urlbuilder(PATH_E2E_DATATABLE, 'custom-render-w-date');
|
|
226
|
+
static customWithDate = new Urlbuilder(PATH_E2E_DATATABLE, 'custom-render-w-date-test');
|
|
222
227
|
|
|
223
228
|
static withCombobox = new Urlbuilder(PATH_E2E_DATATABLE, 'with-combobox');
|
|
224
229
|
|
|
@@ -13,6 +13,14 @@ export default class FilterBarCO extends PageObject {
|
|
|
13
13
|
return $('[data-testid="popper-container"]');
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
static getFilterBarMenuWrapper() {
|
|
17
|
+
return $('[data-testid="ds-flyoutmenu-root"]');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static getFilterBarMenuListBox() {
|
|
21
|
+
return $('[data-testid="ds-flyoutmenu-list-wrapper"]');
|
|
22
|
+
}
|
|
23
|
+
|
|
16
24
|
static getClearFilters() {
|
|
17
25
|
return $('//li[@role="menuitem"]//span[contains(text(), "Clear Filters")]/ancestor::li');
|
|
18
26
|
}
|
|
@@ -142,4 +142,12 @@ export default class FiltersCO extends PageObject {
|
|
|
142
142
|
static getFilterPopoverContent = async () => $('[data-testid="ds-datatable-filter-popover-content"]');
|
|
143
143
|
|
|
144
144
|
static getFreeTextSearchInput = async () => $('[data-testid="data-table-filter-free-text-search"]');
|
|
145
|
+
|
|
146
|
+
static getFilterMenuContentSlot = async () => $('[data-dimsum-slot="dsDatatableFilterPopoverContent"]');
|
|
147
|
+
|
|
148
|
+
static getFilterPopoverSlot = async () => $('[data-dimsum-slot="dsDatatableFilterPopover"]');
|
|
149
|
+
|
|
150
|
+
static getFreeTextSearchWrapperSlot = async () => $('[data-dimsum-slot="dsDatatableFreeTextSearchWrapper"]');
|
|
151
|
+
|
|
152
|
+
static getFreeTextSearchFilterSlot = async () => $('[data-dimsum-parent-slot="dsDatatableFreeTextSearchFilter"]');
|
|
145
153
|
}
|
|
@@ -67,7 +67,43 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
67
67
|
await expect(isFilteredJJ).toEqual(true);
|
|
68
68
|
await expect(pill1).toBeDisplayed();
|
|
69
69
|
});
|
|
70
|
-
it('06: should
|
|
70
|
+
it('06: should not clear the filter when the input is empty and press Enter', async () => {
|
|
71
|
+
await browser.keys(Key.Return);
|
|
72
|
+
// await browser.keys([Key.Backspace, Key.Backspace, Key.Backspace, Key.Backspace, Key.Backspace]);
|
|
73
|
+
if (browser.capabilities.browserName === 'Safari') {
|
|
74
|
+
await browser.keys([Key.Command, 'A']);
|
|
75
|
+
} else {
|
|
76
|
+
await browser.keys([Key.Control, 'A']);
|
|
77
|
+
}
|
|
78
|
+
await browser.keys(Key.Delete);
|
|
79
|
+
await browser.keys(Key.Return);
|
|
80
|
+
const freeTextSearchInput = await FiltersCO.getFreeTextSearchInput();
|
|
81
|
+
const results = await RowCO.getRows();
|
|
82
|
+
const filteredLastNames = await DSDataTableCO.getAllColumnResults(results, 2);
|
|
83
|
+
const isFilteredJWick = filteredLastNames.some((name) => name.toLowerCase() === 'jane johnson');
|
|
84
|
+
const isFilteredJJ = filteredLastNames.some((name) => name.toLowerCase() === 'jane wick');
|
|
85
|
+
const pill1 = await FilterBarCO.getPillByText('j');
|
|
86
|
+
await expect(freeTextSearchInput).toBeFocused();
|
|
87
|
+
await expect(isFilteredJWick).toEqual(true);
|
|
88
|
+
await expect(isFilteredJJ).toEqual(true);
|
|
89
|
+
await expect(pill1).toBeDisplayed();
|
|
90
|
+
});
|
|
91
|
+
it('07: should not clear the filter when the input has whitespace and press Enter', async () => {
|
|
92
|
+
await browser.keys(Key.Return);
|
|
93
|
+
await type(' ');
|
|
94
|
+
await browser.keys(Key.Return);
|
|
95
|
+
const freeTextSearchInput = await FiltersCO.getFreeTextSearchInput();
|
|
96
|
+
const results = await RowCO.getRows();
|
|
97
|
+
const filteredLastNames = await DSDataTableCO.getAllColumnResults(results, 2);
|
|
98
|
+
const isFilteredJWick = filteredLastNames.some((name) => name.toLowerCase() === 'jane johnson');
|
|
99
|
+
const isFilteredJJ = filteredLastNames.some((name) => name.toLowerCase() === 'jane wick');
|
|
100
|
+
const pill1 = await FilterBarCO.getPillByText('j');
|
|
101
|
+
await expect(freeTextSearchInput).toBeFocused();
|
|
102
|
+
await expect(isFilteredJWick).toEqual(true);
|
|
103
|
+
await expect(isFilteredJJ).toEqual(true);
|
|
104
|
+
await expect(pill1).toBeDisplayed();
|
|
105
|
+
});
|
|
106
|
+
it('08: should close the filter - Escape', async () => {
|
|
71
107
|
await browser.keys(Key.Return);
|
|
72
108
|
const freeTextPopover = await FiltersCO.getFilterPopoverContent();
|
|
73
109
|
await freeTextPopover.waitForDisplayed();
|
|
@@ -77,14 +113,14 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
77
113
|
await expect(freeTextPopover).not.toBeDisplayed();
|
|
78
114
|
await expect(buttonFirstNameColumn).toBeFocused();
|
|
79
115
|
});
|
|
80
|
-
it('
|
|
116
|
+
it('09: should display "no results found" when no matching rows are found', async () => {
|
|
81
117
|
await browser.keys(Key.Return);
|
|
82
118
|
await type('this is a test');
|
|
83
119
|
await browser.keys(Key.Return);
|
|
84
120
|
const noResults = await DSDataTableCO.getDataTableEmptyStateWrapper();
|
|
85
121
|
const FirstNameColumnHeader = await HeaderCO.getHeaderCellByIndex(1);
|
|
86
122
|
const buttonFirstNameColumn = await FiltersCO.getHeaderCellFilterButtonByHeaderCell(FirstNameColumnHeader, 0);
|
|
87
|
-
const pill1 = await FilterBarCO.getPillByText('
|
|
123
|
+
const pill1 = await FilterBarCO.getPillByText('this is a test');
|
|
88
124
|
await expect(noResults).toBeDisplayedInViewport();
|
|
89
125
|
await expect(buttonFirstNameColumn).toBeFocused();
|
|
90
126
|
await expect(pill1).toBeDisplayed();
|
|
@@ -151,7 +187,36 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
151
187
|
await expect(isFilteredJJ).toEqual(true);
|
|
152
188
|
await expect(pill1).toBeDisplayed();
|
|
153
189
|
});
|
|
154
|
-
it('06: should
|
|
190
|
+
it('06: should not clear the filter when the input is empty and press Enter', async () => {
|
|
191
|
+
await browser.keys(Key.Return);
|
|
192
|
+
await browser.keys(Key.Return);
|
|
193
|
+
const freeTextSearchInput = await FiltersCO.getFreeTextSearchInput();
|
|
194
|
+
const results = await RowCO.getRows();
|
|
195
|
+
const filteredLastNames = await DSDataTableCO.getAllColumnResults(results, 2);
|
|
196
|
+
const isFilteredJWick = filteredLastNames.some((name) => name.toLowerCase() === 'jane johnson');
|
|
197
|
+
const isFilteredJJ = filteredLastNames.some((name) => name.toLowerCase() === 'jane wick');
|
|
198
|
+
const pill1 = await FilterBarCO.getPillByText('j');
|
|
199
|
+
await expect(freeTextSearchInput).toBeFocused();
|
|
200
|
+
await expect(isFilteredJWick).toEqual(true);
|
|
201
|
+
await expect(isFilteredJJ).toEqual(true);
|
|
202
|
+
await expect(pill1).toBeDisplayed();
|
|
203
|
+
});
|
|
204
|
+
it('07: should not clear the filter when the input has whitespace and press Enter', async () => {
|
|
205
|
+
await browser.keys(Key.Return);
|
|
206
|
+
await type(' ');
|
|
207
|
+
await browser.keys(Key.Return);
|
|
208
|
+
const freeTextSearchInput = await FiltersCO.getFreeTextSearchInput();
|
|
209
|
+
const results = await RowCO.getRows();
|
|
210
|
+
const filteredLastNames = await DSDataTableCO.getAllColumnResults(results, 2);
|
|
211
|
+
const isFilteredJWick = filteredLastNames.some((name) => name.toLowerCase() === 'jane johnson');
|
|
212
|
+
const isFilteredJJ = filteredLastNames.some((name) => name.toLowerCase() === 'jane wick');
|
|
213
|
+
const pill1 = await FilterBarCO.getPillByText('j');
|
|
214
|
+
await expect(freeTextSearchInput).toBeFocused();
|
|
215
|
+
await expect(isFilteredJWick).toEqual(true);
|
|
216
|
+
await expect(isFilteredJJ).toEqual(true);
|
|
217
|
+
await expect(pill1).toBeDisplayed();
|
|
218
|
+
});
|
|
219
|
+
it('08: should close the filter - Escape', async () => {
|
|
155
220
|
await browser.keys(Key.Return);
|
|
156
221
|
const freeTextPopover = await FiltersCO.getFilterPopoverContent();
|
|
157
222
|
await freeTextPopover.waitForDisplayed();
|
|
@@ -161,7 +226,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
161
226
|
await expect(freeTextPopover).not.toBeDisplayed();
|
|
162
227
|
await expect(buttonLastNameColumn).toBeFocused();
|
|
163
228
|
});
|
|
164
|
-
it('
|
|
229
|
+
it('09: should display "no results found" when no matching rows are found', async () => {
|
|
165
230
|
await browser.keys(Key.Return);
|
|
166
231
|
await type('this is a test');
|
|
167
232
|
await browser.keys(Key.Return);
|
|
@@ -248,9 +248,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
248
248
|
await pill2.waitForDisplayed();
|
|
249
249
|
const filterBarMenuBtn = await FilterBarCO.getFilterBarDropdownMenuButton();
|
|
250
250
|
await filterBarMenuBtn.click();
|
|
251
|
-
const filterBarMenu = await FilterBarCO.
|
|
251
|
+
const filterBarMenu = await FilterBarCO.getFilterBarMenuListBox();
|
|
252
252
|
await filterBarMenu.waitForDisplayed();
|
|
253
|
-
const clearFilters = await FilterBarCO.
|
|
253
|
+
const clearFilters = await FilterBarCO.getFilterBarDropDownMenuItemByIndex(0);
|
|
254
254
|
await clearFilters.click();
|
|
255
255
|
await expect(pill1).not.toBeDisplayed();
|
|
256
256
|
await expect(pill2).not.toBeDisplayed();
|
|
@@ -272,7 +272,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
272
272
|
await browser.keys([Key.Shift, Key.Tab]);
|
|
273
273
|
await browser.keys([Key.Shift, Key.Tab]);
|
|
274
274
|
await browser.keys(Key.Enter);
|
|
275
|
-
const filterBarMenu = await FilterBarCO.
|
|
275
|
+
const filterBarMenu = await FilterBarCO.getFilterBarMenuListBox();
|
|
276
276
|
await filterBarMenu.waitForDisplayed();
|
|
277
277
|
await browser.keys(Key.Return);
|
|
278
278
|
await expect(pill1).not.toBeDisplayed();
|
|
@@ -5,7 +5,7 @@ import DSDataTableCO from '../DSDataTableCO';
|
|
|
5
5
|
import { HeaderCO, RowCO, FiltersCO } from '../components';
|
|
6
6
|
import { getRadioValue } from '../helpers';
|
|
7
7
|
import { tabStops, isChecked, type } from '../../helpers';
|
|
8
|
-
import DSToggleCO from '../../ds-toggle/DSToggleCO';
|
|
8
|
+
import DSToggleCO from '../../ds-form-toggle/DSToggleCO';
|
|
9
9
|
|
|
10
10
|
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
11
11
|
describe('PUI-7043 - DataTable, Single select disabled selection', () => {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSDataTableCO from '../DSDataTableCO';
|
|
3
|
+
import DSFiltersCO from '../components/FiltersCO';
|
|
4
|
+
|
|
5
|
+
if (
|
|
6
|
+
(!browser.capabilities['ice:options'].isPhone &&
|
|
7
|
+
!browser.capabilities['ice:options'].isTablet &&
|
|
8
|
+
browser.capabilities.browserName === 'chrome') ||
|
|
9
|
+
browser.capabilities.browserName === 'Chrome'
|
|
10
|
+
) {
|
|
11
|
+
describe('PUI-17326 - DataTable:: FreeTextSearch Slots - Func', () => {
|
|
12
|
+
before('loading page', async () => {
|
|
13
|
+
const errorOnGo = await DSDataTableCO.slotsFilters.go();
|
|
14
|
+
if (errorOnGo) throw errorOnGo;
|
|
15
|
+
});
|
|
16
|
+
it('01: should have custom aria-* for each slot', async () => {
|
|
17
|
+
await DSFiltersCO.openFilterPopperByColumnName('name');
|
|
18
|
+
const dataTableFilterPopoverSlot = await DSFiltersCO.getFilterPopoverSlot();
|
|
19
|
+
const dataTableFilterPopoverContent = await DSFiltersCO.getFilterMenuContentSlot();
|
|
20
|
+
const dataTableFreeTextSearchWrapperSlot = await DSFiltersCO.getFreeTextSearchWrapperSlot();
|
|
21
|
+
const dataTableFreeTextSearchFilterSlot = await DSFiltersCO.getFreeTextSearchFilterSlot();
|
|
22
|
+
|
|
23
|
+
await expect(dataTableFilterPopoverSlot).toHaveAttribute('aria-label', 'Filter popover aria');
|
|
24
|
+
await expect(dataTableFilterPopoverContent).toHaveAttribute('aria-label', 'Filter popover content aria');
|
|
25
|
+
await expect(dataTableFreeTextSearchWrapperSlot).toHaveAttribute('aria-label', 'Free text search wrapper aria');
|
|
26
|
+
await expect(dataTableFreeTextSearchFilterSlot).toHaveAttribute('aria-label', 'Free text search input aria');
|
|
27
|
+
});
|
|
28
|
+
it('02: should have custom data-* for each slot', async () => {
|
|
29
|
+
const dataTableFilterPopoverSlot = await DSFiltersCO.getFilterPopoverSlot();
|
|
30
|
+
const dataTableFilterPopoverContent = await DSFiltersCO.getFilterMenuContentSlot();
|
|
31
|
+
const dataTableFreeTextSearchWrapperSlot = await DSFiltersCO.getFreeTextSearchWrapperSlot();
|
|
32
|
+
const dataTableFreeTextSearchFilterSlot = await DSFiltersCO.getFreeTextSearchFilterSlot();
|
|
33
|
+
|
|
34
|
+
await expect(dataTableFilterPopoverSlot).toHaveAttribute('data-testid', 'Filter popover data');
|
|
35
|
+
await expect(dataTableFilterPopoverContent).toHaveAttribute('data-testid', 'Filter popover content data');
|
|
36
|
+
await expect(dataTableFreeTextSearchWrapperSlot).toHaveAttribute('data-testid', 'Free text search wrapper data');
|
|
37
|
+
await expect(dataTableFreeTextSearchFilterSlot).toHaveAttribute('data-testid', 'Free text search input data');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
import DSDataTableCO from '../DSDataTableCO';
|
|
3
|
+
import FiltersCO from '../components/FiltersCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-17327 - DataTable:: FreeTextSearch Slots -Visual', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSDataTableCO.slotsFilters.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
it('01: should display FreeTextSearch with customized slots', async () => {
|
|
12
|
+
await browser.eyesOpen();
|
|
13
|
+
await FiltersCO.openFilterPopperByColumnName('name');
|
|
14
|
+
|
|
15
|
+
const snapshot = await browser.eyesCheckSnapshot(DSDataTableCO.snapshotPath('free-text-search-slots'));
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|