fix: consistência de status via Badge em todas as telas (item 3) #47
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/design-system-badge-consistency"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Item 3 do roadmap (Storybook/design system) — auditoria completa antes de qualquer mudança.
Auditado
.stories.tsx) e quais estados cobrem.npm run build-storybook— limpo.Badge/StatusBadge/IssueSeverity/CoverageStatusno código — nenhum recebe cor crua, sempre valor de domínio. Essa parte já estava 100% correta.Achado real: violação de "nunca cor crua" nas telas de lista
As telas de detalhe (RunDetail/IssueDetail/ReportDetail) já usam
Badgecom um mapastatus -> variant. As telas de lista do mesmo domínio (Runs/Issues/Requirements/ReportList) nunca usavam — caíam num<span className="pill" data-status=...>resolvido em CSS com hex cru (globals.scss). O mesmo padrão também tinha vazado como "traffic light" genérico (sempre Aprovado/Reprovado) emTechnicalValidationDetail/Form/ListeDevTools.Mudança
status -> variant(antes duplicados idênticos em ReportDetail/IssueDetail/RunDetail) emfrontend/src/domainStatusVariants.ts.Badgede forma consistente nas 8 telas que ainda bypassavam (Runs, Issues, Requirements, ReportList, RequirementDetail, TechnicalValidationDetail/Form/List, DevTools).Runs.tsxtambém ganha umBadgepor faixa depass_rate(era inline-style com ternário)..pill[data-status=...],[data-issue-status=...],[data-step-status=...](esse último já estava morto desde o item 2 — nunca foi limpo),.pill.sev-*, e os 4 tokens--status-*em hex cru (o comentário no próprio arquivo já dizia "mantidos até a tela de Reports migrar" — a migração aconteceu agora).Sobre cobertura de stories (loading/empty/error/texto-longo/sem-dados)
Não precisou de mudança:
StatCardjá cobre loading e sem-dados,EmptyStatejá cobre error e texto longo,ProgressBar's story "Empty" (value=0) já cobre sem-dados na prática (não achei valor em inventar um estado "sem dado" separado pra um componente que sempre recebe um número).StatusBadge/IssueSeverity/CoverageStatussão labels curtos de um enum fechado — loading/texto-longo não se aplicam a eles.Verificação
npx tsc --noEmit/npm run lint(0 erros, 8 warnings pré-existentes) /npx vitest run(106 passed) /npm run build/npm run build-storybook— todos ok