Ответ
Playwright отлично подходит для:
- Кросс-браузерного тестирования (Chrome, Firefox, WebKit)
- E2E-тестов с полным контролем над страницей
- Парсинга данных благодаря быстрому рендерингу
- Тестирования PWA и SPA с поддержкой ожиданий элементов
- Работы с iframe, файлами, API (удобные API для мока и перехвата запросов)
Пример простого теста:
const { test } = require('@playwright/test');
test('Login test', async ({ page }) => {
await page.goto('https://example.com/login');
await page.fill('#username', 'user');
await page.fill('#password', 'pass');
await page.click('button[type="submit"]');
await expect(page).toHaveURL(/dashboard/);
});
Особенно ценю автоматические ожидания и встроенные репортеры.
Ответ 18+ 🔞
Ага, слушай, вот этот Playwright — это вообще огонь, если честно. Не то что какой-нибудь древний инструмент, который только и умеет, что бздеть и глючить. Тут реально всё продумано, ёпта.
Ну, например, если тебе надо проверить, как твой сайт живёт в разных браузерах — да похуй, берёшь и пишешь один раз. А он тебе и в Хроме, и в Фаерфоксе, и в этом... как его... Сафари (ну, в WebKit) всё прогонит. Овердохуища удобства, я тебе скажу.
Или вот эти современные сайты, которые одним файлом .js загружаются и потом полчаса что-то там на клиенте жуют. С другими инструментами — пиздопроебибна, вечно надо ждать, пока этот интерфейс нарисуется. А тут — раз, и у тебя есть встроенные умные ожидания. Не надо самому setTimeout на пять секунд впихивать и молиться.
А ещё, представляешь, если тебе надо что-то спарсить? Не через эти кривые костыли, а нормально, чтобы страница полностью отрендерилась, со всеми скриптами. Playwright для этого — хуй с горы, идеально подходит. Быстро и чётко.
Ну и всякая другая мудя: работа с iframe (кошмар же обычно), загрузка файлов, перехват API-запросов, чтобы не ждать ответа от какого-нибудь медленного бэкенда... Всё это из коробки, без танцев с бубном.
Вот смотри, как просто выглядит даже тест на логин. Никакой залупы конской:
const { test } = require('@playwright/test');
test('Login test', async ({ page }) => {
await page.goto('https://example.com/login');
await page.fill('#username', 'user');
await page.fill('#password', 'pass');
await page.click('button[type="submit"]');
await expect(page).toHaveURL(/dashboard/);
});
Видишь? Всё читабельно. Зашёл, вбил логин-пароль, кликнул — и автоматически дождался перехода. Волнение ебать — ноль. А ещё там репортеры встроенные, которые красивые отчёты рисуют, где что упало. В общем, инструмент — ядерная вошь, всем советую.