name: Frontend Verification & Testing
description: Verify and test Angular 18 frontend changes using Chrome DevTools MCP. Automatically check console errors, network requests, and visual rendering after implementing tasks or when fixing UI bugs. Use when creating components, debugging visual issues, validating API integration, or ensuring UI requirements are met. File types: .ts, .html, .css, .scss
allowed-tools: Read, Bash, mcp__chrome-devtools__*
Frontend Verification & Testing
Verify Angular 18 frontend using Chrome DevTools MCP - check console, network, and visual rendering.
Project Context
Photo Map MVP - Angular 18 SPA with geolocation photo management.
Stack:
Constraints:
- Both frontend and backend must be running
- JWT authentication for protected routes
- All API calls include
Authorization: Bearer <token>
When to Use This Skill
Automatic Triggers:
-
After implementing task logic - po ukończeniu implementacji feature
- Example: Po dodaniu Gallery Component → verify photos load
- Example: Po implementacji Login → check form + API call
-
When uncertain about code behavior - gdy wątpliwości czy działa
- Example: Complex RxJS pipeline → verify console
- Example: Leaflet map init → check visual rendering
-
When fixing UI bugs (iterative) - przy naprawie błędów (sprawdź → napraw → sprawdź)
- Example: Layout issue → screenshot → fix CSS → verify
- Example: API 401 → check network → fix auth → verify
-
On explicit request - na żądanie użytkownika
- Example: "zweryfikuj frontend", "sprawdź czy login działa"
DO NOT use for:
- ❌ Simple code reading (use Read tool)
- ❌ Unit test execution (use Bash with
ng test)
- ❌ Backend-only changes (use spring-boot-backend skill)
Server Management
Check if servers running:
[ -f scripts/.pid/backend.pid ] && kill -0 $(cat scripts/.pid/backend.pid)
[ -f scripts/.pid/frontend.pid ] && kill -0 $(cat scripts/.pid/frontend.pid)
curl http://localhost:8080/actuator/health
curl -I http://localhost:4200
Start servers:
./scripts/start-dev.sh
./scripts/start-dev.sh --with-db
When to restart:
- ✅ Code changes (Java/TypeScript modified)
- ✅ Servers not responding (PID dead, ports free)
- ✅ Health checks failing
Rebuild & Restart:
./scripts/stop-dev.sh
cd backend && ./mvnw clean package
cd frontend && npm run build
./scripts/start-dev.sh
→ Full docs: references/server-management.md
Verification Workflow
5-Step Process
Step 0: Verify Servers Running
↓
Step 1: Navigate & Capture State
↓
Step 2: Check Console Errors
↓
Step 3: Check Network Requests
↓
Step 4: Visual Verification
↓
Step 5: Report Results
Detailed Steps
Step 0: Verify Servers Running
[ -f scripts/.pid/backend.pid ] && kill -0 $(cat scripts/.pid/backend.pid)
[ -f scripts/.pid/frontend.pid ] && kill -0 $(cat scripts/.pid/frontend.pid)
./scripts/stop-dev.sh
./scripts/start-dev.sh
Step 1: Navigate & Capture State
list_pages() → check open pages
navigate_page(url: "http://localhost:4200/path") → go to route
take_snapshot() → accessibility tree (structural check)
take_screenshot() → visual representation
Step 2: Check Console Errors
list_console_messages(types: ["error", "warn"]) → filter errors
get_console_message(msgid: N) → detailed stack trace
Step 3: Check Network Requests
list_network_requests(resourceTypes: ["xhr", "fetch"]) → API calls
get_network_request(reqid: N) → headers, payload, response
Step 4: Visual Verification
take_screenshot(fullPage: true) → full page visual
resize_page(width, height) → test responsive (375, 768, 1920)
hover(uid), click(uid) → test interactions
Step 5: Report Results
- ✅ PASS: "All verifications passed. No console errors, API calls 200 OK, UI renders correctly."
- ❌ FAIL: "Issues found: Console error at component.ts:42, Network POST /api/login → 401, Visual: missing padding"
Key MCP Tools
Navigation:
list_pages() - list open tabs
navigate_page(url, timeout) - go to URL
wait_for(text, timeout) - wait for text to appear
State Capture:
take_snapshot(verbose) - accessibility tree (fast, text)
take_screenshot(uid, fullPage, format) - visual capture (PNG/JPEG/WebP)
evaluate_script(function, args) - execute JS in page
Console & Network:
list_console_messages(types, pageIdx, pageSize) - get console logs
get_console_message(msgid) - detailed error info
list_network_requests(resourceTypes, pageIdx) - list HTTP requests
get_network_request(reqid) - detailed request/response
Interaction:
click(uid, dblClick) - click element by UID
fill(uid, value) - fill input/textarea
fill_form(elements) - fill multiple fields
hover(uid) - hover over element
Emulation:
resize_page(width, height) - change viewport (mobile: 375x667, tablet: 768x1024, desktop: 1920x1080)
emulate_network(throttlingOption) - simulate network (Offline, Slow 3G, Fast 3G, etc.)
performance_start_trace(reload, autoStop) - measure Core Web Vitals
→ Full docs: references/mcp-tools-reference.md
Quick Start
Example 1: Verify Console After Component Implementation
navigate_page(url: "http://localhost:4200/gallery")
list_console_messages(types: ["error", "warn"])
Example 2: Verify Network After API Integration
navigate_page(url: "http://localhost:4200/login")
fill_form([{ uid: "input-email", value: "test@example.com" }, { uid: "input-password", value: "test123456" }])
click(uid: "btn-login")
wait_for(text: "Photo Gallery", timeout: 5000)
list_network_requests(resourceTypes: ["fetch"])
get_network_request(reqid: 1)
Example 3: Verify Visual Layout
navigate_page(url: "http://localhost:4200/gallery")
take_screenshot(fullPage: true)
resize_page(width: 375, height: 667)
take_screenshot()
→ Detailed scenarios: examples/*.md
→ Detailed patterns: references/verification-patterns.md
Best Practices
-
Always check console first - even if UI looks correct
list_console_messages(types: ["error", "warn"])
-
Check network for API calls - verify status codes, headers, payloads
list_network_requests(resourceTypes: ["xhr", "fetch"])
-
Test responsive layouts - mobile (375), tablet (768), desktop (1920)
resize_page(width: 375, height: 667)
-
Use snapshots for structure, screenshots for visual
- Snapshot (fast, text) → "Are elements present?"
- Screenshot (slow, image) → "Does it look right?"
-
Iterative verification for bug fixes
- Verify bug → Fix code → Re-verify → Repeat until ✅
-
Report actionable issues
- ❌ BAD: "Login doesn't work"
- ✅ GOOD: "Login failed: POST /api/auth/login → 401. Request missing Authorization header. Check AuthInterceptor."
-
Restart servers when code changes
./scripts/stop-dev.sh && ./scripts/start-dev.sh
Related Skills
- angular-frontend - for implementing Angular components
- spring-boot-backend - for backend API development
- code-review - for code quality checks
Key Reminders
Proactive Verification:
- ✅ Use after implementing tasks
- ✅ Verify BEFORE marking complete
- ✅ Catch issues early
Comprehensive Checks:
- ✅ Console errors (ALWAYS)
- ✅ Network requests (for API features)
- ✅ Visual rendering (for UI features)
- ✅ Responsive layout (mobile, tablet, desktop)
Server Management:
- ✅ Check servers before starting (PID/health)
- ✅ Restart when code changes
- ✅ Use project scripts (
./scripts/start-dev.sh)