import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' import DiacriticPicker from '../DiacriticPicker.vue' // jsdom ne calcule pas `:focus-visible` ni les styles d'`outline` : ces tests vérifient // les prérequis structurels du ring de focus (éléments focusables + rôles), le rendu du // ring étant couvert par les tests visuels Cypress. describe('DiacriticPicker - Focus', () => { const factory = () => mount(DiacriticPicker, { props: { modelValue: '' }, slots: { default: '', }, }) it('keeps the input-slot wrapper out of the keyboard tab order', () => { const wrapper = factory() const textbox = wrapper.find('.sy-input-slot') expect(textbox.exists()).toBe(true) // Le wrapper enveloppe le vrai du slot ; il ne doit PAS être un arrêt de Tab // supplémentaire (sinon ring conteneur en trop avant le champ). tabindex -1 => hors // séquence clavier, tout en gardant le `@keydown` d'insertion via bubbling. expect(textbox.attributes('tabindex')).toBe('-1') }) it('renders the opening button as a real focusable v-btn (global ring)', () => { const wrapper = factory() const btn = wrapper.find('.sy-diacritic-btn') expect(btn.exists()).toBe(true) // Un vrai