Playwright
Playwright — відкрита бібліотека автоматизації браузера й раннер тестів від Microsoft, що керує Chromium, Firefox і WebKit ззовні браузера. Сторінка починається з дванадцяти маршрутів зі сторінки «Наскрізне тестування», написаних на Playwright, — механізму, на який спирається кожен, і конфігурації, що проганяє їх приблизно за чотири хвилини, — далі одне зʼєднання, з якого випливає все, браузери, які він насправді запускає, автоочікування, контексти й воркери, чого тест може дістати, крім сторінки, траси й повтори, чотири зміни під робочими наборами і де він не допомагає.
- Поточна версія
- 1.64 · жовтень 2026
- Тест виконується
- Поза браузером
- Одиниця ізоляції
- Контекст браузера
Дванадцять маршрутів магазину в Playwright на одному екрані — механізм, на який спирається кожен
Ніхто не відкриває сторінку про Playwright заради його історії. Її відкривають, коли треба написати набір або полагодити його, і корисне питання тут конкретне: що потрібно кожному маршруту від інструмента і яка частина інструмента це дає? Нижче — дванадцять маршрутів зі сторінки «Наскрізне тестування», той самий інтернет-магазин і той самий час, — так, як магазин пише їх на Playwright. Четверта колонка називає механізм, на який спирається кожен маршрут. Розділи після таблиці пояснюють, звідки береться кожен механізм, і посилаються на маршрути за номерами, а на конфігурацію нижче — за рядками.
| # | Маршрут | Що йому потрібно від інструмента | У Playwright | Час |
|---|---|---|---|---|
| 1 | Знайти «синій светр», відкрити SKU 30417, оплатити тестовою карткою, отримати номер замовлення | Ввести дані в поля картки, що живуть в iframe платіжного провайдера на іншому домені | frameLocator() дістає у фрейм з іншого домену так само, як у сторінку; номер замовлення — перевірка, що на нього чекає | 90 с |
| 2 | Зареєструватися, підтвердити пошту, увійти, перезавантажити — досі в акаунті. У Chromium і у WebKit | Той самий тест у двох рушіях браузера | Два проєкти в конфігурації (рядки 2.2 і 2.3); один файл із тегом @webkit іде в обох | 2 × 60 с |
| 3 | Скинути забутий пароль за посиланням із листа | Прочитати тестову скриньку, якої браузер не бачить | Фікстура request питає API скриньки, expect.poll повторює, доки лист не прийде, потім page.goto() іде за посиланням | 45 с |
| 4 | Застосувати SPRING10, змінити кількість, оплатити | Порівняти екран із тим, що провайдера попросили списати | request читає списання з API пісочниці; тест порівнює його із сумою на сторінці | 70 с |
| 5 | Оплатити карткою з 3-D Secure: перехід на перевірку банку й назад | Піти з домену магазину й повернутися в ту саму сесію | Нічого особливого: контекст переходить між доменами, як людина, і його cookie повертаються разом із ним | 80 с |
| 6 | Картку відхилено; оплатити ще раз іншою карткою | Рівно одне замовлення після цього | request рахує замовлення клієнта через API після другої оплати | 75 с |
| 7 | Спитати асистента замовлень «де моє замовлення» про щойно оформлене замовлення | Модель асистента, відтворена із запису, — але модель викликає сервер | Не page.route(), що бачить лише те, що надсилає браузер: відтворення задане в середовищі, а Playwright перевіряє статус на екрані | 40 с |
| 8 | Почати повернення на 30-й день; етикетка для повернення приходить листом | 30-й день вікна повернення — і в браузері, і на сервері | page.clock.setFixedTime() задає дату браузера; тестовий годинник сервера задають через його власний API — Playwright туди не дістає | 60 с |
| 9 | Склад підтверджує, що повернення прибуло; гроші повертаються | Надіслати вебхук складу, а потім чекати на лист | request.post() надсилає вебхук із тесту; expect.poll чекає на скриньку з тайм-аутом, написаним під неї (розділ 6) | 90 с |
| 10 | Змінити адресу доставки після замовлення, до відвантаження | Прочитати, що отримав склад | Звичайні дії, потім request читає тестовий ендпоінт складу | 50 с |
| 11 | Оформити замовлення як гість, потім створити акаунт зі сторінки підтвердження | Почати справді анонімно | Кожен тест починається у свіжому контексті браузера: жодних cookie й жодного сховища після маршруту 10 | 70 с |
| 12 | Агент підтримки повертає гроші за пошкоджений товар у бек-офісі | Друга особа, вже залогінена | Підготовчий проєкт один раз логінить агента й зберігає стан сховища (рядок 2.1); тест відкриває з ним контекст | 60 с |
Таблиця каже, що робить кожен маршрут. Конфігурація нижче каже, як ідуть усі дванадцять: де, у яких браузерах, скільки водночас і що відбувається, коли один падає. Кожен рядок — рішення, яке магазин ухвалив свідомо, і для кожного є розділ нижче.
1.Де він працює
baseURLбереться із середовища, зібраного для цього мерджу з артефакту, що йде в реліз, — ніколи не спільна адреса стейджингу.timezoneIdіlocaleзафіксовані, тож дата й ціна в євро форматуються однаково на кожній машині.- Аналітику, карти й маркетинговий чат заблоковано через
context.route()у спільній фікстурі: це запити браузера, від яких не залежить результат жодного маршруту.
2.Проєкти
setupлогінить агента підтримки й зберігає стан уplaywright/.auth/agent.json, який є в.gitignore.chromiumпроганяє всі дванадцять маршрутів на кожен мердж, післяsetup.webkitпроганяє маршрут 2 на кожен мердж і всі дванадцять уночі;firefoxіде лише вночі.
3.Скільки водночас
- Один маршрут на файл,
fullyParallel: true,workers: 4у CI/CDContinuous Integration / Continuous Delivery — автоматична збірка й доставкаКожен коміт автоматично складається і проганяється через тести (CI), а придатна збірка так само автоматично їде на сервери (CD). Сенс не в автоматизації як такій, а в тому, що поломку видно за хвилини, а не в день релізу.Докладніше в статті →Усі терміни — розмір, під який зібране тестове середовище. forbidOnly: trueу CI, тож забутийtest.onlyвалить запуск, а не тихо пропускає одинадцять маршрутів.
- Один маршрут на файл,
4.Коли один падає
retries: 1у CI зretryStrategy: 'isolated', тож повтор іде сам наприкінці, а не поруч із наступним маршрутом.trace: 'on-first-retry', і траса вивантажується як артефакт збірки.- Маршрут, позначений як flakyто падає, то ні на тому самому кодіТест, що на незмінному коді то проходить, то падає. Справжня шкода не в самому падінні, а в тому, що з нього випливає: щойно таких стає кілька, люди починають перезапускати до зеленого — і набір тестів перестає бути доказом чого завгодно.Докладніше в статті →Усі терміни двічі за тиждень, іде в карантин — правило зі сторінки «Регресійне тестування».
@playwright/testзакріплено на точній версії й оновлюють окремою зміною, бо оновлення змінює й браузери.
Одне зʼєднання поза процесом — і які браузери ви насправді тестуєте
Ваш тест виконується у власному процесі Node.js. Playwright запускає поруч браузер і тримає з ним одне зʼєднання відкритим увесь запуск. Для браузера, який він запустив сам, це канал (pipe) між двома процесами; щоб дістатися браузера на іншій машині — WebSocketпостійний двосторонній звʼязокЗʼєднання, що лишається відкритим в обидва боки: на відміну від HTTP, сервер може надіслати повідомлення сам, не чекаючи запиту. На ньому тримаються чати й живі стрічки — і більшість того, що виглядає як сторінка, що оновлюється сама.Усі терміни. Кожна інструкція йде вниз цим зʼєднанням, і кожна подія повертається ним угору. Для Chromium мова на дроті — Chrome DevTools Protocolяк інструменти керують ChromeПротокол, яким інструменти розробника Chrome оглядають браузер і керують ним; до нього може підʼєднатися будь-яка програма. Інструменти тестування, як-от Playwright і Puppeteer, керують через нього Chromium, тож бачать стан браузера напряму, а не крізь сторінку.Усі терміни. Для Firefox і WebKit Playwright постачає власні збірки, пропатчені так, щоб говорити його протоколом.
Ця одна схема пояснює найвідоміші властивості інструмента. Оскільки драйвер бачить стан браузера напряму, а не крізь сторінку, він може оглянути елемент перед дією й почекати, доки дія матиме сенс, — розділ 3. Оскільки все йде одним зʼєднанням, увесь запуск можна записати й відкрити пізніше, — розділ 6. І оскільки одиниця ізоляції — контекст браузера, а не браузер, чиста сесія коштує мілісекунди, а не запуск браузера, і саме це робить справжню паралельність доступною, — розділ 4.
Патчі пояснюють факт, що дивує людей. Playwright не керує Firefox чи Safari, встановленими на вашій машині: його документація каже, що він не працює з брендовою версією жодного з них, бо покладається на патчі. А «Chromium» означає різні бінарні файли в різних режимах. Таблиця показує, що запускається насправді.
| Ви налаштовуєте | Що запускається насправді | Що варто знати |
|---|---|---|
chromium, headless — типово в CI | Headless shell від Chromium — окремий, легший бінарний файл | Google називає новий headless-режим справжнім браузером Chrome, придатнішим для точного наскрізного тестування вебзастосунків; увімкнути — channel: 'chromium' |
chromium, з вікном — ваш ноутбук | Chrome for Testing, з версії 1.57 (листопад 2025) | Вікно, яке ви бачите локально, — не той бінарний файл, що працював у CI без вікна |
channel: 'chrome' або 'msedge' | Брендовий стабільний браузер, встановлений на машині | Для політики «тестуйте те, що запускають клієнти» і для медіакодеків, яких немає в Chromium |
firefox | Пропатчений Firefox від Playwright, що відповідає поточному Firefox Stable | Брендовим Firefox керувати не можна |
webkit | Пропатчений WebKit від Playwright, зібраний з основної гілки WebKit | Часто випереджає Safari — і не є Safari. На Linux залежні від платформи можливості, як-от медіакодеки, відрізняються від Mac |
Автоочікування: шість перевірок перед кожною дією — і дві речі, яких вони не виправлять
Найчастіша причина ненадійності браузерного тесту — він діяв або перевіряв раніше, ніж застосунок був готовий. У 2021 році Романо з колегами прочитали 235 нестабільних UIUser Interface — те, що бачить користувачУсе, що користувач бачить і чим керує: екрани, кнопки, поля, стани. UI відповідає за те, ЯК виглядає взаємодія; чи має вона сенс узагалі — це вже питання UX, і ці два поняття плутають постійно.Усі терміни-тестів із 62 веб- і Android-проєктів і простежили причину кожного. 105 із них, 45,1%, виявилися проблемами очікування, а лише у вебпроєктах ця частка становила 52%. Старіші інструменти відповідали на це паузами й ручними очікуваннями, тобто здогадкою в одязі коду. Playwright відповідає перевірками, які запускає перед кожною дією проти елемента таким, яким він є цієї миті, і повторює їх, доки вони не пройдуть або не спливе тайм-аут дії.
| Перед кліком елемент… | Що це означає | Момент у маршруті 1, який вона перечікує |
|---|---|---|
| є рівно одним елементом | Локатор знаходить один елемент. Жодного поки: чекає. Два: одразу падає з помилкою строгого режиму | Сторінка рендерить кнопку «Оплатити» для телефонів і для десктопа; тест падає, а не клікає ту, що трапилася першою |
| видимий | Непорожня рамка й не visibility:hidden — елемент з opacity:0 вважається видимим | Підсумок кошика ще згорнутий |
| стабільний | Та сама рамка щонайменше два анімаційні кадри поспіль | Підсумок виїжджає й зсуває кнопку вниз |
| приймає події | Саме в нього влучить клік у цій точці | Спінер накриває кнопку, поки сума перераховується |
| увімкнений | Немає disabled ні на ньому, ні на його fieldset, немає aria-disabled вище | Кнопка вимкнена, доки поля картки не пройдуть валідацію |
| не інертний | Не всередині піддерева з inert і не за відкритим модальним <dialog> | Діалог згоди на cookie ще відкритий |
Друга половина моделі — локатор. Локатор не є елементом. Це опис того, як його знайти, і він розвʼязується заново щоразу при використанні, тож на сторінці, що перерендерюється під тестом, він знаходить поточний елемент, а не тримає вузол, якого вже немає. Перевірки на локаторі працюють так само: повторюються, доки умова не виконається, типово пʼять секунд. Для умови, якої взагалі немає на сторінці, — листа в тестовій скриньці, запису на складі — expect.poll повторює функцію, доки її результат не пройде перевірку, і саме так маршрути 3 і 9 чекають без жодної паузи.
Контексти, воркери й чотирихвилинний запуск
Кожен тест типово отримує свіжий контекст браузера: жодних спільних cookie, жодних залишків у сховищі, жодної залежності від порядку між маршрутами. Це тиха причина, чому набори Playwright лишаються стабільними, коли ростуть. Найчастіше джерело «окремо проходить, у наборі падає» прибирає типова поведінка, а не дисципліна.
Паралельність дають воркери. Воркер — процес операційної системи з власним браузером; воркери не можуть спілкуватися між собою, і воркер завершують після будь-якого падіння тесту, тож наступний тест ніколи не успадковує зламаний браузер. Файли тестів ідуть паралельно на різних воркерах, а тести всередині одного файлу — по порядку в одному воркері, якщо не ввімкнено fullyParallel. Магазин тримає один маршрут на файл і все одно вмикає його (рядок 3.1 конфігурації), тож одиниця, яку роздає планувальник, — один маршрут.
Увійти раз, використати всюди
Підготовчий проєкт логіниться й зберігає стан сховища; тести, яким потрібна ця особа, стартують із ним. Документація радить так робити для тестів, що не змінюють стан на сервері, і по акаунту на воркер — для тих, що змінюють.
Фікстури замість коду підготовки
Фікстура — названа річ, яку просить тест: залогінена сторінка, засіяне замовлення, API-клієнт. Її будують на вимогу й прибирають після, тож маршрут оголошує, що йому потрібно, а не облаштовує це.
Блокування для того, що не можна ділити
З версії 1.63 тест може тримати іменоване блокування: тести з тим самим блокуванням ніколи не йдуть водночас — між файлами, воркерами й проєктами, — а все інше лишається паралельним. Це для того одного зовнішнього акаунта, що не витримує двох авторів змін.
Шарди й перемішування, щоб знайти залежність
Той самий набір ділиться між машинами CI через
--shard=1/3, а звіти потім зливаються. З версії 1.64--shuffleзапускає тести у випадковому порядку з seed для повтору — так виявляється тест, що тихо залежить від іншого.
Чого тест може дістати, крім сторінки, — і де це закінчується
Три можливості, крім кліків, змінюють те, що взагалі належить маршруту. Перша — API-клієнт. Фікстура request надсилає запити з тесту, а page.request ділить cookie контексту браузера в обидва боки, тож маршрут може підготувати стан через API за пʼятдесят мілісекунд і потім перевірити одну річ у браузері. Друга — маршрутизація мережі: запити сторінки можна спостерігати, затримувати, відповідати на них із записаного HAR-файлу або блокувати. Третя — годинник, що замінює Date, таймери й анімаційні кадри сторінки годинником, яким керує тест.
| Потреба | У Playwright | Дістає | Не дістає |
|---|---|---|---|
| Підготувати чи перевірити стан | request, page.request | API магазину, платіжну пісочницю, тестову скриньку — маршрути 3, 4, 6, 9, 10 | Усе, що не має API |
| Замінити третю сторону | page.route(), context.route(), routeFromHAR() | Запити, які робить браузер, — аналітику, карти (рядок 1.3 конфігурації) | Виклики, які один сервер робить до іншого: модель асистента (7), етикетки перевізника (8) |
| Керувати часом | page.clock | Date, таймери й анімаційні кадри всередині сторінки | Годинник сервера — 30-й день треба задати й на бекенді (8) |
| Другий користувач | browser.newContext() | Скільки завгодно ізольованих користувачів в одному тесті — маршрут 12 | Нічого: тут інструмент найсильніший |
Падіння, яке можна відкрити: траси, повтори й позначка flaky
Дорога частина наскрізного падіння — рідко саме падіння. Це година спроб відтворити його на ноутбуці, де воно не стається. Відповідь — траса, і саме це налаштування варто зробити правильно раніше за будь-яке інше. Траса записує кожну дію зі знімком сторінки до й після неї, мережевий лог, консоль і рядок коду. Магазин пише її на першому повторі (рядок 4.2 конфігурації) і вивантажує разом зі збіркою. Вона відкривається локально або на trace.playwright.dev, який, за документацією, завантажує трасу повністю в браузері й нічого нікуди не передає.
Траса на схемі — маршрут 9 у вівторок. Перша спроба впала, повтор пройшов, тож звіт каже flaky, — а саме для повтору магазин і пише трасу. Вона показує, що гроші повернено на сторінці на 1,4 секунди, тобто магазин свою роботу зробив. Вона показує, що опитування скриньки вісім разів повернулося порожнім, а лист прийшов на 4,6 секунди — при типовій межі опитування 5,0. Першій спробі просто забракло цих останніх 0,4 секунди. Нікому не довелося нічого відтворювати, і діагноз — тайм-аут, а не продукт. Виправлення — межа, написана під умову, 15 секунд, бо 99-й перцентиль поштового конвеєра — близько девʼяти, і ніколи не пауза перед опитуванням.
Повтори — місце, де набір тихо бреше. Playwright позначає тест, що впав і пройшов на повторі, як «flaky», а не «passed», і типово запуск однаково завершується зеленим; --fail-on-flaky-tests робить його червоним. Магазин тримає один повтор, запускає його сам наприкінці з retryStrategy: 'isolated', щоб повтор не змагався з наступним маршрутом за середовище, і рахує позначки flaky як окремий сигнал (рядки 4.1 і 4.3 конфігурації). З версії 1.57 HTML-звіт має ще й вкладку Speedboard, що сортує тести за повільністю, — перше місце, куди дивитися, коли чотири хвилини стають сімома.
- Користуйтеся інтерактивним режимом,
--ui, під час написання маршруту: запуск стає на паузу, локатор під курсором підсвічується, і можна спробувати інший на живій сторінці. - Ставтеся до записаного коду як до чернетки. Запис сценарію швидко дає робочі локатори, і вони майже завжди крихкіші за ті, які ви обрали б свідомо.
- З версії 1.56 Playwright постачає три визначення агентів для асистентів програмування: планувальник, що досліджує застосунок і пише план тестів, генератор, що перетворює план на тести, і «лікар», що проганяє набір і лагодить тести, які падають.
Чотири зміни під робочими наборами
Жодна з цих змін не скандал. Кожна — датована зміна в Playwright чи в браузерах під ним, опублікована тими, хто її зробив, і кожна відділила набори, що закріплювали й оновлювали версії свідомо, від тих, що ні. Вони тут, бо браузерний тест залежить не лише від власного коду, і ці чотири показують, від чого ще.
| Зміна | Що вона виявила | Що захистило набір |
|---|---|---|
Playwright 1.49, листопад 2024: канали chrome і msedge переходять на новий headless-режим Chrome | Набори на цих каналах відтепер працювали з іншим headless-браузером. Примітки до релізу: якщо набір падає, найімовірніше, доведеться оновити знімки, а код довкола PDF-переглядача й розширень — адаптувати. | Оновлення окремою зміною і базові скриншоти, які вважають належними до збірки браузера, а не до продукту. |
CVE-2025-59288, 14 жовтня 2025: скрипти macOS, що встановлюють брендові Chrome і Edge, використовували curl -k | Скрипти, що стоять за встановленням chrome і msedge на Mac, пропускали перевірку сертифікатів, і, як каже бюлетень, завантажені файли встановлювалися як привілейовані застосунки. Виправлено в 1.55.1. | Ставлення до завантаження браузера як до частини ланцюга постачання: закріплена версія, яку оновлюють свідомо, і образи CI, зібрані раз і використані повторно, а не встановлення браузерів на кожен запуск. |
| Playwright 1.57, листопад 2025: збірки Chromium замінено на Chrome for Testing | Нічого функціонального, за задумом: запуски з вікном перейшли на chrome від Chrome for Testing, а headless — на його headless shell, і примітки казали, що найбільша зміна — нова іконка й назва на панелі. | Нічого не знадобилося — і в цьому суть рядка. Набір, що закріплює версії й оновлює їх свідомо, переживає зміну збірки браузера як неподію, а знання, який бінарний файл запускає кожен режим (розділ 2), робить розмову «локально проходить, у CI падає» короткою. |
| Playwright 1.63, вересень 2026: експериментальні пакети компонентного тестування перестають оновлюватися | Команди з компонентними наборами на @playwright/experimental-ct-react чи -vue мусили перейти на модель історій, що зʼявилася в 1.62. | Читання «experimental» у назві пакета як обіцянки, якою воно є, тобто жодної, — і невеликий вихід, наприклад, коли кожен компонентний тест монтується через один хелпер, щоб переїзд тривав день, а не квартал. |
Де він не допомагає і як порівнюється
Playwright — розумний вибір за замовчуванням для нового браузерного набору у 2026 році, а значення за замовчуванням заслуговує, щоб його застереження назвали прямо, а не виявили на третій місяць.
- WebKit не є Safari. Це той самий рушій, пропатчений і зібраний з основної гілки WebKit, без браузера Apple навколо: він ловить різницю рушіїв, але не все, що специфічне для Safari, яким користуються клієнти.
- Мобільна емуляція — це вʼюпорт, user agent і дотик, а не пристрій. Вона знаходить проблеми верстки й не знайде бага справжнього мобільного браузера.
- Його досяжність закінчується на боці мережі, де браузер. Виклики між серверами й власний годинник сервера належать середовищу, а не тесту.
- Він не тестує нативні десктопні чи мобільні застосунки й не є інструментом навантажувального тестування, хай якою спокусливою виглядає сотня паралельних контекстів.
- Він робить нестабільні тести менш імовірними, але не робить добрим погано обраний набір. Чотириста наскрізних кейсів тут хибні рівно з тих самих причин, що й будь-де.
Обирайте Playwright, коли
- Ви починаєте набір зараз і жодне обмеження не штовхає вас до іншого.
- Маршрутові потрібні кілька користувачів, кілька доменів, платіжний iframeсторінка всередині сторінкиHTML-елемент, що вбудовує інший документ у сторінку, — платіжну форму, відео, вікно входу. Коли він з іншого домену, браузер відгороджує його від сторінки навколо, і тому інструмент тестування може як змогти, так і не змогти щось у нього ввести.Усі терміни чи кілька вкладок.
- Важить час набору: паралельність на контекстах дешева, а шардинг вбудований.
- Ви хочете діагностувати падіння в CI з одного файлу, не відтворюючи його.
Дивіться в інший бік, коли
- Треба ганяти брендові браузери, які мають клієнти, — передусім справжній Safari — на гриді справжніх машин; це територія Selenium.
- Ваші тести пишуть мовою, для якої Playwright не має бібліотеки, або команда вже живе в стеку Selenium.
- Є великий робочий набір на Cypress: міграція зазвичай коштує більше, ніж повертає.
- Тестувати треба нативний застосунок, десктопний клієнт чи поведінку рівня системи.
Антипатерни, які варто назвати
- Явні очікування «про всяк випадок» поверх автоочікування: вони сповільнюють набір і ховають справжнє питання часу.
- Локатори за CSS-класом чи позицією в DOM, бо так записав рекордер: кожен редизайн перетворюється на день ремонту тестів.
- Один контекст на кілька тестів заради часу: так повертається залежність від порядку, яку інструмент і мав прибрати.
- Повтори, які підвищують, доки пайплайн не позеленіє: справжні плаваючі дефекти так стають успішними запусками.
- Незакріплений
@playwright/test, тож браузери змінюються в день, який ніхто не обирав. - Юніт-логіка, перенесена в браузерні тести, бо інструмент приємний, — найдорожчий спосіб бути ретельним.
Коли це застосовувати
Застосовуйте, коли
- Новий браузерний набір, де важать і надійність, і час виконання, і немає обмежень щодо мови.
- Маршрути з кількома користувачами, кількома доменами, платіжним iframe чи кількома вкладками.
- Набори, що мають запускатися на кожен мердж, — із воркерами на одній машині й шардами на кількох.
- Скрізь, де Chromium, Firefox і WebKit мають запускатися з того самого файлу тестів, закріплені на одній версії.
Уникайте, коли
- Як доказ, що сторінка працює у випущеному Safari чи справжньому мобільному браузері: WebKit і емуляція цього не покривають.
- Для поведінки, що живе між серверами чи на годиннику сервера: тест туди не дістає.
- Для нативних десктопних чи мобільних застосунків або як інструмент навантажувального тестування.
- Як привід нарощувати наскрізний набір: приємний інструмент не змінює того, що належить цьому рівню.
Джерела й метод
На чому стоїть ця стаття
- 11 джерел
- Перевірено 19 жовтня 2026 р.
Інструмент — за його власною документацією
браузери, перевірки, воркери, API-клієнт, годинник і траси в розділах 2–6- ДокументаціяBrowsers (відкривається в новій вкладці)Playwright
- ДокументаціяAuto-waiting (відкривається в новій вкладці)Playwright
- ДокументаціяParallelism (відкривається в новій вкладці)Playwright
- ДокументаціяAuthentication (відкривається в новій вкладці)Playwright
- ДокументаціяAPI testing (відкривається в новій вкладці)Playwright
- ДокументаціяClock (відкривається в новій вкладці)Playwright
- ДокументаціяTrace viewer (відкривається в новій вкладці)Playwright
- ДокументаціяHeadless Chrome shell (відкривається в новій вкладці)Chrome for Developers
Дослідження
частка нестабільних UI-тестів, що є проблемами очікування, у розділі «Автоочікування»Зміни
чотири рядки розділу «Чотири зміни під робочими наборами»Дослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.
Було корисно?
Поділіться з тим, хто працює над тією ж задачею.