E2E testlər nə üçündür və piramidada yeri
End-to-end (E2E) test bütün tətbiqi real brauzerdə işə salır və istifadəçinin etdiyini edir: səhifəni açır, mətn yazır, klik edir, nəticəni oxuyur. Unit testlərin görmədiyi problemləri tutur: skriptin yanlış yolu, handler-i olmayan forma, başqa element tərəfindən örtülmüş düymə.
| Növ | Nəyi yoxlayır | Sürət | Tipik alət |
|---|---|---|---|
| Unit | Bir funksiya və ya sinif | millisaniyələr | vitest |
| Integration | Bir neçə modul və ya DB birlikdə | yüzlərlə millisaniyə | vitest, supertest |
| E2E | Brauzerdə bütün tətbiq | saniyələr | @playwright/test |
Səviyyə yuxarı qalxdıqca test real vəziyyətə yaxınlaşır, amma bahalaşır: daha yavaş olur, sazlaması çətinləşir və kodunuzla əlaqəsi olmayan səbəblərdən daha tez-tez uğursuz olur. Forma buna görə piramidadır. Məntiqin hər budağını unit testlərlə yoxlayın (bax: Vitest ilə unit testlər), E2E testləri isə bir neçə kritik yol üçün saxlayın: qeydiyyat, səbətə əlavə etmə, ödəniş.
💡 E2E üçün yaxşı namizəd pul gətirən və ya itirən, yaxud sınması nəzərə çarpan ssenaridir. Tooltip rəngi belə ssenari deyil.
Playwright-in quraşdırılması və konfiqurasiyası
Playwright Chromium, Firefox və WebKit-i idarə edən test icraçısıdır (@playwright/test). Onu dev asılılığı kimi qurun və brauzeri yükləyin:
npm init -y
npm i -D @playwright/test http-server
npx playwright install chromiumKonfiqurasiya playwright.config.js faylındadır:
import { defineConfig } from '@playwright/test';
export default defineConfig({
testDir: './e2e',
retries: process.env.CI ? 2 : 0,
forbidOnly: !!process.env.CI,
use: {
baseURL: 'http://localhost:4173',
trace: 'on-first-retry',
},
webServer: {
command: 'npx http-server ./public -p 4173 -s',
url: 'http://localhost:4173',
reuseExistingServer: !process.env.CI,
},
});testDir—*.spec.jsfayllarının qovluğudur.webServertestlərdən əvvəl tətbiqi qaldırır vəurlcavab verənə qədər gözləyir;reuseExistingServerlokal olaraq artıq işləyən dev serveri istifadə etməyə imkan verir.baseURLtestlərdəpage.goto('/')yazmağa imkan verir.retriesuğursuz testi yenidən işlədir, amma yalnız CI-də.forbidOnlykimsə koddatest.onlyqoyubsa, build-i uğursuz edir.