Step-by-Step Guide — Follow each step exactly as written. Every value you need to type is spelled out. Do not improvise.
TC-MEM-004: Approval Workflow (Detailed)
Admin: admin@rcme.membervu.com / Admin123! · Membership Mgr: membershipchair@demo.membervu.com / Membership123! (Elena Torres)
URLs: Frontend
https://stg-rcme.membervu.com · MailHog https://stg-webmail.membervu.com
PREREQUISITE: RCME must have
requireApproval: true (Member Settings → Workflow tab). If self-registration auto-approves, a registrant goes straight to ACTIVE and there is nothing to approve.
Two paths (see TC-MEM-004 summary): this detailed test covers the member-approval path (a true
PENDING_APPROVAL registrant). The seeded pending@demo.membervu.com (Miguel) is a prospect/applicant and is approved via Prospects, not here. There is no seeded PENDING_APPROVAL user, so you create one in TC-APPR-01.
TC-APPR-01: Submit a Membership Application (self-registration)
| Step | Action | Expected Result | Test Value |
|---|---|---|---|
| 1 | In an incognito window, open https://stg-rcme.membervu.com/register. | Registration page loads: First Name, Last Name, Email, Phone (international), Address, LinkedIn, Other socials (+ any tenant "Additional information" fields). No password field — the password is set later via the email link. | - |
| 2 | First Name Test, Last Name Applicant, Email qa-applicant-approve@test.membervu.com. Fill any required additional fields. | Values entered. | qa-applicant-approve@test.membervu.com |
| 3 | Click "Create account". | Success state: "Check your email — we've sent a verification link to …". The applicant is not logged in (approval + verification pending). Backend status = PENDING_APPROVAL. | - |
PASS if: the application submits and a "check your email" confirmation shows.
TC-APPR-02: Admin Approves the Pending Member
| Step | Action | Expected Result | Test Value |
|---|---|---|---|
| 1 | In a normal window, log in as membershipchair@demo.membervu.com / Membership123! (or admin). | Dashboard loads (Elena Torres is in the default approver list). | - |
| 2 | Go to Members → All Members, then the "Pending" tab (/admin/members?tab=pending). | The pending-approval queue loads. | - |
| 3 | Click "Test Applicant" (qa-applicant-approve@test.membervu.com). Confirm the status badge = PENDING_APPROVAL. | Detail panel opens with inline Approve + Reject buttons. | - |
| 4 | Click "Approve". | Success toast. Status → ACTIVE (or PENDING_PAYMENT + a dues invoice if auto-dues is on). Role PENDING_MEMBER → MEMBER. | - |
| 5 | Open MailHog https://stg-webmail.membervu.com. | An "approved" email was sent to the applicant. | - |
PASS if: status changed via inline Approve and the approval email was sent.
TC-APPR-03: Admin Rejects a Pending Member
| Step | Action | Expected Result | Test Value |
|---|---|---|---|
| 1 | Register a second applicant (qa-applicant-reject@test.membervu.com) as in TC-APPR-01. | Status = PENDING_APPROVAL. | qa-applicant-reject@test.membervu.com |
| 2 | In the Pending tab, open "Test Rejected" → inline "Reject". An inline "Reason for rejection (optional)" textarea appears. Type Incomplete documentation - QA test → "Confirm Reject". | Status → REJECTED. | Incomplete documentation - QA test |
| 3 | Check MailHog. | Rejection email sent (with reason, if the tenant includes it). | - |
PASS if: status → REJECTED and a rejection email was sent.
TC-APPR-04: Approve an Applicant via Prospects (application path)
| Step | Action | Expected Result | Test Value |
|---|---|---|---|
| 1 | As admin, go to Prospects (/admin/prospects). Find Miguel Fernandez (pending@demo.membervu.com) in the Review/Applied stage. | Miguel appears (prospectStatus=APPLIED, status GUEST_ATTENDEE). | - |
| 2 | Click "Move to Review" (if shown), then "Approve" → the Approve Application modal opens. Select a membership type; confirm. | Application approved; Miguel is provisioned as a member of the chosen type. | - |
Why a separate path: the inline member-approve button only accepts
PENDING_APPROVAL. Miguel is GUEST_ATTENDEE, so he must be approved through the application/prospect workflow.PASS if: the applicant is approved through the Prospects → Approve Application modal.
CLEANUP — Read Before You Stop
Test applicants (
qa-applicant-approve@…, qa-applicant-reject@…) and any change to Miguel's prospect state are cleared by a reseed: docker exec membervu-backend npm run seed:rcme. They don't block other tests.