算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
ui-visual-validator【设计与创意】CI/CD visual regression setup and pre-commit visual verification checklist. Scoped complement to reality-checker agent — adds: visual regression tool ecosystem (Chromatic, Percy, Applitools, BackstopJS, Playwright Visual), 13-item mandatory verification checklist, and GitHub Actions screenshot diff pipelines. Use when setting up automated visual regr…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
DO NOT REPLACE reality-checker — USE IT FIRST for live browser screenshots and binary APPROVED/NEEDS WORK verdict. This skill adds: (1) visual regression tooling setup for CI/CD pipelines, (2) the 13-item mandatory verification checklist for systematic pre-PR checks, (3) automated screenshot diff configuration. Use both together.
Systematic visual verification methodology + CI/CD visual regression tooling. Skeptic-first: the modification goal has NOT been achieved until proven with visual evidence.
reality-checker| Capability | reality-checker agent | ui-visual-validator (this skill) |
|---|---|---|
| Live browser screenshot | ✅ Chrome DevTools MCP | ❌ (use reality-checker for this) |
| Binary APPROVED/NEEDS WORK verdict | ✅ | ❌ (defer to reality-checker) |
| Visual regression tool setup (CI/CD) | ❌ | ✅ Chromatic, Percy, Applitools, BackstopJS |
| GitHub Actions visual diff workflow | ❌ | ✅ |
| 13-item mandatory verification checklist | ❌ | ✅ |
| Accessibility visual compliance checklist | ❌ | ✅ |
| Pre-commit systematic analysis protocol | ❌ | ✅ |
Workflow: Run ui-visual-validator checklist → gather screenshots → pass to reality-checker for final verdict.
browser-testing skill + Chrome DevTools MCPreality-checker agentaccessibility-audit skillThe modification goal has NOT been achieved until proven by visual evidence. Ignore code hints. Base judgments solely on visual output.
Forbidden behaviors:
Required output format (when performing visual analysis): Always start with: "From the visual evidence, I observe..."
Run through ALL 13 items before declaring a UI change complete:
# Install
npm install -D @playwright/test
# angular.json — add e2e target
// visual.spec.ts
import { test, expect } from '@playwright/test';
test('dashboard visual regression', async ({ page }) => {
await page.goto('/dashboard');
await page.waitForLoadState('networkidle');
// Full page snapshot
await expect(page).toHaveScreenshot('dashboard.png', {
fullPage: true,
threshold: 0.1, // 10% pixel difference tolerance
});
});
test('mobile breakpoint', async ({ page }) => {
await page.setViewportSize({ width: 375, height: 812 });
await page.goto('/dashboard');
await expect(page).toHaveScreenshot('dashboard-mobile.png');
});
# .github/workflows/visual-regression.yml
name: Visual Regression
on: [pull_request]
jobs:
visual-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npx playwright install --with-deps chromium
- run: npx ng build --configuration=production
- run: npx playwright test --reporter=html
- uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-visual-report
path: playwright-report/
npm install --save-dev chromatic
npx chromatic --project-token=<token> --auto-accept-changes main
# GitHub Actions
- name: Publish to Chromatic
uses: chromaui/action@latest
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
onlyChanged: true # Only test changed components
Best for: Angular component libraries with Storybook stories.
npm install -g backstopjs
backstop init
// backstop.json
{
"viewports": [
{ "label": "mobile", "width": 375, "height": 812 },
{ "label": "tablet", "width": 768, "height": 1024 },
{ "label": "desktop", "width": 1440, "height": 900 }
],
"scenarios": [
{
"label": "Dashboard",
"url": "http://localhost:4200/dashboard",
"selectors": ["#main-content"],
"delay": 500,
"misMatchThreshold": 0.1
}
],
"engine": "playwright"
}
backstop reference # Create baseline screenshots
backstop test # Compare against baseline
backstop approve # Approve changes as new baseline
npm install --save-dev @percy/cli @percy/playwright
// In Playwright test
import percySnapshot from '@percy/playwright';
test('dashboard', async ({ page }) => {
await page.goto('/dashboard');
await percySnapshot(page, 'Dashboard');
});
// widget_test.dart — golden file testing
import 'package:flutter_test/flutter_test.dart';
import 'package:golden_toolkit/golden_toolkit.dart';
testGoldens('DashboardScreen renders correctly', (tester) async {
await loadAppFonts();
final builder = DeviceBuilder()
..overrideDevicesForAllScenarios(devices: [
Device.phone,
Device.iphone11,
Device.tabletPortrait,
])
..addScenario(
widget: const DashboardScreen(),
name: 'default state',
)
..addScenario(
widget: const DashboardScreen(isLoading: true),
name: 'loading state',
);
await tester.pumpDeviceBuilder(builder);
await screenMatchesGolden(tester, 'dashboard');
});
# Generate golden files (baseline)
flutter test --update-goldens
# Run comparison
flutter test
When performing visual analysis:
| Layer | Tool | What It Catches |
|---|---|---|
| Layer 1 — Design tokens | /lint-design-system | Hardcoded colors, raw spacing |
| Layer 2 — WCAG | accessibility-auditor agent | Contrast, ARIA, keyboard nav |
| Layer 3 — Interaction patterns | web-design-guidelines | Loading/empty/error states |
| Layer 4 — Live screenshot | reality-checker agent | Binary pass/fail with visual evidence |
| Layer 5 — CI regression | ui-visual-validator (this skill) | Baseline regression, cross-browser |
reality-checker agent — run BEFORE this skill for live browser verdict (Chrome DevTools MCP)browser-testing skill — Chrome DevTools MCP + Browser-Use for live UI interactionaccessibility-audit skill — deeper WCAG 2.1 AA compliance (beyond visual checks)web-design-guidelines skill — Vercel Web Interface Guidelines audit (loading/error/empty state patterns)design-system skill — token compliance enforcement