package main import ( "os" "path/filepath" "time" ) func init() { register(Check{ Seq: 300, ID: "30", Title: "Render benchmark: home-page p50 within baseline (WO-RP-013)", Run: func(ctx *ScanContext, rep *Reporter) { benchDir := filepath.Join(ctx.repoRoot, "e2e", "render-bench") baselinePath := filepath.Join(benchDir, "baseline.json") if _, err := os.Stat(baselinePath); err != nil { rep.Skip("no e2e/render-bench/baseline.json in this repo — render-perf gate not applicable") return } latestPath := filepath.Join(benchDir, "results", "latest.json") if _, err := os.Stat(latestPath); err != nil { rep.Skip("render bench not run (no results/latest.json) — run the `render-bench` suite from dojo to gate render performance") return } baseline, err := loadRenderBench(baselinePath) if err != nil { rep.Warn("render-perf baseline unreadable: %v", err) return } latest, err := loadRenderBench(latestPath) if err != nil { rep.Warn("render-perf latest.json unreadable: %v — re-run the render-bench suite from dojo", err) return } v := compareRenderPerf(baseline, latest, time.Now()) switch { case v.skip: rep.Skip("%s", v.message) case v.fail: rep.Fail("%s", v.message) case v.warn: rep.Warn("%s", v.message) default: rep.OK("%s", v.message) } }, }) }