APM

>Agent Skill

@yiyousiow000814/ui-check-framework

skilldevelopment

Build or extend an extensible UI self-check framework for Web UIs (React/Vite or plain HTML) using Playwright. Use when asked to add/upgrade ui-check or ui-watch flows, enforce data-qa/data-testid discovery, add theme/contrast checks, animation verification, loading state-machine checks, layout stability/overlap checks, modal scroll rules, or to document QA tagging standards and UI testing commands.

apm::install
$apm install @yiyousiow000814/ui-check-framework
apm::skill.md
---
name: ui-check-framework
description: Build or extend an extensible UI self-check framework for Web UIs (React/Vite or plain HTML) using Playwright. Use when asked to add/upgrade ui-check or ui-watch flows, enforce data-qa/data-testid discovery, add theme/contrast checks, animation verification, loading state-machine checks, layout stability/overlap checks, modal scroll rules, or to document QA tagging standards and UI testing commands.
---

# UI Check Framework

## Overview

Create or refine an automated UI self-check system that discovers UI blocks via data-qa
tags and enforces behavioral/visual contracts (themes, animations, loading, layout
stability, modal usability, error visibility). The framework must scale to new cards,
modals, toasts, and actions without writing new test cases each time.

## Workflow (use in order)

1) **Inspect existing scaffolding**
   - Prefer reusing the project's `ui-tests/` folder if it exists.
   - Read `ui-tests/docs/UI_TESTING.md` and `ui-tests/docs/QA_TAGGING.md` if present.
   - Confirm scripts in root `package.json` (`ui:test`, `ui:update-baseline`,
     `ui:report`, `ui:check`, `ui:watch`) point at Playwright flows.

2) **Enforce discovery**
   - Auto-collect all `data-qa` or `data-testid` elements that start with `qa:`.
   - Capture component screenshots (cards, modals, menus, toolbars, toasts) at
     small/medium/large sizes.
   - For modals: verify internal scroll, single close button, and header visibility
     at small window height.

3) **Enforce contracts (generic, not hardcoded)**
   - Theme contrast/readability for dark/light/system (see references).
   - Animation/motion checks for spinners, transitions, toasts.
   - Loading state machine for async actions: idle -> loading -> success/error -> idle.
   - Layout stability (no layout shift for transient status/toasts).
   - Overlap detection for action buttons and modal header/footer.
   - Error visibility and blank-page detection.

4) **Wire UI hooks for automation**
   - Add minimal `window.__ui_check__` helpers (e.g., append log, trigger toast) to
     make contracts testable without hardcoding selectors.
   - Add required `data-qa` tags to new cards/modals/actions as they appear.

5) **Artifacts and reporting**
   - Store artifacts under `artifacts/ui-check/` (snapshots, frames, video, report.html).
   - Ensure `ui:check` is interactive (open/close modal, hover/press, theme toggle, scroll).

## Project-specific anchors

- Primary UI tests live in `ui-tests/` and use Playwright.
- Use `ui-tests/scripts/ui-check.mjs` and `ui-tests/scripts/ui-watch.mjs` as the
  interactive validation entry points.
- Keep user-facing docs in `ui-tests/docs/UI_TESTING.md` and
  `ui-tests/docs/QA_TAGGING.md`.

## References

- `references/workflow.md` - extension workflow and verification checklist.
- `references/qa-tagging.md` - required QA tokens and naming conventions.
- `references/contracts.md` - required generic contracts and how to check them.