dimsum-e2e-tests 3.50.1-next.9 → 3.51.0-beta.2

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.
Files changed (119) hide show
  1. package/CHANGELOG.md +268 -310
  2. package/ds-autocomplete/DSAutocompleteCO.js +1 -1
  3. package/ds-banner/DSBanner.func.spec.js +55 -0
  4. package/ds-banner/DSBanner.visual.spec.js +14 -0
  5. package/ds-banner/DSBannerCO.js +30 -0
  6. package/ds-breadcrumb/DSBreadcrumb.axe-core.func.spec.js +21 -6
  7. package/ds-breadcrumb/DSBreadcrumb.func.spec.js +69 -40
  8. package/ds-breadcrumb/DSBreadcrumb.visual.spec.js +20 -15
  9. package/ds-breadcrumb/DSBreadcrumbCO.js +17 -1
  10. package/ds-button-v3/DSButtonV3.func.spec.js +22 -0
  11. package/ds-button-v3/DSButtonV3.visual.spec.js +8 -2
  12. package/ds-button-v3/DSButtonV3CO.js +14 -0
  13. package/ds-card-v3/DSCardV3CO.js +10 -10
  14. package/ds-card-v3/global-attributes/DSCardV3.global-attributes.func.spec.js +4 -4
  15. package/ds-comments-card/DSComments.visual.spec.js +3 -4
  16. package/ds-comments-card/DSCommentsCO.js +2 -2
  17. package/ds-controlled-form/ds-combobox/DSCombobox.func.spec.js +1 -0
  18. package/ds-controlled-form/ds-combobox/DSCombobox.smoke.spec.js +4 -56
  19. package/ds-controlled-form/ds-combobox/DSComboboxCO.js +0 -9
  20. package/ds-controlled-form/ds-combobox/creatable/DSCombobox.keyboard-creatable.func.spec.js +3 -0
  21. package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.axe-core.spec.js +0 -1
  22. package/ds-controlled-form/ds-combobox/inline/DSCombobox.inline.keyboard.func.spec.js +5 -0
  23. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.keyboard-multi-select.func.spec.js +6 -68
  24. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.mouse-touch-multi-select.func.spec.js +0 -58
  25. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.multi.visual.spec.js +1 -16
  26. package/ds-controlled-form/ds-combobox/multi-select/DSCombobox.ten-thousand-options.func.spec.js +2 -22
  27. package/ds-controlled-form/ds-combobox/single-select/DSCombobox.keyboard-single-select.func.spec.js +4 -0
  28. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.axe-core.spec.js +85 -0
  29. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.functional.spec.js +242 -0
  30. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.visual.spec.js +115 -0
  31. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePickerCO.js +56 -2
  32. package/ds-controlled-form/ds-controlled-date-range-picker/read-only/DSControlledDateRangePicker.ReadOnly.axe-core.spec.js +17 -0
  33. package/ds-controlled-form/ds-controlled-date-time-picker/DSControlledDateTimePickerCO.js +12 -0
  34. package/ds-controlled-form/ds-controlled-date-time-picker/date-full/DateFull.axe-core.func.spec.js +27 -0
  35. package/ds-controlled-form/ds-controlled-date-time-picker/date-input/DateInput.axe-core.func.spec.js +27 -0
  36. package/ds-controlled-form/ds-controlled-date-time-picker/date-time-full/DateTimeFull.axe-core.func.spec.js +27 -0
  37. package/ds-controlled-form/ds-controlled-date-time-picker/date-time-input/DateTimeInput.axe-core.func.spec.js +27 -0
  38. package/ds-controlled-form/ds-controlled-date-time-picker/time-full/TimeFull.axe-core.func.spec.js +27 -0
  39. package/ds-controlled-form/ds-controlled-date-time-picker/time-input/TimeInput.axe-core.func.spec.js +27 -0
  40. package/ds-controlled-form/ds-controlled-inputgroup/DSControlledInputGroupCO.js +4 -0
  41. package/ds-controlled-form/ds-controlled-inputgroup/autocomplete/DSControlledInputGroup.autocomplete.axe-core.func.spec.js +1 -0
  42. package/ds-controlled-form/ds-controlled-inputgroup/combobox/DSControlledInputGroup.combobox.axe-core.func.spec.js +1 -1
  43. package/ds-controlled-form/ds-controlled-large-input-text/DSLargeInputTextCO.js +4 -4
  44. package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.axe-core.func.spec.js +1 -1
  45. package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.func.spec.js +36 -0
  46. package/ds-controlled-form/ds-controlled-large-input-text/read-only/DSLargeInputText.read-only.visual.spec.js +12 -1
  47. package/ds-controlled-form/ds-input-text/DSInputText.func.spec.js +14 -12
  48. package/ds-controlled-form/react-hook-form/ReactHook.visual.spec.js +1 -0
  49. package/ds-data-table-async/DSDataTable.smoke.spec.js +4 -0
  50. package/ds-data-table-async/basic/DSDataTable.basic.axe-core.func.spec.js +1 -1
  51. package/ds-data-table-async/basic/DSDataTable.usecases.func.spec.js +5 -4
  52. package/ds-data-table-async/basic/DSDataTable.usecases.visual.spec.js +1 -0
  53. package/ds-data-table-async/components/HeaderCO.js +1 -1
  54. package/ds-data-table-async/components/RowCO.js +4 -0
  55. package/ds-data-table-async/dnd/DSDataTable.dnd.visual.spec.js +1 -1
  56. package/ds-data-table-async/filters/DSDataTable.filters-creatable.func.spec.js +4 -0
  57. package/ds-data-table-async/filters/DSDataTable.text-filters.func.spec.js +1 -0
  58. package/ds-data-table-async/select/DSDataTable.select.axe-core.func.spec.js +2 -0
  59. package/ds-data-table-async/select/DSDataTable.select.func.spec.js +2 -86
  60. package/ds-data-table-async/select/DSDataTable.select.shift.func.spec.js +126 -0
  61. package/ds-data-table-async/vissibility/DSDataTable.vissibility.visual.spec.js +6 -0
  62. package/ds-dialog/DSDialog.func.spec.js +14 -14
  63. package/ds-dialog/DSDialogCO.js +1 -1
  64. package/ds-dropdownmenu-v2/DSDDMenuV2.axe-core.func.spec.js +2 -0
  65. package/ds-dropdownmenu-v2/DSDDMenuV2CO.js +6 -2
  66. package/ds-form-combobox-multi/DSComboboxMultiCO.js +2 -9
  67. package/ds-form-combobox-multi/aria-disabled/DSComboboxMulti.aria-disabled.visual.spec.js +2 -11
  68. package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.axe-core.func.spec.js +26 -0
  69. package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.keyboard-nav.func.spec.js +27 -0
  70. package/ds-form-combobox-multi/read-only/DSComboboxMulti.read-only.visual.spec.js +33 -0
  71. package/ds-form-combobox-single/DSComboboxSingleCO.js +2 -9
  72. package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.axe-core.func.spec.js +26 -0
  73. package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.keyboard-nav.func.spec.js +27 -0
  74. package/ds-form-combobox-single/read-only/DSComboboxSingle.read-only.visual.spec.js +33 -0
  75. package/ds-form-layout-blocks/form-layout-block-item/DSFormLayoutBlockItemCO.js +9 -5
  76. package/ds-form-layout-blocks/form-layout-checkbox-group/DSFormLayoutCheckboxGroup.visual.spec.js +1 -1
  77. package/ds-form-layout-blocks/form-layout-checkbox-group/DSFormLayoutCheckboxGroupCO.js +2 -2
  78. package/ds-menu-button/DSMenuButtonCO.js +16 -12
  79. package/ds-menu-button/activable/DSMenuButton.activableMenuItem.func.spec.js +32 -0
  80. package/ds-menu-button/{basic/DSMenuButton.activableMenuItem.func.spec.js → activable/DSMenuButton.activableMenuItem.keyboardnav.func.spec.js} +1 -26
  81. package/ds-menu-button/disabled/DSMenuButton.axe-core.disabled.func.spec.js +20 -0
  82. package/ds-menu-button/disabled/DSMenuButton.disabled.func.spec.js +28 -0
  83. package/ds-menu-button/leftdecorations/DSMenuButton.axe-core.leftDecor.func.spec.js +20 -0
  84. package/ds-menu-button/multiselect/DSMenuButton.axe-core.multiselect.func.spec.js +28 -0
  85. package/ds-menu-button/multiselect/DSMenuButton.multiSelectItem.func.spec.js +34 -0
  86. package/ds-menu-button/{basic/DSMenuButton.multiSelectItem.func.spec.js → multiselect/DSMenuButton.multiSelectItem.keyboardnav.func.spec.js} +0 -29
  87. package/ds-menu-button/singleSelect/DSMenuButton.axe-core.singleSelect.func.spec.js +28 -0
  88. package/ds-menu-button/singleSelect/DSMenuButton.singleSelectItem.func.spec.js +39 -0
  89. package/ds-menu-button/{basic/DSMenuButton.singleSelectItem.func.spec.js → singleSelect/DSMenuButton.singleSelectItem.keyboardnav.func.spec.js} +11 -42
  90. package/ds-menu-button/submenu/DSMenuButton.axe-core.subMenu.func.spec.js +20 -0
  91. package/ds-menu-button/submenu/DSMenuButton.subMenuItem.func.spec.js +42 -0
  92. package/ds-menu-button/{basic/DSMenuButton.subMenuItem.func.spec.js → submenu/DSMenuButton.subMenuItem.keyboardnav.func.spec.js} +1 -38
  93. package/ds-mobile/MobileLoadingPage/MobileLoadingPageCO.js +1 -1
  94. package/ds-notification-badge/DSNotificationBadge.axe-core.func.spec.js +1 -0
  95. package/ds-pills-v2/DSPills.axe-core.func.spec.js +2 -2
  96. package/ds-pills-v2/DSPills.func.spec.js +26 -0
  97. package/ds-pills-v2/DSPills.visual.spec.js +1 -1
  98. package/ds-pills-v2/DSPillsV2CO.js +19 -1
  99. package/ds-pills-v2/selection/DSPills.axe-core.func.spec.js +77 -0
  100. package/ds-pills-v2/selection/DSPills.func.spec.js +155 -0
  101. package/ds-pills-v2/selection/DSPills.visual.spec.js +72 -0
  102. package/ds-query-builder/DSQueryBuilder.visual.spec.js +2 -1
  103. package/ds-query-builder/DSQueryBuilderCO.js +0 -5
  104. package/ds-shuttle-v2/DSShuttleV2CO.js +2 -4
  105. package/ds-shuttle-v2/Dnd/DSShuttleV2.DnD.visual.spec.js +0 -5
  106. package/ds-shuttle-v2/basic/DSShuttleV2.keyboard.func.spec.js +46 -66
  107. package/ds-shuttle-v2/drillingdown/DSShuttleV2.drilldown.kb.func.spec.js +3 -5
  108. package/ds-shuttle-v2/filtering/DSShuttleV2.filter.kb.func.spec.js +1 -7
  109. package/ds-shuttle-v2/globalcheckbox/DSShuttleV2.globalcheckbox.kb.func.spec.js +0 -2
  110. package/ds-shuttle-v2/items/DSShuttleV2.items.kb.func.spec.js +0 -2
  111. package/ds-slider-v2/DSSliderV2CO.js +10 -10
  112. package/ds-toast/DSToastCO.js +1 -1
  113. package/ds-toggle/DSToggle.func.spec.js +21 -18
  114. package/ds-toggle/DSToggle.visual.spec.js +56 -12
  115. package/package.json +119 -119
  116. package/ds-controlled-form/ds-controlled-date-range-picker/DSControlledDateRangePicker.DateInput.visual.spec.js +0 -57
  117. package/ds-menu-button/DSMenuButton.axe-core.func.spec.js +0 -66
  118. /package/ds-controlled-form/ds-controlled-date-time-picker/{date-time-picker → date-time-full}/DateTimePicker.custom.attributes.spec.js +0 -0
  119. /package/ds-controlled-form/ds-controlled-date-time-picker/{date-time-picker → date-time-full}/DateTimePicker.func.spec.js +0 -0
@@ -29,7 +29,7 @@ export default class DSAutocompleteCO extends PageObject {
29
29
  }
30
30
 
31
31
  static async getAutocompleteOptionLabel() {
32
- return $('[data-testid="ds-menu-item-menu-item-label"]');
32
+ return $('[data-testid="ds-menuitem-menu-item-label"]');
33
33
  }
34
34
 
35
35
  static async getAutocompleteOptions() {
@@ -68,4 +68,59 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
68
68
  await expect(closeButton).toBeFocused();
69
69
  });
70
70
  });
71
+
72
+ describe('PUI-15113 - Banner - Slots -Func', () => {
73
+ before('loading page', async () => {
74
+ const errorOnGo = await DSBannerCO.slotsTest.go();
75
+ if (errorOnGo) throw errorOnGo;
76
+ });
77
+ it('01: should find the expected SLOTS for the component', async () => {
78
+ const bannerTitleSlot = await DSBannerCO.getTitleSlotByIndex();
79
+ const bannerSubtitleSlot = await DSBannerCO.getSubtitleSlotByIndex();
80
+ const bannerContainer = await DSBannerCO.getContainerSlotByIndex();
81
+ const bannerInnerContainer = await DSBannerCO.getInnerContainerSlotByIndex();
82
+ const bannerIconsSlots = await DSBannerCO.getIconContainerSlotByIndex();
83
+ const bannerButtonSlot = await DSBannerCO.getButtonRootSlotByIndex();
84
+ const bannerActionLinkSlot = await DSBannerCO.getActionLinkSlotByIndex();
85
+ await expect(bannerTitleSlot).toBeDisplayed();
86
+ await expect(bannerSubtitleSlot).toBeDisplayed();
87
+ await expect(bannerContainer).toBeDisplayed();
88
+ await expect(bannerInnerContainer).toBeDisplayed();
89
+ await expect(bannerIconsSlots).toBeDisplayed();
90
+ await expect(bannerButtonSlot).toBeDisplayed();
91
+ await expect(bannerActionLinkSlot).toBeDisplayed();
92
+ });
93
+ it('02: should find custom aria for each SLOT', async () => {
94
+ const bannerTitleSlot = await DSBannerCO.getTitleSlotByIndex();
95
+ const bannerSubtitleSlot = await DSBannerCO.getSubtitleSlotByIndex();
96
+ const bannerContainer = await DSBannerCO.getContainerSlotByIndex();
97
+ const bannerInnerContainer = await DSBannerCO.getInnerContainerSlotByIndex();
98
+ const bannerIconsSlots = await DSBannerCO.getIconContainerSlotByIndex();
99
+ const bannerButtonSlot = await DSBannerCO.getButtonRootSlotByIndex();
100
+ const bannerActionLinkSlot = await DSBannerCO.getActionLinkSlotByIndex();
101
+ await expect(bannerTitleSlot).toHaveAttribute('aria-label', 'im title aria');
102
+ await expect(bannerSubtitleSlot).toHaveAttribute('aria-label', 'im subtitle aria');
103
+ await expect(bannerContainer).toHaveAttribute('aria-label', 'im container aria');
104
+ await expect(bannerInnerContainer).toHaveAttribute('aria-label', 'im inner container aria');
105
+ await expect(bannerIconsSlots).toHaveAttribute('aria-label', 'im iconcontainer aria');
106
+ await expect(bannerButtonSlot).toHaveAttribute('aria-label', 'im closebutton aria');
107
+ await expect(bannerActionLinkSlot).toHaveAttribute('aria-label', 'im actionlink aria');
108
+ });
109
+ it('03: should find custom data for each SLOT', async () => {
110
+ const bannerTitleSlot = await DSBannerCO.getTitleSlotByIndex();
111
+ const bannerSubtitleSlot = await DSBannerCO.getSubtitleSlotByIndex();
112
+ const bannerContainer = await DSBannerCO.getContainerSlotByIndex();
113
+ const bannerInnerContainer = await DSBannerCO.getInnerContainerSlotByIndex();
114
+ const bannerIconsSlots = await DSBannerCO.getIconContainerSlotByIndex();
115
+ const bannerButtonSlot = await DSBannerCO.getButtonRootSlotByIndex();
116
+ const bannerActionLinkSlot = await DSBannerCO.getActionLinkSlotByIndex();
117
+ await expect(bannerTitleSlot).toHaveAttribute('data-testid', 'im title data');
118
+ await expect(bannerSubtitleSlot).toHaveAttribute('data-testid', 'im subtitle data');
119
+ await expect(bannerContainer).toHaveAttribute('data-testid', 'im container data');
120
+ await expect(bannerInnerContainer).toHaveAttribute('data-testid', 'im inner container data');
121
+ await expect(bannerIconsSlots).toHaveAttribute('data-testid', 'im iconcontainer data');
122
+ await expect(bannerButtonSlot).toHaveAttribute('data-testid', 'im closebutton data');
123
+ await expect(bannerActionLinkSlot).toHaveAttribute('data-testid', 'im actionlink data');
124
+ });
125
+ });
71
126
  }
@@ -113,4 +113,18 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
113
113
  await expect(snapshot).toEqual(0);
114
114
  });
115
115
  });
116
+
117
+ describe('PUI-15114 - DSBanner, Slots- Visual Test', () => {
118
+ before('loading page', async () => {
119
+ const errorOnGo = await DSBannerCO.slotsTest.go();
120
+ if (errorOnGo) throw errorOnGo;
121
+ });
122
+ it('should display the banners customized using slots', async () => {
123
+ await browser.eyesOpen();
124
+ const banner = await DSBannerCO.getContainerSlotByIndex();
125
+ await banner.waitForDisplayed();
126
+ const snapshot = await browser.eyesCheckSnapshot(DSBannerCO.snapshotPath('banner-slots-test'));
127
+ await expect(snapshot).toEqual(0);
128
+ });
129
+ });
116
130
  }
@@ -24,6 +24,8 @@ export default class DSBannerCO extends PageObject {
24
24
 
25
25
  static noActionLinkURL = new Urlbuilder(PATH_E2E_BANNER, 'no-action-link-test');
26
26
 
27
+ static slotsTest = new Urlbuilder(PATH_E2E_BANNER, 'slots-test');
28
+
27
29
  static async getButton() {
28
30
  return $('[data-testid="ds-button"]');
29
31
  }
@@ -54,6 +56,34 @@ export default class DSBannerCO extends PageObject {
54
56
  return $('div*=Danger');
55
57
  }
56
58
 
59
+ static async getActionLinkSlotByIndex(index = 0) {
60
+ return $$('[data-dimsum-slot="dsBannerActionLink"]')[index];
61
+ }
62
+
63
+ static async getTitleSlotByIndex(index = 0) {
64
+ return $$('[data-dimsum-slot="dsBannerTitle"]')[index];
65
+ }
66
+
67
+ static async getSubtitleSlotByIndex(index = 0) {
68
+ return $$('[data-dimsum-slot="dsBannerSubtitle"]')[index];
69
+ }
70
+
71
+ static async getButtonRootSlotByIndex(index = 0) {
72
+ return $$('[data-dimsum-slot="dsButtonRoot"]')[index];
73
+ }
74
+
75
+ static async getContainerSlotByIndex(index = 0) {
76
+ return $$('[data-dimsum-slot="dsBannerContainer"]')[index];
77
+ }
78
+
79
+ static async getIconContainerSlotByIndex(index = 0) {
80
+ return $$('[data-dimsum-slot="dsBannerIconContainer"]')[index];
81
+ }
82
+
83
+ static async getInnerContainerSlotByIndex(index = 0) {
84
+ return $$('[data-dimsum-slot="dsBannerInnerContainer"]')[index];
85
+ }
86
+
57
87
  // Snapshots
58
88
  static snapshotPath(example = 'basic') {
59
89
  return PageObject.getSnapshotPathBuilder('DSBanner', example, 'ds-banner');
@@ -13,7 +13,7 @@ if (
13
13
  if (errorOnGo) throw errorOnGo;
14
14
  });
15
15
  it('should have actionable breadcrumb and pass axecore scan', async () => {
16
- const actionBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(1);
16
+ const actionBreadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(1);
17
17
  await actionBreadcrumb.waitForDisplayed();
18
18
  const result = await axeCoreCheck();
19
19
  expect(result.length).toBe(0);
@@ -26,7 +26,7 @@ if (
26
26
  if (errorOnGo) throw errorOnGo;
27
27
  });
28
28
  it('should have HREF on the breadcrumb and pass axecore scan', async () => {
29
- const breadcrumbWithHREF = await DSBreadcrumbCO.getBreadcrumbItems(1);
29
+ const breadcrumbWithHREF = await DSBreadcrumbCO.getBreadcrumbNavItems(1);
30
30
  await breadcrumbWithHREF.waitForDisplayed();
31
31
  const result = await axeCoreCheck();
32
32
  expect(result.length).toBe(0);
@@ -39,7 +39,7 @@ if (
39
39
  if (errorOnGo) throw errorOnGo;
40
40
  });
41
41
  it('01: should have breadcrumb as footer and item as div and pass axecore scan', async () => {
42
- const breadcrumbAsFooter = await DSBreadcrumbCO.getBreadcrumbItems(1);
42
+ const breadcrumbAsFooter = await DSBreadcrumbCO.getBreadcrumbNavItems(1);
43
43
  await breadcrumbAsFooter.waitForDisplayed();
44
44
  const result = await axeCoreCheck();
45
45
  expect(result.length).toBe(0);
@@ -52,7 +52,7 @@ if (
52
52
  if (errorOnGo) throw errorOnGo;
53
53
  });
54
54
  it('01: should have actionable breadcrumb and pass axecore scan', async () => {
55
- const titleBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(1);
55
+ const titleBreadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(1);
56
56
  await titleBreadcrumb.waitForDisplayed();
57
57
  const result = await axeCoreCheck();
58
58
  expect(result.length).toBe(0);
@@ -65,7 +65,7 @@ if (
65
65
  if (errorOnGo) throw errorOnGo;
66
66
  });
67
67
  it('01: should have actionable breadcrumb and pass axecore scan', async () => {
68
- const breadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(1);
68
+ const breadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(1);
69
69
  await breadcrumb.waitForDisplayed();
70
70
  const result = await axeCoreCheck();
71
71
  expect(result.length).toBe(0);
@@ -78,10 +78,25 @@ if (
78
78
  if (errorOnGo) throw errorOnGo;
79
79
  });
80
80
  it('01: should have actionable breadcrumb and pass axecore scan', async () => {
81
- const truncBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(1);
81
+ const truncBreadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(1);
82
82
  await truncBreadcrumb.waitForDisplayed();
83
83
  const result = await axeCoreCheck();
84
84
  expect(result.length).toBe(0);
85
85
  });
86
86
  });
87
+
88
+ describe('PUI-14920 - BreadCrumb, Arias (current + label) - Func', () => {
89
+ before('loading page', async () => {
90
+ const errorOnGo = await DSBreadcrumbCO.containerProps.go();
91
+ if (errorOnGo) throw errorOnGo;
92
+ });
93
+ it('01: should have navigation breadcrumb with correct aria-current and custom container id', async () => {
94
+ const currentItem1 = await DSBreadcrumbCO.getBreadcrumbItems(6);
95
+ await currentItem1.click();
96
+ const currentItem2 = await DSBreadcrumbCO.getBreadcrumbItems(12);
97
+ await currentItem2.click();
98
+ const result = await axeCoreCheck();
99
+ expect(result.length).toBe(0);
100
+ });
101
+ });
87
102
  }
@@ -1,48 +1,77 @@
1
1
  import DSBreadcrumbCO from './DSBreadcrumbCO';
2
2
 
3
- describe('PUI-4233 - Breadcrumbs, actionable color - with title', () => {
4
- before('loading page', async () => {
5
- const errorOnGo = await DSBreadcrumbCO.titleURL.go();
6
- if (errorOnGo) throw errorOnGo;
3
+ if (
4
+ (!browser.capabilities['ice:options'].isPhone &&
5
+ !browser.capabilities['ice:options'].isTablet &&
6
+ browser.capabilities.browserName === 'chrome') ||
7
+ browser.capabilities.browserName === 'Chrome'
8
+ ) {
9
+ describe('PUI-4233 - Breadcrumbs, actionable color - with title', () => {
10
+ before('loading page', async () => {
11
+ const errorOnGo = await DSBreadcrumbCO.titleURL.go();
12
+ if (errorOnGo) throw errorOnGo;
13
+ });
14
+ it('should display title in #353c46 color', async () => {
15
+ const itemColor = await DSBreadcrumbCO.getItemColor('Level 7');
16
+ await expect(itemColor).toEqual('#353c46');
17
+ });
7
18
  });
8
- it('should display title in #353c46 color', async () => {
9
- const itemColor = await DSBreadcrumbCO.getItemColor('Level 7');
10
- await expect(itemColor).toEqual('#353c46');
19
+ describe('PUI-4233 - Breadcrumbs, actionable color - no title', () => {
20
+ before('loading page', async () => {
21
+ const errorOnGo = await DSBreadcrumbCO.basicURL.go();
22
+ if (errorOnGo) throw errorOnGo;
23
+ });
24
+ it('should display no title item in #1e79c2', async () => {
25
+ const itemColor = await DSBreadcrumbCO.getItemColor('Level 7');
26
+ await expect(itemColor).toEqual('#1e79c2');
27
+ });
11
28
  });
12
- });
13
- describe('PUI-4233 - Breadcrumbs, actionable color - no title', () => {
14
- before('loading page', async () => {
15
- const errorOnGo = await DSBreadcrumbCO.basicURL.go();
16
- if (errorOnGo) throw errorOnGo;
29
+ describe('PUI-9457 - Breadcrumbs, Container props', () => {
30
+ before('loading page', async () => {
31
+ const errorOnGo = await DSBreadcrumbCO.containerProps.go();
32
+ if (errorOnGo) throw errorOnGo;
33
+ });
34
+ it('should find breadcrumb by custom id', async () => {
35
+ const breadcrumb = await DSBreadcrumbCO.getBreadcrumbCustomId();
36
+ await expect(breadcrumb).toBeDisplayed();
37
+ });
17
38
  });
18
- it('should display no title item in #1e79c2', async () => {
19
- const itemColor = await DSBreadcrumbCO.getItemColor('Level 7');
20
- await expect(itemColor).toEqual('#1e79c2');
21
- });
22
- });
23
- describe('PUI-9457 - Breadcrumbs, Container props', () => {
24
- before('loading page', async () => {
25
- const errorOnGo = await DSBreadcrumbCO.containerProps.go();
26
- if (errorOnGo) throw errorOnGo;
27
- });
28
- it('should find breadcrumb by custom id', async () => {
29
- const breadcrumb = await DSBreadcrumbCO.getBreadcrumbCustomId();
30
- await expect(breadcrumb).toBeDisplayed();
31
- });
32
- });
33
39
 
34
- describe('PUI-9463 - BreadCrumb, Click - Firing Actions', () => {
35
- before('loading page', async () => {
36
- const errorOnGo = await DSBreadcrumbCO.onClickURL.go();
37
- if (errorOnGo) throw errorOnGo;
40
+ describe('PUI-9463 - BreadCrumb, Click - Firing Actions', () => {
41
+ before('loading page', async () => {
42
+ const errorOnGo = await DSBreadcrumbCO.onClickURL.go();
43
+ if (errorOnGo) throw errorOnGo;
44
+ });
45
+ it('should fire the action with click two times', async () => {
46
+ const actionBreadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(1);
47
+ const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(4);
48
+ await actionBreadcrumb.click();
49
+ await otherBreadcrumb.click(); // should ignore clicks on other items
50
+ await actionBreadcrumb.click();
51
+ const counter = await DSBreadcrumbCO.getCounter('2');
52
+ await expect(counter).toBeDisplayedInViewport();
53
+ });
38
54
  });
39
- it('should fire the action with click two times', async () => {
40
- const actionBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(1);
41
- const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(4);
42
- await actionBreadcrumb.click();
43
- await otherBreadcrumb.click(); // should ignore clicks on other items
44
- await actionBreadcrumb.click();
45
- const counter = await DSBreadcrumbCO.getCounter('2');
46
- await expect(counter).toBeDisplayedInViewport();
55
+
56
+ describe('PUI-14919 - BreadCrumb, Arias (current + label) - Func', () => {
57
+ before('loading page', async () => {
58
+ const errorOnGo = await DSBreadcrumbCO.containerProps.go();
59
+ if (errorOnGo) throw errorOnGo;
60
+ });
61
+ it('01: should have navigation breadcrumb with correct aria-current and custom container id', async () => {
62
+ const breadcrumb = await DSBreadcrumbCO.getBreadcrumbsByIndex(0);
63
+ const currentItem = await DSBreadcrumbCO.getBreadcrumbItems(6);
64
+ await currentItem.click();
65
+ await expect(currentItem).toHaveAttribute('aria-current', 'page');
66
+ await expect(breadcrumb).toHaveAttribute('id', 'my-custom-id');
67
+ });
68
+ // eslint-disable-next-line max-len
69
+ it('02: should have with-buttons breadcrumb with correct aria-current and custom container aria-label', async () => {
70
+ const breadcrumb = await DSBreadcrumbCO.getBreadcrumbsByIndex(1);
71
+ const currentItem = await DSBreadcrumbCO.getBreadcrumbItems(12);
72
+ await currentItem.click();
73
+ await expect(currentItem).toHaveAttribute('aria-current', 'step');
74
+ await expect(breadcrumb).toHaveAttribute('aria-label', 'my-custom-aria-label');
75
+ });
47
76
  });
48
- });
77
+ }
@@ -8,9 +8,10 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
8
8
  if (errorOnGo) throw errorOnGo;
9
9
  });
10
10
  it('should display a title variant correctly', async () => {
11
+ await browser.eyesOpen();
11
12
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
12
13
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
13
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('title'));
14
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('title'));
14
15
  await expect(snapshot).toEqual(0);
15
16
  });
16
17
  });
@@ -21,11 +22,12 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
21
22
  if (errorOnGo) throw errorOnGo;
22
23
  });
23
24
  it('should display a trailing slash for non title variant', async () => {
25
+ await browser.eyesOpen();
24
26
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
25
27
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
26
- const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(2);
28
+ const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(2);
27
29
  await mouseOver(otherBreadcrumb);
28
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('non-title'));
30
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('non-title'));
29
31
  await expect(snapshot).toEqual(0);
30
32
  });
31
33
  });
@@ -36,21 +38,20 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
36
38
  if (errorOnGo) throw errorOnGo;
37
39
  });
38
40
  it('should show every link truncated', async () => {
41
+ await browser.eyesOpen();
39
42
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
43
+ await mouseOver(breadcrumb, 200, 200);
40
44
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
41
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-all-truncated'));
45
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-all-truncated'));
42
46
  await expect(snapshot).toEqual(0);
43
47
  });
44
48
  it('should show one the links not truncated after mouse hover', async () => {
49
+ await browser.eyesOpen();
45
50
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
46
51
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
47
52
  const bcLink = await DSBreadcrumbCO.getBreadcrumbItem('Aenean non ante eu nunc volutpat');
48
- if (browser.capabilities.browserName !== 'firefox') {
49
- await mouseOver(bcLink);
50
- } else {
51
- await bcLink.moveTo();
52
- }
53
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-one-not-truncated'));
53
+ await mouseOver(bcLink);
54
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-one-not-truncated'));
54
55
  await expect(snapshot).toEqual(0);
55
56
  });
56
57
  });
@@ -61,11 +62,12 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
61
62
  if (errorOnGo) throw errorOnGo;
62
63
  });
63
64
  it('should breadcrumb of different custom colors', async () => {
65
+ await browser.eyesOpen();
64
66
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
65
67
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
66
- const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbItems(2);
68
+ const otherBreadcrumb = await DSBreadcrumbCO.getBreadcrumbNavItems(2);
67
69
  await mouseOver(otherBreadcrumb);
68
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-custom-colors'));
70
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-custom-colors'));
69
71
  await expect(snapshot).toEqual(0);
70
72
  });
71
73
  });
@@ -76,15 +78,17 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
76
78
  if (errorOnGo) throw errorOnGo;
77
79
  });
78
80
  it('should show breadcrumb above title', async () => {
81
+ await browser.eyesOpen();
79
82
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
80
83
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
81
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-above-title'));
84
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-above-title'));
82
85
  await expect(snapshot).toEqual(0);
83
86
  });
84
87
  it('should show hovered editable title', async () => {
88
+ await browser.eyesOpen();
85
89
  const title = await DSBreadcrumbCO.getEditableTitle();
86
90
  await mouseOver(title);
87
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-hovered-title'));
91
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-hovered-title'));
88
92
  await expect(snapshot).toEqual(0);
89
93
  });
90
94
  });
@@ -95,9 +99,10 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
95
99
  if (errorOnGo) throw errorOnGo;
96
100
  });
97
101
  it('should display the breadcrumb item 7 as active by default', async () => {
102
+ await browser.eyesOpen();
98
103
  const breadcrumb = await DSBreadcrumbCO.getBreadcrumb();
99
104
  await breadcrumb.waitForDisplayed({ timeout: 5000 });
100
- const snapshot = await browser.checkSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-active-7'));
105
+ const snapshot = await browser.eyesCheckSnapshot(DSBreadcrumbCO.snapshotPath('breadcrumb-active-7'));
101
106
  await expect(snapshot).toEqual(0);
102
107
  });
103
108
  });
@@ -33,10 +33,26 @@ export default class DSBreadcrumbCO extends PageObject {
33
33
  return $('[data-testid="breadcrumb-nav-container"]');
34
34
  }
35
35
 
36
- static async getBreadcrumbItems(index) {
36
+ static async getBreadcrumbs() {
37
+ return $$('[data-testid="breadcrumb-nav-container"]');
38
+ }
39
+
40
+ static async getBreadcrumbsByIndex(index = 0) {
41
+ return $$('[data-testid="breadcrumb-nav-container"]')[index];
42
+ }
43
+
44
+ static async getBreadcrumbNavItems(index) {
37
45
  return $$('//li[@data-testid="breadcrumb-item-container"]/a')[index];
38
46
  }
39
47
 
48
+ static async getBreadcrumbItems(index = 0) {
49
+ return $$('[data-testid="breadcrumb-item-container"]')[index];
50
+ }
51
+
52
+ static async getBreadcrumbButtonItems(index) {
53
+ return $$('//li[@data-testid="breadcrumb-item-container"]/button')[index];
54
+ }
55
+
40
56
  static async getBreadcrumbItem(text) {
41
57
  return $(`a*=${text}`);
42
58
  }
@@ -0,0 +1,22 @@
1
+ import DSButtonV3CO from './DSButtonV3CO';
2
+
3
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
4
+ describe('PUI-15109 - ButtonV3 - Slots -Func', () => {
5
+ before('loading page', async () => {
6
+ const errorOnGo = await DSButtonV3CO.slotsTest.go();
7
+ if (errorOnGo) throw errorOnGo;
8
+ });
9
+ it('01: should find the expected SLOTS for all the present buttons', async () => {
10
+ const buttonSlots = (await DSButtonV3CO.getRootSlots()).length;
11
+ await expect(buttonSlots).toEqual(40);
12
+ });
13
+ it('02: should find custom aria for the SLOT', async () => {
14
+ const button = await DSButtonV3CO.getRootSlotByIdnex(1);
15
+ await expect(button).toHaveAttribute('aria-label', 'im root aria');
16
+ });
17
+ it('03: should find custom data for the SLOT', async () => {
18
+ const button = await DSButtonV3CO.getRootSlotByIdnex(1);
19
+ await expect(button).toHaveAttribute('data-testid', 'im root data');
20
+ });
21
+ });
22
+ }
@@ -48,20 +48,26 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
48
48
  if (errorOnGo) throw errorOnGo;
49
49
  });
50
50
  it('01: should custom focused, custom hovered and custom disabled buttons', async () => {
51
+ await browser.eyesOpen();
51
52
  await browser.keys('Tab');
52
53
  await browser.keys('Tab');
53
54
  const button = await DSButtonV3CO.getButtonByIndex(0);
54
55
  await button.waitForDisplayed({ timeout: 5000 });
55
56
  await mouseOver(button);
56
- const snapshot = await browser.checkSnapshot(DSButtonV3CO.snapshotPath('ds-button-v3-customization-interacted'));
57
+ const snapshot = await browser.eyesCheckSnapshot(
58
+ DSButtonV3CO.snapshotPath('ds-button-v3-customization-interacted'),
59
+ );
57
60
  await expect(snapshot).toEqual(0);
58
61
  });
59
62
  it('02: should display two custom default buttons and disabled button hovered without changes', async () => {
63
+ await browser.eyesOpen();
60
64
  await browser.keys('Tab');
61
65
  const button = await DSButtonV3CO.getButtonByIndex(2);
62
66
  await button.waitForDisplayed({ timeout: 5000 });
63
67
  await mouseOver(button);
64
- const snapshot = await browser.checkSnapshot(DSButtonV3CO.snapshotPath('ds-button-v3-customization-defaults'));
68
+ const snapshot = await browser.eyesCheckSnapshot(
69
+ DSButtonV3CO.snapshotPath('ds-button-v3-customization-defaults'),
70
+ );
65
71
  await expect(snapshot).toEqual(0);
66
72
  });
67
73
  });
@@ -13,6 +13,8 @@ export default class DSButtonV3CO extends PageObject {
13
13
 
14
14
  static applyAriaDisabled = new Urlbuilder(PATH_E2E_BUTTON_V3, 'apply-aria-disabled-test');
15
15
 
16
+ static slotsTest = new Urlbuilder(PATH_E2E_BUTTON_V3, 'slots-test');
17
+
16
18
  // selectors
17
19
  static async getButtonByIndex(index) {
18
20
  return $$('[data-testid="ds-button"]')[index];
@@ -22,6 +24,18 @@ export default class DSButtonV3CO extends PageObject {
22
24
  return $('[data-testid="ds-button"]');
23
25
  }
24
26
 
27
+ static async getRootSlots() {
28
+ return $$('[data-dimsum-slot="dsButtonRoot"]');
29
+ }
30
+
31
+ static async getRootSlotByIdnex(index = 0) {
32
+ return $$('[data-dimsum-slot="dsButtonRoot"]')[index];
33
+ }
34
+
35
+ static async getButtonByLabel(label) {
36
+ return $(`button*=${label}`);
37
+ }
38
+
25
39
  // Snapshot
26
40
  static snapshotPath(example = 'basic') {
27
41
  return PageObject.getSnapshotPathBuilder('ButtonV3', example);
@@ -29,11 +29,11 @@ export default class DSCardV3CO extends PageObject {
29
29
 
30
30
  // selectors
31
31
  static async getActionAreaByIndex(index = 0) {
32
- return $$('[data-testid="ds-card-v3-action-area"]')[index];
32
+ return $$('[data-testid="ds-cardv3-action-area"]')[index];
33
33
  }
34
34
 
35
35
  static async getActionArea() {
36
- return $('[data-testid="ds-card-v3-action-area"]');
36
+ return $('[data-testid="ds-cardv3-action-area"]');
37
37
  }
38
38
 
39
39
  static async getCardContentByindex(index = 0) {
@@ -45,35 +45,35 @@ export default class DSCardV3CO extends PageObject {
45
45
  }
46
46
 
47
47
  static async getCardHeaderByindex(index = 0) {
48
- return $$('[data-testid="ds-card-v3-header"]')[index];
48
+ return $$('[data-testid="ds-cardv3-header"]')[index];
49
49
  }
50
50
 
51
51
  static async getCardHeader() {
52
- return $('[data-testid="ds-card-v3-header"]');
52
+ return $('[data-testid="ds-cardv3-header"]');
53
53
  }
54
54
 
55
55
  static async getCardFooterByindex(index = 0) {
56
- return $$('[data-testid="ds-card-v3-footer"]')[index];
56
+ return $$('[data-testid="ds-cardv3-footer"]')[index];
57
57
  }
58
58
 
59
59
  static async getCardFooter() {
60
- return $('[data-testid="ds-card-v3-footer"]');
60
+ return $('[data-testid="ds-cardv3-footer"]');
61
61
  }
62
62
 
63
63
  static async getCardContainerByIndex(index = 0) {
64
- return $$('[data-testid="ds-card-v3-root"]')[index];
64
+ return $$('[data-testid="ds-cardv3-root"]')[index];
65
65
  }
66
66
 
67
67
  static async getCards() {
68
- return $$('[data-testid="ds-card-v3-root"]');
68
+ return $$('[data-testid="ds-cardv3-root"]');
69
69
  }
70
70
 
71
71
  static async getCardContainer() {
72
- return $('[data-testid="ds-card-v3-root"]');
72
+ return $('[data-testid="ds-cardv3-root"]');
73
73
  }
74
74
 
75
75
  static async getCardBody() {
76
- return $('[data-testid="ds-card-v3-body"]');
76
+ return $('[data-testid="ds-cardv3-body"]');
77
77
  }
78
78
 
79
79
  static async getHByLevel(level = 2) {
@@ -19,16 +19,16 @@ if (
19
19
  const cardFooter = await DSCardV3CO.getCardFooter();
20
20
  await expect(cardRoot).toHaveAttribute('role', 'region');
21
21
  await expect(cardRoot).toHaveAttribute('aria-label', 'My custom card');
22
- await expect(cardRoot).toHaveAttribute('data-dimsum-slot', 'dsCardV3Root');
22
+ await expect(cardRoot).toHaveAttribute('data-dimsum-slot', 'dsCardv3Root');
23
23
  await expect(cardHeader).toHaveAttribute('role', 'region');
24
24
  await expect(cardHeader).toHaveAttribute('aria-label', 'My custom Header');
25
- await expect(cardHeader).toHaveAttribute('data-dimsum-slot', 'dsCardV3Header');
25
+ await expect(cardHeader).toHaveAttribute('data-dimsum-slot', 'dsCardv3Header');
26
26
  await expect(cardBody).toHaveAttribute('role', 'region');
27
27
  await expect(cardBody).toHaveAttribute('aria-label', 'My custom card Body');
28
- await expect(cardBody).toHaveAttribute('data-dimsum-slot', 'dsCardV3Body');
28
+ await expect(cardBody).toHaveAttribute('data-dimsum-slot', 'dsCardv3Body');
29
29
  await expect(cardFooter).toHaveAttribute('role', 'region');
30
30
  await expect(cardFooter).toHaveAttribute('aria-label', 'My custom card Footer');
31
- await expect(cardFooter).toHaveAttribute('data-dimsum-slot', 'dsCardV3Footer');
31
+ await expect(cardFooter).toHaveAttribute('data-dimsum-slot', 'dsCardv3Footer');
32
32
  });
33
33
  });
34
34
  }
@@ -75,20 +75,19 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
75
75
  before('loading page', async () => {
76
76
  const errorOnGo = await DSCommentsCO.slotsCustomization.go();
77
77
  if (errorOnGo) throw errorOnGo;
78
+ await browser.maximizeWindow();
78
79
  });
79
80
  it('01: should display customized ds-comments slots', async () => {
80
- await browser.eyesOpen();
81
81
  const readmore = await DSCommentsCO.getReadMoreByIndex(0);
82
82
  await readmore.waitForDisplayed();
83
- const snapshot = await browser.eyesCheckSnapshot(DSCommentsCO.snapshotPath('dscomments-slots-custom'));
83
+ const snapshot = await browser.checkSnapshot(DSCommentsCO.snapshotPath('dscomments-slots-custom'));
84
84
  await expect(snapshot).toEqual(0);
85
85
  });
86
86
  it('02: should have focus on first comment card and hover on third comment card content', async () => {
87
- await browser.eyesOpen();
88
87
  await browser.keys(Key.Tab);
89
88
  const readmore2 = await DSCommentsCO.getReadmoreByCustomDTI();
90
89
  await mouseOver(readmore2);
91
- const snapshot = await browser.eyesCheckSnapshot(DSCommentsCO.snapshotPath('dscomments-slots-interacted'));
90
+ const snapshot = await browser.checkSnapshot(DSCommentsCO.snapshotPath('dscomments-slots-interacted'));
92
91
  await expect(snapshot).toEqual(0);
93
92
  });
94
93
  });