/hosts/comp-intelligence-test.html| ✓ | Check | Expected |
|---|---|---|
| ○ | TEST MODE banner visible at top of page | orange banner with: TEST MODE, synthetic data only, no production data, no PHI, mock route, environment=sandbox |
| ○ | Synthetic comp data renders in main panel | 304,611 wRVUs, $16.2M comp paid, specialty table with syn-* IDs |
| ○ | Lexi widget mounts in right column | "Ask Lexi about Comp Intelligence" title, TEST MODE badge, sandbox · comp-intelligence chip |
| ○ | Suggested prompts visible before first question | 4 chips: total wRVU, highest median, FMV exceptions, compare cards to ortho |
| ○ | Ask: What was total wRVU output this quarter? |
Response cites 304,611 wRVUs and 141 providers |
| ○ | Ask: Which synthetic specialty has the highest median wRVU? |
Response identifies syn-ortho at 7,100 |
| ○ | Ask: How many FMV exceptions are there? |
Response says no FMV exceptions |
| ○ | Ask: Compare cardiology to orthopedics on wRVU output. |
Side-by-side: syn-cards 5,800 vs syn-ortho 7,100; declares syn-ortho 22.4% higher |
| ○ | Each assistant message shows from: comp-intelligence-context.stub green chip |
chip in message header |
| ○ | Copy button on assistant message copies response text | "Copy" → "Copied!" → reverts after ~1.4s; paste somewhere to verify |
| ○ | Clear button (header) resets conversation | messages disappear, suggested prompts reappear |
| ○ | Ask off-topic question (e.g. What's the weather?) |
Friendly capabilities fallback with list of available prompts and synthetic specialty IDs |
/hosts/public-website-test.html| ✓ | Check | Expected |
|---|---|---|
| ○ | TEST MODE banner visible at top of page | same orange banner content as Comp Intel host |
| ○ | LC-style placeholder content renders (logo, hero, FAQ cards) | 4 FAQ cards visible in main content area |
| ○ | Lexi widget floating bottom-right | "Ask LC" title, TEST MODE badge, sandbox · lexingtonclinic-public chip |
| ○ | Suggested prompts visible before first question | 4 chips: schedule, insurance, contact, locations |
| ○ | Ask: How do I schedule an appointment? |
Response mentions main line and includes From FAQ: attribution |
| ○ | Ask: What insurance plans do you accept? |
Response mentions major insurance plans and Medicare |
| ○ | Ask: How do I contact Lexington Clinic? |
Response mentions main phone line or patient portal |
| ○ | Ask: Where are locations listed? |
Response mentions South Broadway in Lexington |
| ○ | Each assistant message shows from: public-faq-context green chip |
chip in message header |
| ○ | Ask off-topic (e.g. How much does an MRI cost?) |
Friendly fallback listing covered FAQ topics |
| ✓ | Check | Expected |
|---|---|---|
| ○ | Loading state shows animated spinner during request | spinner rotates while "Thinking…" is displayed |
| ○ | Markdown bold renders in responses (**foo** → foo) |
e.g. "**syn-ortho** has the highest..." renders bold |
| ○ | Markdown bulleted lists render in responses | specialty comparison shows actual bullets |
| ○ | Cmd/Ctrl+K clears chat from inside widget | same effect as clicking the Clear button |
| ○ | Error state shows red banner with Retry button | simulate by setting ?worker=https://bogus.example.com; expect WORKER_FETCH_FAILED |
| ○ | Disable Worker URL, retry → graceful error, no console exceptions | response renders in widget; no thrown errors in DevTools |
| ✓ | Check | Expected |
|---|---|---|
| ○ | GET /api/lexi/health from browser |
200, workerVersion: "0.2.2" |
| ○ | /proof/worker-roundtrip.html still all-green |
health + 3 chat checks + bad-deployment denial all PASS |
| ○ | Audit events still emit hashed subject only | Worker logs in Cloudflare dashboard: no raw user IDs, no prompt body |