CH 08Testing Lab
Tools for people who break things for a living
Live download trends for the major test frameworks, a generator that turns any input into a test plan, and a field guide to flaky tests.
syncing…
Framework wars
Test idea generator
- Happy pathAccepts a plain valid address
user@example.com→ the address is accepted - Happy pathAccepts plus addressing
user+qa@example.com→ the address is accepted - Happy pathAccepts multi-level domains
user@mail.example.co.uk→ the address is accepted - BoundaryLocal part of exactly 64 characters
a×64@example.com→ the address is accepted - BoundaryLocal part of 65 characters
a×65@example.com→ a clear length error is shown - BoundaryTotal length above 254 characters
a×250@example.com→ a clear length error is shown - NegativeMissing @ sign
userexample.com→ an inline format error is shown - NegativeConsecutive dots in the local part
user..name@example.com→ the address is rejected - NegativeLeading and trailing spaces
user@example.com→ input is trimmed or rejected consistently - NegativeEmpty submit on a required field→ a required-field message is shown
- NegativeCase-only duplicate of an existing account
User@Example.com→ it is treated as the same address - SecurityScript tag in the address
<script>alert(1)</script>@x.com→ input is escaped and no script runs - SecuritySQL-style payload
' OR 1=1 --@x.com→ the request is rejected without a server error - AccessibilityError message is announced
invalid→ the error is linked via aria-describedby and read by screen readers - AccessibilityCorrect input type and autocomplete→ type=email and autocomplete=email are set for mobile keyboards
## Test ideas: Email field
- [ ] **Happy path**: Accepts a plain valid address (`user@example.com`). Expect the address is accepted.
- [ ] **Happy path**: Accepts plus addressing (`user+qa@example.com`). Expect the address is accepted.
- [ ] **Happy path**: Accepts multi-level domains (`user@mail.example.co.uk`). Expect the address is accepted.
- [ ] **Boundary**: Local part of exactly 64 characters (`a×64@example.com`). Expect the address is accepted.
- [ ] **Boundary**: Local part of 65 characters (`a×65@example.com`). Expect a clear length error is shown.
- [ ] **Boundary**: Total length above 254 characters (`a×250@example.com`). Expect a clear length error is shown.
- [ ] **Negative**: Missing @ sign (`userexample.com`). Expect an inline format error is shown.
- [ ] **Negative**: Consecutive dots in the local part (`user..name@example.com`). Expect the address is rejected.
- [ ] **Negative**: Leading and trailing spaces (` user@example.com `). Expect input is trimmed or rejected consistently.
- [ ] **Negative**: Empty submit on a required field. Expect a required-field message is shown.
- [ ] **Negative**: Case-only duplicate of an existing account (`User@Example.com`). Expect it is treated as the same address.
- [ ] **Security**: Script tag in the address (`<script>alert(1)</script>@x.com`). Expect input is escaped and no script runs.
- [ ] **Security**: SQL-style payload (`' OR 1=1 --@x.com`). Expect the request is rejected without a server error.
- [ ] **Accessibility**: Error message is announced (`invalid`). Expect the error is linked via aria-describedby and read by screen readers.
- [ ] **Accessibility**: Correct input type and autocomplete. Expect type=email and autocomplete=email are set for mobile keyboards.Flaky test doctor
Likely cause: Different browser versions, CPU speed, screen size or env vars.
Fix: Pin versions, run tests in the same container locally and in CI, and wait for conditions instead of fixed sleeps.