Биллинг
Тесты тарифов, платежей и управления подписками. Биллинг в saas-api построен на Temporal workflows с полным жизненным циклом подписки (trial → active → renewal → dunning → cancellation).
Обзор
| Файл | Тестов | Описание |
|---|---|---|
tariffs.e2e.ts | 1 | Публичный эндпоинт тарифов (без auth) |
billing.e2e.ts | 4 | Платежи, купоны, отписка |
tariffs.e2e.ts (Public)
Эндпоинт /api/tariffs доступен без аутентификации — используется на landing page и в клиентском приложении.
Покрытие:
- ✅ Список тарифов без JWT (
GET /api/tariffs)
typescript
import { expect, test } from "@playwright/test";
import { environment } from "../../src/environments/environment";
test("GET /api/tariffs — returns tariffs list without auth", async ({ request }) => {
const response = await request.get(`${environment.apiBaseUrl}/api/tariffs`);
expect(response.ok()).toBe(true);
const body = await response.json();
expect(body.success).toBe(true);
expect(Array.isArray(body.data)).toBe(true);
});Публичный эндпоинт
В отличие от остальных API тестов, tariffs.e2e.ts импортирует test из @playwright/test напрямую, а не из кастомной фикстуры, так как не требует аутентификации.
billing.e2e.ts
Операции биллинга для аутентифицированного пользователя.
Покрытие:
- ✅ Список тарифов (
GET /api/tariffs) - ✅ Список платежей пользователя (
GET /api/payments) - ❌ Валидация невалидного купона → ошибка (
POST /api/billing/validate-coupon) - ✅ Обработка запроса на отписку (
POST /api/billing/unsubscribe)
Следующие шаги
- Файлы и прочее — health check, файлы, поддержка
- Admin биллинг — тарифы, подписки, счета (admin)