import fs from 'node:fs/promises'; import assert from 'node:assert/strict'; const source = await fs.readFile('scripts/supplier-evaluation-check.mjs', 'utf8'); const common = source.slice(source.indexOf("const base ="), source.indexOf('const author =')); const code = common + ` const viewer = client(); await viewer.enter('admin'); const dashboard = await viewer.request('/dashboard'); if (dashboard.page?.props.context?.enforced) { const selected = await viewer.request('/contexto', 'POST', {area:'procurement',option:'procurement.internal'}); assert.ok([302,303].includes(selected.status)); } const proof = []; for (const view of ['agreements','calendar','imports','alternatives','reservations','deliveries','suggestions','history']) { const result = await viewer.request('/compras/fornecimento?view='+view); assert.equal(result.status,200); assert.equal(result.page.component, ['suggestions','history'].includes(view)?'supply/'+view:['alternatives','reservations','deliveries'].includes(view)?'supply/coordination':'supply/index'); assert.equal(result.page.props.ready,true); assert.equal(result.page.props.canPrepare,false); proof.push({view,status:result.status,ready:result.page.props.ready,admin_has_no_automatic_write:true}); } const lots = await viewer.request('/stock/lotes'); assert.equal(lots.status,200); assert.equal(lots.page.component,'stock/lots'); assert.equal(lots.page.props.ready,true); assert.equal(lots.page.props.capabilities.read,true); for (const permission of ['prepare','review','hold','release']) assert.equal(lots.page.props.capabilities[permission],false); proof.push({view:'lots',status:lots.status,ready:true,admin_has_no_automatic_write:true}); const dispositions = await viewer.request('/stock/ocorrencias'); assert.equal(dispositions.status,200); assert.equal(dispositions.page.component,'stock/dispositions'); assert.equal(dispositions.page.props.ready,true); for (const permission of ['prepare','review','execute']) assert.equal(dispositions.page.props.capabilities[permission],false); proof.push({view:'dispositions',status:dispositions.status,ready:true,admin_has_no_automatic_write:true}); const reversals = await viewer.request('/stock/estornos'); assert.equal(reversals.status,200); assert.equal(reversals.page.component,'stock/reversals'); assert.equal(reversals.page.props.ready,true); for (const permission of ['prepare','review','execute']) assert.equal(reversals.page.props.capabilities[permission],false); proof.push({view:'reversals',status:reversals.status,ready:true,admin_has_no_automatic_write:true}); await fs.writeFile('docs/proofs/supply-navigation.json', JSON.stringify({checked_at:new Date().toISOString(),checks:proof},null,2)); console.log('Eleven installed local supply/stock pages verified; no business commands or grants performed.'); `; const run = new Function('fs','assert','return (async()=>{'+code+'})()'); await run(fs,assert);