dimsum-e2e-tests 3.70.0-next.54 → 3.70.0-next.56
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 +10 -0
- package/ds-accordion/DSAccordionCO.js +4 -0
- package/ds-accordion/QA_NOTES.md +105 -0
- package/ds-accordion/header-structure/DSAccordion.header-structure.func.spec.js +24 -8
- package/ds-accordion/input-inside/DSAccordion.input-inside.func.spec.js +3 -1
- package/ds-apppicker/truncation/DSAppPicker.truncation.visual.spec.js +5 -9
- package/ds-chat/DSChat.visual.spec.js +1 -1
- package/ds-chat/DSChatCO.js +12 -12
- package/ds-chat/components/CardCO.js +1 -3
- package/ds-chat/components/ComposerCO.js +1 -1
- package/ds-chat/components/FloatingButtonCO.js +4 -2
- package/ds-chat/floatingbutton/DSChat-floating-button.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/Basic/DSControlledCheckbox.axe-core.basic.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox/Basic/DSControlledCheckbox.basic.visual.spec.js +56 -0
- package/ds-controlled-form/ds-controlled-checkbox/DSControlledCheckboxCO.js +4 -0
- package/ds-controlled-form/ds-controlled-checkbox/Disabled/DSControlledCheckbox.axe-core.disabled.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/Disabled/DSControlledCheckbox.disabled.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/HasError/DSControlledCheckbox.axe-core.hasError.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox/HasError/DSControlledCheckbox.has-error.visual.spec.js +71 -1
- package/ds-controlled-form/ds-controlled-checkbox/Mixed/DSControlledCheckbox.axe-core.mixed.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox/Mixed/DSControlledCheckbox.mixed.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/ReadOnly/DSControlledCheckbox.axe-core.read-only.func.spec.js +3 -3
- package/ds-controlled-form/ds-controlled-checkbox/ReadOnly/DSControlledCheckbox.read-only.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/WithTooltip/DSControlledCheckbox.axe-core.with-tooltip.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/WithTooltip/DSControlledCheckbox.with-tooltip.visual.spec.js +1 -3
- package/ds-controlled-form/ds-controlled-checkbox/WrapLabel/DSControlledCheckbox.axe-core.wrap-label.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/WrapLabel/DSControlledCheckbox.wrap-label.visual.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox/aria-disabled/DSControlledCheckbox.aria-disabled.visual.spec.js +2 -6
- package/ds-controlled-form/ds-controlled-checkbox/aria-disabled/DSControlledCheckbox.axe-core.aria-disabled.func.spec.js +1 -1
- package/ds-controlled-form/ds-controlled-checkbox-group/DSControlledCheckboxGroup.axe-core.func.spec.js +4 -4
- package/ds-controlled-form/ds-controlled-checkbox-group/DSControlledCheckboxGroup.visual.spec.js +1 -1
- package/ds-data-table-async/filtersV2/DSDataTable.filtersV2-creatablemultiselect.keyboard.func.spec.js +2 -2
- package/ds-data-table-async/filtersV2/DSDataTable.filtersV2-creatableselect.keyboard.func.spec.js +2 -2
- package/ds-data-table-async/pagination/DSDataTable.pagination.func.spec.js +3 -2
- package/ds-data-table-async/resizable/DSDataTable.resizerA11y.func.spec.js +14 -0
- package/ds-data-table-async/vissibility/DSDataTable.vissibility.visual.spec.js +2 -0
- package/ds-dataviz/DSDataVizCO.js +2 -0
- package/ds-dataviz/axecore/DSDataViz.axis.axe-core.func.spec.js +1 -1
- package/ds-form-combobox-multi/DSComboboxMultiCO.js +11 -0
- package/ds-form-combobox-multi/pills/DSComboboxMulti.pills.func.spec.js +59 -0
- package/ds-form-combobox-multi/pills/DSComboboxMulti.pills.visual.spec.js +39 -0
- package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.axe-core.func.spec.js +39 -0
- package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.func.spec.js +39 -0
- package/ds-form-combobox-multi/with-tooltip/DSComboboxMulti.with-tooltip.visual.spec.js +29 -0
- package/ds-form-combobox-single/DSComboboxSingleCO.js +2 -0
- package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.axe-core.func.spec.js +39 -0
- package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.func.spec.js +39 -0
- package/ds-form-combobox-single/with-tooltip/DSComboboxSingle.with-tooltip.visual.spec.js +29 -0
- package/ds-hooks/DSHook.usetree.func.spec.js +3 -2
- package/ds-hooks/useMask/Number/UseNumberMask.axe-core.func.spec.js +48 -0
- package/ds-pills-v2/DSPillsV2CO.js +12 -0
- package/ds-pills-v2/apply-aria-disabled/DSPills.applyAriaDisabled.func.spec.js +53 -0
- package/ds-pills-v2/apply-aria-disabled/DSPills.applyAriaDisabled.visual.spec.js +26 -0
- package/ds-pills-v2/disabled/DSPills.disabled.func.spec.js +53 -0
- package/ds-pills-v2/disabled/DSPills.disabled.visual.spec.js +33 -0
- package/package.json +150 -150
- package/paths.js +3 -3
- package/ds-accordion-native/DSAccordionNative.axe-core.func.spec.js +0 -135
- package/ds-accordion-native/DSAccordionNative.func.spec.js +0 -200
- package/ds-accordion-native/DSAccordionNative.visual.spec.js +0 -158
- package/ds-accordion-native/DSAccordionNativeCO.js +0 -178
- package/ds-accordion-native/QA_NOTES.md +0 -151
- package/ds-accordion-native/aria-disabled/DSAccordionNative.aria-disabled.axe-core.func.spec.js +0 -25
- package/ds-accordion-native/aria-disabled/DSAccordionNative.aria-disabled.visual.spec.js +0 -28
- package/ds-accordion-native/controlled/DSAccordionNative.controlled.func.spec.js +0 -22
- package/ds-accordion-native/header-structure/DSAccordionNative.header-structure.func.spec.js +0 -52
- package/ds-accordion-native/input-inside/DSAccordionNative.input-inside.func.spec.js +0 -16
- package/ds-accordion-native/role/DSAccordionNative.role-heading.func.spec.js +0 -27
- package/ds-accordion-native/scrollable-content/DSAccordionNative.scrollable-content.visual.spec.js +0 -49
- package/ds-accordion-native/slots/DSAccordionNative.slots.axe-core.func.spec.js +0 -25
- package/ds-accordion-native/slots/DSAccordionNative.slots.func.spec.js +0 -73
- package/ds-accordion-native/slots/DSAccordionNative.slots.visual.spec.js +0 -21
- package/ds-accordion-native/wrapLabel/DSAccordionNative.wrap-label.visual.spec.js +0 -21
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
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.70.0-next.56](https://git.elliemae.io/platform-ui/dimsum/compare/v3.70.0-next.55...v3.70.0-next.56) (2026-08-11)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package dimsum-e2e-tests
|
|
9
|
+
|
|
10
|
+
## 3.70.0-next.55 (2026-08-10)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- ds-app-picker:: a11y fixes + axe-test fixes + markdown files fixes [PUI-17213](https://jira.elliemae.io/browse/PUI-17213) [PUI-17860](https://jira.elliemae.io/browse/PUI-17860) ([#8260](https://git.elliemae.io/platform-ui/dimsum/issues/8260)) ([f24df52](https://git.elliemae.io/platform-ui/dimsum/commit/f24df52d0565660595e557ca6df3c2e6fa815644))
|
|
15
|
+
|
|
6
16
|
## 3.70.0-next.54 (2026-07-31)
|
|
7
17
|
|
|
8
18
|
### Bug Fixes
|
|
@@ -102,6 +102,10 @@ export default class DSAccordionCO extends PageObject {
|
|
|
102
102
|
|
|
103
103
|
static getToolbarByIndex = async (index) => getElementByIndex(this.getToolbarTriggers, index);
|
|
104
104
|
|
|
105
|
+
static async getToolbarMenuByIndex(index = 0) {
|
|
106
|
+
return $$('[data-testid="ds-menuitem-menu-item-wrapper"]')[index];
|
|
107
|
+
}
|
|
108
|
+
|
|
105
109
|
static getAccordionItemHeaderContainers = async () => $$('[data-testid="ds-accordion-item-header-container"]');
|
|
106
110
|
|
|
107
111
|
static getAccordionItemHeaderContainerByIndex = async (index) =>
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# QA Notes — ds-accordion E2E
|
|
2
|
+
|
|
3
|
+
Durable QA knowledge for the `accordion` suite. Carried over from the `ds-accordion-native` POC
|
|
4
|
+
notes ([PUI-18083](https://jira.elliemae.io/browse/PUI-18083)) when that parallel suite was removed —
|
|
5
|
+
see "Native migration" below.
|
|
6
|
+
|
|
7
|
+
## Native migration ([PUI-18742](https://jira.elliemae.io/browse/PUI-18742))
|
|
8
|
+
|
|
9
|
+
`ds-accordion` now renders a native `<details>` / `<summary>` disclosure instead of the previous
|
|
10
|
+
WAI-ARIA button pattern. Public API, slot names and `data-testid` values are unchanged; only the DOM
|
|
11
|
+
engine changed. Full contract: [`stories/ds-accordion/docs/NativeDisclosureMigration.md`](../../stories/ds-accordion/docs/NativeDisclosureMigration.md).
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<div data-testid="ds-accordion_item">
|
|
15
|
+
<details data-testid="ds-accordion-item-details">
|
|
16
|
+
<summary data-testid="ds-accordion_item-header" aria-expanded aria-controls="ds-accordion-content-0">
|
|
17
|
+
<div data-testid="ds-accordion-item-header-container">… chevron + title(s) …</div>
|
|
18
|
+
</summary>
|
|
19
|
+
<div data-testid="ds-accordion_item-content" role="region" aria-labelledby="ds-accordion-header-0">…</div>
|
|
20
|
+
</details>
|
|
21
|
+
<div data-testid="ds-accordion-item-header-custom-actions-container">… custom actions …</div>
|
|
22
|
+
</div>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**What this changes for specs:**
|
|
26
|
+
|
|
27
|
+
- The trigger is a `<summary>`, **not** a `<button>`. `getAccordionHeader(i)` returns the `<summary>`.
|
|
28
|
+
- The heading container lives **inside** the summary (inverse of the pre-migration nesting).
|
|
29
|
+
- `role="heading"` + `aria-level` are **not** emitted by the component. They are opt-in per consumer
|
|
30
|
+
through the `dsAccordionItemHeaderContainer` slot prop. Only stories that set that prop
|
|
31
|
+
(e.g. `WithSecondaryTitleTest`, `AdvancedHeadingStructureCustomization`) expose heading semantics —
|
|
32
|
+
`HeaderControlExamplesTest` does not. Assert the role only on a story that opts in
|
|
33
|
+
(`role/DSAccordion.role-heading.func.spec.js`).
|
|
34
|
+
- Custom actions render as a **sibling of `<details>`**, outside the trigger. Nothing interactive is
|
|
35
|
+
nested inside the `<summary>`.
|
|
36
|
+
- `ds-accordion-item-details` is an additive slot/testid introduced by the migration.
|
|
37
|
+
|
|
38
|
+
The former `ds-accordion-native` E2E suite was deleted here — `ds-accordion` **is** the native engine
|
|
39
|
+
now, so the parity suite had no stories left to point at (`stories/ds-accordion-native` and
|
|
40
|
+
`PATH_E2E_ACCORDION_NATIVE` were removed in PUI-18742).
|
|
41
|
+
|
|
42
|
+
## header-structure func — test 04 flaky "Login not displayed" (cloud)
|
|
43
|
+
|
|
44
|
+
**Status:** spec hardened (spec-only + one additive CO helper). Investigated 2026-07-02 on the native
|
|
45
|
+
suite; the same hardening now lives in `header-structure/DSAccordion.header-structure.func.spec.js`.
|
|
46
|
+
|
|
47
|
+
**Symptom:** in the cloud run (`E2E_BACKEND=cloud`, `BASE_URL`=NEXT/d3, Chrome-only) test
|
|
48
|
+
`04: toolbar trigger in custom actions should open dropdown menu on click` broke with
|
|
49
|
+
`element ("*=Login") still not displayed after 10000ms`. Only that browser runs it (the spec is
|
|
50
|
+
Chrome-guarded), so it surfaces as 1 broken.
|
|
51
|
+
|
|
52
|
+
**Not a defect.** Reproduced against NEXT/d3 at the SDK viewport (1920×1080): the click opens the
|
|
53
|
+
`DSDropdownMenuV2` (`dropdown-menu-listbox` + `ds-floating-wrapper-root` present), `Login` resolves to
|
|
54
|
+
a single visible `<p>`, not clipped by any overflow ancestor and not occluded (`elementFromPoint` at
|
|
55
|
+
its center returns the element), and it stays open at 3s. Selectors, story and package are correct.
|
|
56
|
+
Passed 100% locally, broke 100% in cloud → the delta is real-Chrome + BrowserStack +
|
|
57
|
+
`browser.maximizeWindow()` (cloud-only).
|
|
58
|
+
|
|
59
|
+
**Root cause:** the pattern "one-shot click on a toggle + `waitForDisplayed` on a deep descendant" is
|
|
60
|
+
fragile. If the click doesn't leave the menu open in that driver, the wait sits the full 10s on a menu
|
|
61
|
+
that never opened.
|
|
62
|
+
|
|
63
|
+
**Fix:** wait for the trigger to be clickable, click it, then assert the `DSDropdownMenuV2` item
|
|
64
|
+
wrapper (`getToolbarMenuByIndex` → `ds-menuitem-menu-item-wrapper`) is displayed _before_ checking the
|
|
65
|
+
first option, and tag-qualify the option selector as `p*=Login` (`DSTypography variant="b1"` renders a
|
|
66
|
+
`<p>`). The SDK's retries absorb residual flakiness. Optional broader mitigation: enable
|
|
67
|
+
`config.specFileRetries` in `wdio.config.mjs`.
|
|
68
|
+
|
|
69
|
+
## input-inside func — `data-testid` is on the `<input>`, not a wrapper
|
|
70
|
+
|
|
71
|
+
`DSInputText` forwards `data-testid` through its global attributes straight onto `StyledInput`, i.e.
|
|
72
|
+
the `<input>` element. A descendant selector like `[data-testid="task-name"] input` matches nothing
|
|
73
|
+
and breaks on every browser. Target the testid directly.
|
|
74
|
+
|
|
75
|
+
## Open defects from the native POC — re-verify against ds-accordion
|
|
76
|
+
|
|
77
|
+
These were logged against `ds-accordion-native` while it was a separate POC package. Now that
|
|
78
|
+
`ds-accordion` ships the native engine, **each needs re-verification against `ds-accordion`** before
|
|
79
|
+
being closed or re-pointed — they are listed here so the findings are not lost with the deleted suite,
|
|
80
|
+
not as confirmed `ds-accordion` defects.
|
|
81
|
+
|
|
82
|
+
| Ticket | Summary |
|
|
83
|
+
| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
84
|
+
| [PUI-18640](https://jira.elliemae.io/browse/PUI-18640) | Content-container slot did not apply style-props — `maxHeight`/`overflow` (scrollable-content) and padding `p` (XstyledpropsInContent) — the way pre-migration `ds-accordion` did. Breaking for consumers styling content via the slot. |
|
|
85
|
+
| [PUI-18641](https://jira.elliemae.io/browse/PUI-18641) | Default title behavior changed from truncate-with-tooltip to wrap. With `wrapLabel={false}` the title truncates but shows no tooltip on hover → full text unreadable. Backwards-incompatible default + readability gap. |
|
|
86
|
+
| [PUI-18642](https://jira.elliemae.io/browse/PUI-18642) | Arrow Icon visual spec violations (Accordion Draft v1.5.0): region width is not the spec'd 20px; when the title wraps the icon is center-aligned instead of top-aligned ("Fixed Top-aligned — Region A"). |
|
|
87
|
+
| [PUI-18695](https://jira.elliemae.io/browse/PUI-18695) | _Safari-only:_ Tab does not move focus between accordion headers after a click. Click-focus, focus ring and Enter all work; only Tab traversal is broken. Found by E2E visual PUI-14324 - 02 (Safari). |
|
|
88
|
+
|
|
89
|
+
Related upstream: [WebKit bug #319162](https://bugs.webkit.org/show_bug.cgi?id=319162) — in Safari,
|
|
90
|
+
tabbing away from a `<summary>` that contains nested elements after **mouse** activation does not
|
|
91
|
+
advance focus correctly. Keyboard-only navigation is unaffected. Unresolved upstream.
|
|
92
|
+
|
|
93
|
+
## Known visual baseline note — slots (`PUI-15348 - 01`)
|
|
94
|
+
|
|
95
|
+
Percy flagged a ~0.05% diff: a small lavender box at the left of each "… Secondary" row. Not a
|
|
96
|
+
regression. `StyledHeading` moved from `display: contents` → `display: flex`; an element with
|
|
97
|
+
`display: contents` generates no box and therefore never paints its `background`, so the `SlotsTest`
|
|
98
|
+
story's lavender `item-heading` background was silently dropped before and paints now. Only visible in
|
|
99
|
+
that synthetic story (every slot painted a loud color). Re-approve the baseline if it resurfaces.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
_Historical detail (A/B/C/D divergence audit, Percy mechanism, run commands) lived in
|
|
104
|
+
`stories/ds-accordion-native/POC_FINDINGS.md`, removed in PUI-18742. Recover with
|
|
105
|
+
`git show 3468ca3ccb4^:stories/ds-accordion-native/POC_FINDINGS.md`._
|
|
@@ -6,19 +6,29 @@ if (
|
|
|
6
6
|
browser.capabilities.browserName === 'chrome') ||
|
|
7
7
|
browser.capabilities.browserName === 'Chrome'
|
|
8
8
|
) {
|
|
9
|
-
//
|
|
10
|
-
// (custom
|
|
9
|
+
// Structural coverage for custom actions living OUTSIDE the disclosure trigger.
|
|
10
|
+
// Originally written for PUI-17912 (custom actions moved out of the role="heading" container).
|
|
11
|
+
// PUI-18742 migrated ds-accordion to a native <details>/<summary> disclosure, which supersedes
|
|
12
|
+
// that fix: the <summary> IS the toggle, the heading container now sits INSIDE it, and heading
|
|
13
|
+
// semantics (role="heading" + aria-level) are opt-in per consumer via the
|
|
14
|
+
// dsAccordionItemHeaderContainer slot prop — see role/DSAccordion.role-heading.func.spec.js.
|
|
15
|
+
// The invariant that still matters here: nothing interactive is nested inside the trigger.
|
|
11
16
|
describe('PUI-18621 - DSAccordion:: heading container structure after renderCustomActions fix - func', () => {
|
|
12
17
|
before('loading page', async () => {
|
|
13
18
|
const errorOnGo = await DSAccordionCO.headerControls.go();
|
|
14
19
|
if (errorOnGo) throw errorOnGo;
|
|
15
20
|
});
|
|
16
21
|
|
|
17
|
-
it('01:
|
|
22
|
+
it('01: summary trigger should wrap the heading container and no other interactive elements', async () => {
|
|
23
|
+
const trigger = await DSAccordionCO.getAccordionHeader(0);
|
|
24
|
+
await expect(await trigger.getTagName()).toBe('summary');
|
|
25
|
+
|
|
18
26
|
const headingContainer = await DSAccordionCO.getAccordionItemHeaderContainerByIndex(0);
|
|
19
|
-
await expect(headingContainer).
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
await expect(headingContainer).toExist();
|
|
28
|
+
|
|
29
|
+
// The <summary> is the toggle itself, so no nested <button> may live inside it.
|
|
30
|
+
const buttonsInsideTrigger = await trigger.$$('button');
|
|
31
|
+
await expect(buttonsInsideTrigger.length).toBe(0);
|
|
22
32
|
});
|
|
23
33
|
|
|
24
34
|
it('02: custom actions container should exist outside the heading container', async () => {
|
|
@@ -39,10 +49,16 @@ if (
|
|
|
39
49
|
});
|
|
40
50
|
|
|
41
51
|
it('04: toolbar trigger in custom actions should open dropdown menu on click', async () => {
|
|
52
|
+
// Hardened after the cloud-only "Login not displayed" flake (see QA_NOTES.md): wait for the
|
|
53
|
+
// trigger to be clickable, then assert the DSDropdownMenuV2 item wrapper is displayed before
|
|
54
|
+
// reaching for the option, so a menu that never opened fails fast instead of burning the
|
|
55
|
+
// 10s waitForDisplayed. `p*=Login` is tag-qualified — DSTypography variant="b1" renders a <p>.
|
|
42
56
|
const toolbar = await DSAccordionCO.getToolbarByIndex(0);
|
|
57
|
+
await toolbar.waitForClickable({ timeout: 10000 });
|
|
43
58
|
await toolbar.click();
|
|
44
|
-
const
|
|
45
|
-
await
|
|
59
|
+
const menu = await DSAccordionCO.getToolbarMenuByIndex(0);
|
|
60
|
+
await expect(menu).toBeDisplayed();
|
|
61
|
+
const firstMenuOption = await $('p*=Login');
|
|
46
62
|
await expect(firstMenuOption).toBeDisplayed();
|
|
47
63
|
});
|
|
48
64
|
});
|
|
@@ -8,7 +8,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
8
8
|
if (errorOnGo) throw errorOnGo;
|
|
9
9
|
});
|
|
10
10
|
it('01: should type into an input rendered inside the open accordion item', async () => {
|
|
11
|
-
|
|
11
|
+
// DSInputText forwards `data-testid` through its global attributes onto the <input> itself
|
|
12
|
+
// (StyledInput), not onto the wrapper — so the testid IS the input, never its ancestor.
|
|
13
|
+
const input = await $('[data-testid="task-name"]');
|
|
12
14
|
await input.waitForDisplayed();
|
|
13
15
|
await input.setValue('Test task');
|
|
14
16
|
await expect(input).toHaveValue('Test task');
|
|
@@ -11,35 +11,31 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
11
11
|
await browser.maximizeWindow();
|
|
12
12
|
});
|
|
13
13
|
it('01: should show the full label on hover', async () => {
|
|
14
|
-
// applitools is losing the hover when taking the snapshot
|
|
15
|
-
await browser.eyesOpen();
|
|
16
14
|
await (await DSAppPickerCO.getOpenAppPicker()).waitForDisplayed();
|
|
17
15
|
const openAppPickerBtn = await DSAppPickerCO.getOpenAppPicker();
|
|
18
16
|
await openAppPickerBtn.click();
|
|
19
17
|
const secondChip = await DSAppPickerCO.getChipByLabel('Pipeline but with a really long label that will truncate');
|
|
20
18
|
await mouseOver(secondChip);
|
|
21
19
|
await browser.pause(500);
|
|
22
|
-
const snapshot = await browser.
|
|
20
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
23
21
|
await expect(snapshot).toEqual(0);
|
|
24
22
|
});
|
|
25
23
|
it('02: should show the full label on hover - disabled Chip', async () => {
|
|
26
|
-
await browser.eyesOpen();
|
|
27
24
|
const DisabledChip = await DSAppPickerCO.getChipByLabel(
|
|
28
25
|
'Dashboard but with a really long label that will truncate',
|
|
29
26
|
);
|
|
30
27
|
await mouseOver(DisabledChip);
|
|
31
28
|
await browser.pause(500);
|
|
32
|
-
const snapshot = await browser.
|
|
29
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
33
30
|
await expect(snapshot).toEqual(0);
|
|
34
31
|
});
|
|
35
32
|
it('03: should show the full label on focus', async () => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
await openAppPickerBtn.click();
|
|
33
|
+
// the panel is already open from test 01 - since PUI-18354 the trigger
|
|
34
|
+
// toggles, so clicking it again would close it
|
|
39
35
|
await browser.keys(Key.Tab);
|
|
40
36
|
await browser.keys(Key.Enter);
|
|
41
37
|
await browser.pause(500);
|
|
42
|
-
const snapshot = await browser.
|
|
38
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
43
39
|
await expect(snapshot).toEqual(0);
|
|
44
40
|
});
|
|
45
41
|
});
|
|
@@ -245,7 +245,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
245
245
|
|
|
246
246
|
describe('PUI-9222 - Chat, Long Words, Visual Tests', () => {
|
|
247
247
|
before('loading page', async () => {
|
|
248
|
-
const errorOnGo = await ChatCO.
|
|
248
|
+
const errorOnGo = await ChatCO.basicTestURL.go();
|
|
249
249
|
if (errorOnGo) throw errorOnGo;
|
|
250
250
|
});
|
|
251
251
|
it('should display long words breaking at composer', async () => {
|
package/ds-chat/DSChatCO.js
CHANGED
|
@@ -11,15 +11,15 @@ export default class DSChatCO extends PageObject {
|
|
|
11
11
|
|
|
12
12
|
static containerURL = new Urlbuilder(PATH_E2E_CHAT, 'container');
|
|
13
13
|
|
|
14
|
-
static loadMoreURL = new Urlbuilder(PATH_E2E_CHAT, 'container-load-more');
|
|
14
|
+
static loadMoreURL = new Urlbuilder(PATH_E2E_CHAT, 'container-load-more-test');
|
|
15
15
|
|
|
16
|
-
static loadingURL = new Urlbuilder(PATH_E2E_CHAT, 'loading-container');
|
|
16
|
+
static loadingURL = new Urlbuilder(PATH_E2E_CHAT, 'loading-container-test');
|
|
17
17
|
|
|
18
|
-
static loadingErrorURL = new Urlbuilder(PATH_E2E_CHAT, 'loading-error');
|
|
18
|
+
static loadingErrorURL = new Urlbuilder(PATH_E2E_CHAT, 'loading-error-test');
|
|
19
19
|
|
|
20
|
-
static floatingExampleURL = new Urlbuilder(PATH_E2E_CHAT, 'floating-example');
|
|
20
|
+
static floatingExampleURL = new Urlbuilder(PATH_E2E_CHAT, 'floating-example-test');
|
|
21
21
|
|
|
22
|
-
static focusCasesURL = new Urlbuilder(PATH_E2E_CHAT, 'container-focus-cases');
|
|
22
|
+
static focusCasesURL = new Urlbuilder(PATH_E2E_CHAT, 'container-focus-cases-test');
|
|
23
23
|
|
|
24
24
|
static mobileContainerURL = new Urlbuilder(PATH_E2E_CHAT, 'mobile-container-test');
|
|
25
25
|
|
|
@@ -27,23 +27,23 @@ export default class DSChatCO extends PageObject {
|
|
|
27
27
|
|
|
28
28
|
static tooltipPosition = new Urlbuilder(PATH_E2E_CHAT, 'tooltip-position-test');
|
|
29
29
|
|
|
30
|
-
static focuseableBanners = new Urlbuilder(PATH_E2E_CHAT, 'focus-on-banner');
|
|
30
|
+
static focuseableBanners = new Urlbuilder(PATH_E2E_CHAT, 'focus-on-banner-test');
|
|
31
31
|
|
|
32
|
-
static newMessages = new Urlbuilder(PATH_E2E_CHAT, 'container-new-messages');
|
|
32
|
+
static newMessages = new Urlbuilder(PATH_E2E_CHAT, 'container-new-messages-test');
|
|
33
33
|
|
|
34
|
-
static nonDeliveredURL = new Urlbuilder(PATH_E2E_CHAT, 'non-delivered-messages');
|
|
34
|
+
static nonDeliveredURL = new Urlbuilder(PATH_E2E_CHAT, 'non-delivered-messages-test');
|
|
35
35
|
|
|
36
|
-
static nonGridInfluencerURL = new Urlbuilder(PATH_E2E_CHAT, 'non-grid-influencer-integration');
|
|
36
|
+
static nonGridInfluencerURL = new Urlbuilder(PATH_E2E_CHAT, 'non-grid-influencer-integration-test');
|
|
37
37
|
|
|
38
|
-
static customBanner = new Urlbuilder(PATH_E2E_CHAT, 'custom-banner');
|
|
38
|
+
static customBanner = new Urlbuilder(PATH_E2E_CHAT, 'custom-banner-test');
|
|
39
39
|
|
|
40
|
-
static emptyState = new Urlbuilder(PATH_E2E_CHAT, 'empty-state');
|
|
40
|
+
static emptyState = new Urlbuilder(PATH_E2E_CHAT, 'empty-state-test');
|
|
41
41
|
|
|
42
42
|
static globalLineHeight = new Urlbuilder(PATH_E2E_CHAT, 'global-line-height');
|
|
43
43
|
|
|
44
44
|
static unreadMessagesBanner = new Urlbuilder(PATH_E2E_CHAT, 'unread-messages-banner');
|
|
45
45
|
|
|
46
|
-
static
|
|
46
|
+
static basicTestURL = new Urlbuilder(PATH_E2E_CHAT, 'basic-test');
|
|
47
47
|
|
|
48
48
|
// selector
|
|
49
49
|
static async isTyping() {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PATH_E2E_CHAT_CARD } from '../../paths';
|
|
2
2
|
import { PageObject, Urlbuilder } from '../../helpers';
|
|
3
3
|
|
|
4
4
|
export default class CardCO extends PageObject {
|
|
5
|
-
static chatCardURL = new Urlbuilder(PATH_CHAT_PARTS, 'chat-card');
|
|
6
|
-
|
|
7
5
|
static cardBasicURL = new Urlbuilder(PATH_E2E_CHAT_CARD, 'basic-test');
|
|
8
6
|
|
|
9
7
|
static cardWithNotificationBadgesURL = new Urlbuilder(PATH_E2E_CHAT_CARD, 'with-notification-badges-test');
|
|
@@ -13,7 +13,7 @@ export default class ComposerCO extends PageObject {
|
|
|
13
13
|
|
|
14
14
|
static responsiveContainerUCURL = new Urlbuilder(PATH_E2E_CHAT, 'responsive-container');
|
|
15
15
|
|
|
16
|
-
static containerFocusCasesURL = new Urlbuilder(PATH_E2E_CHAT, 'container-focus-cases');
|
|
16
|
+
static containerFocusCasesURL = new Urlbuilder(PATH_E2E_CHAT, 'container-focus-cases-test');
|
|
17
17
|
|
|
18
18
|
static LONG_STRING = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula bibendum nulla';
|
|
19
19
|
|
|
@@ -2,8 +2,10 @@ import { PATH_E2E_CHAT } from '../../paths';
|
|
|
2
2
|
import { PageObject, Urlbuilder } from '../../helpers';
|
|
3
3
|
|
|
4
4
|
export default class FloatingButtonCO extends PageObject {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
// FloatingExampleTest renders the floating button alone at rest (its chat panel is gated behind
|
|
6
|
+
// `show`, initially false), so it covers both the isolated-button visual states and the in-context
|
|
7
|
+
// axe-core run. The former dedicated `float-button` story was removed in the
|
|
8
|
+
// ds-chat-floating-button compliance retrofit and is not coming back.
|
|
7
9
|
static floatingExampleURL = new Urlbuilder(PATH_E2E_CHAT, 'floating-example-test');
|
|
8
10
|
|
|
9
11
|
// selectors
|
|
@@ -5,7 +5,7 @@ import { mouseOver, keyboardActions, tickActions, performKeyboardAction } from '
|
|
|
5
5
|
if (!browser.capabilities['ice:options'].isPhone) {
|
|
6
6
|
describe('PUI-6669 - Chat, Floating Button, States - Visual Tests', () => {
|
|
7
7
|
beforeEach('loading page', async () => {
|
|
8
|
-
const errorOnGo = await FloatingButtonCO.
|
|
8
|
+
const errorOnGo = await FloatingButtonCO.floatingExampleURL.go();
|
|
9
9
|
if (errorOnGo) throw errorOnGo;
|
|
10
10
|
});
|
|
11
11
|
it('should display the floating button in default state', async () => {
|
|
@@ -19,24 +19,24 @@ if (
|
|
|
19
19
|
const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
|
|
20
20
|
await checkbox.waitForExist();
|
|
21
21
|
const result = await axeCoreCheck();
|
|
22
|
-
expect(result
|
|
22
|
+
await expect(result).toHaveLength(0);
|
|
23
23
|
});
|
|
24
24
|
it('02: Evaluate checkbox accessibility with axe-core (focused)', async () => {
|
|
25
25
|
await browser.keys(Key.Tab);
|
|
26
26
|
const result = await axeCoreCheck();
|
|
27
|
-
expect(result
|
|
27
|
+
await expect(result).toHaveLength(0);
|
|
28
28
|
});
|
|
29
29
|
it('03: Evaluate checkbox accessibility with axe-core (hovered)', async () => {
|
|
30
30
|
const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
|
|
31
31
|
await mouseOver(checkbox);
|
|
32
32
|
const result = await axeCoreCheck();
|
|
33
|
-
expect(result
|
|
33
|
+
await expect(result).toHaveLength(0);
|
|
34
34
|
});
|
|
35
35
|
it('04: Evaluate checkbox accessibility with axe-core (clicked)', async () => {
|
|
36
36
|
const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
|
|
37
37
|
await checkbox.click();
|
|
38
38
|
const result = await axeCoreCheck();
|
|
39
|
-
expect(result
|
|
39
|
+
await expect(result).toHaveLength(0);
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
}
|
package/ds-controlled-form/ds-controlled-checkbox/Basic/DSControlledCheckbox.basic.visual.spec.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
2
|
+
import { mouseOver } from '../../../helpers';
|
|
3
|
+
import DSControlledCheckboxCO from '../DSControlledCheckboxCO';
|
|
4
|
+
|
|
5
|
+
if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
|
|
6
|
+
describe('PUI-18822 - DSControlledCheckbox: update to latest spec and typography- visual test', () => {
|
|
7
|
+
before('loading page', async () => {
|
|
8
|
+
const errorOnGo = await DSControlledCheckboxCO.basicURL.go();
|
|
9
|
+
if (errorOnGo) throw errorOnGo;
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('01: the checked checkbox is not focused', async () => {
|
|
13
|
+
const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
|
|
14
|
+
await checkbox.waitForExist();
|
|
15
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
16
|
+
await expect(snapshot).toEqual(0);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('02: checkbox hover even when checked', async () => {
|
|
20
|
+
const controlBox = await DSControlledCheckboxCO.getCheckboxInputWrapper();
|
|
21
|
+
await controlBox.moveTo();
|
|
22
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
23
|
+
await expect(snapshot).toEqual(0);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('03: the checked checkbox is focused', async () => {
|
|
27
|
+
await browser.keys(Key.Tab);
|
|
28
|
+
const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
|
|
29
|
+
await expect(checkbox).toBeFocused();
|
|
30
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
31
|
+
await expect(snapshot).toEqual(0);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('04: checkbox is focused but unchecked', async () => {
|
|
35
|
+
await browser.keys(Key.Space);
|
|
36
|
+
const checkbox = await DSControlledCheckboxCO.getCustomCheckbox();
|
|
37
|
+
await expect(checkbox).toBeFocused();
|
|
38
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
39
|
+
await expect(snapshot).toEqual(0);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('05: checkbox not focused, not hovered when unchecked', async () => {
|
|
43
|
+
await browser.keys(Key.Tab);
|
|
44
|
+
await mouseOver(null, 400, 300);
|
|
45
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
46
|
+
await expect(snapshot).toEqual(0);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('06: checkbox hover even when unchecked', async () => {
|
|
50
|
+
const controlBox = await DSControlledCheckboxCO.getCheckboxInputWrapper();
|
|
51
|
+
await controlBox.moveTo();
|
|
52
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
53
|
+
await expect(snapshot).toEqual(0);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
@@ -29,6 +29,10 @@ export default class DSControlledCheckboxCO extends PageObject {
|
|
|
29
29
|
return $('[data-testid="ds-checkbox"]');
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
static async getCheckboxInputWrapper() {
|
|
33
|
+
return $('[data-testid="ds-checkbox-input-wrapper"]');
|
|
34
|
+
}
|
|
35
|
+
|
|
32
36
|
static async getCustomCheckbox() {
|
|
33
37
|
return $('[data-testid="custom-data-testid"]');
|
|
34
38
|
}
|
|
@@ -11,7 +11,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
11
11
|
const checkbox = await DSControlledCheckboxCO.getCheckboxByLabel('Group');
|
|
12
12
|
await checkbox.waitForDisplayed();
|
|
13
13
|
await browser.keys(Key.Tab);
|
|
14
|
-
const snapshot = await browser.
|
|
14
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
15
15
|
await expect(snapshot).toEqual(0);
|
|
16
16
|
});
|
|
17
17
|
});
|
|
@@ -19,24 +19,24 @@ if (
|
|
|
19
19
|
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
20
20
|
await checkbox.waitForExist();
|
|
21
21
|
const result = await axeCoreCheck();
|
|
22
|
-
expect(result
|
|
22
|
+
await expect(result).toHaveLength(0);
|
|
23
23
|
});
|
|
24
24
|
it('02: Evaluate checkbox accessibility with axe-core (focused)', async () => {
|
|
25
25
|
await browser.keys(Key.Tab);
|
|
26
26
|
const result = await axeCoreCheck();
|
|
27
|
-
expect(result
|
|
27
|
+
await expect(result).toHaveLength(0);
|
|
28
28
|
});
|
|
29
29
|
it('03: Evaluate checkbox accessibility with axe-core (hovered)', async () => {
|
|
30
30
|
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
31
31
|
await mouseOver(checkbox);
|
|
32
32
|
const result = await axeCoreCheck();
|
|
33
|
-
expect(result
|
|
33
|
+
await expect(result).toHaveLength(0);
|
|
34
34
|
});
|
|
35
35
|
it('04: Evaluate checkbox accessibility with axe-core (clicked)', async () => {
|
|
36
36
|
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(1);
|
|
37
37
|
await checkbox.click();
|
|
38
38
|
const result = await axeCoreCheck();
|
|
39
|
-
expect(result
|
|
39
|
+
await expect(result).toHaveLength(0);
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Key } from 'webdriverio';
|
|
1
2
|
import { mouseOver } from '../../../helpers';
|
|
2
3
|
import DSControlledCheckboxCO from '../DSControlledCheckboxCO';
|
|
3
4
|
|
|
@@ -13,7 +14,76 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
|
|
|
13
14
|
await checkbox1.click();
|
|
14
15
|
await checkbox1.click();
|
|
15
16
|
await mouseOver(checkbox2);
|
|
16
|
-
const snapshot = await browser.
|
|
17
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
18
|
+
await expect(snapshot).toEqual(0);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('PUI-18849 - DSControlledCheckbox - hasError - Visual Test', () => {
|
|
23
|
+
before('loading page', async () => {
|
|
24
|
+
const errorOnGo = await DSControlledCheckboxCO.hasError.go();
|
|
25
|
+
if (errorOnGo) throw errorOnGo;
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('01: the partial selected checkbox is not focused', async () => {
|
|
29
|
+
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
30
|
+
await checkbox.waitForExist();
|
|
31
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
32
|
+
await expect(snapshot).toEqual(0);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('02: checkbox hover even when partial selected', async () => {
|
|
36
|
+
const controlBox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
37
|
+
await controlBox.moveTo();
|
|
38
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
39
|
+
await expect(snapshot).toEqual(0);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('03: the partial selected checkbox is focused', async () => {
|
|
43
|
+
await browser.keys(Key.Tab);
|
|
44
|
+
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
45
|
+
await expect(checkbox).toBeFocused();
|
|
46
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
47
|
+
await expect(snapshot).toEqual(0);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('04: checkbox is focused but not selected', async () => {
|
|
51
|
+
await browser.keys(Key.Space);
|
|
52
|
+
await browser.keys(Key.Space);
|
|
53
|
+
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
54
|
+
await expect(checkbox).toBeFocused();
|
|
55
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
56
|
+
await expect(snapshot).toEqual(0);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('05: checkbox not focused, not hovered when not selected', async () => {
|
|
60
|
+
await browser.keys(Key.Tab);
|
|
61
|
+
await mouseOver(null, 400, 300);
|
|
62
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
63
|
+
await expect(snapshot).toEqual(0);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('06: checkbox hover even when not selected', async () => {
|
|
67
|
+
const controlBox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
68
|
+
await controlBox.moveTo();
|
|
69
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
70
|
+
await expect(snapshot).toEqual(0);
|
|
71
|
+
});
|
|
72
|
+
it('07: the selected checkbox is focused', async () => {
|
|
73
|
+
await browser.keys(Key.Tab);
|
|
74
|
+
await browser.keys(Key.Space);
|
|
75
|
+
const controlBox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
76
|
+
await mouseOver(controlBox);
|
|
77
|
+
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(2);
|
|
78
|
+
await expect(checkbox).toBeFocused();
|
|
79
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
80
|
+
await expect(snapshot).toEqual(0);
|
|
81
|
+
});
|
|
82
|
+
it('08: the selected checkbox is hovered', async () => {
|
|
83
|
+
await browser.keys(Key.Tab);
|
|
84
|
+
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(2);
|
|
85
|
+
await mouseOver(checkbox);
|
|
86
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
17
87
|
await expect(snapshot).toEqual(0);
|
|
18
88
|
});
|
|
19
89
|
});
|
|
@@ -19,24 +19,24 @@ if (
|
|
|
19
19
|
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
20
20
|
await checkbox.waitForExist();
|
|
21
21
|
const result = await axeCoreCheck();
|
|
22
|
-
expect(result
|
|
22
|
+
await expect(result).toHaveLength(0);
|
|
23
23
|
});
|
|
24
24
|
it('02: Evaluate checkbox accessibility with axe-core (focused)', async () => {
|
|
25
25
|
await browser.keys(Key.Tab);
|
|
26
26
|
const result = await axeCoreCheck();
|
|
27
|
-
expect(result
|
|
27
|
+
await expect(result).toHaveLength(0);
|
|
28
28
|
});
|
|
29
29
|
it('03: Evaluate checkbox accessibility with axe-core (hovered)', async () => {
|
|
30
30
|
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(0);
|
|
31
31
|
await mouseOver(checkbox);
|
|
32
32
|
const result = await axeCoreCheck();
|
|
33
|
-
expect(result
|
|
33
|
+
await expect(result).toHaveLength(0);
|
|
34
34
|
});
|
|
35
35
|
it('04: Evaluate checkbox accessibility with axe-core (clicked)', async () => {
|
|
36
36
|
const checkbox = await DSControlledCheckboxCO.getCheckboxByIndex(2);
|
|
37
37
|
await checkbox.click();
|
|
38
38
|
const result = await axeCoreCheck();
|
|
39
|
-
expect(result
|
|
39
|
+
await expect(result).toHaveLength(0);
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
}
|
package/ds-controlled-form/ds-controlled-checkbox/Mixed/DSControlledCheckbox.mixed.visual.spec.js
CHANGED
|
@@ -12,7 +12,7 @@ describe('PUI-7100 - DSControlledCheckbox - Visual Test - mixed', () => {
|
|
|
12
12
|
await checkbox1.click();
|
|
13
13
|
await checkbox1.click();
|
|
14
14
|
await mouseOver(checkbox2);
|
|
15
|
-
const snapshot = await browser.
|
|
15
|
+
const snapshot = await browser.percyCheckScreenshot();
|
|
16
16
|
await expect(snapshot).toEqual(0);
|
|
17
17
|
});
|
|
18
18
|
});
|