- 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