qa-exploring-application-ui
Exploring Application UI
This skill drives autonomous exploration of web applications using visual AI to understand and interact with UI elements semantically — the way a human tester would see and navigate them.
When to Use
- No scripted tests exist yet and you need to assess application quality
- You want to discover "unknown unknown" bugs that scripted tests miss
- You're validating a new feature's integration with existing UI
- You need a quick health check of a staging environment
Navigation Strategy
Element Identification
Use visual analysis (screenshots + Claude Vision) to identify interactive elements. Do NOT rely on DOM selectors as the primary identification method.
Identification hierarchy:
- Visible text labels ("Sign In", "Add to Cart")
- Placeholder text ("Enter your email...")
- Iconography (search icon, hamburger menu, close X)
- Visual affordances (raised buttons, underlined links, input fields)
- Spatial context (sidebar navigation, header menu, footer links)
State Tracking
Maintain a state machine as you explore:
exploration_state = {
"visited_urls": set(), # Pages we've been to
"visited_states": set(), # URL + key UI state (e.g., modal open, tab selected)
"action_queue": [], # Planned next actions, ordered by priority
"dead_ends": [], # States with no forward navigation
"errors_seen": [], # Collected error states
"coverage_estimate": 0.0, # Rough % of app explored
}
Exploration Priorities
When deciding what to explore next, use this priority order:
- Unexplored navigation items — breadth first for top-level nav
- Forms and inputs — fill with various inputs, submit, observe
- Error states — intentionally trigger errors (empty submits, invalid data)
- Edge navigation — back button, direct URL entry, bookmark behavior
- Authentication boundaries — access control, session management
- Responsive behavior — resize viewport, check layout integrity
Interaction Patterns
For each page, execute these interaction patterns:
Forms:
1. Submit completely empty → check error handling
2. Fill one field at a time → check progressive validation
3. Fill all fields correctly → check success path
4. Fill with edge-case values → check robustness
5. Submit, then back-button → check data persistence
Navigation:
1. Click every visible link/button → map the navigation graph
2. Right-click → check context menu behavior
3. Middle-click → check new-tab behavior
4. Keyboard navigation (Tab, Enter, Escape) → check accessibility
5. Browser back/forward → check history state management
Dynamic Content:
1. Scroll to bottom → check lazy loading
2. Wait 30 seconds → check for memory leaks or stale data
3. Toggle between tabs/views rapidly → check race conditions
4. Open multiple instances → check concurrent state
Bug Detection Heuristics
Use these rules to identify potential bugs during exploration:
Definite Bugs (always report)
- Page returns HTTP 4xx or 5xx
- JavaScript error in console
- Visible "undefined", "null", "NaN", or "[object Object]" in UI
- Form submits successfully with invalid/empty required data
- Click on element produces no visible response
- Page layout is visibly broken (overlapping elements, text cutoff)
Probable Bugs (report with lower severity)
- Loading spinner that never resolves (>10s)
- Flash of unstyled content (FOUC)
- Inconsistent button/link styling
- Missing favicon or broken images
- Placeholder text left in production ("Lorem ipsum", "TODO")
- Console warnings about deprecated APIs
UX Issues (report as info)
- Confusing navigation (>3 clicks to reach common actions)
- Missing confirmation dialogs for destructive actions
- Error messages that don't explain how to fix the issue
- No loading indicator during async operations
- Missing empty states (blank page when no data exists)
Using the Exploration Script
python skills/qa-exploring-application-ui/scripts/explore.py \
--url https://staging.example.com \
--duration 30 \
--output exploration-results/ \
--credentials user:pass
The script handles browser setup, screenshot capture, and state tracking. You drive the exploration decisions by analyzing each screenshot and choosing the next action.
Output Format
Produce a structured session log and a narrative summary. See the bug report skill
(skills/qa-generating-bug-reports/SKILL.md) for bug formatting standards.
The narrative summary should be written for a human QA lead — cover what you explored, what you found, what areas you couldn't reach, and your overall assessment of the application's quality.
More from wizeline/sdlc-agents
editing-pptx-files
Use this action any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this action.
25authoring-technical-docs
Core documentation engineering action. Provides the quality framework, style rules, and multi-pass workflow (research → draft → review → format) that all documentation must follow. Load this first for any technical documentation task. If no domain action matches the request, this action alone is sufficient.
19authoring-release-docs
Use when producing release-oriented documentation — release notes, changelogs, READMEs, or migration guides. Triggers: 'write release notes', 'generate a changelog', 'create a README', 'document what changed', 'write migration guide', any task involving Jira exports, commit logs, or ticket lists that need to become user-facing documentation. Always load authoring-technical-docs first.
19incident-analyzing
>
14incident-documenting
>
13devsec-publishing-compliance-report
>
12