In this video· click a step to jump to it
Test recording
DNSAudit.io — app walkthrough
83,486 ms · 2,336 pixels changed
We built this regression test for dnsaudit.io — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against dnsaudit.io. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const shot = (n, slug) => screenshotPath.replace('.png', `-${n}-${slug}.png`);
const SCROLL_THROUGH = "(async () => { const ease = t => 1 - Math.pow(1 - t, 3); const max = Math.max(0, document.body.scrollHeight - window.innerHeight); if (max < 40) return; const anim = (a, b, ms) => new Promise(res => { const t0 = performance.now(); const step = now => { const p = Math.min(1, (now - t0) / ms); window.scrollTo(0, a + (b - a) * ease(p)); p < 1 ? requestAnimationFrame(step) : res(); }; requestAnimationFrame(step); }); await anim(0, max, 1400); await new Promise(r => setTimeout(r, 350)); await anim(max, 0, 800); })()";
await page.context().setExtraHTTPHeaders({ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36' });
for (const pattern of ['**/cdn-cgi/scripts/**/email-decode.min.js', '**/sentry-cdn.com/**', '**/browser.sentry-cdn.com/**', '**/cdn.segment.com/**', '**/connect.facebook.net/**', '**/www.googletagmanager.com/**']) {
await page.route(pattern, function (r) { return r.abort(); }).catch(function () {});
}
// ---------- Public context: home ----------
stepLogger.log('Public: DNSAudit.io home');
await page.goto(baseUrl + '/', { waitUntil: 'domcontentloaded' });Checks run
Notes from the demo run
AI-generatedWe drove DNSAudit.io end-to-end as a signed-in user: Google sign-in, then the dashboard, a live scan of cloudflare.com, the full DNS & Domain Security report, and every asset and API surface in your sidebar. The product reads as unusually finished for a 1.3 release: the free-tier comparison table on /register tells a visitor exactly what changes when they sign up, the dashboard fills itself in with real grades while background scans finish, and the report page puts DNS Security and Domain Exposure side by side instead of collapsing them into one number.
- The /register comparison tableYour signup page shows the no-account vs free-account limits row by row (3 vs 10 scans, 50 vs 100 subdomains, no history vs 14 days). That is the clearest signup justification we have captured on a demo this month; most tools just say 'sign up for free'.
- Two scores, not onecloudflare.com came back B 80/100 DNS Security and A+ 100/100 Domain Exposure. Splitting them is the right call: a domain can be exposed without being misconfigured, and a single blended grade would have hidden that.
- Portfolio fills in asynchronouslyWe added lastest.cloud and 'Rows fill in on their own as each background scan finishes. No refresh needed.' held true. The grade, issue counts, DNSSEC state and expiry (146d) all landed without us reloading.
- Onboarding does not block the productAdd-a-domain, the role question and the plan summary each took one click and dropped us straight into My Domains. No modal we had to fight.
- Sidebar items are buttons, not linksMy Domains / Top Issues / Scan History are <button> elements that push the route rather than anchors. They work, but they cannot be middle-clicked into a new tab, right-click-copied, or crawled, and screen readers announce them as buttons rather than navigation. Swapping them for <a href> keeps the same handler and fixes all three.
- The scan report drops out of the app shellRunning a scan from /dashboard lands on /scan/<domain>, which renders the public marketing chrome (Docs / API / Blog / About) instead of your dashboard sidebar. A signed-in user loses their nav mid-workflow and has to use the back button to get to Scan History. Rendering the report inside the dashboard layout when authenticated would keep the loop closed.
4 visual changes
Share this run
Proof your app is not AI slop
This test was built for dnsaudit.io — claim it free
One click copies the test and baseline screenshots into your own Lastest workspace. Re-run on every deploy and catch regressions before your users do — free, no card required.











