diff --git a/packages/frontend/editor-ui/src/__tests__/setup.ts b/packages/frontend/editor-ui/src/__tests__/setup.ts index 94b26c86352..f903afdd0e5 100644 --- a/packages/frontend/editor-ui/src/__tests__/setup.ts +++ b/packages/frontend/editor-ui/src/__tests__/setup.ts @@ -47,8 +47,15 @@ vi.mock('reka-ui', async (importOriginal) => { const context = inject<{ isOpen: { value: boolean }; setOpen: (v: boolean) => void }>( POPOVER_OPEN_KEY, ); + // Capture phase avoids Vue's "event fired before listener attached" guard + // (`e._vts <= invoker.attached`), which flakily skips a bubble-phase onClick + // when a test renders and clicks within the same millisecond. return () => - h('div', { onClick: () => context?.setOpen(!context.isOpen.value) }, slots.default?.()); + h( + 'div', + { onClickCapture: () => context?.setOpen(!context.isOpen.value) }, + slots.default?.(), + ); }, }), PopoverPortal: defineComponent({