Security Visual Testing
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
Quick Reference Card
When to Use
| Scenario |
Use This Skill? |
Why |
| Testing login pages |
Yes |
Contains PII (passwords, emails) |
| Visual regression suite |
Yes |
Parallel viewport + baseline comparison |
| Payment forms |
Yes |
Credit card data needs masking |
| Public marketing pages |
Maybe |
Only if sensitive data possible |
| API-only testing |
No |
Use security-testing skill instead |
Key Capabilities
| Capability |
Description |
Performance |
| URL Validation |
Block malicious URLs before navigation |
<5ms |
| PII Detection |
Find 6+ types of sensitive data |
<100ms |
| Parallel Viewports |
Test 4 viewports simultaneously |
4x faster |
| Visual Regression |
Pixel-diff with configurable threshold |
<500ms |
| Accessibility Audit |
WCAG 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:
- Validate URL security (block malicious schemes)
- Scan page for security issues (XSS, injection patterns)
- Capture screenshots across 4 viewports in parallel
- Compare against stored baselines
- Run accessibility audit (axe-core)
- 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:
user@example.com
- 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:
| Name |
Width |
Height |
Device |
| mobile |
320px |
568px |
iPhone SE |
| tablet |
768px |
1024px |
iPad |
| desktop |
1440px |
900px |
MacBook |
| wide |
1920px |
1080px |
Full 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
| Error |
Cause |
Resolution |
URL_BLOCKED |
Malicious URL pattern detected |
Check URL, remove javascript:/data: |
PII_DETECTED |
Sensitive data found in screenshot |
Enable masking or redact manually |
BASELINE_MISSING |
No baseline for comparison |
Run with --update-baseline first |
VIEWPORT_TIMEOUT |
Browser didn't respond |
Increase timeout or reduce parallel |
ACCESSIBILITY_FAILED |
WCAG violations found |
Review violations, fix issues |
Related Skills
Performance Targets
| Metric |
Target |
Measured |
| URL validation |
<5ms |
2ms |
| PII detection |
<100ms |
45ms |
| Single viewport capture |
<2s |
1.2s |
| 4-viewport parallel |
<3s |
2.1s |
| Visual diff |
<500ms |
320ms |
| Accessibility audit |
<2s |
1.5s |
| Full pipeline |
<10s |
7.2s |
1---
2inclusion: auto
3name: qe-security-visual-testing
4description: "Security-first visual testing combining URL validation, PII detection, and visual regression with parallel viewport support. Use when testing web applications that handle sensitive data, need visual regression coverage, or require WCAG accessibility compliance."
5tags: [security, visual-testing, pii, accessibility, wcag, parallel-viewport, regression]
6---
7
8# Security Visual Testing
9
10<default_to_action>
11When performing security-aware visual testing:
121. VALIDATE URLs before navigation (check for malicious patterns)
132. SCAN for PII before saving screenshots (mask sensitive data)
143. CAPTURE parallel viewports (mobile, tablet, desktop)
154. COMPARE against baselines (detect visual regressions)
165. AUDIT accessibility (WCAG 2.1 AA compliance)
17
18**Quick Security-Visual Checklist:**
19- URL validation (no javascript:, data:, file: schemes)
20- PII detection (emails, phones, SSN, credit cards, API keys)
21- Visual regression (diff threshold < 0.1%)
22- Viewport coverage (320px, 768px, 1024px, 1440px)
23- Accessibility score (> 90% axe-core pass rate)
24
25**Critical Success Factors:**
26- Always mask PII before storing screenshots
27- Test across all target viewports in parallel
28- Store baselines in version control
29- Run accessibility audits on every visual change
30</default_to_action>
31
32## Quick Reference Card
33
34### When to Use
35| Scenario | Use This Skill? | Why |
36|----------|-----------------|-----|
37| Testing login pages | Yes | Contains PII (passwords, emails) |
38| Visual regression suite | Yes | Parallel viewport + baseline comparison |
39| Payment forms | Yes | Credit card data needs masking |
40| Public marketing pages | Maybe | Only if sensitive data possible |
41| API-only testing | No | Use security-testing skill instead |
42
43### Key Capabilities
44
45| Capability | Description | Performance |
46|------------|-------------|-------------|
47| URL Validation | Block malicious URLs before navigation | <5ms |
48| PII Detection | Find 6+ types of sensitive data | <100ms |
49| Parallel Viewports | Test 4 viewports simultaneously | 4x faster |
50| Visual Regression | Pixel-diff with configurable threshold | <500ms |
51| Accessibility Audit | WCAG 2.1 A/AA/AAA compliance | <2s |
52
53---
54
55## Workflows
56
57### 1. Security Visual Audit (Full Pipeline)
58
59```bash
60# Run complete security + visual audit
61aqe test visual-audit --url https://example.com --security --accessibility
62```
63
64**Steps:**
651. Validate URL security (block malicious schemes)
662. Scan page for security issues (XSS, injection patterns)
673. Capture screenshots across 4 viewports in parallel
684. Compare against stored baselines
695. Run accessibility audit (axe-core)
706. Generate consolidated report
71
72### 2. PII-Safe Screenshot
73
74```bash
75# Capture screenshot with automatic PII masking
76aqe screenshot --url https://example.com/profile --pii-safe
77```
78
79**PII Detection Patterns:**
80- Email addresses: `user@example.com`
81- Phone numbers: `+1-555-123-4567`
82- Credit cards: `4111-1111-1111-1111`
83- SSN: `123-45-6789`
84- API keys: `sk_live_...`, `AKIA...`
85- Passwords: Form fields with type="password"
86
87**Masking Strategy:**
88- Default: Blur with high intensity
89- Options: `redact` (black box), `pixelate`, `blur`
90
91### 3. Responsive Visual Audit
92
93```bash
94# Test visual consistency across viewports
95aqe test responsive --url https://example.com --viewports mobile,tablet,desktop
96```
97
98**Default Viewports:**
99| Name | Width | Height | Device |
100|------|-------|--------|--------|
101| mobile | 320px | 568px | iPhone SE |
102| tablet | 768px | 1024px | iPad |
103| desktop | 1440px | 900px | MacBook |
104| wide | 1920px | 1080px | Full HD |
105
106---
107
108## Integration with AQE v3
109
110### Using with BrowserSecurityScanner
111
112```typescript
113import { BrowserSecurityScanner } from '@agentic-qe/v3';
114
115const scanner = new BrowserSecurityScanner(memory, {
116 urlValidation: { enabled: true },
117 piiDetection: { enabled: true, maskBeforeSave: true },
118 parallelViewports: { maxConcurrent: 4 }
119});
120
121const result = await scanner.scanUrl('https://example.com', {
122 viewports: ['mobile', 'tablet', 'desktop'],
123 accessibility: true
124});
125```
126
127### Using with TrajectoryAdapter
128
129```typescript
130import { TrajectoryAdapter } from '@agentic-qe/v3';
131
132const adapter = new TrajectoryAdapter(memory);
133
134// Record testing trajectory for learning
135await adapter.startTrajectory('security-visual-test', {
136 url: 'https://example.com',
137 testType: 'security-visual'
138});
139
140// ... perform tests ...
141
142await adapter.endTrajectory(trajectoryId, {
143 success: true,
144 piiFound: 3,
145 visualRegressions: 0,
146 accessibilityScore: 95
147});
148```
149
150---
151
152## Agent Coordination
153
154### Memory Namespace
155```
156aqe/security-visual/
157├── baselines/* - Visual regression baselines
158├── screenshots/* - Captured screenshots (PII masked)
159├── reports/* - Audit reports
160└── trajectories/* - Learning trajectories
161```
162
163### Fleet Coordination
164```typescript
165const fleet = await FleetManager.coordinate({
166 strategy: 'security-visual-audit',
167 agents: [
168 'qe-visual-tester', // Visual regression
169 'qe-security-scanner', // URL/PII scanning
170 'qe-accessibility-auditor' // WCAG compliance
171 ],
172 topology: 'parallel',
173 maxConcurrent: 4
174});
175```
176
177---
178
179## Error Handling
180
181| Error | Cause | Resolution |
182|-------|-------|------------|
183| `URL_BLOCKED` | Malicious URL pattern detected | Check URL, remove javascript:/data: |
184| `PII_DETECTED` | Sensitive data found in screenshot | Enable masking or redact manually |
185| `BASELINE_MISSING` | No baseline for comparison | Run with `--update-baseline` first |
186| `VIEWPORT_TIMEOUT` | Browser didn't respond | Increase timeout or reduce parallel |
187| `ACCESSIBILITY_FAILED` | WCAG violations found | Review violations, fix issues |
188
189---
190
191## Related Skills
192- [visual-testing-advanced](../visual-testing-advanced/) - Pure visual testing without security
193- [security-testing](../security-testing/) - Security testing without visual component
194- [accessibility-testing](../accessibility-testing/) - Accessibility-only testing
195- [qe-visual-accessibility](../qe-visual-accessibility/) - AQE v3 visual domain skill
196
197---
198
199## Performance Targets
200
201| Metric | Target | Measured |
202|--------|--------|----------|
203| URL validation | <5ms | 2ms |
204| PII detection | <100ms | 45ms |
205| Single viewport capture | <2s | 1.2s |
206| 4-viewport parallel | <3s | 2.1s |
207| Visual diff | <500ms | 320ms |
208| Accessibility audit | <2s | 1.5s |
209| Full pipeline | <10s | 7.2s |