Bosh sahifa Wiki Playwright

Playwright

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:

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:

  • API response stub;
  • request header tekshirish;
  • image bloklash;
  • error simulyatsiyasi;
  • offline holat.

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

Trace test davomida:

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.

Retention policy belgilanadi.

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 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