---
title: "Testing Guide: Developer / Property Manager Role"
space: "testing-docs"
url: "https://qejaverse-prod.jh.frappe.cloud/testing-guide-developer-pm-role"
updated: "2026-08-15"
---

> **What is this?** A feature-by-feature reference for testers. Go through each section below, verify the expected behaviour, and log any issues you find.
>
> **Dev App URL:** `https://casahub.jh.frappe.cloud/qeja`
>
> **Your role for this test:** Property Manager / Developer (they share the same portal)


## 1. Registration

| Step | What to do | Expected result |
|------|-----------|----------------|
| 1 | Go to `/qeja` and click **Create Account** | Sign-up form appears |
| 2a | Enter first name, last name, email, password and submit | Account is created, you are logged in automatically |
| 2b | Or click **Sign in with Google** | Google OAuth flow completes, account is created |
| 3 | After sign-up | You land on `/onboarding-check` -- you cannot access any dashboard yet |

**Things to check:**

- Duplicate email is rejected with a clear message

- Password requires 8+ characters

- Empty required fields show validation errors

- Welcome email arrives


## 2. Login

| Step | What to do | Expected result |
|------|-----------|----------------|
| 1 | Go to `/qeja/login`, enter credentials | Logged in successfully |
| 2a | If onboarding incomplete | Redirected to `/onboarding-check` |
| 2b | If onboarding complete | Redirected to `/manager/dashboard` |
| 3 | Wrong password | Clear error message, not a generic server error |
| 4 | Forgot password link | Password reset email is sent |


## 3. Logout

| Step | What to do | Expected result |
|------|-----------|----------------|
| 1 | Click profile/avatar in sidebar, click **Logout** | Session ends, redirected to login page |
| 2 | Try to visit `/manager/dashboard` directly | Redirected to login -- no access |


## 4. Onboarding -- Profile Completion

| Step | What to do | Expected result |
|------|-----------|----------------|
| 1 | You land on `/onboarding/profile` | Form shows: phone number (with +254 default), gender, date of birth |
| 2 | Fill in all fields and click **Continue** | Data saves, you move to `/onboarding/role` |
| 3 | Try to skip without filling required fields | Validation blocks you |


## 5. Onboarding -- Role Selection

| Step | What to do | Expected result |
|------|-----------|----------------|
| 1 | You land on `/onboarding/role` | 4 role cards: Property Owner, Property Manager, Real Estate Agent, Client/Tenant |
| 2 | Click **Property Manager** (or **Property Owner**) | Card highlights with a checkmark |
| 3 | Click **Continue** | You are assigned the role and land on `/manager/dashboard` |

**Things to check:**
- Only one role can be selected at a time
- You cannot proceed without selecting a role
- After this, the onboarding flow should not repeat on next login


## 6. Dashboard

| Section | What you should see | Expected behaviour |
|---------|--------------------|--------------------|
| KPI cards | Managed Projects, Pending Requests, Total Units (+ available), Active Agents | Values match actual data; cards are clickable and navigate to the right page |
| Financial metrics | Total Collected, Pending Payments, Overdue, Collection Rate | Currency is KES; period filter (Month/Quarter/Year) updates the numbers |
| Recent activity | Latest access requests | Shows agent name, project, date, status |
| Project breakdown | Projects grouped by status | Counts are accurate |

**Things to check:**
- Dashboard loads without errors or stuck spinners
- Period filter actually changes the data shown
- All KPI card clicks navigate correctly


## 7. Developer Profile

This is your company profile visible in the developer directory.

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View profile | Navigate to profile page | Shows your company info, completeness %, KYC status |
| Edit Tier 1 fields | Company name, logo, year established, specializations, description, city, county, phone, email | Saves successfully; completeness % updates |
| Edit Tier 2 fields | Registration number, company type, NCA number, website, cover image, market segments, property types, geographic focus | Saves successfully |
| Edit Tier 3 fields | Social media links, date of incorporation, KRA PIN, VAT number, NEMA ref, awards | Saves successfully |
| Payment details | Bank name, account name, account number, M-Pesa paybill, payment instructions | Saves successfully |
| Publish profile | Click **Publish** | Profile appears in developer directory; requires Tier 1+2 fields filled |
| Unpublish profile | Click **Unpublish** | Profile removed from directory |

**Things to check:**
- Year established validates between 1900 and current year
- Completeness percentage reflects actual filled fields
- Cannot publish without minimum required fields



## 8. Projects -- List & Create

### 8a. View Projects

| Step | What to do | Expected result |
|------|-----------|----------------|
| 1 | Click **Projects** in sidebar | Project list page loads with your projects as cards |
| 2 | Search by project name | Results filter in real-time |
| 3 | Filter by status or category | List updates correctly |
| 4 | Click a project card | Opens project detail page |

**Things to check:**
- Pagination works if you have 20+ projects

- Empty state shows if no projects exist

### 8b. Create Project

| Step | What to do | Expected result |
|------|-----------|----------------|
| 1 | Click **Create Project** | Setup wizard opens |
| 2 | Step 1 -- Basics | Fill project name, company, template, category, dev type, description |
| 3 | Step 2 -- Location | Address, county, coordinates |
| 4 | Step 3 -- Media | Cover image, gallery images |
| 5 | Step 4 -- Structure | Phases and buildings config |
| 6 | Step 5 -- Units | Bulk unit creation or skip |
| 7 | Step 6 -- Team | Add team members (optional) |
| 8 | Step 7 -- Review | Review all info, click **Create Project** |
| 9 | After creation | Redirected to project detail; toast confirms success |

**Things to check:**
- Wizard shows progress indicator

- Can navigate back to previous steps

- Required fields are validated before moving forward

- Subscription limits are enforced (Free plan = 1 project max)

- Image uploads show progress and preview


## 9. Project Management (Manage View)

After opening a project, click **Manage** to access the tabbed management interface.

### 9a. Tabs Overview

| Tab | What it shows |
|-----|--------------|
| Units | All units in the project with search/filter |
| Buildings | Building cards with unit counts |
| Phases | Phase list with dates and status |
| Team | Team members and pending invitations |
| Templates | Unit type templates |
| Payment Plans | Payment plan templates |
| Settings | Edit project details |

**Things to check:**
- All tabs load their content

- Active tab is visually highlighted

- No console errors when switching tabs

### 9b. Units Management

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View units | Open Units tab | Table with unit number, type, status, price, building |
| Search/filter | Search by unit number; filter by status, type, building | Results update correctly |
| Add single unit | Click **Add Unit**, fill fields (number, type, price, building) | Unit created with status "Available" |
| Bulk create | Click **Bulk Create**, pick building, count, naming pattern | Units created with sequential names (e.g. Unit-001, Unit-002) |
| Edit unit | Click a unit, click **Edit**, change fields, save | Changes persist |
| Delete units | Select units, click **Delete** | Units removed |

**Things to check:**
- Subscription unit limit enforced

- Bulk create shows progress for large batches

- Status options: Available, Reserved, Booked, Sold

### 9c. Buildings Management

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View buildings | Open Buildings tab | Cards showing building name, floors, unit count |
| Add building | Click **Add Building**, enter name | Building created and appears in list |
| Edit building | Click building, modify fields | Changes save |

### 9d. Phases Management

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View phases | Open Phases tab | List showing phase name, dates, unit count |
| Add phase | Click **Add Phase**, enter name and optional dates | Phase created |
| Edit phase | Click phase, modify | Changes save; end date must be after start date |

### 9e. Unit Type Templates

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| Create template | Define a reusable unit type (e.g. "2BR Apartment" with specs) | Template saved |
| Apply template | Select units, bulk apply template | Unit specs updated from template |
| Edit/delete template | Modify or remove a template | Changes take effect |

### 9f. Payment Plans

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| Create plan | Define payment milestones with amounts and due dates | Plan template saved |
| View plans | Open Payment Plans tab | All plan templates listed |


## 10. Project Settings

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| Edit mode | Toggle **Edit Mode** on | Fields become editable |
| Update basics | Change name, description, status | Saves with toast confirmation |
| Commission settings | Set commission mode (percentage or flat), amount | Settings save |
| Team access settings | Toggle "Require contract for agent access" | Setting saves |
| Publish/Unpublish | Publish or unpublish project | Project visibility changes for agents/public |

---

## 11. Team Management

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View team | Open Team tab | Shows members with name, email, role, join date |
| Invite member | Click **Invite Member**, enter email and role | Invitation email sent; shows in Pending Invitations |
| Remove member | Click **Remove** on a member, confirm | Member removed; loses project access immediately |

**Things to check:**
- Cannot remove yourself

- Confirmation dialog appears before removal

- Subscription team member limits enforced



## 12. Applications & Contracts

### 12a. Access Requests

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View requests | Click **Applications** in sidebar, Requests tab | List of agent access requests with status |
| Approve | Click **Approve** on a pending request | Status changes to Approved; agent gets project access + notification |
| Reject | Click **Reject**, enter reason | Status changes to Rejected; agent notified with reason |
| Filter | Filter by status or project | List updates correctly |

**Things to check:**
- Pending count matches dashboard KPI

- Agent actually gains access after approval (test from agent side)

### 12b. Contracts

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View contracts | Click **Contracts** tab | List with agent name, project, status, dates |
| Create contract | Click **Create Contract**, fill agent, project, title, type, dates, terms | Contract created in Draft status |
| Send to agent | Click **Send** on a draft contract | Status changes to Sent; agent gets email notification |
| Activate | After agent signs, click **Activate/Confirm** | Status changes to Active; agent gets full project access |
| Terminate | Click **Terminate**, enter reason | Contract ended; agent access revoked |
| Extend | Click **Extend**, set new end date | Contract period updated |

**Things to check:**
- Contract workflow: Draft -> Sent -> Signed -> Active

- Can create from template or custom content

- Contract timeline shows all status changes

- PDF preview generation works


## 13. Agent Directory

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| Browse agents | Click **Agents** in sidebar | Grid of agent cards with photo, name, company, KYC badge |
| Search | Type agent name in search | Results filter in real-time |
| Filter by KYC | Select "Verified Only" filter | Only verified agents shown |
| View profile | Click an agent card | Full profile: bio, contact info, KYC status, active projects |


## 14. Payments & Financials

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| Add payment | On a unit, click **Add Payment**, enter date, amount, method | Payment recorded; schedule updates |
| View payments | Navigate to payments list | Filterable by project, status, method, date range |
| Payment summary | View summary section | Shows total collected, pending, overdue, collection rate, due in 30 days |
| Edit payment | Click a payment, modify details | Changes save |
| Deactivate payment | Click **Deactivate**, enter reason | Payment marked inactive |

**Things to check:**
- Currency displays as KES

- Payment allocation to milestones works correctly

- Overdue payments are correctly flagged


## 15. Due Diligence / Compliance

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View required docs | Open due diligence section on a project | Shows required vs optional documents with upload status |
| Upload documents | Upload compliance docs (licenses, certificates, etc.) | Documents save with correct type |
| View status | Check due diligence status | Shows completion breakdown |


## 16. Billing & Subscription

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View plans | Go to **Settings > Billing**, Plans tab | See Free and Enterprise plans; current plan marked |
| Toggle pricing | Switch between Monthly/Annual | Prices update |
| Payment history | Click Payment History tab | Past payments listed with date, amount, method, status |
| Payment methods | Click Payment Methods tab | Saved methods shown; can add/remove |
| Upgrade | Click **Upgrade** on Enterprise plan | Payment flow: M-Pesa STK push or card entry; subscription upgrades on success |

**Things to check:**
- Free tier limits: 1 project, 5 units, 1 agent, 1 building, 1 phase, 1 template, 1 payment plan

- Limit reached shows upgrade prompt

- After upgrade, limits increase immediately


## 17. Customers / Leads

| Feature | What to do | Expected result |
|---------|-----------|----------------|
| View customers | Open customer section for a project | List of project customers |
| Add customer | Click **Add Customer**, fill name, contact, preferences | Customer record created |
| Search | Search by name or phone | Results filter |
| View details | Click a customer | Full profile with contact history |


## 18. Route Access / Permissions

| Route | Should you have access? |
|-------|------------------------|
| `/manager/dashboard` | Yes |
| `/projects` | Yes |
| `/projects/:id` | Yes (only your projects) |
| `/projects/:id/manage` | Yes (only your projects) |
| `/manager/applications` | Yes |
| `/manager/agents` | Yes |
| `/billing` | Yes |
| `/profile` | Yes |
| `/agent/*` | No -- should redirect to `/unauthorized` |
| `/admin/*` | No -- should redirect to `/unauthorized` |
| `/client/*` | No -- should redirect to `/unauthorized` |



## Quick Checklist Summary

Use this to track your progress:
- [ ] Mobile Responsiveness
- [ ] Registration (email + Google SSO)
- [ ] Login / Logout
- [ ] Onboarding (profile + role selection)
- [ ] Dashboard loads with correct data
- [ ] Developer profile CRUD + publish/unpublish
- [ ] Create project via wizard
- [ ] View project list with search/filter
- [ ] Project manage view -- all tabs load
- [ ] Units: create, bulk create, edit, delete, search/filter
- [ ] Buildings: create, edit
- [ ] Phases: create, edit
- [ ] Unit templates: create, apply, edit, delete
- [ ] Payment plans: create, view
- [ ] Project settings: edit, publish/unpublish
- [ ] Team: view, invite, remove
- [ ] Access requests: view, approve, reject
- [ ] Contracts: create, send, activate, terminate, extend
- [ ] Agent directory: browse, search, filter, view profile
- [ ] Payments: add, view, filter, summary, deactivate
- [ ] Due diligence: view requirements, upload docs
- [ ] Billing: view plans, payment history, payment methods, upgrade
- [ ] Customers: view, add, search
- [ ] Route permissions: cannot access agent/admin/client routes
- [ ] Subscription limits enforced on Free plan
