---
module: profile.profile
title: Profile
tab: Testing
order: 35
audience: dev
---

Frontend test checklist for the **Profile** tab (`profile.bcos.dev`). Click through in the UI and mark each row Pass or Fail.

## Set up
Log in at **profile.bcos.dev** — test accounts (all password `Passw0rd-d3v!`):

| Login | Role | Profile shows |
|-------|------|---------------|
| `bcos_a@bcos.dev` | Admin | Role badge **Admin** |
| `msp_a@msp1.bcos.dev` | MSP admin | Role badge **MSP Admin** |
| `customer_a@customer1.bcos.dev` | Customer | Role badge **Customer** · Institution shown |

This tab edits **your own** account only — there are no devices to pick and nothing scoped by institution. Each login sees just their own profile.

## What to test

| # | Do this | ✅ Pass if |
|---|---------|-----------|
| 1 | As `customer_a`, open the **Profile** tab | Page loads showing your **Email**, a **System role** badge, and **Full name / Job title / Phone** fields |
| 2 | Type into **Full name** | An **Unsaved changes** badge appears and a **Discard** button shows next to **Save changes** |
| 3 | Click **Save changes** | A **Profile saved** toast appears and the **Unsaved changes** badge disappears |
| 4 | Reload the page | Your saved name is still there |
| 5 | Edit **Job title**, then click **Discard** | The field reverts to the saved value and the **Unsaved changes** badge disappears |
| 6 | With no edits made, look at **Save changes** | The button is **disabled** until you actually change something |
| 7 | Click the round photo and pick an image under 2 MB → **Save changes** | The photo replaces your initials, crops to a square, and a **Remove** link appears |
| 8 | Click the photo and pick an image **larger than 2 MB** | An **Image too large** toast appears and the photo does **not** change |
| 9 | Look at the **Email**, **System role**, and **Institution** values | They are shown as plain read-only text with **no input box** — you can't edit them here |
| 10 | Log in as `bcos_a` and check the role badge | It reads **Admin** (each login shows its own correct role, not Customer) |

**Report a fail with:** the row #, which login you used, and what you actually saw.
