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