Site & app audits
A site audit is a full visual and functional inventory of every public surface Drape ships: the marketing site, the brand portal, a tenant storefront, the admin console, and the iOS app. Every route is loaded, screenshotted at desktop and phone widths, exercised through the interaction states a signed-out visitor can reach, and checked for console errors, failed requests and basic accessibility hygiene.
Each audit is run twice: once against local builds of the current branches, and once against production. A finding that reproduces on the live site is a real issue for users. One that only appears on localhost is a dev-environment nice-to-have, and every finding is labelled one way or the other.
How an audit is produced
| Step | Tool | What it does |
|---|---|---|
| Route discovery | app/**/page.tsx in each Next.js repo, plus same-origin links found on rendered pages | Builds the list of routes to visit |
| Web crawl | Playwright + Chromium (crawl.js) | Loads each route at 1440×900 and 390×844, full-page screenshots, tabs / expanders / mobile menu / empty form submit / wrong-password login, records console and network errors |
| Report | report.js | Classifies findings (critical, needs attention, minor, expected-from-probe), writes summary.json and a local HTML index |
| Production pass | same crawler, config-prod.json | Same routes on drape.to, brand.drape.to, a live tenant host and admin.drape.to |
| Comparison | compare.js | Pairs each local finding and route with its production counterpart and assigns the verdict |
| Mobile tour | Maestro (audit-tour.yaml) | Release simulator build, signup and login validation, onboarding, then every main, seller and brand route by deep link |
| Shareable report | build-artifact.js | One self-contained HTML file with compressed captures, findings and verdicts |
The tooling for the latest audit is downloadable from that audit's overview page so the next pass can reuse it. Two environment details matter when rerunning locally:
- The dev API's CORS allowlist accepts plain
localhostonly on ports 3000 to 3003, plus any*.localhosthost. Run the brand portal asbrand.localhost:<port>and the admin asadmin.localhost:<port>. - Maestro needs a Release simulator build (
npx expo run:ios --configuration Release); the Expo dev client cannot be driven through flows that clear state.
Audits to date
| Date | Scope | Headline |
|---|---|---|
| 2026-11-03 | Marketing, brand portal, storefront, admin, iOS app; local develop vs production | 4 production issues (privacy/terms 404, product share image, admin login error, featured endpoint 500), the rest dev-only or hygiene |