Phase 7 Execution Report: Guest Portal & Guest-to-Member Conversion

Test Phase: Phase 7

Test Date: 2026-02-10

Tester: Claude Code E2E Tester

Environment: Local Docker (stg-app.membervu.com, stg-api.membervu.com)

Tenant: rcme (Rotary Club of Manila Expats)


Executive Summary

Phase 7 testing focused on the Guest Portal and Guest-to-Member Conversion workflow. This phase is CRITICAL as it represents the primary entry point for new members and directly impacts member acquisition and organizational growth.

Overall Status: ❌ **BLOCKED - Critical Issues Found**

Test Results:

Bugs Found: 4 (2 P0 Blockers, 1 P2 Major, 1 P3 Minor)


Test Cases Overview

TC_GUEST_001: Public Event Catalog & Guest Registration

Objective: Verify that unauthenticated users can browse public events, register as guests, and access limited features after login.

ScenarioStatusNotes
1. Public event catalog (no login)❌ FAILEDAll 3 URLs fail (BUG-PHASE7-001)
2. Public event detail (no login)⚠️ BLOCKEDCannot test due to broken public events
3. Guest registration for free event⚠️ BLOCKEDCannot access public events to register
4. Password setup email in MailHog⚠️ BLOCKEDCannot register, no email to verify
5. Guest login after setting password✅ PASSEDQuick login works
6. Guest dashboard limited features✅ PASSEDDashboard shows guest view correctly
7. Members-only events hidden✅ PASSEDGuest sees 15 events vs member's larger list
8. Virtual link protection⚠️ SKIPPEDNo paid public events accessible
9. Guest accessing member-only URLs✅ PASSEDCorrectly redirected to home
10. Unauthenticated accessing protected URLs⚠️ NOT TESTEDTime constraints

TC_GUEST_001 Summary: 4 passed, 1 failed, 5 blocked/skipped


TC_GUEST_002: Guest-to-Member Conversion

Objective: Test the complete lifecycle of converting a guest into a full member through application, admin approval, and account upgrade.

ScenarioStatusNotes
1. Guest views "Become a Member"✅ PASSEDOption visible on dashboard
2. Guest submits application❌ FAILED401 Unauthorized error (BUG-PHASE7-002)
3. Application notification emails⚠️ BLOCKEDCannot submit application
4. Admin views application queue⚠️ BLOCKEDNo application to view
5. Admin approves application⚠️ BLOCKEDNo application to approve
6. Dues invoice generated⚠️ BLOCKEDDepends on approval
7. Approval email in MailHog⚠️ BLOCKEDDepends on approval
8. Converted member has full access⚠️ BLOCKEDDepends on approval
9. Event history retained⚠️ BLOCKEDDepends on conversion
10. Member appears in directory⚠️ BLOCKEDDepends on conversion
11. Duplicate application prevented⚠️ BLOCKEDCannot test without working submission
12. Admin rejects application⚠️ BLOCKEDNo application to reject

TC_GUEST_002 Summary: 1 passed, 1 failed, 10 blocked


Bugs Discovered

🔴 P0 Blocker: BUG-PHASE7-001

Title: Public events page returns 404 error due to duplicate "public" in API path

Impact: Unauthenticated users cannot view public events. This completely breaks the guest portal entry point.

Details:

Root Cause: Frontend is constructing API URL incorrectly, likely due to misconfigured base URL or route handling.

Evidence:


🔴 P0 Blocker: BUG-PHASE7-002

Title: Guest membership application submission fails with 401 Unauthorized error

Impact: Guests cannot apply for membership. This breaks the entire guest-to-member conversion workflow and prevents member acquisition.

Details:

Root Cause Hypothesis: The /api/membership/apply endpoint may require incorrect permissions (e.g., MEMBER instead of GUEST), or the endpoint doesn't exist/isn't properly registered.

Evidence:


🟡 P2 Major: BUG-PHASE7-004

Title: Membership application form missing "Membership Type" selection field

Impact: Guests cannot select their desired membership tier (Regular, Associate, Student). This means:

Details:

Evidence:


🟢 P3 Minor: BUG-PHASE7-003

Title: Membership application form displays "undefined" instead of organization name

Impact: Poor user experience and unprofessional appearance. No functional impact.

Details:

Root Cause Hypothesis: React component is trying to access undefined organization/tenant name property.

Evidence:


Test Scenarios - Detailed Results

✅ Passed Scenarios

Guest Login and Dashboard (TC_GUEST_001, Scenario 5-6)

Test Steps:

  1. Navigate to login page
  2. Click "Guest" quick login button
  3. Verify dashboard loads with guest view

Results:

Evidence: Screenshot phase7-guest-dashboard.png


Members-Only Events Hidden from Guest (TC_GUEST_001, Scenario 7)

Test Steps:

  1. Login as guest, navigate to events page
  2. Count visible events
  3. Login as member, navigate to events page
  4. Count visible events and compare

Results:

Note: Unable to get exact member event count due to time constraints, but member view showed additional events.


Guest Cannot Access Member-Only URLs (TC_GUEST_001, Scenario 9)

Test Steps:

While logged in as guest, attempt to navigate to:

Results:

Verdict: RBAC correctly prevents guest access to member-only content.


"Become a Member" Option Visible (TC_GUEST_002, Scenario 1)

Test Steps:

  1. Login as guest
  2. Look for membership application option

Results:

Evidence: Screenshot phase7-guest-dashboard.png


❌ Failed Scenarios

Public Event Catalog - All URLs Fail (TC_GUEST_001, Scenario 1)

Test Steps:

Test unauthenticated access to public events via:

  1. https://stg-app.membervu.com/rcme/events
  2. https://stg-app.membervu.com/rcme/public/events
  3. https://stg-app.membervu.com/rcme/public-events

Results:

Expected: At least one URL should display public events without authentication.

Actual: No public access to events is possible.

Bug: BUG-PHASE7-001 - API path contains duplicate /api/public/public/events

Impact: Guest portal entry point is completely broken. Unauthenticated visitors cannot browse events.


Guest Application Submission Fails (TC_GUEST_002, Scenario 2)

Test Steps:

  1. Login as guest
  2. Click "Apply for Membership"
  3. Fill out application form:
  1. Click "Submit Application"

Results:

Expected: Application should submit successfully, user should remain logged in, success message should appear.

Bug: BUG-PHASE7-002

Impact: Entire guest-to-member conversion workflow is broken. No path for guest accounts to become members.


⚠️ Blocked Scenarios

The following scenarios could not be tested due to the P0 blocker bugs:

From TC_GUEST_001:

From TC_GUEST_002:


Test Artifacts

Screenshots

  1. phase7-bug-public-events-404.png - 404 error on public events page
  2. phase7-guest-dashboard.png - Guest dashboard showing limited features
  3. phase7-membership-application-form.png - Application form with "undefined" bug
  4. phase7-bug-session-expired.png - Session expired error after application submission

Network Logs

  1. phase7-network-public-events.txt - API 404 errors with duplicate path
  2. phase7-console-errors.txt - Console errors during application submission

Bug Reports

  1. BUG-PHASE7-001.md - Public events 404 error
  2. BUG-PHASE7-002.md - Application submission 401 error
  3. BUG-PHASE7-003.md - Organization name shows "undefined"
  4. BUG-PHASE7-004.md - Missing membership type field

Test Scripts

  1. phase7-guest-portal-tests.spec.ts - Automated Playwright test suite for Phase 7

Recommendations

Immediate Actions (P0)

  1. Fix BUG-PHASE7-001: Public Events API Path
  1. Fix BUG-PHASE7-002: Membership Application Authorization

High Priority (P2)

  1. Fix BUG-PHASE7-004: Add Membership Type Field

Low Priority (P3)

  1. Fix BUG-PHASE7-003: Organization Name Display

Test Environment Details

URLs

Test Users

RoleEmailPasswordStatus
Guestguest@demo.membervu.comGuest123!ACTIVE (GUEST)
Adminadmin@rcme.membervu.comAdmin123!ACTIVE (ADMIN)
Membertestmember@rcme.membervu.comMember123!ACTIVE (MEMBER)

Tenant Configuration


Phase Completion Status

Phase 7 Status:INCOMPLETE - BLOCKED

Completion Rate: 22.7% (5 of 22 scenarios passed or completed)

Blockers:

  1. BUG-PHASE7-001 (P0) - Blocks guest portal entry and registration flow
  2. BUG-PHASE7-002 (P0) - Blocks entire membership conversion workflow

Next Steps:

  1. Development team fixes P0 blockers
  2. Retest all blocked scenarios
  3. Verify email notifications in MailHog
  4. Test admin approval workflow end-to-end
  5. Verify dues invoice generation
  6. Test complete conversion from guest to active member

Sign-Off

Tested By: Claude Code E2E Tester

Date: 2026-02-10

Environment: Local Docker

Phase 7 Sign-Off:NOT READY FOR SIGN-OFF

Reason: 2 P0 blocker bugs prevent completion of guest portal and membership conversion workflows. These are critical features for member acquisition.

Re-test Required After: P0 bugs are fixed


Appendix: How to Run Tests

Prerequisites

# Ensure Docker containers are running

docker ps | grep membervu

Containers should include:

- membervu-frontend (port 3021)

- membervu-backend (port 3020)

- membervu-mailhog (port 3023)

- membervu-postgres (port 5433)

Run Automated Tests

# Navigate to tester-files directory

cd /Users/rickaqui/Documents/Zeniark/projects/membervu/tester-files

Run Phase 7 test suite

npx playwright test phase7-guest-portal-tests.spec.ts --project=chromium --reporter=list

Run with UI mode for debugging

npx playwright test phase7-guest-portal-tests.spec.ts --ui

Run specific test

npx playwright test phase7-guest-portal-tests.spec.ts -g "Public event catalog"

Manual Testing

Refer to the original test instructions at:

/Users/rickaqui/Documents/Zeniark/projects/membervu/tester-files/instructions/PHASE_7_GUEST_PORTAL.md


End of Phase 7 Execution Report