Files
ecw-charge-validation/src/ecw_bot/selectors/shell.py
T
ManikandanandClaude Opus 5.5 ba15a574ab Initial import: eCW Charge Validation bot and results Portal
Snapshot of the working project as of 2026-10-23 (local 2d4d4fc), one
commit with no earlier history: the tracked files were de-identified
first (synthetic claim ids and patient data only; see Context.md
section 7). Credentials, run logs, screenshots, claim reports and client
workbooks are gitignored and not included.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:38:17 +05:30

36 lines
1.5 KiB
Python

"""
The eCW application shell: left navigation panel and the route spinner.
Three facts from the live DOM shape every locator built on these, and all three
cost a debugging session to find:
* `#JellyBeanCountCntrl` renders **twice**, so `SEL_NAV_TOGGLE` matches two
elements and Playwright's strict mode errors out without `.first`.
* the toggle's handler `launchLeftPanel()` is a **toggle**, not an "open" —
clicking it on an already-open panel closes it. State first, click second.
* the panel's contents are injected by `getleftnavhtml()` on
`DOMContentLoaded`, so `SEL_MENU_BILLING` does not exist at the moment
login is confirmed. Wait for it; do not assume it.
"""
SEL_NAV_TOGGLE = "#jellybean-panelLink4"
# launchLeftPanel() flips the `visible` class on .response-nav-lp (#leftnavApp).
SEL_NAV_PANEL = "#leftnavApp"
SEL_NAV_OPEN = "#leftnavApp.visible"
SEL_MENU_BILLING = "#Billing_menu > a"
SEL_MENU_BILLING_OPEN = "li#Billing_menu.open"
# Click the LABEL span, not the anchor: the anchor also holds #favorite_16,
# whose own ng-click stars the menu item instead of navigating.
SEL_CLAIMS = "#CLAIMS_BILLING"
SEL_CLAIMS_LABEL = "#CLAIMS_BILLING span.padl10"
# What that item's ng-click openURL() actually does. Kept here because it is
# also the fallback route when the menu markup shifts.
CLAIMS_HASH = "#/mobiledoc/jsp/webemr/webpm/claimLookup.jsp"
# Angular's route spinner — hidden once the requested view has rendered.
SEL_ROUTE_LOADER = "#routeLoader"