- Added DEPLOYMENT-RESILIENCE.md with strategies for resilient testing - Created TROUBLESHOOTING.md with solutions to common issues - Added SELECTORS.md as a centralized selector database - Created auto-recovery.sh script for automated test failure recovery - Enhanced overall testing framework resilience 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
5.5 KiB
UI Selector Management System
This document provides a centralized database of UI selectors used in the HVAC Community Events plugin tests. Use this as a reference when updating selectors or debugging UI interactions.
Selector Principles
-
Prefer attribute selectors over ID selectors:
- Better:
input[name="log"] - Avoid:
#user_login
- Better:
-
Use multiple selector strategies with fallbacks:
- Better:
input[name="log"], input[type="text"][id="user_login"], input.username - Avoid:
#user_login
- Better:
-
Keep selectors as specific as possible but not too brittle:
- Better:
form#hvac_community_loginform input[name="log"] - Avoid:
form > div > input:first-child
- Better:
-
Update this document when changing selectors in code
Critical Page Selectors
Login Page
| Element | Current Selector | Alternative Selectors | Notes |
|---|---|---|---|
| Username field | input[name="log"] |
#user_login, .input[autocomplete="username"] |
Primary login input field |
| Password field | input[name="pwd"] |
#user_pass, input[type="password"] |
Password input field |
| Submit button | input[type="submit"] |
#wp-submit, .button.button-primary |
Login form submission button |
| Remember me | input[name="rememberme"] |
#rememberme |
Remember login checkbox |
| Error message | .login-error, .login_error, #login_error |
div:contains("Invalid username") |
Login error container |
| Login form | form#hvac_community_loginform |
form[name="hvac_community_loginform"] |
Main login form |
Last verified: 2025-05-21
Dashboard Page
| Element | Current Selector | Alternative Selectors | Notes |
|---|---|---|---|
| Events table | .hvac-events-table |
table.events-table |
Table containing event listings |
| Event row | .event-row |
tr.event |
Individual event row |
| Event name | .event-name a |
.event-title a |
Event title with link |
| Event date | .event-date |
.event-time |
Date/time of event |
| Event status | .event-status |
.status-badge |
Event status indicator |
| Filter tabs | .filter-tabs a |
.nav-tab |
Filter tabs for event status |
| Create button | .create-event-button |
a:contains("Create Event") |
Button to create new event |
| Stats section | .dashboard-stats |
.statistics |
Statistics summary section |
Last verified: 2025-05-21
Certificate Page
| Element | Current Selector | Alternative Selectors | Notes |
|---|---|---|---|
| Certificate table | .certificate-table |
table.certificates |
Table of certificates |
| Certificate row | .certificate-row |
tr.certificate |
Individual certificate row |
| Event filter | select[name="event_filter"] |
#event-filter |
Event dropdown filter |
| Attendee filter | input[name="attendee_search"] |
#attendee-search |
Attendee search input |
| Generate button | .generate-certificates |
button:contains("Generate") |
Certificate generation button |
| Email button | .email-certificate |
button:contains("Email") |
Email certificate button |
| Download button | .download-certificate |
a:contains("Download") |
Download certificate link |
| Revoke button | .revoke-certificate |
button:contains("Revoke") |
Revoke certificate button |
Last verified: 2025-05-21
Event Creation Page
| Element | Current Selector | Alternative Selectors | Notes |
|---|---|---|---|
| Title field | input[name="post_title"] |
#post_title |
Event title input |
| Description | .wp-editor-area |
textarea[name="post_content"] |
Event description editor |
| Event date | input[name="event_date"] |
.event-date-field |
Event date picker |
| Event time | input[name="event_time"] |
.event-time-field |
Event time picker |
| Venue field | select[name="venue_id"] |
#venue_id |
Venue selection dropdown |
| Organizer | select[name="organizer_id"] |
#organizer_id |
Organizer selection dropdown |
| Submit button | input[name="community-event"] |
button[type="submit"] |
Submit event button |
Last verified: 2025-05-21
Selector Versioning
Each time selectors are updated, add a new entry to track changes:
Version History
2025-05-21: Login Page Selector Update
- Updated username field selector from
#user_logintoinput[name="log"] - Updated password field selector from
#user_passtoinput[name="pwd"] - Added multiple error message selectors for better error detection
- Added form ID selector for more reliable form detection
2025-05-01: Initial Selector Documentation
- Created initial documentation of selectors
- Centralized selector references for easier maintenance
Selector Verification Process
-
Run the selector verification script regularly:
./bin/verify-selectors.sh -
Update selectors in this document and code when changes are detected
-
Create debug scripts for new pages or critical components:
# Create a debug script for a new page ./bin/create-debug-script.sh --page="profile" -
Document selector changes in version history above
Best Practices for Selector Maintenance
- Test selector changes thoroughly before committing
- Update this document when changing selectors in code
- Use descriptive selector names in page objects
- Add comments explaining complex selectors
- Consider theme changes that might affect selectors
- Prefer attribute selectors that are less likely to change
- Use data attributes for critical test elements when possible