Instructor only · Unlisted
Junior answer key
All planted bugs across the 10 junior practice pages.
← Junior hub · Learning
Practice 01 · Required field validation (open)
- Accessibility: First name label for= doesn't match input id — clicking label doesn't focus field
- Last name asterisk but no required attribute
- Email uses type=text not type=email
- Phone has required attribute but no asterisk visual indicator
- Submit button is type=button — Enter key does not submit the form
Practice 02 · Email & phone format validation (open)
- Email pre-filled with 'notanemail'
- Phone pattern rejects spaces but placeholder shows spaces
- Pattern [0-9]{10} rejects valid NZ mobile formats
- Alt email uses type=text not type=email
- 'Business emails only' hint has no enforcement
Practice 03 · Boundary values (open)
- Ticket max attribute is 9, hint says max 10
- Default quantity is 0, below min of 1
- Age min is 0, requirement says 18+
- Promo maxlength=8, placeholder says up to 12
- Textarea maxlength=500, placeholder says max 200
- Age max of 120 is overly permissive
Practice 04 · Error messages (open)
- Error message says only 'Error' — no detail
- Empty error div always visible
- Password requirements vague ('must meet requirements')
- Error shown before any submission
- No message for password mismatch case
Practice 05 · Password rules (open)
- minlength=12 conflicts with pattern requiring 8+
- maxlength=20 blocks strong passphrases
- Special char required by hint but not in pattern
- No live feedback as user types
- Three different minimum length values (8, 8, 12)
Practice 06 · Dropdown bugs (open)
- Service defaults to real value, not placeholder
- Placeholder is second option, not first
- 'Tyre rotation' appears twice
- Service select has no required attribute
- Time select has no placeholder option
Practice 07 · Date picker issues (open)
- Preferred date has no min — past dates selectable
- Weekends not blocked despite hint saying Mon–Fri only
- Backup date uses type=text with format placeholder
- DOB min=2000 blocks everyone born before 2000
- 18+ rule not enforced by dynamic max attribute
Practice 08 · Character limits (open)
- Counter shows '100 / 60' before any input
- Review textarea has no maxlength attribute — label says max 500 but limit is not enforced
- Display name maxlength=50 but label says 30
- minlength=20 set on textarea but no live feedback — user only discovers the minimum on failed submit
- Counter is static HTML, not dynamic
Practice 09 · Checkbox & radio logic (open)
- 'Select one' group uses checkboxes not radio buttons
- 'Select all' group uses radio buttons not checkboxes
- Newsletter checkbox pre-checked (dark pattern)
- Partner offers checkbox pre-checked
- Both newsletter checkboxes share same name attribute
Practice 10 · Multi-step form flow (open)
- Step indicators out of order: 1, 3, 2
- 'Step 2 of 4' but only 3 steps shown
- Card number pre-filled with test value
- CVV uses type=text not type=password
- Current and completed steps look identical
- Back button has no data-loss warning