Налаштування Playwright: встановлення, конфігурація та запуск тестів
Швидкий огляд
Вивчіть налаштування Playwright з нуля: встановлення через npm, конфігурація проєктів, запуск тестів, глобальне налаштування та виправлення типових помилок у CI.
Налаштування Playwright: встановлення, конфігурація та запуск першого тесту
Налаштування Playwright займає близько п'яти хвилин: встановіть пакет, завантажте бінарні файли браузерів і запустіть згенерований приклад тесту. Складнощі починаються пізніше — налаштування проєктів, спільний стан автентифікації та збереження працездатності цієї ж конфігурації на CI-машині. Цей посібник проведе вас увесь шлях: від порожньої папки до надійного тестового конвеєра.
Що насправді встановлює налаштування Playwright
Коли ви запускаєте ініціалізатор, Playwright не просто додає залежність. Він створює каркас робочого тестового проєкту та завантажує бінарні файли браузерів для Chromium, Firefox і WebKit.
Типовий каркас виглядає так:
playwright.config.ts # центральна конфігурація
package.json
package-lock.json # або yarn.lock / pnpm-lock.yaml
tests/
example.spec.ts # мінімальний стартовий тест
У файлі playwright.config.ts визначаються браузери, тайм-аути, повторні спроби, проєкти та репортери. Папка tests/ містить ваші специфікації. Бінарні файли браузерів зберігаються поза вашим проєктом, щоб їх можна було повторно використовувати в різних репозиторіях.
Системні вимоги
Перед початком переконайтеся, що ваше середовище відповідає вимогам:
- Node.js: остання версія 22.x, 24.x або 26.x
- Windows: Windows 11+, Windows Server 2019+ або WSL
- macOS: 14 (Sonoma) або новіша
- Linux: Debian 12/13 або Ubuntu 22.04/24.04/26.04 (x86-64 або arm64)
Крок 1: Встановлення Playwright
Виберіть менеджер пакетів, який ви вже використовуєте. Команда нижче або ініціалізує новий проєкт, або додає Playwright до існуючого.
npm init playwright@latest
# або
yarn create playwright
# або
pnpm create playwright
Під час інтерактивного запиту ви обираєте:
- TypeScript або JavaScript — TypeScript є типовим вибором і забезпечує кращу підтримку редактора.
- Назва папки тестів —
testsза замовчуванням, абоe2e, якщо папкаtestsвже існує. - Робочий процес GitHub Actions — рекомендовано, якщо ви плануєте запускати тести в CI.
- Встановити браузери Playwright — залиште цей пункт увімкненим, якщо ви не керуєте бінарними файлами окремо.
Ви можете повторно запустити ініціалізатор пізніше; він не перезапише існуючі тести.
Якщо ви віддаєте перевагу роботі в редакторі, розширення VS Code може створювати та запускати тести без використання терміналу. Для робочих процесів, керованих агентами, існує окремий CLI, який встановлює навички для таких інструментів, як Claude Code і GitHub Copilot:
npm install -g @playwright/cli@latest
playwright-cli install
playwright-cli install --skills
Це створює каталог .playwright, додає його до .gitignore та завантажує налаштований браузер, якщо він відсутній.
Крок 2: Запуск прикладу тесту
За замовчуванням тести запускаються в безголовому режимі та паралельно в Chromium, Firefox і WebKit.
npx playwright test
Корисні варіації:
npx playwright test --headed # побачити вікно браузера
npx playwright test --project=chromium # запустити один браузер
npx playwright test tests/example.spec.ts # запустити один файл
npx playwright test --ui # відкрити режим UI
Режим UI надає режим спостереження, перегляд кроків у реальному часі та налагодження з подорожами в часі. Це найшвидший спосіб зрозуміти, чому локатор не спрацював.
Читання HTML-звіту
Після запуску відкрийте звіт:
npx playwright show-report
Панель керування дозволяє фільтрувати за браузером, статусом passed, failed, skipped і flaky. Натискання на тест показує помилки, вкладення та кожен крок. Звіт відкривається автоматично лише при виникненні збоїв.
Крок 3: Налаштування проєктів і браузерів
Проєкт — це іменована конфігурація, яка націлена на конкретний браузер або пристрій. Більшість команд починають з трьох десктопних проєктів і додають емуляцію мобільних пристроїв за потреби.
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './tests',
retries: process.env.CI ? 2 : 0,
use: {
baseURL: 'http://localhost:3000',
},
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
{ name: 'firefox', use: { ...devices['Desktop Firefox'] } },
{ name: 'webkit', use: { ...devices['Desktop Safari'] } },
],
});
Повторні спроби важливі в CI: один нестабільний мережевий виклик не повинен призводити до збою збірки. Локально залишайте кількість повторних спроб рівною нулю, щоб помічати справжню нестабільність.
Крок 4: Додавання глобального налаштування та завершення
Більшості наборів тестів потрібно, щоб щось відбулося один раз перед усіма тестами — наповнення бази даних, вхід у систему або генерація токена. Playwright пропонує два підходи, і вони не рівнозначні.
Варіант A: Залежності проєкту (рекомендовано)
Визначте проєкт налаштування та зробіть інші проєкти залежними від нього. Це інтегрується з тестовим раннером, тому трасування записуються, а фікстури працюють.
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './tests',
projects: [
{
name: 'setup db',
testMatch: /global\.setup\.ts/,
teardown: 'cleanup db',
},
{
name: 'cleanup db',
testMatch: /global\.teardown\.ts/,
},
{
name: 'chromium with db',
use: { ...devices['Desktop Chrome'] },
dependencies: ['setup db'],
},
],
});
Файли налаштування та завершення є звичайними тестами:
// tests/global.setup.ts
import { test as setup } from '@playwright/test';
setup('create new database', async () => {
console.log('creating new database...');
});
Варіант B: globalSetup у конфігурації
Застарілий параметр запускає одну експортовану функцію перед усіма тестами. Він працює, але не має видимості в HTML-звіті, запису трасування та підтримки фікстур.
import { defineConfig } from '@playwright/test';
export default defineConfig({
globalSetup: require.resolve('./global-setup'),
globalTeardown: require.resolve('./global-teardown'),
use: {
baseURL: 'http://localhost:3000/',
storageState: 'state.json',
},
});
Поширений шаблон — автентифікація один раз і збереження сесії:
import { chromium, type FullConfig } from '@playwright/test';
async function globalSetup(config: FullConfig) {
const { baseURL, storageState } = config.projects[0].use;
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(baseURL!);
await page.getByLabel('User Name').fill('user');
await page.getByLabel('Password').fill('password');
await page.getByText('Sign in').click();
await page.context().storageState({ path: storageState as string });
await browser.close();
}
export default globalSetup;
Потім тести запускаються вже автентифікованими, оскільки storageState завантажується з state.json.
Якщо вам потрібні трасування з невдалого глобального налаштування, обгорніть тіло в
try...catchі зупиніть трасування перед повторним викиданням помилки.
Крок 5: Оновлення Playwright і браузерів
Версії Playwright прив'язані до конкретних збірок браузерів. Оновлюйте обидва разом:
npm install -D @playwright/test@latest
npx playwright install --with-deps
Перевірте встановлену версію за допомогою npx playwright --version. У Linux --with-deps встановлює системні бібліотеки, потрібні браузерам — пропуск цього кроку є найпоширенішою причиною збоїв у CI.
Типові проблеми налаштування Playwright
| Симптом | Ймовірна причина | Виправлення |
|---|---|---|
Executable doesn't exist |
Відсутні бінарні файли браузера або невідповідність версій | Виконайте npx playwright install |
| Тести проходять локально, але не проходять у CI | Відсутні системні залежності | Використовуйте npx playwright install --with-deps |
| Глобальне налаштування не відображається у звіті | Використовується globalSetup замість залежностей проєкту |
Перейдіть на проєкт налаштування |
| Нестабільні тести на спільних акаунтах | Стан сесії повторно використовується між паралельними воркерами | Використовуйте окремі стани сховища для кожного воркера |
--no-deps несподівано пропускає налаштування |
Ланцюжок залежностей ігнорується | Видаліть --no-deps або запустіть налаштування явно |
Де налаштування Playwright зустрічається з реальною автоматизацією
Playwright чудово керує браузером, але він не керує ідентичністю. Якщо вашим тестам або скраперам потрібно працювати з багатьма акаунтами — входи продавців на маркетплейсах, рекламні акаунти, соціальні профілі — кожній сесії потрібен ізольований відбиток і власний проксі. Це той рівень, який забезпечує антидетект-браузер.
AdsPower створює ізольовані профілі браузера з унікальними відбитками за параметрами Canvas, WebGL, мережі та user agent, а також підтримує налаштування проксі для кожного профілю. Команди, які працюють з багатьма акаунтами, часто поєднують його з Playwright, щоб кожен запуск автоматизації починався з чистої, узгодженої ідентичності, а не зі спільного стану браузера. Для шаблонів, специфічних для маркетплейсів, дивіться посібник з використання AdsPower з Amazon Seller Central, а для партнерських робочих процесів — посібник MaxBounty для багатьох акаунтів.
Це не заміна налаштуванню Playwright — це доповнення. Playwright відповідає за навігацію, перевірки та звітність; рівень профілю відповідає за контекст акаунта під ним.
Пов'язане читання
- Топ-10 антидетект-браузерів і платформ хмарних телефонів 2026 - Незалежний рейтинг 2026 року десяти найкращих платформ антидетект-браузерів і хмарних телефонів, оцінених за глибиною відбитків, підтримкою мобільних пристроїв, автоматизацією та ціноутворенням.
- AdsPower vs Maskfog vs Nstbrowser: як вибрати браузер з відбитками у 2026 році - Порівняйте антидетект-браузери з відбитками AdsPower, Maskfog і Nstbrowser: можливості відбитків, параметри проксі, автоматизація, командна співпраця та ціноутворення, щоб допомогти вам вибрати правильний інструмент для масштабу вашого бізнесу.
- AdsPower vs Kameleo: порівняння антидетект-браузерів 2026 - Порівняння AdsPower і Kameleo для мультиакаунтингу та веб-скрапінгу: відбитки, автоматизація, ціноутворення, безкоштовні тарифи та для кого підходить кожен інструмент у 2026 році.
Джерела та додаткове читання
- Встановлення | Playwright - Вступ
- Глобальне налаштування та завершення | Playwright - Вступ
- Встановлення | Playwright - Передумови
Часті запитання
Скільки часу займає налаштування Playwright?
Встановлення та перший успішний тест зазвичай займають менше десяти хвилин на підтримуваній ОС. Ініціалізатор завантажує бінарні файли браузерів, що є найповільнішим кроком на новій машині.
Чи потрібно встановлювати браузери окремо?
Зазвичай ні. npm init playwright@latest завантажує їх за замовчуванням. Вам потрібно вручну виконати npx playwright install лише після оновлення Playwright або під час налаштування машини без ініціалізатора.
Яка різниця між globalSetup і залежностями проєкту?
Залежності проєкту запускаються як звичайний проєкт, тому вони з'являються в HTML-звіті, записують трасування та підтримують фікстури. globalSetup — це одна функція, яка запускається перед усім і не має цих можливостей. Документація Playwright рекомендує залежності проєкту.
Чи може Playwright працювати в headed-режимі в CI?
Так, але CI-машини зазвичай не мають сервера дисплея. Використовуйте віртуальний дисплей, наприклад Xvfb, або залишайте тести безголовими та покладайтеся на трасування й відео для налагодження.
Як запустити лише один браузер під час розробки?
Використовуйте npx playwright test --project=chromium. Це пропускає інші проєкти та значно скорочує цикли зворотного зв'язку.
Чи підтримує Playwright мобільне тестування?
Так. Playwright включає вбудовану емуляцію мобільних пристроїв для Chrome на Android і Mobile Safari, яка налаштовується через пресети пристроїв у ваших проєктах.
Висновок
Надійне налаштування Playwright — це три речі: правильне встановлення, конфігурація, що відповідає вашому CI-середовищу, та стратегія глобального налаштування, яка не конфліктує з тестовим раннером. Почніть з ініціалізатора, запустіть приклад тесту, а потім додавайте проєкти та проєкт налаштування в міру зростання вашого набору тестів. Коли вашій автоматизації потрібно працювати з багатьма акаунтами, а не з однією сесією користувача, додайте антидетект-браузер, щоб кожен запуск мав власну чисту ідентичність — і залишайте Playwright зосередженим на тому, що він робить найкраще: керуванні браузером і повідомленні про те, що зламалося.



