import assert from 'node:assert/strict'; import fs from 'node:fs/promises'; import React from 'react'; import {renderToStaticMarkup} from 'react-dom/server'; import {createServer} from 'vite'; const server=await createServer({configFile:false,server:{middlewareMode:true,watch:null},appType:'custom',optimizeDeps:{noDiscovery:true}}); try { const {default:Workspace}=await server.ssrLoadModule('/resources/js/WorkshopMenuWorkspace.jsx'); const context={token:'synthetic',company:{id:1,name:'Synthetic'},unit:{id:7,name:'Synthetic'}}; const render=can=>renderToStaticMarkup(React.createElement(Workspace,{section:'workshop_stock',context,can,navigate:()=>{},api:()=>{throw Error('SSR must not fetch');}})); const denied=render(p=>p==='company.view'||p==='workshop.view'); assert(!denied.includes('Conferência de consumo de material')); const allowed=render((p,u)=>u===7&&['workshop.view','workshop_stock.view'].includes(p)); assert(allowed.includes('Conferência de consumo de material')); assert(allowed.includes('A consultar origens autorizadas')); assert(!allowed.includes('Capacidade ainda não disponível')); assert(!allowed.includes('value="0"')); await fs.writeFile('docs/proofs/workshop-stock-ui-20261102.json',JSON.stringify({kind:'static_render',permission_separation:true,pending_notice_removed_for_authorized_view:true,loading_not_zero:true,backend_requests:0,visual_review:false},null,2)+'\n'); console.log('Workshop stock static rendering passed. Visual review pending.'); } finally {await server.close();}