test: keep fixed D10 browser fixtures reproducible
This commit is contained in:
@@ -56,6 +56,7 @@
|
|||||||
"printButtonHidden": true,
|
"printButtonHidden": true,
|
||||||
"overviewStatus": 200,
|
"overviewStatus": 200,
|
||||||
"overviewFrames": 3,
|
"overviewFrames": 3,
|
||||||
|
"documentOwnerInPreparationOverview": true,
|
||||||
"mobileStatus": 200,
|
"mobileStatus": 200,
|
||||||
"mobileOverflow": {
|
"mobileOverflow": {
|
||||||
"viewport": 390,
|
"viewport": 390,
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ const firmaAnahtari = email => `${FIRMA_ANAHTAR}:${encodeURIComponent(String(ema
|
|||||||
|
|
||||||
const bosFirma = () => Object.fromEntries(ALANLAR.map((a) => [a.k, '']));
|
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 { userProfile, mutateTender, savingCount, authUser, tenders } = useApp();
|
||||||
const tender = resolveCurrentTender(selectedTender,tenders);
|
const tender = resolveCurrentTender(selectedTender,tenders);
|
||||||
const storedDraft = tender?.bidDraft || {};
|
const storedDraft = tender?.bidDraft || {};
|
||||||
@@ -148,9 +148,13 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
|||||||
const kalemEksik = teklifTuru === 'birim' && validateBidRows(satirlar).length > 0;
|
const kalemEksik = teklifTuru === 'birim' && validateBidRows(satirlar).length > 0;
|
||||||
const turCeliskisi = !['birim','goturu'].includes(teklifTuru) || kaynakTeklifTuru.status === 'conflict' || (kaynakTeklifTuru.type && teklifTuru !== kaynakTeklifTuru.type);
|
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 sureEksik = !Number.isInteger(Number(gecerlilikGun)) || !(Number(gecerlilikGun) > 0) || kaynakGecerlilik.status === 'conflict' || (kaynakGecerlilik.days && Number(gecerlilikGun) < kaynakGecerlilik.days);
|
||||||
const [deadlineNow,setDeadlineNow] = useState(() => new Date());
|
const [deadlineNow,setDeadlineNow] = useState(() => now || new Date());
|
||||||
useEffect(() => {const timer=setInterval(()=>setDeadlineNow(new Date()),30000);return ()=>clearInterval(timer);},[]);
|
useEffect(() => {
|
||||||
const deadlineProblem = preparationDeadlineProblem(tender,deadlineNow);
|
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 kontrolEksikleri = preparationBlockers(lotSelection.rows, documents, checks, {...vault,healthPortfolio:userProfile.scrapedCapabilities?.healthPortfolio || [],deadlineDate:tenderDateKey(tender),tenderIkn:tender.ikn});
|
||||||
const analizEksik = analysisStatusBlocksPreparation(effectiveResults.sourceReview?.status);
|
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;
|
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();
|
const session = getToken();
|
||||||
setHata(null);
|
setHata(null);
|
||||||
try {
|
try {
|
||||||
const initialDeadlineProblem=preparationDeadlineProblem(tender);
|
const initialDeadlineProblem=preparationDeadlineProblem(tender,now || new Date());
|
||||||
if(initialDeadlineProblem)throw new Error(initialDeadlineProblem);
|
if(initialDeadlineProblem)throw new Error(initialDeadlineProblem);
|
||||||
if (!hazir) throw new Error('Kalem, miktar, birim, fiyat, firma ve geçerlilik süresindeki eksikleri giderin.');
|
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.
|
// Open during the click; async validation must not lose popup activation.
|
||||||
@@ -206,7 +210,7 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
|||||||
setVault(currentVault);
|
setVault(currentVault);
|
||||||
const fileErrors = preparationBlockers(lotSelection.rows, documents, checks, currentVault);
|
const fileErrors = preparationBlockers(lotSelection.rows, documents, checks, currentVault);
|
||||||
if (fileErrors.length) throw new Error(fileErrors.join(' '));
|
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);
|
if(currentDeadlineProblem)throw new Error(currentDeadlineProblem);
|
||||||
const f = formVerisi();
|
const f = formVerisi();
|
||||||
if (tip === 'excel') {
|
if (tip === 'excel') {
|
||||||
@@ -219,7 +223,7 @@ export const BidPackageBuilder = ({ results, tender: selectedTender, initialFocu
|
|||||||
setVault(finalVault);
|
setVault(finalVault);
|
||||||
const finalErrors=preparationBlockers(lotSelection.rows,documents,checks,finalVault);
|
const finalErrors=preparationBlockers(lotSelection.rows,documents,checks,finalVault);
|
||||||
if(finalErrors.length)throw new Error(finalErrors.join(' '));
|
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);
|
if(finalDeadlineProblem)throw new Error(finalDeadlineProblem);
|
||||||
downloadBidWorkbook(buffer,tender.ikn);
|
downloadBidWorkbook(buffer,tender.ikn);
|
||||||
printWindow.current?.close();
|
printWindow.current?.close();
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ try {
|
|||||||
evidence.checks.signInStatus = response?.status();
|
evidence.checks.signInStatus = response?.status();
|
||||||
await page.getByRole('button', { name: 'Test hesabıyla gir' }).click();
|
await page.getByRole('button', { name: 'Test hesabıyla gir' }).click();
|
||||||
await page.waitForLoadState('networkidle');
|
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() })));
|
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: 'Günlük Bülten', exact: true }).click();
|
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;
|
const query=new URL(req.url,'http://localhost').searchParams;
|
||||||
qaFiles=query.has('file')?[{...qaFile}]:null;
|
qaFiles=query.has('file')?[{...qaFile}]:null;
|
||||||
const selected=query.has('ready')?readyBid(tenders[0],qaFiles?.[0]):tenders[0];
|
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">
|
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 React from '/node_modules/.vite/deps/react.js';
|
||||||
import ReactDOM from '/node_modules/.vite/deps/react-dom_client.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('button',{onClick:()=>control('release')},'Belge yanıtını serbest bırak'),
|
||||||
React.createElement('p',{role:'status'},status),
|
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('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)));
|
ReactDOM.createRoot(document.getElementById('root')).render(React.createElement(AppProvider,{},React.createElement(Probe)));
|
||||||
</script></body></html>`;
|
</script></body></html>`;
|
||||||
res.setHeader('Content-Type','text/html; charset=utf-8');res.end(await server.transformIndexHtml('/qa-source-update',html));return;
|
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