12 lines
1.1 KiB
JavaScript
12 lines
1.1 KiB
JavaScript
const assert=require('node:assert/strict'),fs=require('node:fs');
|
|
const read=p=>fs.readFileSync(p,'utf8');
|
|
const model=read('src/components/xingbang/ModelConnectionPanel.tsx');
|
|
for(const route of ['/library/model-settings','/library/model-settings/probe'])assert(model.includes(route));
|
|
assert(model.includes('type="password"'));assert(model.includes('managed_by'));assert(model.includes('api_key:key||null'));
|
|
const feedback=read('src/components/xingbang/MeetingFeedbackPanel.tsx');assert(feedback.includes('/feedback'));assert(feedback.includes('rate===null'));assert(feedback.includes('report.excluded'));
|
|
assert(read('src/app/trajectory-center/page.tsx').includes('<MeetingFeedbackPanel'));
|
|
assert(read('src/components/xingbang/LeaseLibraryWorkbench.tsx').includes('<ModelConnectionPanel'));
|
|
assert(read('src/components/xingbang/TrajectoryPanel.tsx').includes('mapping_confirmed'));
|
|
const publish=read('src/components/xingbang/ImprovementPanel.tsx').match(/const canPublish[^;]+/)[0];assert(publish.includes('"admin"'));assert(!publish.includes('reviewer'));
|
|
console.log('completion-ui: PASS (source guards; not browser verification)');
|