test(a11y): bronscan herkent ook de kale IconButton (#1248) #1257

Merged
brenno merged 1 commit from fix/1248-iconbutton-bronscan into main 2026-08-05 07:36:23 +00:00
Owner

Samenvatting

De bronscan in test/accessibility_labels_test.dart ving één manier waarop een knop naamloos is — een Tooltip die eromheen lijkt te benoemen maar het niet doet — maar niet de symmetrische fout: een IconButton zonder eigen tooltip: en zonder Icon(semanticsLabel:). Dat was precies het patroon van de twee knoppen uit #1247, die erdoorheen glipten tot een handmatige audit ze vond.

Deze PR breidt de bronscan uit met dat symmetrische patroon:

  • IconButton(…) in lib/**/*.dart wordt geparset tot de matchende haak (aanhalingstekens overgeslagen, hergebruik van de bestaande _matchingParen).
  • Rood als de argumentenlijst noch tooltip: noch semanticsLabel: bevat.
  • Eén extra test()-blok naast de bestaande Tooltip-scan.
  • Een zelftest die een kale IconButton rood maakt en een knop mét tooltip groen — zonder die zou een fout in de helper de suite stilletjes groen houden.

Dit sluit de klasse universeel, niet alleen de twee bewezen gevallen. De widgettests blijven als aanvulling op focus-/leesvolgorde, niet als enige dekking van naamloze knoppen.

Scope

Raakt geen bestandsformaat, opslag, afhankelijkheid of publieke belofte — bewaker niet nodig. Alleen een testbestand.

Poort

  • make check groen (8516 tests, waaronder de twee nieuwe).
  • make check-secrets schoon (gitleaks + trufflehog, 0 leaks).
  • make sast schoon (semgrep, 0 findings).

Closes #1248.

Generated with Devin

## Samenvatting De bronscan in `test/accessibility_labels_test.dart` ving één manier waarop een knop naamloos is — een `Tooltip` die eromheen lijkt te benoemen maar het niet doet — maar niet de symmetrische fout: een `IconButton` zonder eigen `tooltip:` en zonder `Icon(semanticsLabel:)`. Dat was precies het patroon van de twee knoppen uit #1247, die erdoorheen glipten tot een handmatige audit ze vond. Deze PR breidt de bronscan uit met dat symmetrische patroon: - `IconButton(…)` in `lib/**/*.dart` wordt geparset tot de matchende haak (aanhalingstekens overgeslagen, hergebruik van de bestaande `_matchingParen`). - Rood als de argumentenlijst noch `tooltip:` noch `semanticsLabel:` bevat. - Eén extra `test()`-blok naast de bestaande Tooltip-scan. - Een zelftest die een kale `IconButton` rood maakt en een knop mét tooltip groen — zonder die zou een fout in de helper de suite stilletjes groen houden. Dit sluit de klasse universeel, niet alleen de twee bewezen gevallen. De widgettests blijven als aanvulling op focus-/leesvolgorde, niet als enige dekking van naamloze knoppen. ### Scope Raakt geen bestandsformaat, opslag, afhankelijkheid of publieke belofte — `bewaker` niet nodig. Alleen een testbestand. #### Poort - `make check` groen (8516 tests, waaronder de twee nieuwe). - `make check-secrets` schoon (gitleaks + trufflehog, 0 leaks). - `make sast` schoon (semgrep, 0 findings). Closes #1248. Generated with [Devin](https://devin.ai)
test(a11y): bronscan herkent ook de kale IconButton (#1248)
All checks were successful
scans / scans (pull_request) Successful in 1m35s
static-gate / static-gate (pull_request) Successful in 3m33s
3b892e4ad8
De bronscan in accessibility_labels_test.dart ving één manier waarop een
knop naamloos is — een Tooltip die eromheen lijkt te benoemen maar het niet
doet — maar niet de symmetrische fout: een IconButton zonder eigen tooltip
en zonder Icon(semanticsLabel:). Dat was precies het patroon van de twee
knoppen uit #1247, die erdoorheen glipten tot een handmatige audit ze vond.

Eén extra test()-blok dat IconButton(…) in lib/**/*.dart parset tot de
matchende haak en rood gaat bij ontbrekende tooltip én semanticsLabel,
plus een zelftest die een kale IconButton rood en een knop mét tooltip
groen maakt. Sluit de klasse universeel, niet alleen de twee bewezen
gevallen.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 9d374d3d4f into main 2026-08-05 07:36:23 +00:00
Sign in to join this conversation.
No description provided.