Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - QA Co-pilot
Додано 06 гру 2025 🌐 UK

QA Co-pilot

@qa_copilot
Кількість підписників: 90
Фото: 326
Відео: 1
Посилання: 49
Опис:
QA Co-pilot 🚀 Ваш другий пілот у світі тестування. 👨💻 Для кого: Для тестувальників-практиків, які хочуть рости. 🎯 Про що: Делегуємо рутину нейромережам, прискорюємо роботу та звільняємо час на головне. ❌ Чого тут немає: Нудної теорії та води.
Джерело

QA Co-pilot | E2E без болю: ШІ-генерація тестових даних для бази (Prisma + PostgreSQ...

Логотип телеграм спільноти - QA Co-pilot QA Co-pilot @qa_copilot
35 Охват/переглядів 2026-08-05 09:19 Повідомлення №364
🚀 E2E без болю: ШІ-генерація тестових даних для бази (Prisma + PostgreSQL)

Екіпаж, продовжуємо інженерію. Найскладніше в E2E тестах — це не написати page.click(). Найскладніше — підготувати правильний стан бази даних перед тим, як браузер взагалі відкриється.

Якщо у вас сучасний стек (наприклад, Angular -фронтенд і NestJS -бекенд на PostgreSQL), кожен тест має починатися з чистого аркуша. Але писати Prisma -сідери для складних реляційних зв'язків (юзер -> профіль -> 10 замовлень -> транзакції) руками — це години втраченого часу і біль при підтримці.

Тут на сцену виходить ШІ. Ми не просимо його писати тести, ми делегуємо йому створення фабрик даних.

Як це працює у зв'язці з Cursor / ChatGPT:

Замість того, щоб колупатися в документації та прописувати кожен include, ви згодовуєте ШІ вашу schema.prisma і просите згенерувати TypeScript -фабрики для Playwright.

Промпт для ШІ:
"Ось моя schema.prisma. Напиши TypeScript-клас DbManager для генерації сутності 'User' з пов'язаним 'Profile' та масивом 'Orders'. Використовуй PrismaClient. Зроби так, щоб дані генерувалися випадково (через faker.js), але я міг перевизначити будь-яке поле передавши об'єкт конфігурації. Напиши код так, щоб його можна було підключити як Playwright Fixture."

Що ви отримуєте:
Ідеально типізований код, який ви просто використовуєте у своїх тестах:
test('Angular UI коректно рендерить історію замовлень', async ({ page, dbManager, apiAuth }) => {
// 1. Генеруємо складний стан в Postgres за 1 секунду перед тестом
const user = await dbManager.users.createWithOrders({
ordersCount: 3,
status: 'COMPLETED'
});

// 2. Логінимось під цим юзером через бекенд (встановлюємо куки)
await apiAuth.loginAs(user);

// 3. Відкриваємо UI і перевіряємо рендер
await page.goto('/dashboard');
await expect(page.locator('.order-item')).toHaveCount(3);
});

Результат:
Ваші тести більше не залежать від "якихось даних", які хтось залишив у базі. Кожен тест створює свій власний унікальний всесвіт, перевіряє UI і потім очищає за собою.

ШІ пише нудні SQL -зв'язки через ORM, а ви фокусуєтесь на логіці тестування.

А як ви готуєте дані перед E2E тестами?

👇

🔥 — Тільки ізольовані генерації напряму в БД, повний контроль!
👀 — Смикаю API-ендпоінти бекенду, щоб створити юзерів.
🤯 — Тестую на існуючих даних у базі, якщо хтось їх змінить — тести падають...