curaflow/tests/ui_e2e_tests.py

76 lines
2.8 KiB
Python

import pytest
from playwright.sync_api import Page, expect
import time
BASE_URL = "https://curaflow.applaude.net"
def test_login_flow(page: Page):
"""Test the login page loads and allows entry"""
page.goto(f"{BASE_URL}/login.html")
# Check that we are on the login page
expect(page.locator("h2")).to_contain_text("Welcome")
# Login as Doctor
page.locator("#clinicId").fill("doctor@sharma.clinic")
page.locator("#password").fill("doc123")
page.locator("button[type='submit']").click()
# Should navigate to doctor dashboard
page.wait_for_url(f"{BASE_URL}/dashboard.html")
expect(page.locator("body")).to_contain_text("Overview")
def test_doctor_queue_and_visit(page: Page):
"""Test that a doctor can view the queue in Zen mode and start a visit"""
# Setup: Login
page.goto(f"{BASE_URL}/login.html")
page.locator("#clinicId").fill("doctor@sharma.clinic")
page.locator("#password").fill("doc123")
page.locator("button[type='submit']").click()
page.wait_for_url(f"{BASE_URL}/dashboard.html")
# In Zen mode, the Up Next queue should be visible immediately
expect(page.locator("h3:has-text('Up Next')")).to_be_visible()
# Click on Anjali Singh in the pipeline
page.locator(".pipeline-item:has-text('Anjali Singh')").click()
# The header should update to show Anjali Singh
expect(page.locator("body")).to_contain_text("Anjali Singh")
# The consultation notes area should be visible
expect(page.locator("#consultationNotes")).to_be_visible()
def test_lab_technician_flow(page: Page):
"""Test the Lab Tech flow for submitting results"""
page.goto(f"{BASE_URL}/login.html")
page.locator("#clinicId").fill("doctor@sharma.clinic")
page.locator("#password").fill("doc123")
page.locator("button[type='submit']").click()
# Need to wait for login logic to redirect
page.wait_for_url(f"{BASE_URL}/dashboard.html")
# Manually navigate to lab
page.goto(f"{BASE_URL}/lab.html")
expect(page.locator("body")).to_contain_text("Lab")
# Verify the structure has a pending tests table
expect(page.locator("h2:has-text('Live Test Queue')")).to_be_visible()
def test_pharmacy_technician_flow(page: Page):
"""Test the Pharmacy flow"""
page.goto(f"{BASE_URL}/login.html")
page.locator("#clinicId").fill("doctor@sharma.clinic")
page.locator("#password").fill("doc123")
page.locator("button[type='submit']").click()
page.wait_for_url(f"{BASE_URL}/dashboard.html")
# Manually navigate to pharmacy
page.goto(f"{BASE_URL}/pharmacy.html")
expect(page.locator("body")).to_contain_text("Pharmacy")
# Should have a fulfill prescriptions list
expect(page.locator("h2:has-text('Pending Prescriptions')")).to_be_visible()