QA Checklist
Delete Account Test Checklist
Use this checklist to verify both the free-account deletion flow and the paid Stripe-backed deletion flow.
Updated
April 1, 2026
Use Case
Account deletion verification
1. Free Account Smoke Test
Before deleting
- Create a brand-new free test account.
- Open the Account page.
- Copy the User ID from the profile card and save it in a note.
- Generate and save at least one plan.
- Confirm the plan appears in My Plans.
Delete flow
- Open Account.
- Click Delete My Account.
- Confirm the warning dialog.
- Re-authenticate with Google or password when prompted.
- Wait for the app to sign you out and redirect you.
Pass criteria in the app
- No Failed to fetch error.
- User is signed out after deletion.
- Returning to Account shows the signed-out state.
Firebase Console verification
Use the saved UID from the profile card.
- Authentication → Users: the throwaway email is gone.
- Firestore → Data → users: users/{uid} is gone.
- Firestore → Data → rate_limits: rate_limits/{uid} is gone.
Because users/{uid} should be removed entirely, these should also be gone:
- users/{uid}/plans/*
- users/{uid}/profile/main
- users/{uid}/usage/ai
2. Paid Stripe Test
Use Stripe test mode or a low-risk paid test scenario only.
Before deleting
- Create a dedicated paid test account.
- Save the Firebase uid from the Account page.
- Upgrade the account through Stripe Checkout.
- Confirm the account shows Pro.
- Confirm a Stripe customer exists for that account.
- Confirm there is an active Stripe subscription tied to that customer.
Delete flow
- Open Account.
- Click Delete My Account.
- Complete re-authentication.
- Wait for the deletion flow to finish.
Pass criteria
- Account deletion completes without a Stripe-related error.
- User is signed out and redirected.
- The Authentication user is gone.
- users/{uid} is gone.
- rate_limits/{uid} is gone.
- The Stripe customer no longer has an active subscription.
Webhook follow-up verification
- After the webhook has had time to run, re-check Firestore.
- Confirm a deleted user’s profile/main document was not recreated by a late Stripe webhook.
3. TTL Reminder
These are not expected to disappear immediately during account deletion:
- generated_plans
- blocked_prompts
Those are governed by Firestore TTL policies and are deleted asynchronously after their ttl expiration.