Auto-wait — browser automation frameworkining action yoki assertionni bajarishdan oldin kerakli texnik holatlarni avtomatik kutish xususiyatidir. Masalan, click buyrug‘i element DOMga kelishi, ko‘rinishi, barqarorlashishi va enabled bo‘lishini kutishi mumkin. Bu fixed sleep va ko‘p qo‘lda yozilgan explicit waitlarga ehtiyojni kamaytiradi.
Actionability
Actionga qarab shartlar farq qiladi. Click uchun locator bitta elementga mos kelishi, element visible, stable, event qabul qila oladigan va enabled bo‘lishi talab qilinadi. Fill editable inputni, check esa tegishli control holatini kutadi. Framework timeout ichida locatorni qayta baholab turadi.
Stable sharti animation yoki layout harakatining tugashini kutishi mumkin. Receives events elementi overlay bilan yopilmaganini tekshiradi. Bu shartlar foydalanuvchi amali real bajarilishi ehtimolini oshiradi, ammo applicationning biznes jihatdan tayyorligini to‘liq bilmaydi.
Assertion retry
Auto-retrying assertion qiymatni bir marta olib solishtirmaydi. Masalan, matn kutilgan qiymatga yetguncha locator qayta tekshiriladi. Oddiy til assertionida avval textContent()ni olib, keyin compare qilish retry mexanizmini chetlab o‘tishi mumkin.
Timeout paytida xabar kutilgan va olingan holatlar hamda retry logini ko‘rsatadi. Assertionning scopei aniq bo‘lsa diagnostika ham aniq bo‘ladi. Juda keng locator ko‘p elementga mos kelib, actionning strictness tekshiruvini yiqitishi mumkin.
Navigation bilan bog‘lanish
Click navigation boshlasa framework action va navigation signalini muvofiqlashtiradi. Biroq SPA route change, WebSocket xabari yoki background job tugashi standart page load hodisasiga teng emas. Test kutilgan URL, response, visible holat yoki domen signalini assertion orqali ifodalaydi.
Network idle ni universal tayyorlik belgisi deb qabul qilish xavfli. Analytics, polling va uzun connection tarmoqni hech qachon to‘liq idle qilmasligi mumkin; aksincha, UI hisoblash network tugagandan keyin davom etadi.
Explicit wait bilan chegarasi
Auto-wait locator va actionning texnik shartlarini qoplaydi. “Hisobot yaratildi” yoki “queue qayta ishladi” kabi server-side biznes holati uchun kuzatiladigan aniq signal kerak. Bu holatda explicit assertion, API polling yoki event kuzatuvi ishlatiladi.
Actiondan oldin waitForTimeout(5000) qo‘shish auto-waitni yaxshilamaydi. U failureni besh soniya kechiktiradi va muhit tezligiga bog‘laydi. Frameworkning timeouti shartga bog‘langan retry uchun ishlatiladi.
Cheklov va force
Force option ayrim actionability tekshiruvlarini chetlab o‘tishi mumkin. Bu foydalanuvchi bosa olmaydigan elementni test orqali bosib, haqiqiy UI bugini yashiradi. Force faqat aniq maxsus holat va uning sababi tushunilganda qo‘llanadi.
Auto-wait noto‘g‘ri locator, shared test data, server race yoki flaky third-party xizmatni tuzatmaydi. Test artifactlari, trace va action log kutish qaysi shartda to‘xtaganini ko‘rsatadi. Timeoutni oshirishdan oldin sabab qatlam bo‘yicha aniqlanadi.
Diagnostik signal
Action timeoutida framework locator necha elementga mos kelgani, qaysi actionability sharti bajarilmagani va elementning holatini yozishi mumkin. Trace timeline animation, overlay yoki navigation race ni ko‘rsatadi. Test kodiga darhol sleep qo‘shishdan oldin shu signal tahlil qilinadi.
Element tez-tez detach va attach bo‘lsa locator qayta topishi mumkin, ammo action vaqtida doim almashadigan UI applicationning o‘z race conditionini bildiradi. Auto-wait faqat chegaralangan vaqt ichida barqaror holat paydo bo‘lsa muvaffaqiyatli. Infinite animation yoki noto‘g‘ri disabled state timeout bilan ko‘rinadi.
Bog‘liq tushunchalar
Actionability, Locator, Explicit wait, Assertion, Timeout, Playwright, Flaky test