[READ-ONLY] a fast, modern browser for the npm registry
at main 36 lines 1.6 kB view raw
1import { expect, test } from './test-utils' 2 3test.describe('Package Page', () => { 4 test('/vue → package manager select dropdown works', async ({ page, goto }) => { 5 await goto('/package/vue', { waitUntil: 'hydration' }) 6 7 await expect(page.locator('h1')).toContainText('vue', { timeout: 15000 }) 8 9 const packageManagerButton = page.locator('button[aria-haspopup="listbox"]').first() 10 await expect(packageManagerButton).toBeVisible() 11 12 // Open dropdown 13 await packageManagerButton.click() 14 const packageManagerDropdown = page.locator('[role="listbox"]') 15 await expect(packageManagerDropdown).toBeVisible({ timeout: 5000 }) 16 17 // Arrow keys navigate the listbox 18 await packageManagerButton.press('ArrowDown') 19 const firstDescendant = await packageManagerDropdown.getAttribute('aria-activedescendant') 20 await packageManagerButton.press('ArrowDown') 21 const secondDescendant = await packageManagerDropdown.getAttribute('aria-activedescendant') 22 expect(secondDescendant).not.toBe(firstDescendant) 23 24 // Escape closes dropdown and returns focus 25 await packageManagerButton.press('Escape') 26 await expect(packageManagerDropdown).not.toBeVisible() 27 await expect(packageManagerButton).toBeFocused() 28 29 // Enter selects option and closes dropdown 30 await packageManagerButton.click() 31 await expect(packageManagerDropdown).toBeVisible({ timeout: 5000 }) 32 await packageManagerButton.press('ArrowDown') 33 await packageManagerButton.press('Enter') 34 await expect(packageManagerDropdown).not.toBeVisible() 35 }) 36})