ratchet.mjs 928 B

123456789101112
  1. // Run with the sanitized paired summary generated by summarize.mjs.
  2. import fs from 'node:fs';
  3. import assert from 'node:assert/strict';
  4. const current=JSON.parse(fs.readFileSync(process.argv[2]||new URL('./browser-summary.json',import.meta.url)));
  5. for(const row of current.pages){
  6. assert.ok(row.before.runs>=10&&row.after.runs>=10,row.page+' needs ten paired samples');
  7. assert.equal(row.businessEqual,true,row.page+' business payload differs');
  8. assert.ok(row.after.p75<=row.before.p75*1.10,row.page+' cold-load regression');
  9. if(['coaches','payroll'].includes(row.page))assert.ok(row.after.p75<row.before.p75*.55,row.page+' must retain substantial improvement');
  10. if(row.after.menuReturn){assert.equal(row.after.menuReturn.maxRequests,0,row.page+' warm menu repeated primary reads');assert.ok(row.after.menuReturn.p75<300,row.page+' warm menu exceeds 300ms');}
  11. }
  12. console.log('Paired performance and data guardrails passed.');