verify analytics accessibility in browser QA
This commit is contained in:
@@ -24,6 +24,7 @@
|
|||||||
"count": 3
|
"count": 3
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"analyticsTargetLabel": true,
|
||||||
"icsImported": true,
|
"icsImported": true,
|
||||||
"icsStorageScoped": true,
|
"icsStorageScoped": true,
|
||||||
"icsPersistsAfterTabChange": 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.
|
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.
|
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">
|
<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
|
<Target className="w-3.5 h-3.5 text-amber-300" /> Ciro Hedefi
|
||||||
</span>
|
</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" />}
|
{hedef > 0 ? <span className="text-amber-300 font-black">%{hedefYuzde}</span> : <Pencil className="w-3.5 h-3.5" />}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -100,6 +100,7 @@ export const AnalyticsDashboard = () => {
|
|||||||
<div className="flex items-center gap-1.5 pt-1">
|
<div className="flex items-center gap-1.5 pt-1">
|
||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
|
aria-label="Ciro hedefi (TL)"
|
||||||
value={hedef || ''}
|
value={hedef || ''}
|
||||||
min="0"
|
min="0"
|
||||||
step="0.01"
|
step="0.01"
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ try {
|
|||||||
await page.waitForLoadState('networkidle');
|
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() })));
|
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.');
|
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.getByRole('button', { name: 'İhale Takvimi' }).click();
|
||||||
await page.waitForLoadState('networkidle');
|
await page.waitForLoadState('networkidle');
|
||||||
const icsDir = await mkdtemp(join(tmpdir(), 'ihaleist-ics-'));
|
const icsDir = await mkdtemp(join(tmpdir(), 'ihaleist-ics-'));
|
||||||
|
|||||||
Reference in New Issue
Block a user