Files
wehub-resource-sync 070959e133
landing-page-staging / Deploy landing page to staging (push) Has been skipped
landing-page-ci / Validate landing page (push) Failing after 4s
visual-baseline / Capture visual baselines (push) Has been cancelled
bake-plugin-previews / Bake plugin previews (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:00:47 +08:00

73 lines
1.8 KiB
TypeScript

// @vitest-environment jsdom
import { useState } from 'react';
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
import { afterEach, describe, expect, it } from 'vitest';
import { TooltipLayer } from '../../src/components/TooltipLayer';
afterEach(() => cleanup());
describe('TooltipLayer', () => {
it('dismisses a hovered icon tooltip when the icon is activated', () => {
render(
<>
<button
type="button"
className="od-tooltip"
data-tooltip="Settings"
title="Settings"
>
Settings
</button>
<TooltipLayer />
</>,
);
const button = screen.getByRole('button', { name: 'Settings' });
fireEvent.pointerOver(button);
expect(screen.getByRole('tooltip').textContent).toBe('Settings');
fireEvent.pointerDown(button);
fireEvent.focusIn(button);
expect(screen.queryByRole('tooltip')).toBeNull();
});
it('dismisses a tooltip when the trigger expands under the pointer', async () => {
function ExpandingTrigger() {
const [open, setOpen] = useState(false);
return (
<button
type="button"
className="od-tooltip"
data-tooltip="Design Agent mode"
title="Design Agent mode"
aria-expanded={open}
onClick={() => setOpen((value) => !value)}
>
Design Agent
</button>
);
}
render(
<>
<ExpandingTrigger />
<TooltipLayer />
</>,
);
const button = screen.getByRole('button', { name: 'Design Agent' });
fireEvent.pointerOver(button);
expect(screen.getByRole('tooltip').textContent).toBe('Design Agent mode');
fireEvent.click(button);
await waitFor(() => {
expect(screen.queryByRole('tooltip')).toBeNull();
});
});
});