diff --git a/__tests__/unit/a11y-nomes-acessiveis.test.ts b/__tests__/unit/a11y-nomes-acessiveis.test.ts new file mode 100644 index 0000000..32684c4 --- /dev/null +++ b/__tests__/unit/a11y-nomes-acessiveis.test.ts @@ -0,0 +1,60 @@ +import { describe, it, expect } from 'vitest' +import { readFileSync } from 'node:fs' +import { join } from 'node:path' + +// ─── Botões só de ícone sem nome acessível (#106) ────────────────────────── +// +// Não há infra de render de componente no projeto (sem jsdom/testing-library). +// O gate possível é sobre o texto-fonte, padrão já usado em row-actions.test.ts +// (#54) e a11y-estado-selecao.test.ts (#107). +// +// A asserção precisa ancorar no "): estender até o fechamento + // incluiria os atributos do próprio ícone no trecho, e um aria-label colocado + // ali por engano (o erro que esta issue existe para barrar) passaria a asserção + // de linha isolada sempre que o prettier quebrasse os atributos do ícone. + const pattern = new RegExp(` { + const cases = [ + { + name: 'CategoryDialog — editar categoria', + path: 'components/categorias/CategoryDialog.tsx', + }, + { + name: 'GroupDialog — editar grupo', + path: 'components/categorias/GroupDialog.tsx', + }, + { + name: 'AccountDialog — editar conta', + path: 'components/contas/AccountDialog.tsx', + }, + ] + + for (const { name, path } of cases) { + describe(name, () => { + const source = readFileSync(join(process.cwd(), path), 'utf-8') + const trigger = findClosestButtonWithIcon(source, 'Pencil') + + it('encontra o bloco do botão de editar (o mais próximo do ícone Pencil)', () => { + expect(trigger).toBeDefined() + }) + + it('expõe aria-label no diff --git a/components/categorias/GroupDialog.tsx b/components/categorias/GroupDialog.tsx index c1715f2..93e79d6 100644 --- a/components/categorias/GroupDialog.tsx +++ b/components/categorias/GroupDialog.tsx @@ -90,6 +90,7 @@ export function GroupDialog(props: Props) { variant="ghost" className="h-7 w-7 text-text-tertiary hover:text-text-primary" onClick={() => setOpen(true)} + aria-label="Editar grupo" > diff --git a/components/contas/AccountDialog.tsx b/components/contas/AccountDialog.tsx index bce29c3..19175b9 100644 --- a/components/contas/AccountDialog.tsx +++ b/components/contas/AccountDialog.tsx @@ -166,6 +166,7 @@ export function AccountDialog(props: Props) { variant="ghost" className="h-7 w-7 text-text-tertiary hover:text-text-primary" onClick={() => setOpen(true)} + aria-label="Editar conta" >