{"_id":"@navianpulse/designcheck","_rev":"12-0fd47831cd6b72ab69079fda9ab5951b","name":"@navianpulse/designcheck","dist-tags":{"latest":"2.6.1"},"versions":{"2.3.0":{"name":"@navianpulse/designcheck","version":"2.3.0","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.3.0","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"homepage":"https://github.com/seshuguddanti/navian-designcheck","bugs":{"url":"https://github.com/seshuguddanti/navian-designcheck/issues"},"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"9db8a63a7751176f1ac4e85a0a6203e222740c47","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.3.0.tgz","fileCount":50,"integrity":"sha512-C1bARGUJqu8h5Eghif0dquq+MLKH93d8PZW5I7tuASvrXY0JDQ4RB2jYSqLsEEhVJRT+XTvv+VirXlSCxPIETA==","signatures":[{"sig":"MEUCIQDnMM4LakhzgRh5iEm8nlEPEEOoOYycGVat3zmTc7bWZwIgZhm1heZ+TCrtYVaacix/iN3dDTg3XYbIeUnYUP5w3wI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1171371},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs","postinstall":"node dist/bin/postinstall.js || true"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"repository":{"url":"git+https://github.com/seshuguddanti/navian-designcheck.git","type":"git"},"_npmVersion":"11.8.0","description":"Zero-dependency, no-baseline design-QA for rendered web UI — layout, accessibility, performance, SEO, links, security, and resilience across viewports and generated states. Built to be run by an AI coding agent on its own output.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"^3.11.174","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.3.0_1789755763057_0.9772882658040749","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@navianpulse/designcheck","version":"2.4.0","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.4.0","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"homepage":"https://github.com/seshuguddanti/navian-designcheck","bugs":{"url":"https://github.com/seshuguddanti/navian-designcheck/issues"},"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"ca7447d30f8aa867f064301a27e28d38f72c197d","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.4.0.tgz","fileCount":50,"integrity":"sha512-dF+M+a2cJZOl5FAs1D1pmgHWz29JP2+X0ZDADLy6X8C5k3ENz44vA4s0X2eAjwFNI2YoWk14BJ65JejqHhmu1w==","signatures":[{"sig":"MEYCIQC4j2jgQ4EdW31A1BfGJiE1ZnlWTqQi5ZgXgY8I0IfidAIhAKw7ndZt2ntnSTLTa0iNk5Hmh7hZ61a5G13pPBOkiL0b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDHOgqSNn9TgjbhaTPBWjPnJB7+L6Nl7A7HuqwcBk7a6AiAF7pLxepN3wXFPfa1T8qrseMsLchRpbTIC5k6zrj/PPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1168127},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs","postinstall":"node dist/bin/postinstall.js || true"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"repository":{"url":"git+https://github.com/seshuguddanti/navian-designcheck.git","type":"git"},"_npmVersion":"11.8.0","description":"Zero-dependency, no-baseline design-QA for rendered web UI — layout, accessibility, performance, SEO, links, security, and resilience across viewports and generated states. Built to be run by an AI coding agent on its own output.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"^3.11.174","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.4.0_1789766619577_0.5788013257733606","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"@navianpulse/designcheck","version":"2.4.1","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.4.1","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"daece55b97586f915cfc865e4efac47d510aac10","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.4.1.tgz","fileCount":50,"integrity":"sha512-eBgSRlYzxJgOJL+y5tqcG5QxhCtZ/yQXm2lGbl+z8/kSs9KTqhhWsri5ENfOoQ96V1K6dISpwrN1VPT6YOT0rA==","signatures":[{"sig":"MEYCIQC6qSQlqero/cyJBRPLy0dyP6RWNOzVRBFWudL4dBdg2QIhAOXuc0vGduGHLwJmUH+JNHGV64CUubp3ljzQgaR82uQK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCyHUNsRgdiBxlt51XXldNIjfDgcf3XSGuI108G12lvsAIhAJEwqXyqwsZXH8MGba0tOBGGHFxmRZT4IlTbinpKs7YW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1131009},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs","postinstall":"node dist/bin/postinstall.js || true"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"^3.11.174","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.4.1_1789768021738_0.2477894275986301","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"@navianpulse/designcheck","version":"2.4.2","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.4.2","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"b2a88f708b72e2d0f33d6162a9456e4b15c6c1f3","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.4.2.tgz","fileCount":50,"integrity":"sha512-mAa/iib+Gg3LaxNmI0ZakKjvsooEVPYmeSCAbpTkPocTv5hiq8JCHht8qI4UUQsklOCJ1Xi+UojKEBPszwWb0g==","signatures":[{"sig":"MEQCIAhosog/8+0oDwBMnjFr4xWhvR3wPjUYhuDOX1kt7GxmAiAw96gyt7lTTcVOslodUV3T1a0TwImZjAXf4Yq13/PAmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD2aaYVVU0Wms0jsdH3NLFJAN1AxbFipuWfforIdxiHVgIgfMvtEho7+f3JgGvN9ZxDydLwAE9tT4PB2uLo1RCHO8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1130958},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs","postinstall":"node dist/bin/postinstall.js || true"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.4.2_1789769076700_0.4152523811863833","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"@navianpulse/designcheck","version":"2.4.3","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.4.3","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"f6577a0da57f011e00a975b4d7f6e249559dbd96","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.4.3.tgz","fileCount":50,"integrity":"sha512-OT+VAGqB+ze4fN+XZyOFeoFBuOrLHcCYcAIpShfOmoEBf8g0SZ5KA53CvGqRxmVLBwye0XxnuOrkgvEUFVUmuA==","signatures":[{"sig":"MEQCIHtanWyMgQ1+5ARoEd6ZZci72N5+LlTs2EOCpNrRyuq/AiBKEixGC38S3pBSKHF2jqZJBy/MZywU27L0E2kstr3GxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDpD9HuMkR80RXH05OUwPr9GyhO6gzGUvqBOUGK/xjr+AIgWxJr18vy93TNmXxFUI4KrXlklkeyFpZgFee5slPwLfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1131187},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.4.3_1789770686090_0.003451995849564682","host":"s3://npm-registry-packages-npm-production"}},"2.4.4":{"name":"@navianpulse/designcheck","version":"2.4.4","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.4.4","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"41b5bf8ce7d21c443bf6603367afc90a4cb733f0","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.4.4.tgz","fileCount":50,"integrity":"sha512-G8IKQ6zlHX8kmeuK4Qk8nVZH+rdqvIQGbS/V9vyVzaiTJCvlMWjyWbmK7qb0PNt0Oi54ugf+bCSJ7UEjXZT05A==","signatures":[{"sig":"MEUCIQCOfjTxeVI6Rqn6viIaQf1m5Rf0PH2boaYRU7cy4zxEEQIgEHNsw5z44bao8Q3HE0OUha2IsOrnPpW1GGuPYCmIKg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDg+GcIG+zgNBA8uUv4R65LbCM8rx9u0s92zFZcsGTkyAIhAManF24ij7qa2uwrS+LwmUygAuQYEiiqM0Pz2r2Ugb4q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1132270},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.4.4_1789770932642_0.938024040655336","host":"s3://npm-registry-packages-npm-production"}},"2.4.5":{"name":"@navianpulse/designcheck","version":"2.4.5","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.4.5","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"0f9a2f9ede1a24ae1a48f736d7ff351c2eeee3db","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.4.5.tgz","fileCount":49,"integrity":"sha512-9nBq5+hkTmh0cVyPaxbld4OrEslH4jLyjF9bi0IcGYY+5GlbgbbsDG2YejJzDcPBE0XkYSegNHWNGwzOPkE65A==","signatures":[{"sig":"MEQCICP+1CDXvtgBsc2U+BdCyXSNLYD5QnIzWqioCr0lC6LrAiBP9BWqGkY2VzpxffGYn97hX3rrOWTOzwC4xsRPWbpGdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAw5QRvv7KF0o8yaeyZ2j5sLQ91pwjw8ZkZo7/Jx2wtyAiEA28nItD8FeWKYgTJyafomnYo2gUnC0AKPKjtqMECiSeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1130271},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.4.5_1789771187714_0.8839750996273508","host":"s3://npm-registry-packages-npm-production"}},"2.4.6":{"name":"@navianpulse/designcheck","version":"2.4.6","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.4.6","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"b66a93d52d9a8fcc40a336abc8adccf38370bbeb","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.4.6.tgz","fileCount":49,"integrity":"sha512-rFCdnM5ZRmbec09RWtIsI7jr8gisjV+wBtB+5YEIpBHDQxLjs40+hFFEhJGkcNwoNFqUvcsOFS4tcp2SlbHPqQ==","signatures":[{"sig":"MEQCIF2EJiR4ZM6YVPM6yPGHygh813hm38Mip+rbQjXDzoj9AiA6EHoIBjpBXsNavGgogDgebhVn2oJRH0qhC9Oy49tWWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCcZZHHsY5KS4AABjO8awJZEVgWxBZWAA1+bsFvx/XriAIhAM0/DrkLRmsd7zcxz5RyURXAHGLfBPq+CKtRhwhT7Z+C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1130277},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","gitHead":"5cead73f30e3caa6a53233c7f42794ac2bdfe4ac","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"^1.48.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.4.6_1789772256132_0.8291393211087874","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@navianpulse/designcheck","version":"2.5.0","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.5.0","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"03945e1fc8c19d1d1a54dcb061354a79681c79a9","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.5.0.tgz","fileCount":57,"integrity":"sha512-nigKIopXqwrJo+Z/yu+hGgyr4a7zyhY0e3b/gsaOFXFgVCbOwUmvl8NXpv0ZDhtYF0eV3N25WdUt7jl0fZGAug==","signatures":[{"sig":"MEQCIGxdlwKJLmTWZKqsTJ5N9QNEhMYL4GbcbySezSHDaTqGAiBK6A1SojfHdWp8lcKIOC1xJElNRo/EwmeqKkLO235MOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEvE8Q1LvPlyYGBSVIHzT9ut+Q51tdbNYSOHGVJ+oeA0AiAiXlA07uen0Zcx4MZSwlZmygzf3onAcEP7uFYxpVL66Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1742451},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/perception-geometry.test.cjs && node test/severity-rank.test.cjs && node test/code-ingest.test.cjs && node test/observer-transparency.test.cjs && node test/reflow-invariant.test.cjs && node test/standards-corpus.test.cjs && node test/symbol-ingest.test.cjs && node test/verify-gate.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs","postinstall":"node dist/bin/postinstall.js || true"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"1.62.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.5.0_1790229382006_0.7575764889902501","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@navianpulse/designcheck","version":"2.6.0","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.6.0","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"201497adefde994505111887b618c67d00a7eadc","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.6.0.tgz","fileCount":58,"integrity":"sha512-MfADluono6GYyxJF1DgCULlYD1c4SUaV2LdPFzY6alKQPc8UbBKXAx0UM4ibC3tu9FdCt6o2UB4mqtZZM+ajzg==","signatures":[{"sig":"MEUCIQC3GYEl6PZauiZ/awBeMy4AyI8QIC4O+ybwDjLMYXUlNAIgaBc674TlYJ/tNHuZ59F/cZCeEravcMNRnuRhH/dfopM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCrx+AH+WShG9LPiniqDLNeJVaSWP/Hl+7wEA5eCtqzSgIhAP+8s2x04AavPGe/Pl/qgdMHW/+8fouYktgesYvwhzmp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1761723},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs && node test/perception-geometry.test.cjs && node test/severity-rank.test.cjs && node test/code-ingest.test.cjs && node test/observer-transparency.test.cjs && node test/reflow-invariant.test.cjs && node test/standards-corpus.test.cjs && node test/symbol-ingest.test.cjs && node test/verify-gate.test.cjs && node test/sourcemap.test.cjs && node test/react19-source.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js && node --check lib/sourcemap.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs","test:journey":"node test/journey.test.cjs"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"1.62.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.6.0_1790324182386_0.4019801136940999","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Broken install: the postinstall step was missing, so --navian-license installed no licence and no browser was fetched. Use 2.6.1."},"2.6.1":{"name":"@navianpulse/designcheck","version":"2.6.1","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"license":"SEE LICENSE IN LICENSE","_id":"@navianpulse/designcheck@2.6.1","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"bin":{"designcheck":"dist/bin/designcheck.js"},"dist":{"shasum":"d371c84873fc1c39fda8351410e3b2e967c3c11e","tarball":"https://registry.npmjs.org/@navianpulse/designcheck/-/designcheck-2.6.1.tgz","fileCount":58,"integrity":"sha512-k+DIDNJG62lJtY2zUpuHr1mAztyjXaAEYeeV+SaF3nnMTN5UNRP8WmLqo7QSUKrwjQhXn2nPGlsPwXdavOF78Q==","signatures":[{"sig":"MEQCIDTK0WkQ6qsEjjQZTNtIQ/r1qXTae1oA+OVq4ToCO4BJAiARYm6Y8ZT7BSlfIqblrtm1OsU0oPZTRfl30zpAQb8TAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCWmjTU/onbfF/pppUUSTdpr8TyUawEaTDQHoGzsEbckgIhALrxk/gq6xhEynjl2s8b+aaijlu2JRoHgAMfCN0zIcCk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1761782},"main":"dist/designcheck.js","comment":"The core engine (designcheck.js) has ZERO dependencies and runs in any browser. playwright is required ONLY by the optional CLI (bin/designcheck.js), which drives a headless browser so any coding agent can run the audit from a shell.","private":false,"scripts":{"test":"node test/pdf-structtree.test.cjs && node test/pdf-scanned.test.cjs && node test/usage-meter.test.cjs && node test/evidence.test.cjs && node test/checks-registry.test.cjs && node test/probe-instrument.test.cjs && node test/report.test.cjs && node test/vision-verify.test.cjs && node test/telemetry.test.cjs && node test/context-packet.test.cjs && node test/mobile-webview.test.cjs && node test/webview-attach.test.cjs && node test/license.test.cjs && node test/perception-geometry.test.cjs && node test/severity-rank.test.cjs && node test/code-ingest.test.cjs && node test/observer-transparency.test.cjs && node test/reflow-invariant.test.cjs && node test/standards-corpus.test.cjs && node test/symbol-ingest.test.cjs && node test/verify-gate.test.cjs && node test/sourcemap.test.cjs && node test/react19-source.test.cjs","bench":"node test/bench/run.cjs","check":"node --check designcheck.js && node --check bin/designcheck.js && node --check lib/license.js && node --check lib/usage-meter.js && node --check lib/report.js && node --check lib/setup.js && node --check lib/pdfcheck.js && node --check lib/jurisdictions.js && node --check lib/impact.js && node --check lib/evidence.js && node --check lib/webview-cdp.js && node --check bin/postinstall.js && node --check lib/sourcemap.js","prepack":"node tools/build-dist.cjs","build:dist":"node tools/build-dist.cjs","build:wasm":"cd mobile/core-rs-wasm && cargo build --target wasm32-unknown-unknown --release && cp target/wasm32-unknown-unknown/release/navian_audit_wasm.wasm ../../lib/navian-core.wasm","gen-checks":"node tools/gen-checks.cjs","postinstall":"node dist/bin/postinstall.js || true","test:journey":"node test/journey.test.cjs"},"_npmUser":{"name":"sguddanti","email":"seshu@guddanti.com"},"_npmVersion":"11.8.0","description":"Proprietary Navian tooling for evaluating rendered web experiences.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"pngjs":"^7.0.0","pdfjs-dist":"4.10.38","playwright":"1.62.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/designcheck_2.6.1_1790351004185_0.7287499382476101","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-09-18T18:22:42.873Z","modified":"2026-09-25T15:44:53.245Z","2.3.0":"2026-09-18T18:22:43.194Z","2.4.0":"2026-09-18T21:23:39.674Z","2.4.1":"2026-09-18T21:47:01.839Z","2.4.2":"2026-09-18T22:04:36.804Z","2.4.3":"2026-09-18T22:31:26.204Z","2.4.4":"2026-09-18T22:35:32.766Z","2.4.5":"2026-09-18T22:39:47.835Z","2.4.6":"2026-09-18T22:57:36.246Z","2.5.0":"2026-09-24T05:56:22.251Z","2.6.0":"2026-09-25T08:16:22.524Z","2.6.1":"2026-09-25T15:43:24.310Z"},"license":"SEE LICENSE IN LICENSE","keywords":["design-qa","accessibility","wcag","responsive","coding-agent","ai-agent","ui-testing","lighthouse-alternative","axe-alternative","zero-dependency"],"description":"Proprietary Navian tooling for evaluating rendered web experiences.","maintainers":[{"name":"sguddanti","email":"seshu@guddanti.com"}],"readme":"# navian-designcheck\n\n**A zero-dependency, no-baseline self-check for rendered web UI — layout breakage, responsive overflow, accessibility, performance budgets, SEO/metadata, broken links, leaked binding state, runtime errors, design-system drift, and security hygiene — built to be run by an AI coding agent on its own output, using the browser it already has.**\n\nOne self-contained script runs **thirteen measurement engines** in the browser — plus a `PASS / CONDITIONAL / FAIL / NOT_ASSESSED` verdict layer — so one tool replaces reaching for Lighthouse + axe + an SEO checker + a broken-link crawler + a console monitor. Everything is measurable from one real render (or a small multi-page crawl), deterministic, and every finding is traceable: `{ check, severity, selector, detail, viewport }`.\n\n**v2.2 adds** the **journey layer** — `designcheck --journey=pack.json` drives a multi-step flow (login → submit → dashboard) and audits the *actual rendered state at each step*, so it proves a critical journey works end to end (PASS / FAIL / INCONCLUSIVE) instead of scanning one page. Plus `navian-ui-bench`, a precision/recall/false-positive scorecard (100% recall · 100% precision · 0 FP on the seed set). See [CHANGELOG.md](CHANGELOG.md).\n\n**v2.1 adds** a measured accessibility frontier and deep **PDF** coverage. It reports its own **SC recall — 85% of the machine-detectable WCAG 2.2 A/AA criteria deterministically (29/34), 88% (30/34) with the optional vision pass** (via a reproducible harness in `test/recall/`), after closing gaps with new precision-gated checks: `non-text-contrast` (1.4.11), `lang-of-parts` (3.1.2), `label-in-name` (2.5.3), `meta-refresh` (2.2.1), `click-no-keyboard` (2.1.1). And it audits **PDFs** — a tagged-PDF tag-tree tier (`pdf-figure-no-alt`, `pdf-no-headings`, `pdf-heading-skip`, `pdf-table-no-header`) plus a **vision layer** (`--vision`): an OCR pass that rasterizes scanned pages and recovers the text baked into the pixels (`pdf-image-of-text`, 1.4.5 / 1.1.1), and an alt-text *quality* pass (`pdf-alt-quality`, 1.1.1) that judges whether a tagged figure's alt actually matches the image — the worst offenders at universities and in government. See [CHANGELOG.md](CHANGELOG.md).\n\n**v0.4 adds** an extended WCAG-AA + resilience engine — `a11y-zoom-disabled`, `a11y-no-main-landmark`/`a11y-no-skip-link`, `a11y-autoplay-video`, `a11y-color-only-link` (1.4.1), `content-truncated` (ellipsis hiding text), `tap-target-spacing` (2.5.8), `control-occluded` (clickable in source, covered in render), form `autocomplete`/input-type fit (1.3.5) — plus `runtime-console-error`/`-warning` capture, a `reflow-no-2d-scroll` metamorphic relation (1.4.10), and **`metamorphicLive()`**, a destructive same-page mode for cross-origin/production pages you can't iframe. Perf **page-weight now reports `NOT_ASSESSED`** when a cross-origin CDN hides `transferSize` (no `Timing-Allow-Origin`), instead of a misleading `0`.\n\n**This is not a novel invention** — the individual checks are commodity (see [Prior art](#prior-art--what-this-is-not)). The point is the **loop**: an agent that just wrote HTML/CSS *cannot see the render from a terminal*, so a layout that looks right in source can ship cut off, overflowing on a phone, or with an invisible CSS class-collision. It should **render, measure, and fix — then re-verify** before saying \"done.\" This is one self-contained script that closes that loop. **No install, no baseline image, no Figma, no extra software.**\n\nSibling in spirit to [`navian-dst`](https://opensource.navian.ai) (deterministic simulation testing) and `navian-memcheck`: *state one invariant once, check it exhaustively* — here across a matrix of viewports instead of a matrix of seeds.\n\n---\n\n## What it found on the open web\n\nWe ran it on **32 major sites** — 10 US banks, 17 Fortune-500/100 companies, and 5 leading B2B software brands (Stripe, Vercel, Linear, Notion, Datadog) — with the CLI's auto-fallback to a real browser for bot-protected pages. **Zero crashes.**\n\n> **Of 32 major companies, exactly one scored an A** (CVS Health, 90/100). Everything else landed **B or below — the median is a C-plus.**\n\nBanks cluster in B/C; Fortune-500 spreads B→D; even the best-built B2B software sits at B/C — held back by muted secondary-text contrast and the **+40% text-expansion resilience break that no at-rest scanner, Lighthouse, or axe reports** (PNC and Truist overflow by 1,400–2,000px; two of nine banks stay clean). Grades are the tool's deterministic scorecard — see [RUBRIC.md](./RUBRIC.md).\n\nTwo things this validates. The tool is **robust**: 32 real, hostile production sites, zero crashes, and each round of dogfooding drove new false-positive classes to near-zero. And it's **honest**: when a site serves a stripped page to headless automation, designcheck detects it and silently re-runs in a real browser — reporting the true (usually *worse*) grade instead of an inflated one.\n\n## The gap it fills\n\nTwo kinds of design tooling exist, and neither answers \"is this layout actually good / not broken?\":\n\n| Category | Examples | Answers | Doesn't answer |\n|---|---|---|---|\n| **Visual regression** | Percy, Chromatic, Applitools, BackstopJS, Playwright screenshots | \"did it **change** vs a baseline?\" | whether it was good in the first place |\n| **Token / spec compliance** | OverlayQA, token linters | \"does it **match Figma** (hex, size, spacing)?\" | whether the page **reads** right |\n\nBoth are comparison engines. Neither reads the page holistically and notices \"the funnel is cut off at 320px\" or \"this nav label is 117px tall because it inherited the wrong CSS rule.\" That's the gap.\n\n`navian-designcheck` is **Layer 1** of that: deterministic, mechanical, no baseline and no model required. (Layer 2 — an LLM holistic read against a written voice/coherence rubric — is on the roadmap and ships clearly labeled *advisory*, per the HCI literature that LLM UI-critique isn't yet a human-expert replacement.)\n\n## What it checks (all generic, all deterministic)\n\n| Check | Severity | What it catches |\n|---|---|---|\n| `horizontal-overflow` | high | the page scrolls sideways at some width |\n| `overflow-culprit` | high | the specific element(s) spilling past the viewport |\n| `element-clipped` | warn | content cut off by an `overflow:hidden` ancestor |\n| `geometry-anomaly` | high | short inline text rendered many lines tall — the classic **CSS class-collision** fingerprint (e.g. a nav label inheriting a section's 44px padding) |\n| `a11y-low-contrast` | high | text below WCAG AA contrast (4.5:1, or 3:1 for large text) |\n| `a11y-input-no-label` | high | form control with no associated label |\n| `a11y-no-accessible-name` | high | icon-only link/button with no text or aria-label |\n| `aria-broken-reference` | high | `aria-labelledby`/`describedby`/`controls` points at a missing id — ARIA wiring silently broken |\n| `tap-target-small` | warn | interactive element below 24×24 CSS px (WCAG 2.5.8) |\n| `font-too-small` | warn | body text under ~12px |\n| `img-missing-alt` | warn | image with no `alt` |\n| `a11y-no-lang` · `a11y-no-title` | warn | missing `<html lang>` / `<title>` |\n| `a11y-heading-skip` | warn | heading level skipped (h1 → h3) |\n| `a11y-positive-tabindex` · `a11y-duplicate-id` | warn | focus-order / aria-wiring anti-patterns |\n\nNo site-specific selectors, no dependencies (a11y is hand-rolled, not axe-core — see [Prior art](#prior-art--what-this-is-not)). Point it at anything.\n\n## The other engines (all browser-native, all deterministic, all zero-dependency)\n\n`report()` and `audit()` run every read-only engine below in one pass and return a combined pass/fail plus per-engine letter grades. The two engines that mutate state or hit the network are opt-in.\n\n| Engine | Key checks | Notable severity |\n|---|---|---|\n| **Performance** | LCP · CLS · FCP · load time · request count · transfer bytes · render-blocking count | all `warn` (advisory — report as **budgets**, they vary run-to-run) |\n| **Weight** | DOM node count · DOM depth · oversized images (served ≫ displayed) · webfont face count | `warn` |\n| **Runtime errors** | uncaught JS errors · failed resource loads · CSP violations | `high` (needs `installHooks()` before navigation) |\n| **Content hygiene** | `content-leaked-state` (rendered `undefined`/`NaN`/`[object Object]`/`{{ }}`) · placeholder/`lorem ipsum`/`TODO` · long-sentence readability | leaked-state = `high` (the #1 bug agents ship) |\n| **SEO / metadata** | `<meta viewport>` · title & description length · canonical · Open Graph · JSON-LD · single `<h1>` · favicon | missing viewport = `high` |\n| **Links & resources** | broken in-page anchors · broken images · `target=_blank` w/o `noopener` · empty hrefs · (opt-in) dead-link HEAD check | broken anchor/image/dead = `high` |\n| **Focus (opt-in)** | keyboard focus-ring visibility on interactive elements | `warn` (call `focusAudit()` — it moves focus) |\n| **Consistency** | distinct fonts / font-sizes / text-colors / radii / button-styles on a page **and drift across pages** | `warn` — the no-baseline design-system-rot metric |\n| **Security hygiene** | mixed content · insecure form action · external `<script>` w/o SRI · inline event handlers | mixed-content / insecure-action = `high` |\n| **Metamorphic** | assert an **invariant survives a transform** — +40% text must not hide the primary action or introduce overflow · RTL must not drop controls · a long unbreakable token must not overflow. Compares *meaning* (task/controls/overflow), not pixels. Runs on a throwaway same-origin iframe. | `high`/`warn` |\n| **Verdict / contract** | maps findings → **`PASS / CONDITIONAL / FAIL / NOT_ASSESSED`** against a contract (blocking checks, budgets, **waivers** keyed on a stable `fingerprint`). `NOT_ASSESSED` is first-class — an automated pass never implies WCAG conformance. | — |\n| **Scorecard** | per-engine A–F grades + **cross-site percentile benchmark** (`benchmark([...])`) | — |\n\nThe **content leaked-state** engine skips `<code>`/`<pre>` so template syntax shown *as documentation* isn't mistaken for a broken binding. The **security** mixed-content check only fires on `https:` pages. The **consistency** engine is the clearest expression of the no-baseline idea — it measures internal coherence with nothing to compare against.\n\n## The responsive sweep (the DST idea)\n\nThe highest-yield fuzz axis for layout is **viewport width**, and it needs no model. `sweep()` renders the page in an iframe (which has its own viewport, so `@media` re-evaluates) and runs every check at each width in a matrix — one invariant set, many \"seeds\":\n\n```\n320  360  390  414  600  768  834  1024  1280  1440  1920\n```\n\nMost layout bugs live at the edges (320px, ultrawide, 200% zoom, long strings, empty states), which the single happy-path screenshot every other tool checks never sees.\n\n## Usage\n\n### Browser (zero install — paste and run)\n```js\n// 1. paste designcheck.js into the console (or inject it)\nwindow.__designcheck.report();                    // agent self-check across ALL engines: { pass, high, warn, mustFix[], grades }\nwindow.__designcheck.audit();                     // full findings + metrics + design tokens for the current page\nawait window.__designcheck.sweep(location.href);  // same-origin viewport matrix (layout)\n// For runtime errors + LCP/CLS, inject and call installHooks() BEFORE the page loads:\nwindow.__designcheck.installHooks();\n```\n\nCross-origin pages block DOM access from an iframe, so for a third-party site: navigate to it, then `run()`.\n\n### CI (Playwright — real per-viewport rendering)\nThe iframe trick is for ad-hoc/console use. In CI, drive real viewports with Playwright and reuse the same `auditDoc`:\n\n```js\nconst { chromium } = require('playwright');\nconst fs = require('fs');\nconst check = fs.readFileSync(require.resolve('./designcheck.js'), 'utf8');\n\nconst SIZES = [320, 360, 390, 768, 1024, 1440, 1920];\nconst browser = await chromium.launch();\nconst findings = [];\nfor (const width of SIZES) {\n  const page = await browser.newPage({ viewport: { width, height: 900 } });\n  await page.goto(process.argv[2], { waitUntil: 'networkidle' });\n  await page.addScriptTag({ content: check });\n  const res = await page.evaluate(() => window.__designcheck.run());\n  findings.push(...res.findings);\n  await page.close();\n}\nawait browser.close();\nconst high = findings.filter(f => f.severity === 'high');\nconsole.log(JSON.stringify(findings, null, 2));\nprocess.exit(high.length ? 1 : 0);   // fail the build on any high-severity finding\n```\n\n## Self-check for AI coding agents (the point)\n\nAn agent that writes UI can't see the render. `report()` gives it a pass/fail it can act on:\n\n```js\nwindow.__designcheck.report();\n// → { pass:false, viewport:390, high:2, warn:11,\n//     mustFix:[ \"horizontal-overflow — html (page scrolls 41px at 390px)\",\n//               \"a11y-low-contrast — span.label (3.9:1 needs 4.5:1 — rgb(125,135,152) text)\" ] }\n```\n\nThe loop: **write → render → `report()` / `sweep()` → fix every `high` → re-run until `pass`** → declare done. Drop [`SKILL.md`](./SKILL.md) into a Claude Code project (`.claude/skills/designcheck/`) and the agent runs this on its own output with whatever browser it already has — no install, no baseline, no extra software. **This closed loop, not the checks, is the reason the tool exists.**\n\n## Prior art — what this is NOT\n\nHonesty over a marketing claim. Every Layer-1 check is commodity or established prior art; don't claim to have invented layout-break detection:\n\n- **[ReDeCheck](https://github.com/redecheck/redecheck)** (ICSE 2017) already extracts a page's layout across a matrix of viewport widths and detects element **collision / protrusion / wrapping** — overflow, clipping, and the \"geometry-anomaly\" class-collision fingerprint. An active academic line (LOCALICSS, ReFLAIR) continues it.\n- **[Polypane](https://polypane.app/docs/horizontal-overflow/)** ships horizontal-overflow detection that highlights the culprit element.\n- **axe-core / Lighthouse / Pa11y** own the a11y checks (automated findings ≠ conformance). This tool hand-rolls a subset to stay dependency-free; use axe-core for full coverage.\n- **Competitive picture (independently verified — an external review's \"PixelJury does this already\" claim did NOT hold up):** the real [PixelJury](https://www.figma.com/community/plugin/1610948596007306727/pixeljury) is a **Figma-only two-frame comparator** — no live render, no agent loop. But a real close tool exists that the review missed: **[UISentinel](https://github.com/mhjabreel/uisentinel)** already does headless multi-viewport screenshots + WCAG AA + overflow/responsive checks + structured fixes + a **re-validate-after-fix loop for AI agents** — i.e. it already occupies the deterministic-self-check-for-agents space this file's `designcheck.js` sits in. **[Figma AI Design Review](https://www.figma.com/solutions/design-review/)** and **[UIClip](https://arxiv.org/abs/2404.12500)** do calibrated quality judgment, but on **mockups/screenshots, not live code**. **OverlayQA / Pixelay / Over.fig** check drift-vs-Figma, not intrinsic quality.\n\n**What is genuinely still unoccupied** (see **[SPEC.md](./SPEC.md)**): (1) **generated application states** — nothing surveyed drives loading / empty / error / long-string / RTL variants; they all judge the happy path or one supplied frame — and (2) the *full* combination: project intent/rubric contract **+** generated states **+** normalized multi-analyzer evidence **+** calibrated advisory judgment **+** agent re-verify loop, with **no baseline**. That's a product/packaging moat, not a technical invention — and the deterministic self-check core (this file) is itself already shipped elsewhere (UISentinel). Ship it for the ergonomics and the generated-state coverage, not for novelty.\n\n> **Note:** the zero-dependency **deterministic analyzer** (`designcheck.js`, engine #3 of the five in [SPEC.md](./SPEC.md)) has grown from layout+a11y into eleven browser-native engines — layout, accessibility, performance, weight, runtime errors, content hygiene, SEO, links, focus, design-system consistency, and security — plus a per-engine scorecard and cross-site benchmark. Still to come from the full harness: the **scenario collector** (Storybook/Playwright import), the **seeded state generator** (today's `stress.*` is the manual version), the **perceptual judge** (advisory LLM rubric, BYO-key), and the **evidence aggregator** (waivers, SARIF, deltas-vs-main). Design-quality *judgment* ships **advisory** until calibrated; everything above is deterministic.\n\n## Output contract\n\nEvery finding carries `{ check, severity, selector, detail, viewport }` — so it's traceable to *why* it fired and *at what size*, never an unexplained \"looks off.\" (Mirrors Pulse's \"auditable and replayable on every decision\" principle.)\n\n## Validation\n\nRun against real sites during development:\n\n- **preview.navian.ai/value** (the guinea pig) — clean (0 high) at every viewport 356→1920px; found a genuine 320px overflow (funnel + heatmap don't fit on 1st-gen-iPhone-SE widths). Also caught a real CSS class-collision earlier (a nav label at 117px vs the expected 28px) that pixel-diff and token-linters both miss.\n- **news.ycombinator.com** (third-party, zero config) — 0 high, correctly flagged HN's known accessibility issue: 232 tap targets under 24×24px, plus tiny fonts and missing alt text.\n\n## Roadmap\n\n- **Layer 2 (advisory)** — a vision model reads each full-page screenshot against two written TOML rubrics (`design-tokens.toml`, `voice-spec.toml`) for hierarchy / rhythm / density and brand voice. Grounding in an explicit rubric (not a bare prompt) is what the UICrit research shows narrows the human/LLM gap; ships labeled experimental.\n- **Content-fuzz matrix** — re-render key pages against synthetic edge-case content (40-char names, empty/loading/error states, +30% German text, 0 / 1 / 10⁴-item lists) — the actual \"Antithesis for design\" mechanism.\n- **Waiver file** — accept an intentional finding once, keyed on a stable hash `(page + condition + check + selector)`, so a deliberate choice doesn't re-flag every run.\n- **axe-core integration** for full a11y coverage under Layer 1.\n\n## License\n\nApache-2.0 (matches the `navian-*` family).\n","readmeFilename":"README.md"}