Common feedback and anti-patterns observed in axe-core code reviews.
- Every behavior-changing code change needs unit tests
- Rule changes need integration tests (HTML + JSON pair)
- Shadow DOM test coverage required for relevant checks/rules
- Wrong type/scope
- Not imperative present tense
- Subject too long or capitalized
- Missing issue reference in footer
core/utilsimporting fromcommons(forbidden)- Using index imports where direct file paths are required
- Importing node modules outside
core/imports
- Not using return early pattern
- Default export not at top of file
- Nested conditionals when early return would work
- Missing JSDoc comments
- Unnecessary DOM queries in loops
- Not caching Virtual Node properties
- Computing same value repeatedly instead of storing it
- Not returning
undefinedwhen a check can't determine the result - Missing
incompletemessage variants in check JSON - Not setting appropriate
this.data()for incomplete cases
- Not considering all ARIA states
- Missing edge cases for hidden elements
- Not handling Shadow DOM properly
- Comprehensive test coverage including edge cases
- Clear, detailed commit messages with motivation
- JSDoc comments that explain "why" not just "what"
- Performance-conscious code that caches appropriately
- Following existing patterns in similar files
- Integration tests that cover both pass and fail cases
- Not running
npm testlocally before pushing - Not committing auto-generated
locales/_template.jsonin the same commit as message source changes - Changing multiple unrelated things in one PR — split refactoring from feature work
- Not updating integration tests when changing rule behavior
console.logstatements should not be committed- Not handling
nullorundefinedgracefully - Hardcoding strings that should come from
standards/data - Changing public APIs without
BREAKING CHANGEin commit footer