feat: sync full workspace including web modules, docs, and configurations to Gitea
Optimized the root .gitignore to exclude virtual environments, node modules, and temp folders to ensure clean and lightweight version tracking. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
77
axhub-make/scripts/smoke-preview-routes.mjs
Normal file
77
axhub-make/scripts/smoke-preview-routes.mjs
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const baseUrl = process.argv[2] || 'http://localhost:51720';
|
||||
const targets = process.argv.slice(3).length > 0
|
||||
? process.argv.slice(3)
|
||||
: [
|
||||
'/prototypes/ref-antd-copy',
|
||||
'/components/ref-button',
|
||||
'/themes/antd-new',
|
||||
];
|
||||
|
||||
let hasFailure = false;
|
||||
|
||||
for (const target of targets) {
|
||||
const requestUrl = new URL(target, baseUrl).toString();
|
||||
|
||||
try {
|
||||
const response = await fetch(requestUrl, {
|
||||
redirect: 'follow',
|
||||
headers: {
|
||||
Accept: 'text/html',
|
||||
},
|
||||
});
|
||||
|
||||
const html = await response.text();
|
||||
const htmlProxyMatches = Array.from(
|
||||
html.matchAll(/src="([^"]*html-proxy[^"]*)"/g),
|
||||
(match) => match[1],
|
||||
);
|
||||
const bootstrapProxy = htmlProxyMatches.find((value) => value.includes('index=0.js')) || null;
|
||||
const hostProxy = htmlProxyMatches.find((value) => value.includes('index=1.js')) || null;
|
||||
|
||||
let bootstrapScript = '';
|
||||
let hostScript = '';
|
||||
if (bootstrapProxy) {
|
||||
bootstrapScript = await fetch(new URL(bootstrapProxy, baseUrl)).then((res) => res.text());
|
||||
}
|
||||
if (hostProxy) {
|
||||
hostScript = await fetch(new URL(hostProxy, baseUrl)).then((res) => res.text());
|
||||
}
|
||||
|
||||
const ok = response.ok
|
||||
&& html.includes('<div id="root"></div>')
|
||||
&& htmlProxyMatches.length >= 2
|
||||
&& !html.includes('waitForBootstrap')
|
||||
&& bootstrapScript.includes('dev-template-bootstrap.js')
|
||||
&& hostScript.includes('import PreviewComponent from')
|
||||
&& hostScript.includes('import.meta.hot.accept(')
|
||||
&& hostScript.includes(`window.AxhubDevComponent = CurrentComponent;`)
|
||||
&& html.includes('<div id="root"></div>');
|
||||
|
||||
if (!ok) {
|
||||
hasFailure = true;
|
||||
console.error(`[preview-smoke] FAIL ${requestUrl}`);
|
||||
console.error(` status=${response.status}`);
|
||||
console.error(` containsRoot=${html.includes('<div id="root"></div>')}`);
|
||||
console.error(` htmlProxyCount=${htmlProxyMatches.length}`);
|
||||
console.error(` removedLegacyLoader=${!html.includes('waitForBootstrap')}`);
|
||||
console.error(` bootstrapProxy=${Boolean(bootstrapProxy)}`);
|
||||
console.error(` hostProxy=${Boolean(hostProxy)}`);
|
||||
console.error(` hostImportsEntry=${hostScript.includes('import PreviewComponent from')}`);
|
||||
console.error(` hostHasAcceptBoundary=${hostScript.includes('import.meta.hot.accept(')}`);
|
||||
console.error(` hostSetsDebugGlobals=${hostScript.includes('window.AxhubDevComponent = CurrentComponent;')}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
console.log(`[preview-smoke] OK ${requestUrl}`);
|
||||
} catch (error) {
|
||||
hasFailure = true;
|
||||
console.error(`[preview-smoke] ERROR ${requestUrl}`);
|
||||
console.error(` ${(error && error.message) || error}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (hasFailure) {
|
||||
process.exitCode = 1;
|
||||
}
|
||||
Reference in New Issue
Block a user