verify analytics accessibility in browser QA
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
"count": 3
|
||||
}
|
||||
],
|
||||
"analyticsTargetLabel": true,
|
||||
"icsImported": true,
|
||||
"icsStorageScoped": true,
|
||||
"icsPersistsAfterTabChange": true,
|
||||
|
||||
@@ -2188,3 +2188,9 @@ Doğrulama: 293 otomatik test ve üretim derlemesi başarılı. Gerçek tarayıc
|
||||
Son giriş, sekme oturumu ve belge uyarısı kayıtları ortak `hesapAnahtari` yardımcısıyla trim/lowercase/URL kodlamalı anahtar kullanıyor. Böylece istemci tarafındaki tüm hesap kapsamlı zaman damgaları aynı normalizasyon kuralını paylaşır.
|
||||
|
||||
Doğrulama: 293 otomatik test ve üretim derlemesi başarılı. İki gerçek hesaplı tarayıcı kabulü ve canlı deployment açık.
|
||||
|
||||
### 2026-09-06 · Analitik erişilebilirlik kabulü
|
||||
|
||||
Browser QA artık Pazar → Analitik Dashboard akışını açıp ciro hedefi alanının `Ciro hedefi (TL)` erişilebilir adına sahip olduğunu doğruluyor. Böylece yeni form sınırları yalnız kaynak kodda değil, dinamik sekme yüklemesi sonrasında da kontrol ediliyor.
|
||||
|
||||
Doğrulama: browser QA başarılı; analitik erişilebilirlik kontrolü, ICS, çıktı ve 390px kontrolleri birlikte geçti.
|
||||
|
||||
@@ -92,7 +92,7 @@ export const AnalyticsDashboard = () => {
|
||||
<span className="text-blue-200 uppercase tracking-wider flex items-center gap-1">
|
||||
<Target className="w-3.5 h-3.5 text-amber-300" /> Ciro Hedefi
|
||||
</span>
|
||||
<button type="button" onClick={() => setEditing((e) => !e)} className="text-blue-200 hover:text-white" title="Hedefi düzenle">
|
||||
<button type="button" aria-label="Ciro hedefini düzenle" onClick={() => setEditing((e) => !e)} className="text-blue-200 hover:text-white" title="Hedefi düzenle">
|
||||
{hedef > 0 ? <span className="text-amber-300 font-black">%{hedefYuzde}</span> : <Pencil className="w-3.5 h-3.5" />}
|
||||
</button>
|
||||
</div>
|
||||
@@ -100,6 +100,7 @@ export const AnalyticsDashboard = () => {
|
||||
<div className="flex items-center gap-1.5 pt-1">
|
||||
<input
|
||||
type="number"
|
||||
aria-label="Ciro hedefi (TL)"
|
||||
value={hedef || ''}
|
||||
min="0"
|
||||
step="0.01"
|
||||
|
||||
@@ -27,6 +27,12 @@ try {
|
||||
await page.waitForLoadState('networkidle');
|
||||
evidence.checks.visibleCities = await Promise.all(['Giresun', 'Kayseri', 'Akdeniz', 'Aksaray', 'Tepecik'].map(async city => ({ city, count: await page.getByText(city, { exact: false }).count() })));
|
||||
if (evidence.checks.visibleCities.some(item => item.count < 1)) throw new Error('Beş sentetik şehirden biri görünmedi.');
|
||||
await page.getByRole('button', { name: 'Pazar', exact: true }).click();
|
||||
await page.getByRole('button', { name: 'Analitik Dashboard', exact: true }).click();
|
||||
await page.getByLabel('Ciro hedefi (TL)', { exact: true }).waitFor({ state: 'attached', timeout: 10_000 });
|
||||
evidence.checks.analyticsTargetLabel = await page.getByLabel('Ciro hedefi (TL)', { exact: true }).count() === 1;
|
||||
if (!evidence.checks.analyticsTargetLabel) throw new Error('Analitik ciro hedefi alanı erişilebilir ad taşımıyor.');
|
||||
await page.getByRole('button', { name: 'Keşfet', exact: true }).click();
|
||||
await page.getByRole('button', { name: 'İhale Takvimi' }).click();
|
||||
await page.waitForLoadState('networkidle');
|
||||
const icsDir = await mkdtemp(join(tmpdir(), 'ihaleist-ics-'));
|
||||
|
||||
Reference in New Issue
Block a user