Playwright — Chromium, Firefox va WebKit browser engine’larini avtomatik boshqarish uchun yaratilgan test va browser automation vositasi. U web applicationlarning E2E testi, component testi, scrapingga yaqin boshqariladigan vazifalar va browser behaviorini tekshirishda ishlatiladi.
Playwright automatic waiting, browser context, network interception, trace va parallel test runner imkoniyatlari bilan ajralib turadi.
Browser engine
Playwright quyidagi engine’larni boshqaradi:
- Chromium;
- Firefox;
- WebKit.
Bu testni turli browser behaviorida tekshirish imkonini beradi.
Engine buildlari tool bilan boshqarilishi mumkin.
Real branded browser va mobile Safari bilan mutlaq tenglik kafolatlanmaydi.
Browser
Browser process bir yoki bir nechta contextni saqlaydi.
Test runner worker darajasida browserni qayta ishlatishi mumkin.
Har test uchun butun process ochish sekin.
Isolation browser context orqali olinadi.
Browser context
Context alohida incognito profile’ga o‘xshaydi.
U o‘z:
- cookie;
- local storage;
- permission;
- cache;
- session
holatiga ega.
Bir browser process ichida ko‘p izolyatsiyalangan context tez yaratiladi.
Page
Page browser context ichidagi tab yoki sahifani ifodalaydi.
U:
- navigate;
- locator;
- click;
- fill;
- evaluate;
- screenshot;
- event
APIlariga ega.
Popup yangi Page sifatida olinadi.
Locator
Locator elementni darhol fixed reference sifatida emas, qayta topiladigan query sifatida ifodalaydi.
Tavsiya etiladigan locatorlar:
Bu accessibility va user ko‘radigan ma’noga yaqin.
Auto-wait
Playwright actiondan oldin elementning kerakli holatini kutadi.
Masalan, click uchun element:
- attached;
- visible;
- stable;
- enabled;
- eventni qabul qila oladigan
bo‘lishi kerak.
Shu sababli qo‘lda ko‘p sleep yozish zarurati kamayadi.
Assertion retry
Web-first assertion ma’lum timeout ichida actual holat expected qiymatga kelishini kutadi.
Masalan:
expect(locator).to_be_visible()
Asynchronous UI uchun oddiy bir martalik tekshiruvdan barqarorroq.
Timeout failure paytida actual holat ko‘rsatiladi.
Network interception
Requestlarni kuzatish, o‘zgartirish yoki mock qilish mumkin.
Misollar:
Barcha E2E testni mocked network bilan bajarish real backend integrationini yashiradi.
Route
URL pattern bo‘yicha route handler ishlaydi.
Handler requestni:
- davom ettiradi;
- abort qiladi;
- boshqa response bilan fulfill qiladi;
- parametrini o‘zgartiradi.
Route tartibi va service worker requestlari e’tiborga olinadi.
Storage state
Login qilingan context cookie va local storage holatini faylga saqlashi mumkin.
Keyingi testlar shu state bilan boshlanadi.
Bu har testda UI loginni takrorlashni kamaytiradi.
State fayli sensitive token saqlashi mumkin va repositoryga ochiq qo‘yilmaydi.
Device emulation
Viewport, user agent, touch, locale, timezone va geolocation sozlanadi.
Mashhur device profillari mavjud.
Bu responsive behaviorni tekshiradi.
Emulation real device hardware, browser chrome va performance’ni to‘liq takrorlamaydi.
Permission
Context camera, geolocation, notification kabi permissionlarni boshqarishi mumkin.
Permission origin bo‘yicha beriladi.
Real browserda user prompt behaviori alohida test talab qilishi mumkin.
Sensitive API HTTPS yoki secure contextga bog‘liq.
Trace
ma’lumotlarini saqlaydi.
Trace viewer failure’ni qadam-baqadam tahlil qilishga yordam beradi.
CI artifact sifatida faqat failure yoki retry’da saqlanishi mumkin.
Video va screenshot
Har test yoki failure uchun video yozish mumkin.
Screenshot full page yoki aniq elementga olinadi.
Artifactlar disk va CI storage sarfini oshiradi.
Test runner
Playwright Test quyidagilarni beradi:
Project orqali browser, device yoki environment matrix yaratiladi.
Fixture
Built-in page, context va browser fixturelar mavjud.
Custom fixture API client, test user yoki server yaratishi mumkin.
Scope test yoki worker bo‘yicha tanlanadi.
Worker fixture mutable data ulashsa parallel conflict paydo bo‘lishi mumkin.
Parallelizm
Test fayllari workerlar orasida parallel bajariladi.
Har test izolyatsiyalangan data va contextga ega bo‘lishi kerak.
Serial mode faqat haqiqiy ketma-ket workflow uchun ishlatiladi.
Serial testlar failure’dan keyin qolganlarini skip qilishi mumkin.
Retry
Flaky testni aniqlash uchun retry ishlatilishi mumkin.
Birinchi run yiqilib, retry o‘tsa report flaky deb belgilaydi.
Retry muammoni yakuniy yechim emas.
Trace va log bilan sabab topiladi.
API testing
Browser bilan birga HTTP request context orqali API chaqirish mumkin.
Bu test setup, cleanup va API-level acceptance uchun foydali.
Browser cookie state’i bilan API contextni bog‘lash mumkin.
Backend contract uchun alohida testlar saqlanadi.
Popup va download
Popup event orqali yangi page olinadi.
Download boshlanishi oldindan event bilan kutiladi, keyin suggested filename va content tekshiriladi.
Fixed download directoryga tayanish parallel testlarda collision yaratishi mumkin.
Playwright va Selenium
Playwright browser context, automatic wait va network controlni bir paketda beradi.
Selenium W3C WebDriver ekotizimi va ko‘p til supportiga ega.
Playwright ham bir nechta til bindinglarini taqdim etadi, ammo test runner imkoniyati tilga qarab farq qilishi mumkin.
Bog‘liq tushunchalar
Playwright, Browser automation, Browser context, Locator, Auto-wait, Network interception, Trace viewer, E2E testing, Chromium, WebKit, Firefox