import { describe, expect, it } from 'vitest' import { getFocusableElements } from './useFocusTrap' describe('getFocusableElements', () => { it('includes input[type=search] used by FdsSearchSelect', () => { const container = document.createElement('div') container.innerHTML = ` ` document.body.appendChild(container) const focusable = getFocusableElements(container) expect(focusable).toHaveLength(3) expect(focusable[1].tagName).toBe('INPUT') expect((focusable[1] as HTMLInputElement).type).toBe('search') container.remove() }) it('includes common focusable form controls and skips hidden/disabled', () => { const container = document.createElement('div') container.innerHTML = ` Link
Custom
Skipped
` document.body.appendChild(container) const focusable = getFocusableElements(container) expect(focusable.map((el) => el.tagName)).toEqual([ 'A', 'BUTTON', 'INPUT', 'INPUT', 'TEXTAREA', 'SELECT', 'DIV', ]) expect((focusable[2] as HTMLInputElement).type).toBe('text') expect((focusable[3] as HTMLInputElement).type).toBe('email') expect(focusable.some((el) => el.getAttribute('tabindex') === '-1')).toBe(false) expect(focusable.some((el) => (el as HTMLButtonElement).disabled)).toBe(false) expect(focusable.some((el) => (el as HTMLInputElement).type === 'hidden')).toBe(false) container.remove() }) })