mcpField
S
security-visual-testing

security-visual-testing

github.com/proffesor-for-testingTesting & quality519111 installsUpdated today
Repository

About security-visual-testing

security-visual-testing is a skill for teams combining browser-based visual checks with security and accessibility audits. It covers URL validation, PII masking, viewport comparisons, and regression checks.

Key features

  1. 01URL 安全校验
  2. 02截图中的 PII 检测与遮盖
  3. 03多视口并行截图
  4. 04基线视觉回归比较
  5. 05WCAG 无障碍审计

Use cases

  1. 01审核含登录信息的页面
  2. 02安全地保存个人资料截图
  3. 03检查不同屏幕尺寸下的视觉变化
  4. 04对页面变更运行无障碍审计

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill security-visual-testing

After installing, type/security-visual-testingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

evals/
security-visual-testing.yaml
schemas/
output.json
scripts/
validate-config.json

Details

From the project README

Security Visual Testing

Browser engine

Uses the qe-browser fleet skill (.claude/skills/qe-browser/) for all browser automation. The Vibium engine (10MB Go binary, WebDriver BiDi) is installed automatically by aqe init. For security-visual workflows, qe-browser adds two things on top of stock visual testing: check-injection.js (scans page content for prompt-injection patterns before screenshots are stored) and assert.js (16 typed checks including no_failed_requests for detecting data-leak requests).

# Before storing any screenshot, scan the page
vibium go "$TARGET_URL"
vibium wait load
node .claude/skills/qe-browser/scripts/check-injection.js --include-hidden
INJ=$?
if [ $INJ -ne 0 ]; then
  echo "Prompt-injection findings — do NOT store screenshot"
  exit $INJ
fi
# Safe to proceed with visual-diff
node .claude/skills/qe-browser/scripts/visual-diff.js --name "${PAGE_NAME}"

<default_to_action> When performing security-aware visual testing:

  1. VALIDATE URLs before navigation (check for malicious patterns)
  2. SCAN for PII before saving screenshots (mask sensitive data)
  3. CAPTURE parallel viewports (mobile, tablet, desktop)
  4. COMPARE against baselines (detect visual regressions)
  5. AUDIT accessibility (WCAG 2.1 AA compliance)

Quick Security-Visual Checklist:

  • URL validation (no javascript:, data:, file: schemes)
  • PII detection (emails, phones, SSN, credit cards, API keys)
  • Visual regression (diff threshold < 0.1%)
  • Viewport coverage (320px, 768px, 1024px, 1440px)
  • Accessibility score (> 90% axe-core pass rate)

Critical Success Factors:

  • Always mask PII before storing screenshots
  • Test across all target viewports in parallel
  • Store baselines in version control
  • Run accessibility audits on every visual change </default_to_action>

Quick Reference Card

When to Use
ScenarioUse This Skill?Why
Testing login pagesYesContains PII (passwords, emails)
Visual regression suiteYesParallel viewport + baseline comparison
Payment formsYesCredit card data needs masking
Public marketing pagesMaybeOnly if sensitive data possible
API-only testingNoUse security-testing skill instead
Key Capabilities
CapabilityDescriptionPerformance
URL ValidationBlock malicious URLs before navigation<5ms
PII DetectionFind 6+ types of sensitive data<100ms
Parallel ViewportsTest 4 viewports simultaneously4x faster
Visual RegressionPixel-diff with configurable threshold<500ms
Accessibility AuditWCAG 2.1 A/AA/AAA compliance<2s

Workflows

1. Security Visual Audit (Full Pipeline)
# Run complete security + visual audit
aqe test visual-audit --url https://example.com --security --accessibility

Steps:

  1. Validate URL security (block malicious schemes)
  2. Scan page for security issues (XSS, injection patterns)
  3. Capture screenshots across 4 viewports in parallel
  4. Compare against stored baselines
  5. Run accessibility audit (axe-core)
  6. Generate consolidated report
2. PII-Safe Screenshot
# Capture screenshot with automatic PII masking
aqe screenshot --url https://example.com/profile --pii-safe

PII Detection Patterns:

  • Email addresses: [email protected]
  • Phone numbers: +1-555-123-4567
  • Credit cards: 4111-1111-1111-1111
  • SSN: 123-45-6789
  • API keys: sk_live_..., AKIA...
  • Passwords: Form fields with type="password"

Masking Strategy:

  • Default: Blur with high intensity
  • Options: redact (black box), pixelate, blur
3. Responsive Visual Audit
# Test visual consistency across viewports
aqe test responsive --url https://example.com --viewports mobile,tablet,desktop

Default Viewports:

NameWidthHeightDevice
mobile320px568pxiPhone SE
tablet768px1024pxiPad
desktop1440px900pxMacBook
wide1920px1080pxFull HD

Integration with AQE v3

Using with BrowserSecurityScanner
import { BrowserSecurityScanner } from '@agentic-qe/v3';

const scanner = new BrowserSecurityScanner(memory, {
  urlValidation: { enabled: true },
  piiDetection: { enabled: true, maskBeforeSave: true },
  parallelViewports: { maxConcurrent: 4 }
});

const result = await scanner.scanUrl('https://example.com', {
  viewports: ['mobile', 'tablet', 'desktop'],
  accessibility: true
});
Using with TrajectoryAdapter
import { TrajectoryAdapter } from '@agentic-qe/v3';

const adapter = new TrajectoryAdapter(memory);

// Record testing trajectory for learning
await adapter.startTrajectory('security-visual-test', {
  url: 'https://example.com',
  testType: 'security-visual'
});

// ... perform tests ...

await adapter.endTrajectory(trajectoryId, {
  success: true,
  piiFound: 3,
  visualRegressions: 0,
  accessibilityScore: 95
});

Agent Coordination

Memory Namespace
aqe/security-visual/
├── baselines/*          - Visual regression baselines
├── screenshots/*        - Captured screenshots (PII masked)
├── reports/*            - Audit reports
└── trajectories/*       - Learning trajectories
Fleet Coordination
const fleet = await FleetManager.coordinate({
  strategy: 'security-visual-audit',
  agents: [
    'qe-visual-tester',      // Visual regression
    'qe-security-scanner',   // URL/PII scanning
    'qe-accessibility-auditor' // WCAG compliance
  ],
  topology: 'parallel',
  maxConcurrent: 4
});

Error Handling

ErrorCauseResolution
URL_BLOCKEDMalicious URL pattern detectedCheck URL, remove javascript:/data:
PII_DETECTEDSensitive data found in screenshotEnable masking or redact manually
BASELINE_MISSINGNo baseline for comparisonRun with --update-baseline first
VIEWPORT_TIMEOUTBrowser didn't respondIncrease timeout or reduce parallel
ACCESSIBILITY_FAILEDWCAG violations foundReview violations, fix issues

Related Skills


Performance Targets

MetricTargetMeasured
URL validation<5ms2ms
PII detection<100ms45ms
Single viewport capture<2s1.2s
4-viewport parallel<3s2.1s
Visual diff<500ms320ms
Accessibility audit<2s1.5s
Full pipeline<10s7.2s

Comments

Markdown supported