You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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/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.
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.skipwaiting 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 attemptpayment/02-paypal-subscription.spec.ts:56— create PayPal subscription (Checkout redirect)payment/02-paypal-subscription.spec.ts:123— cancel (drivescancel-subscriptionedge fn)payment/02-paypal-subscription.spec.ts:130— failed retry (re-charges via PayPal; seed-row half already unblocked viaseedIsolatedSubscription)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-e2ePR 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/subscriptionsmanagement route doesn't existpayment/04-gdpr-consent.spec.ts:232— payment consent-reset control not wired (usePaymentConsent.resetConsentexists but no UI calls it)payment/06-realtime-dashboard.spec.ts:217— reconnection-button UIpayment/06-realtime-dashboard.spec.ts:222— batch-update grouping UIpayment/06-realtime-dashboard.spec.ts:227— real-time error-notification toastpayment/06-realtime-dashboard.spec.ts:232— payment chartpayment/05-offline-queue.spec.ts(overflow) — no storage-quota/overflow warning UI (wire tosrc/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 realpayment_resultsrow withstatus='failed'payment/03-failed-payment-retry.spec.ts:156— recovery-list expansion atretry_count >= 2(same gate)Action: investigate whether
seedIsolatedPayment(test-user-factory.ts) can seed afailedpayment_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.tsare fully-authored tests gatedtest.skip(!!process.env.CI, 'requires local Docker Supabase'). To run in CI they need the test user'sis_adminclaim (dual gate:app_metadata+user_profiles.is_admin) and a cloud-seedable demo dataset (port ofsupabase/seed-admin-demo.sql).admin-user-paginationneeds 50+ users → likely delete instead. Action: own PR — see the prior audit.Not in scope (correctly excluded)
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.Generated after #187. Cross-ref: the #115 roadmap backlog ("Payment E2E remainder", "Speculative realtime widgets", "Offline-queue E2E").