
Ui Testing
- 327 installs
- 706 repo stars
- Updated July 14, 2026
- alinaqi/claude-bootstrap
ui-testing is a claude-bootstrap agent skill that verifies UI accessibility and visibility for developers who need pre-ship checks on contrast, touch targets, and component states in test and story files.
About
ui-testing is an alinaqi/claude-bootstrap skill (effort: medium, user-invocable: false) triggered on paths `**/*.test.tsx`, `**/*.spec.tsx`, and `**/*.stories.*`. It loads companion guides ui-web.md or ui-mobile.md and provides a pre-flight checklist covering visibility (4.5:1 contrast), 44px minimum touch targets, hover/press/focus/disabled/loading states, dark-mode readability, and 320px responsive checks. It documents Tailwind safe color pairs, common JSX fixes for invisible buttons and missing focus rings, optional eslint-plugin-jsx-a11y setup, and a Playwright @axe-core/playwright example. Developers reach for this skill after generating new UI components when they need fast accessibility verification rather than a full visual regression suite.
- E2E automation
- selector strategy
- test fixtures
- CI integration
- flaky test fixes
Ui Testing by the numbers
- 327 all-time installs (skills.sh)
- Ranked #685 of 2,153 Testing & QA skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/alinaqi/claude-bootstrap --skill ui-testingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 327 |
|---|---|
| repo stars | ★ 706 |
| Last updated | July 14, 2026 |
| Repository | alinaqi/claude-bootstrap ↗ |
How do you verify UI contrast before shipping components?
Create automated UI and end-to-end tests with stable selectors, fixtures, async waits, and CI-ready suites for web apps and browser extensions.
Who is it for?
Frontend developers shipping React or React Native UI who want agent-guided accessibility checks on test, spec, and Storybook files.
Skip if: Backend-only changes or teams already running full visual regression and E2E suites with dedicated QA automation engineers.
When should I use this skill?
Agent edits or creates UI in *.test.tsx, *.spec.tsx, or *.stories.* files and needs visual or accessibility verification guidance.
What you get
Completed visibility and accessibility checklist, contrast-validated styles, and optional Playwright axe test scaffold.
- Accessibility checklist results
- Optional axe Playwright spec
By the numbers
- Enforces 4.5:1 minimum text contrast ratio in the visibility checklist
- Requires 44px minimum height for buttons and 44×44px icon buttons
- Triggers on three glob patterns: test.tsx, spec.tsx, and stories files
Files
UI Verification Skill
Load with: ui-web.md or ui-mobile.md
Purpose
Quick verification that generated UI meets accessibility standards. Run these checks after creating any new UI components.
---
Pre-Flight Checklist
Before Shipping ANY UI:
## Visibility Check
- [ ] All buttons have visible background OR border
- [ ] No text is same color as its background
- [ ] All text meets 4.5:1 contrast ratio
- [ ] Ghost/text buttons have visible borders
## Touch/Click Targets
- [ ] All buttons are minimum 44px height
- [ ] Icon buttons are minimum 44x44px
- [ ] Adequate spacing between clickable elements
## States
- [ ] Hover states visible (web)
- [ ] Pressed states visible (mobile)
- [ ] Focus rings on keyboard navigation
- [ ] Disabled states visually distinct (opacity 0.5)
- [ ] Loading states show indicators
## Dark Mode (if applicable)
- [ ] Text readable on dark backgrounds
- [ ] Borders visible in dark mode
- [ ] No gray-400 text on dark backgrounds
## Responsive (web)
- [ ] No horizontal scroll on mobile (320px)
- [ ] Content readable at all breakpoints
- [ ] Touch targets adequate on mobile---
Quick Contrast Check
Use Browser DevTools
1. Right-click element → Inspect
2. In Styles panel, click on color value
3. Look for contrast ratio display
4. Must show ✓ for AA compliance (4.5:1 for text)Online Tools
- https://webaim.org/resources/contrastchecker/
- https://coolors.co/contrast-checker
Tailwind Safe Combinations
LIGHT MODE (on white bg):
✓ text-gray-900 (#111827) = 16:1
✓ text-gray-800 (#1F2937) = 12:1
✓ text-gray-700 (#374151) = 9:1
✓ text-gray-600 (#4B5563) = 6:1
✗ text-gray-500 (#6B7280) = 4.6:1 (barely)
✗ text-gray-400 (#9CA3AF) = 2.6:1 (FAILS)
DARK MODE (on gray-900 bg):
✓ text-white (#FFFFFF) = 16:1
✓ text-gray-100 (#F3F4F6) = 13:1
✓ text-gray-200 (#E5E7EB) = 11:1
✓ text-gray-300 (#D1D5DB) = 8:1
✗ text-gray-400 (#9CA3AF) = 5:1 (barely)
✗ text-gray-500 (#6B7280) = 3:1 (FAILS)---
Common Fixes
Invisible Button
// PROBLEM: No visible boundary
<button className="text-gray-500">Click</button>
// FIX: Add background OR border
<button className="bg-gray-100 text-gray-900 px-4 py-3 rounded-lg">
Click
</button>
// OR
<button className="border border-gray-300 text-gray-700 px-4 py-3 rounded-lg">
Click
</button>Low Contrast Text
// PROBLEM: Light gray on white
<p className="text-gray-400">Secondary text</p>
// FIX: Use darker gray
<p className="text-gray-600">Secondary text</p>Missing Focus State
// PROBLEM: Focus removed without replacement
<button className="outline-none">Submit</button>
// FIX: Add visible focus ring
<button className="outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2">
Submit
</button>Small Touch Target
// PROBLEM: Too small for fingers
<button className="p-1 text-sm">×</button>
// FIX: Minimum 44px
<button className="w-11 h-11 flex items-center justify-center">×</button>Dark Mode Broken
// PROBLEM: Same colors in both modes
<p className="text-gray-400">Text</p>
// FIX: Adjust for dark mode
<p className="text-gray-600 dark:text-gray-300">Text</p>---
Automated Checks (Optional)
ESLint Plugin
npm install -D eslint-plugin-jsx-a11y// .eslintrc
{
"extends": ["plugin:jsx-a11y/recommended"]
}Playwright Quick Test
// e2e/accessibility.spec.ts
import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';
test('no accessibility violations', async ({ page }) => {
await page.goto('/');
const results = await new AxeBuilder({ page }).analyze();
expect(results.violations).toEqual([]);
});---
When to Use Full Testing
Add comprehensive visual testing (Playwright screenshots, Storybook) when:
- Building a component library
- Multiple developers on UI
- Frequent UI changes
- Design system enforcement needed
For solo projects or MVPs, the checklist above is sufficient.
Related skills
How it compares
Use for fast pre-ship accessibility checklists; adopt full Playwright screenshot suites when building a shared component library.
FAQ
When does ui-testing automatically apply?
ui-testing is user-invocable false and targets paths `**/*.test.tsx`, `**/*.spec.tsx`, and `**/*.stories.*`, loading ui-web.md or ui-mobile.md when writing visual or accessibility tests.
What contrast standard does ui-testing enforce?
ui-testing requires 4.5:1 contrast for text in its visibility checklist and shows Tailwind gray combinations that pass or fail AA compliance on light and dark backgrounds.