AppzCart Clinic · Manual UI testing

Test strategy

For everyone who tests a release before it is deployed  ·  Updated 02-11-2026

Every release is tested by hand, in the browser, as each role before it is deployed. This page says what kinds of testing we do, what is left out, how a test run goes, and when a release is ready. The cases themselves are in the high-level scenarios and the detailed scenarios.

1. Scope

In scopeOut of scope
  • Manual testing of the web app's screens, for every role in this release
  • The patient flows across roles: Reception → Nurse → DMO / Doctor → Lab
  • Sign-in, roles and permissions, and what each role can and can't see
  • Clinic Admin set-up tools and the Excel workbook
  • Reports, notifications, themes and the doctor's Aura / Classic designs
  • Performance, load and stress testing
  • Security / penetration testing
  • Automated tests (the developers run those separately)
  • Modules switched off in this release: Pharmacy, Billing, Follow-ups & Reminders, Patient portal (apps/web/src/lib/release.ts). They come into scope in the release that switches them on.

2. Kinds of testing

Only these eight. They are listed in the order a test run uses them.

#KindWhat it checksWhen
T1Smoke testThe app opens, every role can sign in and lands on its home screen, and each main screen loads with no error. If this fails, stop: the build goes back.First, on every build
T2End-to-end flowA patient's whole journey across roles, with the hand-off at each step: the patient appears in the next role's queue, the stage and status change, and the notification arrives. See the high-level scenarios.Every release
T3Role-based functionalEvery tab, button and Actions menu item of a role's screens does what it says. See the detailed scenarios.Every release
T4Validation and messagesRequired fields: Save with one empty names the field, rings it in red and puts the cursor in it. Wrong-order actions are refused with a clear message (for example, rescheduling a patient who is already in care).Every release
T5Role accessEach role sees only its own screens and data. A part the role has no View for shows as "Hidden by your role". A changed permission takes effect.Every release
T6Saved dataAfter a save: refresh the page (and sign in on a second browser). The change is still there and the other role sees it.Every release
T7Look and layoutModern Aqua by default, and one other theme from Settings. The Doctor's Aura and Classic show the same data. The screen works at phone width with no sideways scroll. Labels aren't cut off.Every release, a sample of screens
T8RegressionAll Critical and High cases from earlier releases still pass, not only the new features.Every release

Browsers: Google Chrome (main) and Microsoft Edge, latest versions, on a laptop screen. Phone width is checked with the browser's device toolbar (F12 › device icon), at 390 px wide.

3. Test data and accounts

  1. Use a test database, never the clinic's live data.
  2. Sign in as admin › Clinic Admin › Tools › Download test data, then Import from Excel › Replace everything. This loads a complete fictional clinic: staff, 30 patients and today's visits at every stage.
  3. Test staff accounts (password: ask the test lead; it is never written in these pages):
    RoleAccounts
    Receptionistrahul.verma, kavya.reddy (also Front Desk Lead)
    Nursepriya.nair, anjali.pawar, rekha.more
    DMOkavita.desai, sameer.gupta
    DoctorThe eight doctors in the test data (see the team plan)
    Lab Techniciansuresh.kale, deepa.sawant
    Report Viewernikhil.bhat
    Clinic Adminadmin, pooja.mehta
  4. Use a new patient for each end-to-end scenario, named so it is easy to find: Test-<scenario>-<your initials>, for example Test-HL01-RV.
  5. If the data gets mixed up, the test lead re-imports the test data (Replace everything) and everyone signs in again.

4. A release test run

  1. Build ready
  2. Load test data
  3. Smoke (T1)
  4. End-to-end flows (T2)
  5. Role screens (T3–T7)
  6. Regression (T8)
  7. Retest fixes
  8. Sign-off
  1. Entry: the developers say which build and which features are in it. The API and the web app run, and the test data is loaded.
  2. Plan: the test lead gives each tester one role (see the team plan). The end-to-end flows are run together, in hand-off order: Reception starts the patient, then tells the Nurse, and so on.
  3. Run: work through the assigned cases and mark each one in the team plan page. On a Fail, write what happened and take a screenshot.
  4. Report: at the end, press Export to Excel on the team plan page and send the file to the test lead. The lead combines the files; the Dashboard sheet shows the totals.
  5. Retest: after fixes, re-run the failed cases and the end-to-end flow they belong to.

5. Results and defects

StatusMeaning
PassEverything in "Expected" happened.
FailSomething in "Expected" didn't happen, or an error appeared. Write a defect.
BlockedCouldn't be tested: an earlier step failed, or the data or account was missing. Say what blocked it.
Not runNot done yet.

A good defect has the case ID, the account used, the steps, what was expected, what happened, the exact message on screen, and a screenshot.

SeverityMeaningExample
CriticalA main flow can't continue, data is lost or wrong, or a role sees what it mustn't.The nurse can't hand the patient to the doctor; a nurse can open the admin tools.
HighA feature doesn't work, but there is a way around it.Reschedule fails from the Actions menu but works from the row menu.
MediumWrong message, wrong label, or validation that doesn't point at the field.Save with an empty Sex says "Error" instead of naming the field.
LowLook only.Misaligned column, wrong colour in one theme.

6. When a release is ready

7. Keeping the cases up to date

This is ongoing work. When a feature is added or changed, its cases are added or changed in test/cases.js in the same piece of work. The detailed page and the team plan both read that one file. When a module is switched on in release.ts, its cases move into scope. Case IDs are never reused.

← Testing homeHigh-level scenarios →