dimsum-e2e-tests 3.80.0-next.1 → 3.80.0-next.12

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 CHANGED
@@ -3,6 +3,72 @@
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.80.0-next.12 (2026-09-22)
7
+
8
+ ### Features
9
+
10
+ - dimsum:: add Breadcrumb and InputMask Accessibility Expert Validation docs stories [PUI-18917](https://jira.elliemae.io/browse/PUI-18917) ([#8371](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8371)) ([f1b3410](https://github.com/intcx/PLATFORM-UI.dimsum/commit/f1b34109a9e9e56a63a6d9d22441eb89c41fc14e))
11
+
12
+ ## 3.80.0-next.11 (2026-09-22)
13
+
14
+ ### Features
15
+
16
+ - ds-fast-list:: E2E coverage - visual, axe-core, scroll-to-index [PUI-19124](https://jira.elliemae.io/browse/PUI-19124) ([#8382](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8382)) ([7f0da31](https://github.com/intcx/PLATFORM-UI.dimsum/commit/7f0da316cb8086f4f5c20af35cffe2440dad625c))
17
+
18
+ ## 3.80.0-next.10 (2026-09-22)
19
+
20
+ ### Bug Fixes
21
+
22
+ - ds-ribbon:: align status icon fills with the theme palette [PUI-19186](https://jira.elliemae.io/browse/PUI-19186) ([#8385](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8385)) ([84ca6f4](https://github.com/intcx/PLATFORM-UI.dimsum/commit/84ca6f42f3767846539678474fc7980b9603b303))
23
+
24
+ ## 3.80.0-next.9 (2026-09-21)
25
+
26
+ ### Features
27
+
28
+ - ds-form-date-time-picker:: dimsum compliance [PUI-18983] (https://jira.elliemae.io/browse/PUI-18983) ([#8370](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8370)) ([77d4dd4](https://github.com/intcx/PLATFORM-UI.dimsum/commit/77d4dd4bb8bac52ef900292b350c5cba983dcfb2))
29
+
30
+ ## 3.80.0-next.8 (2026-09-17)
31
+
32
+ ### Features
33
+
34
+ - ds-mobile:: storied removed from portal + fixed portal stories linking [PUI-18696](https://jira.elliemae.io/browse/PUI-18696) ([#8376](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8376)) ([45d6c31](https://github.com/intcx/PLATFORM-UI.dimsum/commit/45d6c31bf187e4f9645a2b98f8aa2e478b246fbe))
35
+
36
+ ## 3.80.0-next.7 (2026-09-17)
37
+
38
+ ### Features
39
+
40
+ - ds-codemods:: added legacy deprecation command with ds-mobile +minor fixes to reports duplicates [PUI-18696](https://jira.elliemae.io/browse/PUI-18696) ([#8375](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8375)) ([6c55c8f](https://github.com/intcx/PLATFORM-UI.dimsum/commit/6c55c8fc8fdb41492fafaac3ac86652532fd9b15))
41
+
42
+ ## 3.80.0-next.6 (2026-09-17)
43
+
44
+ ### Features
45
+
46
+ - ds-progress-indicator:: dimsum compliance [PUI-18856](https://jira.elliemae.io/browse/PUI-18856) ([#8353](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8353)) ([ada7e89](https://github.com/intcx/PLATFORM-UI.dimsum/commit/ada7e89e2fa2ccf30d141d62c09ae888c5380622))
47
+
48
+ ## 3.80.0-next.5 (2026-09-16)
49
+
50
+ ### Bug Fixes
51
+
52
+ - ds-fast-list:: dimsum compliance remediation — test pillars, CT infra, code structure clean up, PropTypes slot props table gap [PUI-19124](https://jira.elliemae.io/browse/PUI-19124) ([#8369](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8369)) ([cc79c47](https://github.com/intcx/PLATFORM-UI.dimsum/commit/cc79c4750f82bd44b5a3c33cb0abcd88410e5a6e))
53
+
54
+ ## 3.80.0-next.4 (2026-09-16)
55
+
56
+ ### Bug Fixes
57
+
58
+ - ds-virtual-list:: fix typescript-testing example teaching an invalid single-child form ([93c739d](https://github.com/intcx/PLATFORM-UI.dimsum/commit/93c739dfe993edca8238658d8d41c9cd1e7a9d5f))
59
+
60
+ ## 3.80.0-next.3 (2026-09-15)
61
+
62
+ ### Features
63
+
64
+ - dimsum:: add PillsV2 tooltip trigger semantics docs story [PUI-18616](https://jira.elliemae.io/browse/PUI-18616) ([#8364](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8364)) ([6fff01f](https://github.com/intcx/PLATFORM-UI.dimsum/commit/6fff01fe63209719fe705c90f58c62914cf6c2e8))
65
+
66
+ ## 3.80.0-next.2 (2026-09-14)
67
+
68
+ ### Features
69
+
70
+ - ds-chip:: implement spec v2 for chip component [PUI-17972](https://jira.elliemae.io/browse/PUI-17972) ([#8345](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8345)) ([5e8c87b](https://github.com/intcx/PLATFORM-UI.dimsum/commit/5e8c87b00fd01952bfb67bd1e71339285468aaaf)), closes [#8326](https://github.com/intcx/PLATFORM-UI.dimsum/issues/8326)
71
+
6
72
  ## 3.80.0-next.1 (2026-09-14)
7
73
 
8
74
  **Note:** Version bump only for package dimsum-e2e-tests
@@ -0,0 +1,74 @@
1
+ import { mouseOver, tabStops } from '../../helpers';
2
+ import DSChipCO from '../DSChipCO';
3
+
4
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
5
+ const PARKED_X = 500;
6
+ const PARKED_Y = 400;
7
+
8
+ describe('PUI-18892 - DSChip:: basic shape, Spec v2 states - visual test', () => {
9
+ before('loading page', async () => {
10
+ const errorOnGo = await DSChipCO.basicURL.go();
11
+ if (errorOnGo) throw errorOnGo;
12
+ });
13
+
14
+ it('01: large chip hovered', async () => {
15
+ await (await DSChipCO.getChipByIndex(0)).waitForDisplayed();
16
+ await mouseOver(await DSChipCO.getChipByIndex(0));
17
+ const snapshot = await browser.percyCheckScreenshot();
18
+ await expect(snapshot).toEqual(0);
19
+ });
20
+
21
+ it('02: large chip focused, not hovered', async () => {
22
+ const chipButton = await (await DSChipCO.getChipByIndex(0)).$('button');
23
+ await mouseOver(null, PARKED_X, PARKED_Y);
24
+ await tabStops(2); // chip 0 root wrapper, then chip 0 button
25
+ await expect(chipButton).toBeFocused();
26
+ const snapshot = await browser.percyCheckScreenshot();
27
+ await expect(snapshot).toEqual(0);
28
+ });
29
+
30
+ it('03: large chip focused and hovered', async () => {
31
+ const chipButton = await (await DSChipCO.getChipByIndex(0)).$('button');
32
+ await mouseOver(await DSChipCO.getChipByIndex(0));
33
+ await expect(chipButton).toBeFocused();
34
+ const snapshot = await browser.percyCheckScreenshot();
35
+ await expect(snapshot).toEqual(0);
36
+ });
37
+
38
+ it('04: small chip hovered', async () => {
39
+ await mouseOver(await DSChipCO.getChipByIndex(1));
40
+ const snapshot = await browser.percyCheckScreenshot();
41
+ await expect(snapshot).toEqual(0);
42
+ });
43
+
44
+ it('05: selected chip focused, not hovered', async () => {
45
+ const chipButton = await (await DSChipCO.getChipByIndex(2)).$('button');
46
+ await mouseOver(null, PARKED_X, PARKED_Y);
47
+ await tabStops(2); // from chip 0 button: chip 1 button, then chip 2 button
48
+ await expect(chipButton).toBeFocused();
49
+ const snapshot = await browser.percyCheckScreenshot();
50
+ await expect(snapshot).toEqual(0);
51
+ });
52
+
53
+ it('06: selected chip focused and hovered', async () => {
54
+ const chipButton = await (await DSChipCO.getChipByIndex(2)).$('button');
55
+ await mouseOver(await DSChipCO.getChipByIndex(2));
56
+ await expect(chipButton).toBeFocused();
57
+ const snapshot = await browser.percyCheckScreenshot();
58
+ await expect(snapshot).toEqual(0);
59
+ });
60
+
61
+ it('07: disabled chip hovered', async () => {
62
+ await mouseOver(await DSChipCO.getChipByIndex(4));
63
+ const snapshot = await browser.percyCheckScreenshot();
64
+ await expect(snapshot).toEqual(0);
65
+ });
66
+
67
+ it('08: wrapText chip hovered', async () => {
68
+ const chipButton = await (await DSChipCO.getChipByIndex(5)).$('button');
69
+ await chipButton.moveTo();
70
+ const snapshot = await browser.percyCheckScreenshot();
71
+ await expect(snapshot).toEqual(0);
72
+ });
73
+ });
74
+ }
@@ -0,0 +1,66 @@
1
+ import { mouseOver, tabStops } from '../../helpers';
2
+ import DSChipCO from '../DSChipCO';
3
+
4
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
5
+ const PARKED_X = 500;
6
+ const PARKED_Y = 400;
7
+
8
+ describe('PUI-18893 - DSChip:: round shape, Spec v2 states - visual test', () => {
9
+ before('loading page', async () => {
10
+ const errorOnGo = await DSChipCO.shapeURL.go();
11
+ if (errorOnGo) throw errorOnGo;
12
+ });
13
+
14
+ it('01: all round chips at rest', async () => {
15
+ const chip = await DSChipCO.getChipByIndex(0);
16
+ await chip.waitForDisplayed();
17
+ await mouseOver(null, PARKED_X, PARKED_Y);
18
+ const snapshot = await browser.percyCheckScreenshot();
19
+ await expect(snapshot).toEqual(0);
20
+ });
21
+
22
+ it('02: large round chip hovered', async () => {
23
+ await mouseOver(await DSChipCO.getChipByIndex(0));
24
+ const snapshot = await browser.percyCheckScreenshot();
25
+ await expect(snapshot).toEqual(0);
26
+ });
27
+
28
+ it('03: large round chip focused, not hovered', async () => {
29
+ const chipButton = await (await DSChipCO.getChipByIndex(0)).$('button');
30
+ await mouseOver(null, PARKED_X, PARKED_Y);
31
+ await tabStops(1); // chip 0 button (no tabIndex on the round chip roots)
32
+ await expect(chipButton).toBeFocused();
33
+ const snapshot = await browser.percyCheckScreenshot();
34
+ await expect(snapshot).toEqual(0);
35
+ });
36
+
37
+ it('04: large round chip focused and hovered', async () => {
38
+ const chipButton = await (await DSChipCO.getChipByIndex(0)).$('button');
39
+ await mouseOver(await DSChipCO.getChipByIndex(0));
40
+ await expect(chipButton).toBeFocused();
41
+ const snapshot = await browser.percyCheckScreenshot();
42
+ await expect(snapshot).toEqual(0);
43
+ });
44
+
45
+ it('05: small round chip hovered', async () => {
46
+ await mouseOver(await DSChipCO.getChipByIndex(1));
47
+ const snapshot = await browser.percyCheckScreenshot();
48
+ await expect(snapshot).toEqual(0);
49
+ });
50
+
51
+ it('06: selected round chip focused, not hovered', async () => {
52
+ const chipButton = await (await DSChipCO.getChipByIndex(2)).$('button');
53
+ await mouseOver(null, PARKED_X, PARKED_Y);
54
+ await tabStops(2); // from chip 0 button: chip 1 button, then chip 2 button
55
+ await expect(chipButton).toBeFocused();
56
+ const snapshot = await browser.percyCheckScreenshot();
57
+ await expect(snapshot).toEqual(0);
58
+ });
59
+
60
+ it('07: disabled round chip hovered', async () => {
61
+ await mouseOver(await DSChipCO.getChipByIndex(4));
62
+ const snapshot = await browser.percyCheckScreenshot();
63
+ await expect(snapshot).toEqual(0);
64
+ });
65
+ });
66
+ }
@@ -0,0 +1,69 @@
1
+ import { mouseOver, tabStops } from '../../helpers';
2
+ import DSChipCO from '../DSChipCO';
3
+
4
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
5
+ const PARKED_X = 900;
6
+ const PARKED_Y = 700;
7
+
8
+ // Covers the Spec v2 implementation shipped in PUI-17972 (Implement Spec v2 for Chip component)
9
+ describe('PUI-18992 - DSChip:: inside popper, Spec v2 states - visual test', () => {
10
+ before('loading page', async () => {
11
+ const errorOnGo = await DSChipCO.popperURL.go();
12
+ if (errorOnGo) throw errorOnGo;
13
+ });
14
+
15
+ it('01: chips rendered inside the open popover, first chip focused on open', async () => {
16
+ const popperTrigger = await DSChipCO.getPopperTrigger();
17
+ await popperTrigger.click();
18
+ const chip = await DSChipCO.getChipByIndex(0);
19
+ await chip.waitForDisplayed();
20
+ await mouseOver(null, PARKED_X, PARKED_Y);
21
+ // the story focuses the first chip on open, so this frame is both the idle-open
22
+ // state and the focus-on-open state — one snapshot covers both
23
+ await expect(await chip.$('button')).toBeFocused();
24
+ const snapshot = await browser.percyCheckScreenshot();
25
+ await expect(snapshot).toEqual(0);
26
+ });
27
+
28
+ it('02: first chip focused and hovered', async () => {
29
+ const chipButton = await (await DSChipCO.getChipByIndex(0)).$('button');
30
+ await mouseOver(await DSChipCO.getChipByIndex(0));
31
+ await expect(chipButton).toBeFocused();
32
+ const snapshot = await browser.percyCheckScreenshot();
33
+ await expect(snapshot).toEqual(0);
34
+ });
35
+
36
+ it('03: second chip focused, not hovered', async () => {
37
+ const chipButton = await (await DSChipCO.getChipByIndex(1)).$('button');
38
+ await mouseOver(null, PARKED_X, PARKED_Y);
39
+ await tabStops(1); // from chip 0 button to chip 1 button — no chip here opts into a root tab stop
40
+ await expect(chipButton).toBeFocused();
41
+ const snapshot = await browser.percyCheckScreenshot();
42
+ await expect(snapshot).toEqual(0);
43
+ });
44
+
45
+ it('04: unfocused chip hovered', async () => {
46
+ await mouseOver(await DSChipCO.getChipByIndex(3));
47
+ const snapshot = await browser.percyCheckScreenshot();
48
+ await expect(snapshot).toEqual(0);
49
+ });
50
+
51
+ it('05: truncated chip expands its label on hover', async () => {
52
+ await mouseOver(await DSChipCO.getChipByIndex(7));
53
+ const snapshot = await browser.percyCheckScreenshot();
54
+ await expect(snapshot).toEqual(0);
55
+ });
56
+
57
+ it('06: long label chip hovered', async () => {
58
+ await mouseOver(await DSChipCO.getChipByIndex(2));
59
+ const snapshot = await browser.percyCheckScreenshot();
60
+ await expect(snapshot).toEqual(0);
61
+ });
62
+
63
+ it('07: disabled chip hovered', async () => {
64
+ await mouseOver(await DSChipCO.getChipByIndex(4));
65
+ const snapshot = await browser.percyCheckScreenshot();
66
+ await expect(snapshot).toEqual(0);
67
+ });
68
+ });
69
+ }
@@ -0,0 +1,37 @@
1
+ import { PATH_E2E_FAST_LIST } from '../paths';
2
+ import { PageObject, Urlbuilder } from '../helpers';
3
+
4
+ export default class DSFastListCO extends PageObject {
5
+ static basicTest = new Urlbuilder(PATH_E2E_FAST_LIST, 'basic-test');
6
+
7
+ static scrollToIndexTest = new Urlbuilder(PATH_E2E_FAST_LIST, 'scroll-to-index-test');
8
+
9
+ // The container is the scroll element (overflow: auto); the wrapper list carries role="list"
10
+ static async getContainer() {
11
+ return $('[data-testid="ds-fastlist-container"]');
12
+ }
13
+
14
+ static async getWrapperList() {
15
+ return $('[data-testid="ds-fastlist-wrapper-list"]');
16
+ }
17
+
18
+ static async getItems() {
19
+ return $$('[data-testid="ds-fastlist-item"]');
20
+ }
21
+
22
+ // Only items inside the virtualization window exist in the DOM, so this resolves
23
+ // to nothing for indexes outside it — that absence is the assertion we rely on.
24
+ static async getItemByIndex(index) {
25
+ return $(`[data-testid="ds-fastlist-item"][data-index="${index}"]`);
26
+ }
27
+
28
+ // The story renders a single input and a single button, so the component-owned
29
+ // data-testids are unambiguous here.
30
+ static async getJumpInput() {
31
+ return $('[data-testid="ds-inputtext-input"]');
32
+ }
33
+
34
+ static async getJumpButton() {
35
+ return $('[data-testid="ds-button"]');
36
+ }
37
+ }
@@ -0,0 +1,28 @@
1
+ import DSFastListCO from '../DSFastListCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ // Coverage for the ds-fast-list compliance remediation in PUI-19124.
5
+ // DOM-attribute/a11y assertions are identical across engines, so this runs Chrome only.
6
+ // The `|| browserName === 'Chrome'` fallback is mandatory: BrowserStack reports the
7
+ // capitalized name and a lowercase-only guard would register 0 tests (false green).
8
+ if (
9
+ (!browser.capabilities['ice:options'].isPhone &&
10
+ !browser.capabilities['ice:options'].isTablet &&
11
+ browser.capabilities.browserName === 'chrome') ||
12
+ browser.capabilities.browserName === 'Chrome'
13
+ ) {
14
+ describe('PUI-19194 - DSFastList:: virtualized list accessibility - Axe-Core', () => {
15
+ before(async () => {
16
+ const errorOnGo = await DSFastListCO.basicTest.go();
17
+ if (errorOnGo) throw errorOnGo;
18
+ });
19
+
20
+ it('01: should have no accessibility violations on the rendered list', async () => {
21
+ const wrapperList = await DSFastListCO.getWrapperList();
22
+ await wrapperList.waitForDisplayed();
23
+
24
+ const result = await axeCoreCheck();
25
+ expect(result.length).toBe(0);
26
+ });
27
+ });
28
+ }
@@ -0,0 +1,23 @@
1
+ import DSFastListCO from '../DSFastListCO';
2
+
3
+ // Coverage for the ds-fast-list compliance remediation in PUI-19124.
4
+ // Only the unscrolled state is snapshotted on purpose: Percy re-renders the serialized DOM, and an
5
+ // inner container's scroll offset is runtime state that is not part of that serialization, so a
6
+ // scrolled virtualized list is not reliably reproducible in a snapshot. The scrolled state is
7
+ // covered functionally instead — see e2e/ds-fast-list/scroll-to-index.
8
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
9
+ describe('PUI-19193 - DSFastList:: virtualized list window rendering - Visual', () => {
10
+ before(async () => {
11
+ const errorOnGo = await DSFastListCO.basicTest.go();
12
+ if (errorOnGo) throw errorOnGo;
13
+ });
14
+
15
+ it('01: should display the virtualized list with its first window of items', async () => {
16
+ const wrapperList = await DSFastListCO.getWrapperList();
17
+ await wrapperList.waitForDisplayed();
18
+
19
+ const snapshot = await browser.percyCheckScreenshot();
20
+ await expect(snapshot).toEqual(0);
21
+ });
22
+ });
23
+ }
@@ -0,0 +1,45 @@
1
+ import DSFastListCO from '../DSFastListCO';
2
+
3
+ // Coverage for the ds-fast-list compliance remediation in PUI-19124.
4
+ // The in-package Playwright CT already covers this in Chromium; this spec exists to run the same
5
+ // contract across the full browser matrix.
6
+ // The window size is not stable (items are measured after mount, so the overscan window grows),
7
+ // which is why the assertions are "bounded window + index recycled", never an exact item count.
8
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
9
+ describe('PUI-19195 - DSFastList:: scroll to index via actionRef - Func', () => {
10
+ before(async () => {
11
+ const errorOnGo = await DSFastListCO.scrollToIndexTest.go();
12
+ if (errorOnGo) throw errorOnGo;
13
+ });
14
+
15
+ it('01: should render only a window of the 200 items, leaving far items out of the DOM', async () => {
16
+ const firstItem = await DSFastListCO.getItemByIndex(0);
17
+ await expect(firstItem).toBeExisting();
18
+
19
+ const farItem = await DSFastListCO.getItemByIndex(150);
20
+ await expect(farItem).not.toBeExisting();
21
+
22
+ const items = await DSFastListCO.getItems();
23
+ await expect(items.length).toBeLessThan(60);
24
+ });
25
+
26
+ it('02: should mount the requested item and recycle the first one after jumping', async () => {
27
+ const jumpInput = await DSFastListCO.getJumpInput();
28
+ await jumpInput.setValue('150');
29
+ const jumpButton = await DSFastListCO.getJumpButton();
30
+ await jumpButton.click();
31
+
32
+ const farItem = await DSFastListCO.getItemByIndex(150);
33
+ await farItem.waitForExist();
34
+ await expect(farItem).toBeDisplayed();
35
+ await expect(farItem).toHaveText('Test 150');
36
+
37
+ // the window moved instead of growing: index 0 is no longer in the DOM
38
+ const firstItem = await DSFastListCO.getItemByIndex(0);
39
+ await expect(firstItem).not.toBeExisting();
40
+
41
+ const items = await DSFastListCO.getItems();
42
+ await expect(items.length).toBeLessThan(60);
43
+ });
44
+ });
45
+ }
@@ -10,13 +10,13 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
10
10
  const addChildrenBtn = await DSVirtualListCO.getAdd1Btn();
11
11
  await addChildrenBtn.click();
12
12
  await addChildrenBtn.click();
13
- const snapshot = await browser.checkSnapshot(DSVirtualListCO.snapshotPath('vlist-2children'));
13
+ const snapshot = await browser.percyCheckScreenshot();
14
14
  await expect(snapshot).toEqual(0);
15
15
  });
16
16
  it('should add content to a children and display properly', async () => {
17
17
  const addContentBtn = await DSVirtualListCO.getChangeTimeBtn();
18
18
  await addContentBtn.click();
19
- const snapshot = await browser.checkSnapshot(DSVirtualListCO.snapshotPath('vlist-1content'));
19
+ const snapshot = await browser.percyCheckScreenshot();
20
20
  await expect(snapshot).toEqual(0);
21
21
  });
22
22
  it('should add a children and content to that children and display properly', async () => {
@@ -24,7 +24,7 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
24
24
  await addChildrenBtn.click();
25
25
  const addContentBtn = await DSVirtualListCO.getChangeTimeBtn();
26
26
  await addContentBtn.click();
27
- const snapshot = await browser.checkSnapshot(DSVirtualListCO.snapshotPath('vlist-2content'));
27
+ const snapshot = await browser.percyCheckScreenshot();
28
28
  await expect(snapshot).toEqual(0);
29
29
  });
30
30
  });
@@ -34,10 +34,9 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
34
34
  if (errorOnGo) throw errorOnGo;
35
35
  });
36
36
  it('01: should display a virtual list with customization correctly', async () => {
37
- await browser.eyesOpen();
38
37
  const virtualListContainer = await DSVirtualListCO.getVirtualListContainer();
39
38
  await virtualListContainer.waitForDisplayed();
40
- const snapshot = await browser.eyesCheckSnapshot(DSVirtualListCO.snapshotPath('virtual-list-customization'));
39
+ const snapshot = await browser.percyCheckScreenshot();
41
40
  await expect(snapshot).toEqual(0);
42
41
  });
43
42
  });
@@ -1,12 +1,12 @@
1
- import { PATH_VIRTUALLIST, PATH_E2E_VIRTUAL_LIST, PATH_E2E_CUSTOMIZATION_SUPPORT } from '../paths';
1
+ import { PATH_E2E_VIRTUAL_LIST, PATH_E2E_CUSTOMIZATION_SUPPORT } from '../paths';
2
2
  import { PageObject, Urlbuilder, getElementByIndex } from '../helpers';
3
3
 
4
4
  export default class DSVirtualListCO extends PageObject {
5
- static basicURL = new Urlbuilder(PATH_VIRTUALLIST, 'basic');
5
+ static testChanges = new Urlbuilder(PATH_E2E_VIRTUAL_LIST, 'test-element-changes');
6
6
 
7
- static dynamicChanges = new Urlbuilder(PATH_VIRTUALLIST, 'dynamic-element-changes');
7
+ static basicTest = new Urlbuilder(PATH_E2E_VIRTUAL_LIST, 'basic-test');
8
8
 
9
- static testChanges = new Urlbuilder(PATH_E2E_VIRTUAL_LIST, 'test-element-changes');
9
+ static scrollToIndexTest = new Urlbuilder(PATH_E2E_VIRTUAL_LIST, 'scroll-to-index-test');
10
10
 
11
11
  static customization = new Urlbuilder(PATH_E2E_CUSTOMIZATION_SUPPORT, 'theming-virtual-list');
12
12
 
@@ -18,12 +18,31 @@ export default class DSVirtualListCO extends PageObject {
18
18
  return $('[data-testid="virtual-list-container"]');
19
19
  }
20
20
 
21
- static getAdd1Btn = async () => getElementByIndex(this.getButtons, 0);
21
+ static async getListWrapper() {
22
+ return $('[data-testid="ds-virtuallist-list-wrapper"]');
23
+ }
22
24
 
23
- static getChangeTimeBtn = async () => getElementByIndex(this.getButtons, 1);
25
+ static async getItems() {
26
+ return $$('[data-testid="ds-virtuallist-item-wrapper"]');
27
+ }
28
+
29
+ // Only items inside the virtualization window exist in the DOM, so this resolves
30
+ // to nothing for indexes outside it — that absence is the assertion we rely on.
31
+ static async getItemByIndex(index) {
32
+ return $(`[data-testid="ds-virtuallist-item-wrapper"][data-index="${index}"]`);
33
+ }
34
+
35
+ // The scroll-to-index story renders a single input and a single button, so the
36
+ // component-owned data-testids are unambiguous there.
37
+ static async getJumpInput() {
38
+ return $('[data-testid="ds-inputtext-input"]');
39
+ }
24
40
 
25
- // Snapshots
26
- static snapshotPath(example = 'basic') {
27
- return PageObject.getSnapshotPathBuilder('VirtualList', example, 'ds-virtuallist');
41
+ static async getJumpButton() {
42
+ return $('[data-testid="ds-button"]');
28
43
  }
44
+
45
+ static getAdd1Btn = async () => getElementByIndex(this.getButtons, 0);
46
+
47
+ static getChangeTimeBtn = async () => getElementByIndex(this.getButtons, 1);
29
48
  }
@@ -0,0 +1,28 @@
1
+ import DSVirtualListCO from '../DSVirtualListCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ // Coverage for the ds-virtual-list compliance remediation in PUI-19125.
5
+ // DOM-attribute/a11y assertions are identical across engines, so this runs Chrome only.
6
+ // The `|| browserName === 'Chrome'` fallback is mandatory: BrowserStack reports the
7
+ // capitalized name and a lowercase-only guard would register 0 tests (false green).
8
+ if (
9
+ (!browser.capabilities['ice:options'].isPhone &&
10
+ !browser.capabilities['ice:options'].isTablet &&
11
+ browser.capabilities.browserName === 'chrome') ||
12
+ browser.capabilities.browserName === 'Chrome'
13
+ ) {
14
+ describe('PUI-19196 - DSVirtualList:: virtualized list accessibility - Axe-Core', () => {
15
+ before(async () => {
16
+ const errorOnGo = await DSVirtualListCO.basicTest.go();
17
+ if (errorOnGo) throw errorOnGo;
18
+ });
19
+
20
+ it('01: should have no accessibility violations on the rendered list', async () => {
21
+ const container = await DSVirtualListCO.getVirtualListContainer();
22
+ await container.waitForDisplayed();
23
+
24
+ const result = await axeCoreCheck();
25
+ expect(result.length).toBe(0);
26
+ });
27
+ });
28
+ }
@@ -0,0 +1,45 @@
1
+ import DSVirtualListCO from '../DSVirtualListCO';
2
+
3
+ // Coverage for the ds-virtual-list compliance remediation in PUI-19125.
4
+ // The in-package Playwright CT already covers this in Chromium; this spec exists to run the same
5
+ // contract across the full browser matrix.
6
+ // The window size is not stable (items are measured after mount, so the overscan window grows),
7
+ // which is why the assertions are "bounded window + index recycled", never an exact item count.
8
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
9
+ describe('PUI-19197 - DSVirtualList:: scroll to index via actionRef - Func', () => {
10
+ before(async () => {
11
+ const errorOnGo = await DSVirtualListCO.scrollToIndexTest.go();
12
+ if (errorOnGo) throw errorOnGo;
13
+ });
14
+
15
+ it('01: should render only a window of the 200 children, leaving far items out of the DOM', async () => {
16
+ const firstItem = await DSVirtualListCO.getItemByIndex(0);
17
+ await expect(firstItem).toBeExisting();
18
+
19
+ const farItem = await DSVirtualListCO.getItemByIndex(150);
20
+ await expect(farItem).not.toBeExisting();
21
+
22
+ const items = await DSVirtualListCO.getItems();
23
+ await expect(items.length).toBeLessThan(60);
24
+ });
25
+
26
+ it('02: should mount the requested item and recycle the first one after jumping', async () => {
27
+ const jumpInput = await DSVirtualListCO.getJumpInput();
28
+ await jumpInput.setValue('150');
29
+ const jumpButton = await DSVirtualListCO.getJumpButton();
30
+ await jumpButton.click();
31
+
32
+ const farItem = await DSVirtualListCO.getItemByIndex(150);
33
+ await farItem.waitForExist();
34
+ await expect(farItem).toBeDisplayed();
35
+ await expect(farItem).toHaveText('Test 150');
36
+
37
+ // the window moved instead of growing: index 0 is no longer in the DOM
38
+ const firstItem = await DSVirtualListCO.getItemByIndex(0);
39
+ await expect(firstItem).not.toBeExisting();
40
+
41
+ const items = await DSVirtualListCO.getItems();
42
+ await expect(items.length).toBeLessThan(60);
43
+ });
44
+ });
45
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "dimsum-e2e-tests",
4
- "version": "3.80.0-next.1",
4
+ "version": "3.80.0-next.12",
5
5
  "description": "End-to-end tests for dimsum library",
6
6
  "dependencies": {
7
7
  "@elliemae/ds-legacy-button": "1.0.16",
@@ -38,154 +38,154 @@
38
38
  "@elliemae/ds-legacy-wysiwygeditor": "1.0.16",
39
39
  "@elliemae/ds-legacy-zipcode-search": "1.0.16",
40
40
  "@elliemae/ds-legacy-zoom": "1.0.16",
41
- "@elliemae/ds-accessibility": "3.80.0-next.1",
42
- "@elliemae/ds-accordion": "3.80.0-next.1",
43
- "@elliemae/ds-app-picker": "3.80.0-next.1",
44
- "@elliemae/ds-backdrop": "3.80.0-next.1",
45
- "@elliemae/ds-banner": "3.80.0-next.1",
46
- "@elliemae/ds-button-v2": "3.80.0-next.1",
47
- "@elliemae/ds-card-navigation": "3.80.0-next.1",
48
- "@elliemae/ds-card-v1": "3.80.0-next.1",
49
- "@elliemae/ds-card-v1-detail": "3.80.0-next.1",
50
- "@elliemae/ds-card-v2": "3.80.0-next.1",
51
- "@elliemae/ds-card": "3.80.0-next.1",
52
- "@elliemae/ds-card-v2-group": "3.80.0-next.1",
53
- "@elliemae/ds-card-v2-action-addon": "3.80.0-next.1",
54
- "@elliemae/ds-card-v3": "3.80.0-next.1",
55
- "@elliemae/ds-chat-bubble": "3.80.0-next.1",
56
- "@elliemae/ds-card-v3-poc": "3.80.0-next.1",
57
- "@elliemae/ds-chat-card": "3.80.0-next.1",
58
- "@elliemae/ds-chat": "3.80.0-next.1",
59
- "@elliemae/ds-chat-empty-state": "3.80.0-next.1",
60
- "@elliemae/ds-chat-floating-button": "3.80.0-next.1",
61
- "@elliemae/ds-chat-sidebar": "3.80.0-next.1",
62
- "@elliemae/ds-chat-system-message": "3.80.0-next.1",
63
- "@elliemae/ds-chat-message-delimeter": "3.80.0-next.1",
64
- "@elliemae/ds-breadcrumb": "3.80.0-next.1",
65
- "@elliemae/ds-chat-container": "3.80.0-next.1",
66
- "@elliemae/ds-chat-tile": "3.80.0-next.1",
67
- "@elliemae/ds-chat-container-header": "3.80.0-next.1",
68
- "@elliemae/ds-chip": "3.80.0-next.1",
69
- "@elliemae/ds-codeeditor": "3.80.0-next.1",
70
- "@elliemae/ds-classnames": "3.80.0-next.1",
71
- "@elliemae/ds-circular-progress-indicator": "3.80.0-next.1",
72
- "@elliemae/ds-comments": "3.80.0-next.1",
73
- "@elliemae/ds-csv-converter": "3.80.0-next.1",
74
- "@elliemae/ds-controlled-form": "3.80.0-next.1",
75
- "@elliemae/ds-data-table": "3.80.0-next.1",
76
- "@elliemae/ds-data-table-cell": "3.80.0-next.1",
77
- "@elliemae/ds-data-table-action-cell": "3.80.0-next.1",
78
- "@elliemae/ds-data-table-drag-and-drop-cell": "3.80.0-next.1",
79
- "@elliemae/ds-data-table-cell-header": "3.80.0-next.1",
80
- "@elliemae/ds-data-table-expand-cell": "3.80.0-next.1",
81
- "@elliemae/ds-data-table-filters": "3.80.0-next.1",
82
- "@elliemae/ds-dataviz": "3.80.0-next.1",
83
- "@elliemae/ds-data-table-multi-select-cell": "3.80.0-next.1",
84
- "@elliemae/ds-date-time-picker": "3.80.0-next.1",
85
- "@elliemae/ds-data-table-single-select-cell": "3.80.0-next.1",
86
- "@elliemae/ds-dataviz-pie": "3.80.0-next.1",
87
- "@elliemae/ds-dropzone": "3.80.0-next.1",
88
- "@elliemae/ds-decision-graph": "3.80.0-next.1",
89
- "@elliemae/ds-dropdownmenu-v2": "3.80.0-next.1",
90
- "@elliemae/ds-fast-list": "3.80.0-next.1",
91
- "@elliemae/ds-floating-context": "3.80.0-next.1",
92
- "@elliemae/ds-form-checkbox": "3.80.0-next.1",
93
- "@elliemae/ds-filter-bar": "3.80.0-next.1",
94
- "@elliemae/ds-form-combobox": "3.80.0-next.1",
95
- "@elliemae/ds-drag-and-drop": "3.80.0-next.1",
96
- "@elliemae/ds-form-date-time-picker": "3.80.0-next.1",
97
- "@elliemae/ds-form-date-range-picker": "3.80.0-next.1",
98
- "@elliemae/ds-form-helpers-mask-hooks": "3.80.0-next.1",
99
- "@elliemae/ds-form-input-text": "3.80.0-next.1",
100
- "@elliemae/ds-form-input-textarea": "3.80.0-next.1",
101
- "@elliemae/ds-form-layout-blocks": "3.80.0-next.1",
102
- "@elliemae/ds-form-layout-autocomplete": "3.80.0-next.1",
103
- "@elliemae/ds-form-layout-label": "3.80.0-next.1",
104
- "@elliemae/ds-form-multi-combobox": "3.80.0-next.1",
105
- "@elliemae/ds-form-native-select": "3.80.0-next.1",
106
- "@elliemae/ds-form-layout-input-group": "3.80.0-next.1",
107
- "@elliemae/ds-form-radio": "3.80.0-next.1",
108
- "@elliemae/ds-form-single-combobox": "3.80.0-next.1",
109
- "@elliemae/ds-form-select": "3.80.0-next.1",
110
- "@elliemae/ds-form-toggle": "3.80.0-next.1",
111
- "@elliemae/ds-global-header": "3.80.0-next.1",
112
- "@elliemae/ds-hooks-focus-stack": "3.80.0-next.1",
113
- "@elliemae/ds-grid": "3.80.0-next.1",
114
- "@elliemae/ds-hooks-focus-trap": "3.80.0-next.1",
115
- "@elliemae/ds-hooks-is-mobile": "3.80.0-next.1",
116
- "@elliemae/ds-hooks-fontsize-detector": "3.80.0-next.1",
117
- "@elliemae/ds-hooks-keyboard-navigation": "3.80.0-next.1",
118
- "@elliemae/ds-hooks-headless-tooltip": "3.80.0-next.1",
119
- "@elliemae/ds-hooks-on-blur-out": "3.80.0-next.1",
120
- "@elliemae/ds-hooks-is-showing-ellipsis": "3.80.0-next.1",
121
- "@elliemae/ds-hooks-on-first-focus-in": "3.80.0-next.1",
122
- "@elliemae/ds-icon": "3.80.0-next.1",
123
- "@elliemae/ds-icons": "3.80.0-next.1",
124
- "@elliemae/ds-indeterminate-progress-indicator": "3.80.0-next.1",
125
- "@elliemae/ds-imagelibrarymodal": "3.80.0-next.1",
126
- "@elliemae/ds-image": "3.80.0-next.1",
127
- "@elliemae/ds-loading-indicator": "3.80.0-next.1",
128
- "@elliemae/ds-left-navigation": "3.80.0-next.1",
129
- "@elliemae/ds-layout-provider": "3.80.0-next.1",
130
- "@elliemae/ds-menu-button": "3.80.0-next.1",
131
- "@elliemae/ds-menu-items": "3.80.0-next.1",
132
- "@elliemae/ds-menu-items-action": "3.80.0-next.1",
133
- "@elliemae/ds-menu-items-commons": "3.80.0-next.1",
134
- "@elliemae/ds-menu-items-section": "3.80.0-next.1",
135
- "@elliemae/ds-hooks-fontsize-media": "3.80.0-next.1",
136
- "@elliemae/ds-menu-items-separator": "3.80.0-next.1",
137
- "@elliemae/ds-menu-items-multi": "3.80.0-next.1",
138
- "@elliemae/ds-menu-items-single-with-submenu": "3.80.0-next.1",
139
- "@elliemae/ds-menu-items-submenu": "3.80.0-next.1",
140
- "@elliemae/ds-menu-items-single": "3.80.0-next.1",
141
- "@elliemae/ds-menu-items-skeleton": "3.80.0-next.1",
142
- "@elliemae/ds-modal-slide": "3.80.0-next.1",
143
- "@elliemae/ds-notification-badge": "3.80.0-next.1",
144
- "@elliemae/ds-overlay": "3.80.0-next.1",
145
- "@elliemae/ds-page-header-v2": "3.80.0-next.1",
146
- "@elliemae/ds-page-header": "3.80.0-next.1",
147
- "@elliemae/ds-page-layout": "3.80.0-next.1",
148
- "@elliemae/ds-menu-tree-item": "3.80.0-next.1",
149
- "@elliemae/ds-page-header-v1": "3.80.0-next.1",
150
- "@elliemae/ds-mobile": "3.80.0-next.1",
151
- "@elliemae/ds-pills-v2": "3.80.0-next.1",
152
- "@elliemae/ds-progress-indicator": "3.80.0-next.1",
153
- "@elliemae/ds-pagination": "3.80.0-next.1",
154
- "@elliemae/ds-dialog": "3.80.0-next.1",
155
- "@elliemae/ds-props-helpers": "3.80.0-next.1",
156
- "@elliemae/ds-resizeable-container": "3.80.0-next.1",
157
- "@elliemae/ds-read-more": "3.80.0-next.1",
158
- "@elliemae/ds-query-builder": "3.80.0-next.1",
159
- "@elliemae/ds-ribbon": "3.80.0-next.1",
160
- "@elliemae/ds-separator": "3.80.0-next.1",
161
- "@elliemae/ds-scrollable-container": "3.80.0-next.1",
162
- "@elliemae/ds-portal": "3.80.0-next.1",
163
- "@elliemae/ds-shared": "3.80.0-next.1",
164
- "@elliemae/ds-side-panel": "3.80.0-next.1",
165
- "@elliemae/ds-side-panel-header": "3.80.0-next.1",
166
- "@elliemae/ds-skeleton": "3.80.0-next.1",
167
- "@elliemae/ds-square-indicator": "3.80.0-next.1",
168
- "@elliemae/ds-stepper": "3.80.0-next.1",
169
- "@elliemae/ds-svg": "3.80.0-next.1",
170
- "@elliemae/ds-system": "3.80.0-next.1",
171
- "@elliemae/ds-tabs": "3.80.0-next.1",
172
- "@elliemae/ds-slider-v2": "3.80.0-next.1",
173
- "@elliemae/ds-test-utils": "3.80.0-next.1",
174
- "@elliemae/ds-toolbar-v2": "3.80.0-next.1",
175
- "@elliemae/ds-toast": "3.80.0-next.1",
176
- "@elliemae/ds-shuttle-v2": "3.80.0-next.1",
177
- "@elliemae/ds-tooltip-v3": "3.80.0-next.1",
178
- "@elliemae/ds-transition": "3.80.0-next.1",
179
- "@elliemae/ds-tree-model": "3.80.0-next.1",
180
- "@elliemae/ds-treeview": "3.80.0-next.1",
181
- "@elliemae/ds-typescript-helpers": "3.80.0-next.1",
182
- "@elliemae/ds-typography": "3.80.0-next.1",
183
- "@elliemae/ds-truncated-expandable-text": "3.80.0-next.1",
184
- "@elliemae/ds-virtual-list": "3.80.0-next.1",
185
- "@elliemae/ds-zustand-helpers": "3.80.0-next.1",
186
- "@elliemae/ds-toolbar-v1": "3.80.0-next.1",
187
- "@elliemae/ds-basic": "3.80.0-next.1",
188
- "@elliemae/ds-wizard": "3.80.0-next.1"
41
+ "@elliemae/ds-accordion": "3.80.0-next.12",
42
+ "@elliemae/ds-backdrop": "3.80.0-next.12",
43
+ "@elliemae/ds-banner": "3.80.0-next.12",
44
+ "@elliemae/ds-accessibility": "3.80.0-next.12",
45
+ "@elliemae/ds-basic": "3.80.0-next.12",
46
+ "@elliemae/ds-app-picker": "3.80.0-next.12",
47
+ "@elliemae/ds-button-v2": "3.80.0-next.12",
48
+ "@elliemae/ds-breadcrumb": "3.80.0-next.12",
49
+ "@elliemae/ds-card-v1": "3.80.0-next.12",
50
+ "@elliemae/ds-card": "3.80.0-next.12",
51
+ "@elliemae/ds-card-v1-detail": "3.80.0-next.12",
52
+ "@elliemae/ds-card-v2": "3.80.0-next.12",
53
+ "@elliemae/ds-card-v2-action-addon": "3.80.0-next.12",
54
+ "@elliemae/ds-card-navigation": "3.80.0-next.12",
55
+ "@elliemae/ds-card-v2-group": "3.80.0-next.12",
56
+ "@elliemae/ds-chat": "3.80.0-next.12",
57
+ "@elliemae/ds-chat-bubble": "3.80.0-next.12",
58
+ "@elliemae/ds-card-v3": "3.80.0-next.12",
59
+ "@elliemae/ds-chat-card": "3.80.0-next.12",
60
+ "@elliemae/ds-chat-container-header": "3.80.0-next.12",
61
+ "@elliemae/ds-chat-container": "3.80.0-next.12",
62
+ "@elliemae/ds-chat-empty-state": "3.80.0-next.12",
63
+ "@elliemae/ds-card-v3-poc": "3.80.0-next.12",
64
+ "@elliemae/ds-chat-floating-button": "3.80.0-next.12",
65
+ "@elliemae/ds-chat-message-delimeter": "3.80.0-next.12",
66
+ "@elliemae/ds-chat-sidebar": "3.80.0-next.12",
67
+ "@elliemae/ds-chat-system-message": "3.80.0-next.12",
68
+ "@elliemae/ds-chat-tile": "3.80.0-next.12",
69
+ "@elliemae/ds-chip": "3.80.0-next.12",
70
+ "@elliemae/ds-circular-progress-indicator": "3.80.0-next.12",
71
+ "@elliemae/ds-codeeditor": "3.80.0-next.12",
72
+ "@elliemae/ds-classnames": "3.80.0-next.12",
73
+ "@elliemae/ds-comments": "3.80.0-next.12",
74
+ "@elliemae/ds-controlled-form": "3.80.0-next.12",
75
+ "@elliemae/ds-data-table": "3.80.0-next.12",
76
+ "@elliemae/ds-data-table-action-cell": "3.80.0-next.12",
77
+ "@elliemae/ds-data-table-cell": "3.80.0-next.12",
78
+ "@elliemae/ds-csv-converter": "3.80.0-next.12",
79
+ "@elliemae/ds-data-table-cell-header": "3.80.0-next.12",
80
+ "@elliemae/ds-data-table-drag-and-drop-cell": "3.80.0-next.12",
81
+ "@elliemae/ds-data-table-expand-cell": "3.80.0-next.12",
82
+ "@elliemae/ds-data-table-filters": "3.80.0-next.12",
83
+ "@elliemae/ds-data-table-multi-select-cell": "3.80.0-next.12",
84
+ "@elliemae/ds-data-table-single-select-cell": "3.80.0-next.12",
85
+ "@elliemae/ds-dataviz": "3.80.0-next.12",
86
+ "@elliemae/ds-dropdownmenu-v2": "3.80.0-next.12",
87
+ "@elliemae/ds-drag-and-drop": "3.80.0-next.12",
88
+ "@elliemae/ds-dropzone": "3.80.0-next.12",
89
+ "@elliemae/ds-fast-list": "3.80.0-next.12",
90
+ "@elliemae/ds-decision-graph": "3.80.0-next.12",
91
+ "@elliemae/ds-filter-bar": "3.80.0-next.12",
92
+ "@elliemae/ds-form-checkbox": "3.80.0-next.12",
93
+ "@elliemae/ds-date-time-picker": "3.80.0-next.12",
94
+ "@elliemae/ds-form-combobox": "3.80.0-next.12",
95
+ "@elliemae/ds-form-date-range-picker": "3.80.0-next.12",
96
+ "@elliemae/ds-form-date-time-picker": "3.80.0-next.12",
97
+ "@elliemae/ds-form-helpers-mask-hooks": "3.80.0-next.12",
98
+ "@elliemae/ds-form-input-text": "3.80.0-next.12",
99
+ "@elliemae/ds-form-layout-blocks": "3.80.0-next.12",
100
+ "@elliemae/ds-form-layout-autocomplete": "3.80.0-next.12",
101
+ "@elliemae/ds-form-input-textarea": "3.80.0-next.12",
102
+ "@elliemae/ds-form-layout-input-group": "3.80.0-next.12",
103
+ "@elliemae/ds-form-layout-label": "3.80.0-next.12",
104
+ "@elliemae/ds-form-multi-combobox": "3.80.0-next.12",
105
+ "@elliemae/ds-form-native-select": "3.80.0-next.12",
106
+ "@elliemae/ds-floating-context": "3.80.0-next.12",
107
+ "@elliemae/ds-form-radio": "3.80.0-next.12",
108
+ "@elliemae/ds-form-select": "3.80.0-next.12",
109
+ "@elliemae/ds-form-toggle": "3.80.0-next.12",
110
+ "@elliemae/ds-global-header": "3.80.0-next.12",
111
+ "@elliemae/ds-grid": "3.80.0-next.12",
112
+ "@elliemae/ds-form-single-combobox": "3.80.0-next.12",
113
+ "@elliemae/ds-hooks-focus-stack": "3.80.0-next.12",
114
+ "@elliemae/ds-hooks-focus-trap": "3.80.0-next.12",
115
+ "@elliemae/ds-hooks-headless-tooltip": "3.80.0-next.12",
116
+ "@elliemae/ds-hooks-is-mobile": "3.80.0-next.12",
117
+ "@elliemae/ds-hooks-fontsize-media": "3.80.0-next.12",
118
+ "@elliemae/ds-hooks-keyboard-navigation": "3.80.0-next.12",
119
+ "@elliemae/ds-hooks-is-showing-ellipsis": "3.80.0-next.12",
120
+ "@elliemae/ds-dataviz-pie": "3.80.0-next.12",
121
+ "@elliemae/ds-hooks-fontsize-detector": "3.80.0-next.12",
122
+ "@elliemae/ds-hooks-on-blur-out": "3.80.0-next.12",
123
+ "@elliemae/ds-icon": "3.80.0-next.12",
124
+ "@elliemae/ds-imagelibrarymodal": "3.80.0-next.12",
125
+ "@elliemae/ds-image": "3.80.0-next.12",
126
+ "@elliemae/ds-hooks-on-first-focus-in": "3.80.0-next.12",
127
+ "@elliemae/ds-layout-provider": "3.80.0-next.12",
128
+ "@elliemae/ds-loading-indicator": "3.80.0-next.12",
129
+ "@elliemae/ds-left-navigation": "3.80.0-next.12",
130
+ "@elliemae/ds-indeterminate-progress-indicator": "3.80.0-next.12",
131
+ "@elliemae/ds-menu-button": "3.80.0-next.12",
132
+ "@elliemae/ds-menu-items": "3.80.0-next.12",
133
+ "@elliemae/ds-menu-items-action": "3.80.0-next.12",
134
+ "@elliemae/ds-menu-items-commons": "3.80.0-next.12",
135
+ "@elliemae/ds-icons": "3.80.0-next.12",
136
+ "@elliemae/ds-menu-items-multi": "3.80.0-next.12",
137
+ "@elliemae/ds-menu-items-separator": "3.80.0-next.12",
138
+ "@elliemae/ds-menu-items-section": "3.80.0-next.12",
139
+ "@elliemae/ds-menu-items-single-with-submenu": "3.80.0-next.12",
140
+ "@elliemae/ds-menu-items-skeleton": "3.80.0-next.12",
141
+ "@elliemae/ds-menu-items-submenu": "3.80.0-next.12",
142
+ "@elliemae/ds-menu-tree-item": "3.80.0-next.12",
143
+ "@elliemae/ds-modal-slide": "3.80.0-next.12",
144
+ "@elliemae/ds-mobile": "3.80.0-next.12",
145
+ "@elliemae/ds-overlay": "3.80.0-next.12",
146
+ "@elliemae/ds-page-header": "3.80.0-next.12",
147
+ "@elliemae/ds-page-layout": "3.80.0-next.12",
148
+ "@elliemae/ds-menu-items-single": "3.80.0-next.12",
149
+ "@elliemae/ds-page-header-v1": "3.80.0-next.12",
150
+ "@elliemae/ds-page-header-v2": "3.80.0-next.12",
151
+ "@elliemae/ds-notification-badge": "3.80.0-next.12",
152
+ "@elliemae/ds-portal": "3.80.0-next.12",
153
+ "@elliemae/ds-pagination": "3.80.0-next.12",
154
+ "@elliemae/ds-props-helpers": "3.80.0-next.12",
155
+ "@elliemae/ds-read-more": "3.80.0-next.12",
156
+ "@elliemae/ds-progress-indicator": "3.80.0-next.12",
157
+ "@elliemae/ds-query-builder": "3.80.0-next.12",
158
+ "@elliemae/ds-scrollable-container": "3.80.0-next.12",
159
+ "@elliemae/ds-separator": "3.80.0-next.12",
160
+ "@elliemae/ds-resizeable-container": "3.80.0-next.12",
161
+ "@elliemae/ds-dialog": "3.80.0-next.12",
162
+ "@elliemae/ds-shared": "3.80.0-next.12",
163
+ "@elliemae/ds-shuttle-v2": "3.80.0-next.12",
164
+ "@elliemae/ds-side-panel": "3.80.0-next.12",
165
+ "@elliemae/ds-side-panel-header": "3.80.0-next.12",
166
+ "@elliemae/ds-ribbon": "3.80.0-next.12",
167
+ "@elliemae/ds-skeleton": "3.80.0-next.12",
168
+ "@elliemae/ds-stepper": "3.80.0-next.12",
169
+ "@elliemae/ds-svg": "3.80.0-next.12",
170
+ "@elliemae/ds-system": "3.80.0-next.12",
171
+ "@elliemae/ds-square-indicator": "3.80.0-next.12",
172
+ "@elliemae/ds-toast": "3.80.0-next.12",
173
+ "@elliemae/ds-test-utils": "3.80.0-next.12",
174
+ "@elliemae/ds-tabs": "3.80.0-next.12",
175
+ "@elliemae/ds-toolbar-v2": "3.80.0-next.12",
176
+ "@elliemae/ds-transition": "3.80.0-next.12",
177
+ "@elliemae/ds-toolbar-v1": "3.80.0-next.12",
178
+ "@elliemae/ds-tree-model": "3.80.0-next.12",
179
+ "@elliemae/ds-treeview": "3.80.0-next.12",
180
+ "@elliemae/ds-tooltip-v3": "3.80.0-next.12",
181
+ "@elliemae/ds-truncated-expandable-text": "3.80.0-next.12",
182
+ "@elliemae/ds-typography": "3.80.0-next.12",
183
+ "@elliemae/ds-virtual-list": "3.80.0-next.12",
184
+ "@elliemae/ds-slider-v2": "3.80.0-next.12",
185
+ "@elliemae/ds-wizard": "3.80.0-next.12",
186
+ "@elliemae/ds-zustand-helpers": "3.80.0-next.12",
187
+ "@elliemae/ds-typescript-helpers": "3.80.0-next.12",
188
+ "@elliemae/ds-pills-v2": "3.80.0-next.12"
189
189
  },
190
190
  "publishConfig": {
191
191
  "access": "public"
package/paths.js CHANGED
@@ -89,7 +89,6 @@ export const PATH_COMBOBOX_V3 = `${PATH_COMPONENTS}/ComboboxV3`;
89
89
  export const PATH_COMBOBOX_V3_DOCUMENTATION = `${PATH_COMBOBOX_V3}/Documentation`;
90
90
  export const PATH_COMBOBOX_SINGLE_EXAMPLES = `${PATH_SINGLE_COMBOBOX}/Examples`;
91
91
  export const PATH_COMBOBOX_MULTI_EXAMPLES = `${PATH_MULTI_COMBOBOX}/Examples`;
92
- export const PATH_VIRTUALLIST = `${PATH_COMPONENTS}/VirtualList`;
93
92
  export const PATH_AUTOCOMPLETE = `${PATH_COMPONENTS}/Autocomplete`;
94
93
  export const PATH_AUTOCOMPLETE_EXAMPLES = `${PATH_AUTOCOMPLETE}/Examples`;
95
94
  export const PATH_FILTERBAR = `${PATH_COMPONENTS}/FilterBar`;
@@ -219,7 +218,6 @@ export const PATH_ACCESSIBILITY_SKIP_TO = `${PATH_COMPONENTS}/Accessibility/Skip
219
218
  export const PATH_ACCESSIBILITY_USE_LIVE_REGION = `${PATH_COMPONENTS}/UseLiveRegion`;
220
219
  export const PATH_POPPER_JS = `${PATH_COMPONENTS}/Popperjs`;
221
220
  export const PATH_POPPER_JS_TOOLTIP = `${PATH_POPPER_JS}/Tooltip`;
222
- export const PATH_VIRTUAL_LIST = `${PATH_COMPONENTS}/VirtualList`;
223
221
  export const PATH_TYPOGRAPHY = `${PATH_COMPONENTS}/Typography`;
224
222
  export const PATH_CARD_V_3 = `${PATH_COMPONENTS}/CardV3/Examples`;
225
223
  export const PATH_CREATE_PACKAGE = `${PATH_COMPONENTS}/CreatePackage/Examples`;
@@ -313,6 +311,7 @@ export const PATH_E2E_HOOK_FORM = `${PATH_E2E}/React-hook-form`;
313
311
  export const PATH_E2E_ACCORDION = `${PATH_E2E}/Accordion`;
314
312
  export const PATH_E2E_ACCORDION_PITFALLS = `${PATH_E2E_ACCORDION}/Pitfalls`;
315
313
  export const PATH_E2E_VIRTUAL_LIST = `${PATH_E2E}/Virtual-list`;
314
+ export const PATH_E2E_FAST_LIST = `${PATH_E2E}/Fast-list`;
316
315
  export const PATH_E2E_COMBOBOX = `${PATH_E2E_END_OF_LIFE}/ComboboxV2`;
317
316
  export const PATH_E2E_COMBOBOX_V3 = `${PATH_E2E}/ComboboxV3`;
318
317
  export const PATH_E2E_COMBOBOX_MULTI = `${PATH_E2E}/ComboboxMulti`;