From fa3fdf0fee919505452bf9c56ea379c653fb0281 Mon Sep 17 00:00:00 2001 From: ht Date: Sun, 6 Sep 2026 19:22:52 +0300 Subject: [PATCH] run browser acceptance outside Istanbul timezone --- .../evidence/qa-browser-acceptance-runtime.json | 1 + docs/quality/uygulama-durumu.md | 6 ++++++ tests/browser-acceptance.mjs | 14 +++++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/quality/evidence/qa-browser-acceptance-runtime.json b/docs/quality/evidence/qa-browser-acceptance-runtime.json index 17a12f6..4529490 100644 --- a/docs/quality/evidence/qa-browser-acceptance-runtime.json +++ b/docs/quality/evidence/qa-browser-acceptance-runtime.json @@ -1,6 +1,7 @@ { "url": "http://127.0.0.1:5173/qa-signin", "checks": { + "browserTimezone": "America/New_York", "signInStatus": 200, "visibleCities": [ { diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md index 32f4417..68d8ea9 100644 --- a/docs/quality/uygulama-durumu.md +++ b/docs/quality/uygulama-durumu.md @@ -2248,3 +2248,9 @@ Doğrulama: 294 otomatik test, üretim derlemesi ve browser QA başarılı. İhale kaynak geçmişi, notlar, AI iş geçmişi, belge deposu, API anahtarları, bildirim abonelikleri ve kur/sağlayıcı kayıtlarındaki ISO zaman gösterimleri `Europe/Istanbul` ile sabitlendi. Kullanıcının cihaz saat dilimi artık aynı kaydın farklı gün/saat görünmesine neden olmuyor. Doğrulama: 294 otomatik test, üretim derlemesi ve `git diff --check` başarılı. Farklı cihaz saat dilimlerinde görsel kabul ayrıca yapılmalı. + +### 2026-09-06 · Farklı cihaz saat diliminde browser kabulü + +Browser QA Playwright context’i `America/New_York` saat diliminde çalışacak şekilde ayarlandı; buna rağmen İstanbul tarih/saat akışları, günlük bülten, ICS, çıktı ve mobil viewport kontrolleri başarılı. Böylece önceki zaman standardizasyonu yalnızca Türkiye yerel cihazında değil, farklı cihaz saat diliminde de sınanıyor. + +Doğrulama: browserTimezone `America/New_York`, mobil viewport 390 px ve yatay taşma yok; tüm kabul kontrolleri başarılı. diff --git a/tests/browser-acceptance.mjs b/tests/browser-acceptance.mjs index 5b39024..43283a9 100644 --- a/tests/browser-acceptance.mjs +++ b/tests/browser-acceptance.mjs @@ -18,8 +18,10 @@ const url = await new Promise((resolve, reject) => { }); const browser = await chromium.launch({ headless: true }); -const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); -const evidence = { url, checks: {}, scope: 'Yerel sentetik QA; gerçek başvuru veya dış sağlayıcı çağrısı yapılmadı.' }; +const context = await browser.newContext({ timezoneId: 'America/New_York' }); +const page = await context.newPage(); +await page.setViewportSize({ width: 1440, height: 1000 }); +const evidence = { url, checks: { browserTimezone: 'America/New_York' }, scope: 'Yerel sentetik QA; gerçek başvuru veya dış sağlayıcı çağrısı yapılmadı.' }; try { const response = await page.goto(url, { waitUntil: 'networkidle' }); evidence.checks.signInStatus = response?.status(); @@ -54,7 +56,8 @@ try { evidence.checks.icsPersistsAfterTabChange = await page.getByText('1 harici etkinlik içe aktarıldı.', { exact: true }).count() === 1; if (!evidence.checks.icsPersistsAfterTabChange) throw new Error('ICS kaydı sekme değişiminden sonra korunmadı.'); } finally { await rm(icsDir, { recursive: true, force: true }); } - const readyPage = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); + const readyPage = await context.newPage(); + await readyPage.setViewportSize({ width: 1440, height: 1000 }); try { const readyResponse = await readyPage.goto(`${url.replace(/\/qa-signin$/, '')}/qa-source-update?ready=1&file=1`, { waitUntil: 'networkidle' }); evidence.checks.readyPreparationStatus = readyResponse?.status(); @@ -80,7 +83,8 @@ try { evidence.checks.overviewStatus = overview?.status(); evidence.checks.overviewFrames = await page.locator('iframe[title^="Hazırlık"]').count(); if (evidence.checks.overviewFrames !== 3) throw new Error('Hazırlık özeti üç görünüm alanında açılmadı.'); - const mobile = await browser.newPage({ viewport: { width: 390, height: 844 }, deviceScaleFactor: 1 }); + const mobile = await context.newPage(); + await mobile.setViewportSize({ width: 390, height: 844 }); try { const mobileResponse = await mobile.goto(url, { waitUntil: 'networkidle' }); evidence.checks.mobileStatus = mobileResponse?.status(); @@ -97,7 +101,7 @@ try { if (!evidence.checks.mobileTenderList) throw new Error('390px görünümünde ihale listesi bulunamadı.'); } finally { await mobile.close(); } } finally { - await page.close(); await browser.close(); server.kill('SIGTERM'); + await page.close(); await context.close(); await browser.close(); server.kill('SIGTERM'); } await mkdir('docs/quality/evidence', { recursive: true }); await writeFile('docs/quality/evidence/qa-browser-acceptance-runtime.json', JSON.stringify(evidence, null, 2) + '\n');