test: keep fixed D10 browser fixtures reproducible
This commit is contained in:
@@ -56,6 +56,7 @@
|
||||
"printButtonHidden": true,
|
||||
"overviewStatus": 200,
|
||||
"overviewFrames": 3,
|
||||
"documentOwnerInPreparationOverview": true,
|
||||
"mobileStatus": 200,
|
||||
"mobileOverflow": {
|
||||
"viewport": 390,
|
||||
|
||||
@@ -38,7 +38,7 @@ const firmaAnahtari = email => `${FIRMA_ANAHTAR}:${encodeURIComponent(String(ema
|
||||
|
||||
const bosFirma = () => Object.fromEntries(ALANLAR.map((a) => [a.k, '']));
|
||||
|
||||
export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocus }) => {
|
||||
export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocus, now = null }) => {
|
||||
const { userProfile, mutateTender, savingCount, authUser, tenders } = useApp();
|
||||
const tender = resolveCurrentTender(selectedTender,tenders);
|
||||
const storedDraft = tender?.bidDraft || {};
|
||||
@@ -148,9 +148,13 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
||||
const kalemEksik = teklifTuru === 'birim' && validateBidRows(satirlar).length > 0;
|
||||
const turCeliskisi = !['birim','goturu'].includes(teklifTuru) || kaynakTeklifTuru.status === 'conflict' || (kaynakTeklifTuru.type && teklifTuru !== kaynakTeklifTuru.type);
|
||||
const sureEksik = !Number.isInteger(Number(gecerlilikGun)) || !(Number(gecerlilikGun) > 0) || kaynakGecerlilik.status === 'conflict' || (kaynakGecerlilik.days && Number(gecerlilikGun) < kaynakGecerlilik.days);
|
||||
const [deadlineNow,setDeadlineNow] = useState(() => new Date());
|
||||
useEffect(() => {const timer=setInterval(()=>setDeadlineNow(new Date()),30000);return ()=>clearInterval(timer);},[]);
|
||||
const deadlineProblem = preparationDeadlineProblem(tender,deadlineNow);
|
||||
const [deadlineNow,setDeadlineNow] = useState(() => now || new Date());
|
||||
useEffect(() => {
|
||||
if (now) { setDeadlineNow(now); return undefined; }
|
||||
const timer=setInterval(()=>setDeadlineNow(new Date()),30000);
|
||||
return ()=>clearInterval(timer);
|
||||
},[now]);
|
||||
const deadlineProblem = preparationDeadlineProblem(tender,now || deadlineNow);
|
||||
const kontrolEksikleri = preparationBlockers(lotSelection.rows, documents, checks, {...vault,healthPortfolio:userProfile.scrapedCapabilities?.healthPortfolio || [],deadlineDate:tenderDateKey(tender),tenderIkn:tender.ikn});
|
||||
const analizEksik = analysisStatusBlocksPreparation(effectiveResults.sourceReview?.status);
|
||||
const hazir = !deadlineProblem && eksikler.length === 0 && toplam > 0 && !kalemEksik && !turCeliskisi && !sureEksik && !kaynakKontrolGerekli && kontrolEksikleri.length === 0 && lotSelection.errors.length === 0 && !analizEksik && !sourceOptions.needsSelection;
|
||||
@@ -189,7 +193,7 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
||||
const session = getToken();
|
||||
setHata(null);
|
||||
try {
|
||||
const initialDeadlineProblem=preparationDeadlineProblem(tender);
|
||||
const initialDeadlineProblem=preparationDeadlineProblem(tender,now || new Date());
|
||||
if(initialDeadlineProblem)throw new Error(initialDeadlineProblem);
|
||||
if (!hazir) throw new Error('Kalem, miktar, birim, fiyat, firma ve geçerlilik süresindeki eksikleri giderin.');
|
||||
// Open during the click; async validation must not lose popup activation.
|
||||
@@ -206,7 +210,7 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
||||
setVault(currentVault);
|
||||
const fileErrors = preparationBlockers(lotSelection.rows, documents, checks, currentVault);
|
||||
if (fileErrors.length) throw new Error(fileErrors.join(' '));
|
||||
const currentDeadlineProblem=preparationDeadlineProblem(tender);
|
||||
const currentDeadlineProblem=preparationDeadlineProblem(tender,now || new Date());
|
||||
if(currentDeadlineProblem)throw new Error(currentDeadlineProblem);
|
||||
const f = formVerisi();
|
||||
if (tip === 'excel') {
|
||||
@@ -219,7 +223,7 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
||||
setVault(finalVault);
|
||||
const finalErrors=preparationBlockers(lotSelection.rows,documents,checks,finalVault);
|
||||
if(finalErrors.length)throw new Error(finalErrors.join(' '));
|
||||
const finalDeadlineProblem=preparationDeadlineProblem(tender);
|
||||
const finalDeadlineProblem=preparationDeadlineProblem(tender,now || new Date());
|
||||
if(finalDeadlineProblem)throw new Error(finalDeadlineProblem);
|
||||
downloadBidWorkbook(buffer,tender.ikn);
|
||||
printWindow.current?.close();
|
||||
|
||||
@@ -27,6 +27,8 @@ try {
|
||||
evidence.checks.signInStatus = response?.status();
|
||||
await page.getByRole('button', { name: 'Test hesabıyla gir' }).click();
|
||||
await page.waitForLoadState('networkidle');
|
||||
const hideExpired = page.getByLabel('Süresi geçenleri gizle', { exact: true });
|
||||
if (await hideExpired.isChecked()) await hideExpired.uncheck();
|
||||
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: 'Günlük Bülten', exact: true }).click();
|
||||
|
||||
@@ -167,7 +167,7 @@ const ui=await createServer({server:{host:'127.0.0.1',port:0,proxy:{'/api':{targ
|
||||
const query=new URL(req.url,'http://localhost').searchParams;
|
||||
qaFiles=query.has('file')?[{...qaFile}]:null;
|
||||
const selected=query.has('ready')?readyBid(tenders[0],qaFiles?.[0]):tenders[0];
|
||||
if(selected.bidDraft){const summary=preparationSummary(selected,{loading:false,error:null,documents:qaFiles || []});if(summary.issues.length)throw new Error('QA ready fixture: '+JSON.stringify(summary.issues));}
|
||||
if(selected.bidDraft){const summary=preparationSummary(selected,{loading:false,error:null,documents:qaFiles || []},new Date('2026-09-06T09:00:00Z'));if(summary.issues.length)throw new Error('QA ready fixture: '+JSON.stringify(summary.issues));}
|
||||
const html=`<html lang="tr"><head><meta name="viewport" content="width=device-width,initial-scale=1"></head><body><div id="root"></div><script type="module">
|
||||
import React from '/node_modules/.vite/deps/react.js';
|
||||
import ReactDOM from '/node_modules/.vite/deps/react-dom_client.js';
|
||||
@@ -186,7 +186,7 @@ const ui=await createServer({server:{host:'127.0.0.1',port:0,proxy:{'/api':{targ
|
||||
React.createElement('button',{onClick:()=>control('release')},'Belge yanıtını serbest bırak'),
|
||||
React.createElement('p',{role:'status'},status),
|
||||
React.createElement('button',{onClick:()=>setTenders([{...selected,id:'qa-rotated-source',baslik:'QA Güncellenmiş alım',kazananFirma:'QA Kazanan'}])},'Aynı İKN için yeni kayıt ID ve kazanan yayımla'),
|
||||
React.createElement(BidPackageBuilder,{tender:selected}));}
|
||||
React.createElement(BidPackageBuilder,{tender:selected,now:new Date('2026-09-06T09:00:00Z')}));}
|
||||
ReactDOM.createRoot(document.getElementById('root')).render(React.createElement(AppProvider,{},React.createElement(Probe)));
|
||||
</script></body></html>`;
|
||||
res.setHeader('Content-Type','text/html; charset=utf-8');res.end(await server.transformIndexHtml('/qa-source-update',html));return;
|
||||
|
||||
Reference in New Issue
Block a user