From 7f42bb2bc651760cdeebbaeecad50b74211005e9 Mon Sep 17 00:00:00 2001 From: ht Date: Sun, 6 Sep 2026 18:46:44 +0300 Subject: [PATCH] cover ICS import in browser acceptance --- .../qa-browser-acceptance-runtime.json | 2 ++ docs/quality/uygulama-durumu.md | 2 +- tests/browser-acceptance.mjs | 18 +++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/quality/evidence/qa-browser-acceptance-runtime.json b/docs/quality/evidence/qa-browser-acceptance-runtime.json index 533e9f1..895226d 100644 --- a/docs/quality/evidence/qa-browser-acceptance-runtime.json +++ b/docs/quality/evidence/qa-browser-acceptance-runtime.json @@ -24,6 +24,8 @@ "count": 3 } ], + "icsImported": true, + "icsPersistsAfterTabChange": true, "overviewStatus": 200, "overviewFrames": 3 }, diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md index 70c9ae6..0cd58fd 100644 --- a/docs/quality/uygulama-durumu.md +++ b/docs/quality/uygulama-durumu.md @@ -2111,4 +2111,4 @@ Doğrulama: 292/292 otomatik test ve üretim derlemesi başarılı. CI iş akışı da Chromium’u kurup bu koşucuyu her push ve pull request’te çalıştırıyor; tarayıcı kabulinin yalnızca geliştirici makinesinde geçmesine güvenilmiyor. -Doğrulama: giriş HTTP 200, beş şehrin tamamı görünür (her biri 3 eşleşme), üç hazırlık özeti çerçevesi açıldı. +Doğrulama: giriş HTTP 200, beş şehrin tamamı görünür (her biri 3 eşleşme), ICS içe aktarma ve sekme değişimi sonrası kalıcılık başarılı, üç hazırlık özeti çerçevesi açıldı. diff --git a/tests/browser-acceptance.mjs b/tests/browser-acceptance.mjs index 3ac50a3..451278a 100644 --- a/tests/browser-acceptance.mjs +++ b/tests/browser-acceptance.mjs @@ -1,6 +1,8 @@ // Local-only browser acceptance runner. It uses the disposable fixtures served by browser-qa.mjs. import { spawn } from 'node:child_process'; -import { writeFile, mkdir } from 'node:fs/promises'; +import { writeFile, mkdir, mkdtemp, rm } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; import { chromium } from 'playwright'; const server = spawn(process.execPath, ['tests/browser-qa.mjs'], { cwd: new URL('..', import.meta.url), stdio: ['ignore', 'pipe', 'inherit'] }); @@ -25,6 +27,20 @@ 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: 'İhale Takvimi' }).click(); + await page.waitForLoadState('networkidle'); + const icsDir = await mkdtemp(join(tmpdir(), 'ihaleist-ics-')); + const icsPath = join(icsDir, 'qa.ics'); + await writeFile(icsPath, 'BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:qa-calendar\r\nDTSTART:20260910T070000Z\r\nSUMMARY:Harici Mikroskop\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n'); + try { + await page.locator('input[aria-label="ICS takvim dosyası seç"]').setInputFiles(icsPath); + await page.getByText('1 harici etkinlik içe aktarıldı.', { exact: true }).waitFor(); + evidence.checks.icsImported = true; + await page.getByRole('button', { name: 'Keşfet' }).click(); + await page.getByRole('button', { name: 'İhale Takvimi' }).click(); + 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 overview = await page.goto(`${url.replace(/\/qa-signin$/, '')}/qa-overview`, { waitUntil: 'networkidle' }); evidence.checks.overviewStatus = overview?.status(); evidence.checks.overviewFrames = await page.locator('iframe[title^="Hazırlık"]').count();