Sparround

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ır
  • split(ayırıcı)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ı üçün replaceAll(a, b) və ya qlobal regex
  • includes / startsWith / endsWith — boolean yoxlamalar; indexOf(...) !== -1-dən oxunaqlıdır
  • toLowerCase() — 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.50falsestring 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 localetimeZone 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