Skip to content

Track remaining skipped E2E placeholders — run when unblocked or delete #188

Description

@TortoiseWolfe

Remaining skipped E2E placeholders — track to run or delete

Following the skip-hygiene sweep in #187 (finished 8 unblocked tests, deleted 12 dead stubs), these placeholders remain. Each is a test.skip waiting on a real blocker. This issue tracks them so they're either finished when their blocker clears or deleted if the feature is dropped — no permanent forever-skips.

Rule of thumb (from #187): a test either runs or it doesn't exist. When you build one of the features below, finish its test in the same PR. If a feature is cut, delete its placeholder.


A. Blocked on live provider creds (Stripe/PayPal sandbox) — cannot run in CI

CI carries only dummy provider keys, so these need the live-acceptance runbook (scripts/e2e-live-acceptance.sh) with real sandbox creds, or a documented manual smoke. Legitimately skipped in CI.

  • payment/01-stripe-onetime.spec.ts:190 — offline queue via a real Stripe attempt
  • payment/02-paypal-subscription.spec.ts:56 — create PayPal subscription (Checkout redirect)
  • payment/02-paypal-subscription.spec.ts:123 — cancel (drives cancel-subscription edge fn)
  • payment/02-paypal-subscription.spec.ts:130 — failed retry (re-charges via PayPal; seed-row half already unblocked via seedIsolatedSubscription)
  • payment/03-failed-payment-retry.spec.ts:47 — retry button (real Stripe Checkout)
  • payment/03-failed-payment-retry.spec.ts:182 — log error details (real Stripe Checkout)
  • payment/03-failed-payment-retry.spec.ts:190 — user-friendly error messages (real Stripe Checkout)
  • payment/06-realtime-dashboard.spec.ts:121 — webhook verification (real Stripe webhooks)

Action: keep as documented markers. Optionally wire the full-e2e PR label / live-acceptance job to run them with sandbox creds.

B. Blocked on an UNBUILT feature or route — finish the test when the feature ships

The test body (or a recipe) exists but the UI/route it targets doesn't. Delete if the feature is cut.

  • payment/03-failed-payment-retry.spec.ts:132/payment/subscriptions management route doesn't exist
  • payment/04-gdpr-consent.spec.ts:232 — payment consent-reset control not wired (usePaymentConsent.resetConsent exists but no UI calls it)
  • payment/06-realtime-dashboard.spec.ts:217 — reconnection-button UI
  • payment/06-realtime-dashboard.spec.ts:222 — batch-update grouping UI
  • payment/06-realtime-dashboard.spec.ts:227 — real-time error-notification toast
  • payment/06-realtime-dashboard.spec.ts:232 — payment chart
  • payment/05-offline-queue.spec.ts (overflow) — no storage-quota/overflow warning UI (wire to src/lib/offline-queue/storage-quota.ts)

Action: finish the test in the PR that builds the feature; or delete the placeholder if the feature is descoped.

C. Blocked on a seed fixture (the DB half may be doable now)

  • payment/03-failed-payment-retry.spec.ts:139 — SwitchProviderPanel mount, needs a real payment_results row with status='failed'
  • payment/03-failed-payment-retry.spec.ts:156 — recovery-list expansion at retry_count >= 2 (same gate)

Action: investigate whether seedIsolatedPayment (test-user-factory.ts) can seed a failed payment_results row to unblock these without provider creds — likely a FINISH, mirroring the offline-queue pattern from #187.

D. Env-setup only

  • auth/user-registration.spec.ts:46 — full registration flow; skipped for "real Supabase user creation." Has a full body; may already run given CI's service-role key. Action: verify whether it can be un-skipped in CI (the sign-up specs already create users there).

E. Admin specs (separate, larger effort — 29 authored tests)

tests/e2e/admin/{admin-dashboard,admin-conversation-list,admin-user-pagination}.spec.ts are fully-authored tests gated test.skip(!!process.env.CI, 'requires local Docker Supabase'). To run in CI they need the test user's is_admin claim (dual gate: app_metadata + user_profiles.is_admin) and a cloud-seedable demo dataset (port of supabase/seed-admin-demo.sql). admin-user-pagination needs 50+ users → likely delete instead. Action: own PR — see the prior audit.


Not in scope (correctly excluded)

  • Conditional guards like test.skip(!fixture, …), if (!isAdminClientAvailable()) test.skip(…), test.skip(!!process.env.CI, 'external tab popups unreliable') — these RUN when their condition is met; they are not placeholders.
  • Wrong-tool-for-E2E cases (60fps, k6 load, bundle-size) — deleted in test(e2e): resolve skipped stubs — finish the unblocked, delete the dead #187, belong in k6/bundle-analyzer.

Generated after #187. Cross-ref: the #115 roadmap backlog ("Payment E2E remainder", "Speculative realtime widgets", "Offline-queue E2E").

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority:p3Low — defer (heavy work, polish, nice-to-haves)template-v1-out-of-scopeApplication-level features deferred from template v1; not blockers for any fork

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions