Sparround

Test kodunun keyfiyyəti və konvensiyalar

Əsas prinsip: test kodu da production kodudur. Onu da eyni ciddiliklə review edirik, çünki onu da illərlə saxlayacağıq. Fərq yalnız auditoriyadadır — test kodunun "istifadəçisi" gələcək komanda yoldaşıdır.

Adlandırma qaydaları:

  • Test adı davranışı deyir: test('rejects login with expired password')test('test2') yox
  • Fayl adı feature-ə uyğun: checkout-coupon.spec.ts
  • POM metodları user niyyəti: applyCoupon(code)clickBtn3() yox
  • Locator dəyişənləri elementin rolu ilə: submitButton, errorAlert
  • Boolean helper-lər sual formasında: isCartEmpty()

Struktur qaydaları: bir test — bir davranış; AAA bölgüsü boş sətirlə görünsün; testdə if/for olmasın (şərtli məntiq testi qeyri-deterministik edir — parametrləşdirmə istifadə et); try/catch ilə fail udulmasın.

Avtomatik nəzarət insan nəzarətindən üstündür — konvensiyanı sənəddə yox, lint-də saxla. TypeScript + ESLint (typed linting) + eslint-plugin-playwright + Prettier dəsti komandada mübahisələri bitirir: formatlaşdırma CI-da yoxlanır, üslub müzakirəsi review-dan çıxır və review yalnız məntiqə fokuslanır.

Ən kritik qayda no-floating-promises-dir. Playwright API-si tamamilə async-dır; await unudulan sətir səssizcə icra olunmur və test yaşıl qalır — yəni yalan pozitiv. Bu, avtomatlaşdırmada ən təhlükəli səhv sinfidir, çünki heç bir siqnal vermir.

QaydaNəyin qarşısını alır
@typescript-eslint/no-floating-promisesawait unudulan sətrin səssizcə icra olunmaması — yalan yaşıl test
playwright/no-wait-for-timeoutSabit sleep-lər — yavaşlıq və flakiness
playwright/no-focused-testUnudulmuş test.only — suite-in yalnız 1 testlə "yaşıl" olması
playwright/expect-expectAssertion-suz "test" — heç vaxt fail olmayan boş yoxlama
playwright/no-conditional-in-testif/else-lə qeyri-deterministik, izahı çətin testlər

İnterview-də çox güclü cavab: "Ən təhlükəli test bug-ı hansıdır?"unudulmuş `await`. Test yaşıldır, amma heç nə yoxlamır. Bunu no-floating-promises lint qaydası ilə bağladığını de — bu, "problemi bir dəfə həll edirəm" düşüncəsini göstərir və middle+ siqnalıdır.

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