Skip to content

065 — should reduce monthly seats from 2 to 1 and apply at next billing cycle

Description

Verifies that reducing seats on a Monthly subscription does not take effect immediately: the current seats remain until the period ends, and only at renewal does the seat count drop and excess users get downgraded to "View only".

Preconditions

  • Freshly registered tenant signed in as the owner on the dev environment.
  • Tenant is on the 14-day free trial.
  • Stripe sandbox customer + test clock exist for the tenant.

Steps

  1. Open the Billing page. Expected: 14-day trial summary visible.
  2. Buy the Monthly plan (1 seat) via Hosted Checkout. Expected: Monthly active, 1 seat at $16.00, 1 of 1 used, summary and next-payment date match Stripe.
  3. Open the Customer Portal and grow Monthly to 2 seats. Add 1 employee via API and reload. Expected: Users page shows both the owner and the new employee as "Standard"; Billing shows Monthly with 2 seats at $32.00, 2 of 2 used, summary and next-payment date match Stripe.
  4. Open the Customer Portal and reduce the Monthly subscription to 1 seat.
  5. Expected: Monthly subscription still shows 2 seats this period but the displayed next-period seat count is 1, the cost falls to $16.00, both seats are still in use (2 of 2), and the summary sentence shows the upcoming downgrade with the period-end date from Stripe.
  6. Advance the Stripe test clock by 32 days and reload.
  7. Expected: Monthly subscription now shows 1 seat at $16.00, 1 of 1 used, and the next-payment date matches Stripe's new period end.
  8. Open the Users page. Expected: the owner is still "Standard"; the previously-added employee is now "View only".
  • Spec: playwright/tests/integration/billing.spec.ts (line 523)
  • Spec: playwright/tests/integration/billing.spec.ts (line 523)