String və tarixlərlə iş
Test kodunda mətnlə iş gündəlikdir: UI-dan oxunan yazını normallaşdırmaq, ondan ID çıxarmaq, unikal test datası qurmaq.
String dəyişməzdir (immutable) — bütün metodlar YENİ string qaytarır, orijinala toxunmur:
trim()— kənar boşluqları silir; UI mətnini yoxlamazdan əvvəl demək olar həmişə lazımdırsplit(ayırıcı)vəjoin(ayırıcı)— string ilə massiv arasında çevirmə:'a,b,c'.split(',')slice(başlanğıc, son)— hissə çıxarır; mənfi indeks sondan sayır:'ORD123'.slice(-3)→'123'replace(a, b)— yalnız İLK uyğunluğu əvəzləyir; hamısı üçünreplaceAll(a, b)və ya qlobal regexincludes/startsWith/endsWith— boolean yoxlamalar;indexOf(...) !== -1-dən oxunaqlıdırtoLowerCase()— reqistrdən asılı olmayan müqayisə üçün
Template literal (backtick) sətir birləşdirməkdən həmişə oxunaqlıdır: Sifariş ${id} — ${status}.
| İfadə | Nəticə | Qeyd |
|---|---|---|
| ' Paid '.trim() | 'Paid' | yalnız kənar boşluqlar silinir, ortadakılar qalır |
| 'a-b-c'.replace('-', '+') | 'a+b-c' | yalnız İLK uyğunluq — tez-tez buraxılan səhv |
| 'a-b-c'.replaceAll('-', '+') | 'a+b+c' | hamısını əvəzləyir |
| 'ORD-1042'.split('-')[1] | '1042' | regex-siz sadə parsing |
| ['a','b'].join(', ') | 'a, b' | gözlənilən mətni yığmaq üçün |
| '12.50'.trim() === 12.50 | false | string ilə number müqayisəsi — Number() ilə çevir |
Tarixlə iş Date obyekti üzərində qurulur:
new Date()— indiki an;Date.now()— həmin anın millisaniyə ilə timestamp-ı (adi number)new Date('2026-03-14T22:30:00Z')— ISO 8601 sətrindən tarix qurmaq (ən etibarlı üsul)toISOString()— HƏMİŞƏ UTC-də standart sətir:'2026-03-14T22:30:00.000Z'toLocaleDateString(locale, options)— insan üçün format; nəticə maşının locale və timezone tənzimləmələrindən asılıdır- Tarix arifmetikası millisaniyə ilə aparılır:
new Date(Date.now() + 24 * 60 * 60 * 1000)— sabahkı gün
Assertion qaydası: maşın üçün olan formatı yoxla (toISOString(), timestamp, slice(0, 10) ilə alınan tarix hissəsi). Formatlanmış mətni yalnız locale və timeZone açıq göstəriləndə (Intl.DateTimeFormat) yoxla.
Timezone testləri sındırmağın klassik yoludur: developer Bakıda (UTC+4), CI runner isə UTC-də işləyir — gecə saatlarında toLocaleDateString() bir gün fərq göstərir və test yalnız axşamlar fail olur. Həll: ya Intl.DateTimeFormat ilə timeZone sabitlə, ya da Playwright config-də use: { timezoneId: 'Asia/Baku', locale: 'az-AZ' } təyin et. İnterview-də bu "yalnız gecələr fail olan test" hekayəsi çox yaxşı təsir bağışlayır.
Unikal test datası üçün Date.now() sadə və etibarlıdır: qa_${Date.now()}@test.local — paralel işləyən testlərin eyni istifadəçi üstündə toqquşmasının qarşısını alır.
📚 Mənbələr və sənədlər
- Stringrəsmideveloper.mozilla.org
- Intl.DateTimeFormatrəsmideveloper.mozilla.org