Slow Triage
Exact reviewed source / 63 of 64

review/test_ui_schema.mjs

SHA-256 of original bytes
89d1c1107705635c5a2e39ef1cb683f5f55cee127baa2855a2f9521b8b1cd29d
// Execute the exact shipped UI validator separately from browser setup.
// This is an import-schema unit check, not a replacement for rendered-browser tests.
import fs from 'node:fs/promises';
import { createHash } from 'node:crypto';
import { normalizeIssues } from '../prototype/src/core.mjs';
const source=await fs.readFile(new URL('../prototype/public/app.js',import.meta.url),'utf8');
const start=source.indexOf('  function validateIssues(value) {');
const end=source.indexOf('\n  function readInput()',start);
if(start<0||end<0)throw new Error('Unable to isolate shipped UI validator without modifying it.');
const uiValidate=new Function(source.slice(start,end)+'\nreturn validateIssues;')();
const cases=[
 ['number_only',{issues:[{number:4,title:'A question',body:'Where are logs?'}]}],
 ['null_body',{issues:[{id:4,title:'A question',body:null}]}],
 ['github_label_objects',{issues:[{id:4,title:'A question',body:'Where are logs?',labels:[{name:'bug'}]}]}],
 ['string_id',{issues:[{id:'4',title:'A question',body:'Where are logs?'}]}],
 ['extra_fields',{issues:[{id:4,title:'A question',body:'Where are logs?',token:'synthetic-not-a-secret',url:'https://example.invalid'}]}],
 ['duplicate_ids',{issues:[{id:4,title:'One'},{id:4,title:'Two'}]}],
 ['mixed_ids',{issues:[{id:4,title:'One'},{id:'4',title:'Two'}]}],
 ['overlong_title',{issues:[{id:4,title:'x'.repeat(301)}]}],
 ['overlong_body',{issues:[{id:4,title:'Question',body:'x'.repeat(12001)}]}],
 ['empty',{issues:[]}],
 ['one_valid',{issues:[{id:4,title:'Where are logs?',body:'How do I inspect logs?',labels:['question']}]}],
];
function attempt(fn,value){try{return {accepted:true,result:fn(value)};}catch(error){return {accepted:false,error:error.message};}}
const results=cases.map(([name,input])=>{const backend=attempt(normalizeIssues,input),ui=attempt(uiValidate,input);return {name,backend,ui,passed:backend.accepted===ui.accepted&&(!backend.accepted||JSON.stringify(backend.result)===JSON.stringify(ui.result))};});
const out={method:'Exact shipped UI validator extracted and invoked with fixed local fixtures; no rendered-browser claim.',uiSourceHash:createHash('sha256').update(source).digest('hex'),count:results.length,passed:results.filter(x=>x.passed).length,results};
const name=process.env.REVIEW_UI_RESULT||'ui_schema_retest.json';
await fs.writeFile(new URL(name,import.meta.url),JSON.stringify(out,null,2)+'\n');
console.log(JSON.stringify(out,null,2));
← review/test_csv.mjsreview/ui_schema_retest.json →