CP_AUTOMATION/CognitivePrism/my-project/backup_docs/AUTOMATION_LOCATORS.md
2025-12-12 19:54:54 +05:30

50 lines
2.0 KiB
Markdown

# Automation Locator Guide
This project now standardizes all Selenium/WebDriver hooks so that test
selectors stay stable even as the UI evolves.
## Naming Rules
- Use `data-testid` for every automation hook with the format
`scope__element_name`.
- Scopes are lowercase snake case (e.g. `student_login`,
`domain_assessment`). Element names are also snake case.
- For dynamic collections, append identifiers after the element block:
- `domain_card__14_action`
- `domain_question__467_option_a`
- Inputs that need native `By.id` selectors mirror the same string in
their `id` attribute (e.g. `id="profile_editor__first_name_input"`).
- Never reuse the same `data-testid` value for two different DOM nodes.
## Scope Reference
| Scope | Description |
| --- | --- |
| `student_login` | Sign-in form at `/` |
| `mandatory_reset` | First-login password reset modal |
| `profile_incomplete` | Modal that forces profile completion |
| `profile_editor` | `/student/profile-builder` editor |
| `student_nav` | Logged-in student header/nav |
| `assessment_card` | Product cards on `/assessments` |
| `domains_page` | Domain listing screen |
| `domain_card` | Individual domain tiles |
| `domains_final_feedback` | Final feedback modal after all domains |
| `domain_assessment` | In-progress domain test experience |
| `domain_question` | Question renderer + inputs |
| `domain_feedback` | Per-domain feedback modal |
## Dynamic Element Patterns
- **Assessment cards**: `data-testid="assessment_card__{assignmentId}_action"`
- **Domain cards**: `data-testid="domain_card__{domainId}_action"`
- **Questions**:
- Shell: `domain_question__{questionId}`
- Options: `domain_question__{questionId}__option_{label}`
- True/False: `domain_question__{questionId}__truefalse_{value}`
- Rating scales: `…__rating_{score}`
- Matrix cells: `…__matrix_{rowIndex}_{columnIndex}`
Following this table ensures every automated flow—from login through final
feedback—can rely on deterministic selectors with no brittle CSS/XPath.