From 655f30a658108ca2885a67f103fdff5aeff1ad7a Mon Sep 17 00:00:00 2001 From: robonen Date: Thu, 18 Jun 2026 03:17:25 +0700 Subject: [PATCH] test(scroll-area): improve glimpse type test for pointer interactions --- .../__test__/ScrollArea.parity.test.ts | 13 +++++++++---- ...pse-stays-hidden-before-any-interaction-1.png | Bin 2997 -> 0 bytes 2 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 vue/primitives/src/display/scroll-area/__test__/__screenshots__/ScrollArea.parity.test.ts/scroll-area---glimpse-type-glimpse-stays-hidden-before-any-interaction-1.png diff --git a/vue/primitives/src/display/scroll-area/__test__/ScrollArea.parity.test.ts b/vue/primitives/src/display/scroll-area/__test__/ScrollArea.parity.test.ts index 3306c88..76823d9 100644 --- a/vue/primitives/src/display/scroll-area/__test__/ScrollArea.parity.test.ts +++ b/vue/primitives/src/display/scroll-area/__test__/ScrollArea.parity.test.ts @@ -159,12 +159,17 @@ describe('scroll-area — glimpse type', () => { expect(root.querySelectorAll('[data-state="visible"]').length).toBeGreaterThan(0); }); - it('glimpse stays hidden before any interaction', async () => { + it('glimpse stays hidden when the pointer is away', async () => { const w = track(mount(makeApp({ type: 'glimpse', scrollHideDelay: 5000 }), { attachTo: document.body })); + const root = w.element as HTMLElement; + // Browser mode uses a real cursor: the area mounts at the top-left, so a + // leftover pointer from a previous suite can land on it and fire a stray + // `pointerenter` (revealing the glimpse). Let that settle, then assert the + // deterministic "pointer not over the area" state via `pointerleave`. await waitFrames(); - // No pointer enter / scroll => no visible scrollbar yet. Scoped to this - // component's root (a global query can pick up other suites' scrollbars). - expect((w.element as HTMLElement).querySelectorAll('[data-state="visible"]').length).toBe(0); + root.dispatchEvent(new PointerEvent('pointerleave')); + await waitFrames(); + expect(root.querySelectorAll('[data-state="visible"]').length).toBe(0); }); }); diff --git a/vue/primitives/src/display/scroll-area/__test__/__screenshots__/ScrollArea.parity.test.ts/scroll-area---glimpse-type-glimpse-stays-hidden-before-any-interaction-1.png b/vue/primitives/src/display/scroll-area/__test__/__screenshots__/ScrollArea.parity.test.ts/scroll-area---glimpse-type-glimpse-stays-hidden-before-any-interaction-1.png deleted file mode 100644 index 206cb258abcf57c44b1cc612504f71c149afab09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2997 zcmeHJ{WIGK82^^qTAk8%ovvu?Y~0P(%yJqbWQ@Z(Ol`*|k@U2zsQ0&$mrn0y%KH5w z*NZL4x+%NSMC&xEm!w`Mmm#4>yhMU{i3WK?B5&V){TsXd@Z9s<=ZELH=kvVQf0Y#L z=6cx`006i6xajKua3T=^oTg4W!3eXqmkt1Da^s^TzpiTDS&aRYuyOg`DqWV|?RNFO zcUwYIB0Vmqob&$aH{Yaamy68}7y2)pEA|cXh&<_){>3M%(b}lbO@;23wTp@mO>L4Qah3+e?e_Q zII5IQ7-t|^K)a090)Ar_(E}j!*!E0^1XHHJ*HbrWJ6saL0)=ig-v@od4ku8Od>OCU zsi_1tCb4J)f}+*oln@sO$-o)gXavby6bD*014PHkpOj?kw)F)06r8uM?01+F{;F?7_dOM9RUe zvpZJ1%T?I*iB3osb zI`@k?^6ncWZ)Q6KjIxsPPh-I=;ZSV8f=`jOhD&geb$wIZ5>}~^+oaC^$hTkNZkg9V zHa8&o^Dpi!WfTqupQo(V2T&oKQN$H~M8dL?tw98qtaNR(UUYZK#S>qoT^R}@)uOr3X8B-^@H(w){y5NSl4~NhCp$9idrT8Tjn|s?n<{ R_8b@i;$xDc*-@n0{{Tf_l&b&$