import { expect, onTestFinished, test } from 'vitest' import { commands, page } from 'vitest/browser' // tests for full snapshot/replay integration. // partly extracted from artifact metadata tests in // test/browser/fixtures/trace/*.test.ts test('simple', async () => { document.body.innerHTML = '' await page.getByRole('button').mark('Render simple') document.body.innerHTML = '' await page.getByRole('button').mark('Render another') }) test('switch-target', async () => { document.body.innerHTML = '' await page.getByRole('button').mark('Render switch target') }) test('multiple-match', async () => { document.body.innerHTML = '' await page.getByRole('button').mark('Render multiple') }) test('popover', async () => { document.body.innerHTML = '
Popover content
' const popover = document.querySelector('[popover]')! const popoverContent = page.getByText('Popover content') await popoverContent.mark('Render closed popover') popover.showPopover() await popoverContent.mark('Render open popover') }) test('pseudo-state', async () => { document.body.innerHTML = `




` await page.getByRole('button', { name: 'Test hover 1' }).hover() await page.getByRole('button', { name: 'Test hover 2' }).click() await page.getByPlaceholder('focus-placeholder').click() await page.getByPlaceholder('focus-placeholder').fill('focus-done') await page.getByPlaceholder('focus-within-placeholder').fill('focus-within-done') await (commands as any).mousedown('.test-active') await page.getByRole('button', { name: 'Test active' }).mark('Test active') await page.getByPlaceholder('focus-visible-placeholder').fill('focus-visible-done') }) test('css-link', async () => { const link = document.createElement('link') link.rel = 'stylesheet' link.href = '/assets/trace-style.css' document.head.append(link) onTestFinished(() => { link.remove() }) document.body.innerHTML = '' await expect.element(page.getByRole('button', { name: 'Linked CSS' })) .toHaveStyle({ color: 'rgb(50, 100, 255)' }) }) test('image', async () => { document.body.innerHTML = 'local trace asset' await expect.element(page.getByAltText('local trace asset')) .not .toHaveProperty('naturalWidth', 0) await page.getByAltText('local trace asset').mark('Render image') }) test('zoom', async () => { // three centered buttons on a grid background with a border to see zoom and cutoff await page.viewport(400, 600) document.body.innerHTML = ` 0,0 400,600 ` await page.mark('Render zoom') })