link,[object Object]
Skip to content

QA Checklist ​

Purpose: Task-oriented test checklist by feature area. Audience: QA, Developer, Product Prerequisites: Seeded data or test users; admin and non-admin accounts.

Listings

  • Create listing: /create-listing → status draft → submit for review
  • Admin review: /admin/listings → add comment → approve → visible in /explore and /listing/:id
  • Blurred fields: free user sees blurred financials; Starter/Pro sees full
  • Edit listing: seller can update limited fields when active
  • SQL quick check
    sql
    select id, status, verification_status from listings order by created_at desc limit 5;

Offers & Deals

  • Buyer: /listing/:id → Make offer → see in /my-offers
  • Seller: sees buyer offer; accept → Deal created → /deal/:id
  • Funding: buyer uses test card; deal status advanced via webhook
  • Admin payout/refund in /admin/transactions
  • SQL quick checks
    sql
    select id, listing_id, buyer_id, seller_id, status from offers order by created_at desc limit 5;
    select id, amount, status, stripe_payment_id from transactions order by created_at desc limit 5;

Subscriptions

  • Upgrade Starter/Pro with get-price-id → create-checkout → Stripe Checkout URL opens
  • Customer portal opens from account settings
  • Feature gating changes after activation (messaging limit, blurred fields)
  • SQL quick check
    sql
    select user_id, subscription_level, subscription_status, current_period_end from subscriptions order by updated_at desc limit 5;

Messaging

  • Start conversation from listing; send message
  • Mark read on opening thread; unread count decreases
  • Email notification for new message (email logs)
  • SQL quick check
    sql
    select conversation_id, sender_id, read, created_at from messages order by created_at desc limit 10;

Notifications

  • Realtime: new offer triggers seller email (and in-app) only for that seller
  • Listing approved triggers seller email
  • Admin polling discovers pending listings and reports
  • SQL quick check
    sql
    select user_id, type, message, read, created_at from notifications order by created_at desc limit 10;

Blog & Pages

  • Blog: /blog lists posts; open /blog/:slug
  • Admin blog: create/edit post, categories, publish → visible on public index
  • Pages: /page/:slug renders published markdown with locale fallbacks
  • SQL quick check
    sql
    select id, slug, published from blog_posts order by created_at desc limit 5;

Price Alerts

  • Create alert; run run-price-alerts locally; check events
  • Admin price alerts page shows latest
  • SQL quick check
    sql
    select id, alert_type, active, created_at from price_alerts order by created_at desc limit 5;
    select alert_id, listing_id, channel, status from price_alert_events order by created_at desc limit 5;

Admin flows

  • Listings moderation, profile verification, templates test, contact messages
  • See playbooks:
    • docs/operations/admin-flows-playbook.md
    • docs/operations/deals-payments-playbook.md
    • docs/operations/reports-analytics-playbook.md

Acceptance notes

  • Verify RLS: guest/public can only see active listings; user can only modify own data
  • Validate email_logs entries on all email flows (send_status, error_message)
  • Confirm no secrets in client logs; env placeholders used in docs