/** * Sprint 16 / flow 01 — smoke factory + signup + первый запрос * * Цель: убедиться что OrgFactory работает end-to-end (signup, token, * refs, products, supplies). Если этот test красный — все остальные * тоже упадут (фабрика — фундамент). * * Тег @smoke — попадает в быстрый прогон `pnpm test:smoke`. */ import { expect, test } from '@playwright/test' import { OrgFactory } from '../factories/OrgFactory.js' import { attachSession } from '../lib/ui.js' test.describe('flow 01 — factory smoke @smoke', () => { test('factory строит org с продуктами + приёмкой за один build()', async ({ page }) => { const built = await OrgFactory.for('factory-smoke') .withProducts(2) .withCounterparties(1) .withSupplies(1) .build() expect(built.session.accessToken.length).toBeGreaterThan(100) expect(built.session.orgId).not.toBe('') expect(built.products).toHaveLength(2) expect(built.counterparties).toHaveLength(1) expect(built.supplies).toHaveLength(1) expect(built.refs.storeId).not.toBe('') // UI smoke: dashboard рендерится для созданной org. await attachSession(page, built.session, '/dashboard') await expect(page.getByRole('heading', { name: /dashboard|главная|обзор/i }).first()).toBeVisible({ timeout: 10_000, }) }) })