// scripts/ci/verify-desktop-renderer-bundles.mjs // // Fails packaging when a renderer page ships without the assets it references. // // Why this exists: Vite only bundles ') const goodProblems = collectProblems(goodRoot, pages) if (goodProblems.length !== 0) { failures.push(`complete build reported problems: ${goodProblems.join('; ')}`) } const brokenRoot = path.join(tmpRoot, 'broken') bundlePage(brokenRoot, '') const brokenProblems = collectProblems(brokenRoot, pages) if (!brokenProblems.some((problem) => problem.includes('missing asset'))) { failures.push('missing asset was not detected') } if (!brokenProblems.some((problem) => problem.includes('classic script'))) { failures.push('classic script tag was not detected') } const missingPageProblems = collectProblems(goodRoot, ['popups/absent/index.html']) if (!missingPageProblems.some((problem) => problem.startsWith('missing built page'))) { failures.push('missing page was not detected') } } finally { rmSync(tmpRoot, { recursive: true, force: true }) } if (failures.length > 0) { console.error('verify-desktop-renderer-bundles self-test failed:') for (const failure of failures) console.error(`- ${failure}`) process.exit(1) } console.log('verify-desktop-renderer-bundles self-test: OK') } if (process.argv.slice(2).includes('--self-test')) { selfTest() } else if (!existsSync(builtRendererDir)) { console.error(`Renderer build not found: ${builtRendererDir}`) console.error(' build: npm run build --workspace=@d3ro/desktop') process.exit(1) } else { const pages = expectedPages() const problems = collectProblems(builtRendererDir, pages) if (problems.length > 0) { console.error('Desktop renderer bundle verification failed:') for (const problem of problems) console.error(`- ${problem}`) console.error(' rebuild: npm run build --workspace=@d3ro/desktop') process.exit(1) } console.log(`Desktop renderer bundle verification passed: ${pages.length} page(s) with all assets on disk`) }