diff --git a/__tests__/unit/a11y-pagina-atual.test.ts b/__tests__/unit/a11y-pagina-atual.test.ts new file mode 100644 index 0000000..ce0eb10 --- /dev/null +++ b/__tests__/unit/a11y-pagina-atual.test.ts @@ -0,0 +1,47 @@ +import { describe, it, expect } from 'vitest' +import { readFileSync } from 'node:fs' +import { join } from 'node:path' + +// ─── Sidebar / BottomNav — item de navegação atual exposto a leitor de tela (#118) ─ +// +// Não há infra de render de componente no projeto (sem jsdom/testing-library). +// O gate possível é sobre o texto-fonte: garantir que `aria-current` esteja +// amarrado à expressão de estado, e que seja `'page'` — não `true` nem um +// literal fixo. `aria-current="page"` fixo marcaria os 11+ links como a +// página atual (pior que o bug original); `aria-current={active}` renderiza +// `aria-current="false"` no item inativo, que ARIA trata como estado +// presente (não ausência) — React só omite `aria-*` para `undefined`/`null`. +// Ambas as correções erradas passariam num `toMatch(/aria-current/)` genérico. +// As asserções ancoram na linha inteira (`^\s*...$` com flag `m`), não em +// qualquer ocorrência do arquivo — senão o atributo comentado deixaria o +// teste verde com os 22 links de volta a se anunciar idênticos, mesmo modo +// de falha que `a11y-estado-selecao.test.ts` (#107) documenta para +// `aria-pressed`. Ancoram também no elemento (`` (ex: a `