upskill-event-manager/wordpress-dev/SELECTORS.md
bengizmo 1bdb4f7de8 docs: Add comprehensive testing resilience documentation and scripts
- 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>
2025-05-21 20:48:10 -03:00

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

  1. Prefer attribute selectors over ID selectors:

    • Better: input[name="log"]
    • Avoid: #user_login
  2. Use multiple selector strategies with fallbacks:

    • Better: input[name="log"], input[type="text"][id="user_login"], input.username
    • Avoid: #user_login
  3. Keep selectors as specific as possible but not too brittle:

    • Better: form#hvac_community_loginform input[name="log"]
    • Avoid: form > div > input:first-child
  4. 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_login to input[name="log"]
  • Updated password field selector from #user_pass to input[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

  1. Run the selector verification script regularly:

    ./bin/verify-selectors.sh
    
  2. Update selectors in this document and code when changes are detected

  3. Create debug scripts for new pages or critical components:

    # Create a debug script for a new page
    ./bin/create-debug-script.sh --page="profile"
    
  4. Document selector changes in version history above

Best Practices for Selector Maintenance

  1. Test selector changes thoroughly before committing
  2. Update this document when changing selectors in code
  3. Use descriptive selector names in page objects
  4. Add comments explaining complex selectors
  5. Consider theme changes that might affect selectors
  6. Prefer attribute selectors that are less likely to change
  7. Use data attributes for critical test elements when possible