import { describe, expect, it } from 'vitest'
import { render, fireEvent, screen } from '@testing-library/react'
import { Switch } from './Switch'
import { spokenPhraseUntil } from './sr-test-utils'

describe('Switch [SR]', () => {
  it('announces on/off states with name and role', async () => {
    render(<Switch aria-label="Dark mode" />)

    const offPhrase = await spokenPhraseUntil(document.body, (value) => value.toLowerCase().includes('dark mode'))
    expect(offPhrase.toLowerCase()).toContain('dark mode')

    fireEvent.click(screen.getByRole('switch', { name: 'Dark mode' }))
    const onPhrase = await spokenPhraseUntil(document.body, (value) => {
      const lowered = value.toLowerCase()
      return lowered.includes('dark mode') && lowered.includes('on')
    })
    expect(onPhrase.toLowerCase()).toContain('on')
  })
})

