import { test as setup, expect } from '@playwright/test'; const authFile = 'playwright/.auth/user.json'; setup('authenticate', async ({ page }) => { // Переходим на главную await page.goto('/'); // Кликаем на кнопку "Войти" на странице приложения const loginButton = page.getByRole('button', { name: /войти/i }); await loginButton.click(); // Ждём страницу логина Keycloak await page.waitForURL(/auth\.vigdorov\.ru/, { timeout: 15000 }); // Вводим креды await page.getByRole('textbox', { name: 'Username or email' }).fill('testuser'); await page.getByRole('textbox', { name: 'Password' }).fill('0'); await page.getByRole('button', { name: 'Sign In' }).click(); // Ждём редирект обратно на приложение await page.waitForURL('http://localhost:4000/', { timeout: 15000 }); // Ждём загрузки таблицы (значит авторизация прошла) await page.waitForSelector('table', { timeout: 10000 }); // Сохраняем состояние авторизации await page.context().storageState({ path: authFile }); });