A frontend can pass its unit tests and still give someone a blank page. Or a button they cannot reach with a keyboard. Or a layout that works beautifully until the screen gets smaller.
That is why I built LoopGate JS. It brings coding agents into a TypeScript and Vite workflow where the repository defines what has to pass before their work lands.
A passing build is only the beginning
Frontend correctness includes things a compiler cannot see. Does the page render? Do production assets load? Does the layout fit a phone? Can someone navigate it without a mouse?
The harness combines formatting, lint, types, security checks, and unit coverage with Playwright browser tests, accessibility checks, and Lighthouse budgets. Each catches a different kind of failure. A green unit test cannot tell you whether a stylesheet disappeared from the production build.
Make the loop face the browser
Agents work in fresh iterations, with plans and specs kept in the repo. Fast preflight checks run before commits. The full gate runs before pushes, so browser behavior is part of the acceptance criteria.
That still leaves taste and judgment to a person. A page can satisfy every automated check and feel wrong. The harness makes repeatable failures easier to catch, leaving more attention for the decisions that need a human.
This site itself was built using loopgate_js. It is a working example of the same frontend harness.
Read the LoopGate JS README for the checks and setup, or the writeup on engineering the loop for the broader approach.