Sparround

Locator-lar və auto-waiting

Playwright-ın locator prioriteti (rəsmi tövsiyə) — user-in gördüyü kimi:

  • getByRole('button', { name: 'Ödə' }) — accessibility role + ad (ən davamlı)
  • getByLabel('Email') — form sahələri üçün
  • getByPlaceholder, getByText — mətn əsaslı
  • getByTestId('checkout-btn')data-testid atributu (dev-lərlə razılaşdırılmış)
  • CSS/XPath — SON çarə; struktur zəncirləri (div > div:nth-child(3)) refactoring-də sınır

Auto-waiting: Playwright hər action-dan əvvəl elementin actionable olmasını (görünür, aktiv, stabil, tıklana bilən) özü gözləyir — sleep() yazmaq lazım deyil və YANLIŞDIR.

Strict mode: locator birdən çox elementə uyğun gəlsə, Playwright xəta atır — bu, gizli səhv seçimlərin qarşısını alır. Həll yolları: locator-u dəqiqləşdir, filter() istifadə et, və ya bilərəkdən çoxluqla işləyirsənsə first()/nth().

Zəncirlənmə və filter — mürəkkəb UI üçün: page.getByRole('row').filter({ hasText: 'Sifariş #42' }).getByRole('button', { name: 'Ləğv et' }).

İnterview-də "sleep niyə pisdir?" mütləq soruşulur: sabit gözləmə ya HƏDDƏN ARTIQ gözləyir (suite yavaşlayır), ya AZ gözləyir (flaky). Şərt əsaslı gözləmə (auto-wait, web-first assertion) lazım olan qədər — nə az, nə çox — gözləyir.

📚 Mənbələr və sənədlər

  • Locator-larrəsmiplaywright.dev
  • Actionabilityrəsmiplaywright.dev

    Playwright-in hər action-dan əvvəl gözlədiyi şərtlərin rəsmi siyahısı.