VisualQ

Audit trigger matrix

Which quality pillars run for each user action, API call, or CI job — VisualQ's 8-pillar model.

VisualQ organizes web quality into 8 pillars. This page documents which pillars actually execute for each dashboard button, API endpoint, or scheduled job — not just what appears in the composite score.

All heavy audits run on the Playwright worker (worker.visualq.ai). The Next.js app orchestrates dispatch, Firestore callbacks, and score persistence.

The 8 pillars

#PillarTechnical idAudit unitPrimary trigger
1VisualvisualVRT page (scenarios/)Run VRT, baseline
2Accessibilitya11yVRT pageA11y button or VRT piggyback
3PerformanceperfVRT pagePerf button or VRT piggyback
4SEOseoVRT pageSEO button or VRT piggyback
5SecuritysecurityVRT pageSecurity button or VRT piggyback
6TrackingtrackingTracking plan → linked VRT + FRTTracking / Analytics button
7PrivacyprivacyVRT page (triple-run)Privacy button or full audit
8Functional (FRT)functionalFRT journey (features/)Run feature / FRT batch

The Functional pillar maps to the FRT module in the UI. An FRT journey is never triggered from a VRT page alone — that is a product constraint, not an exclusion from the quality score.

Trigger matrix

Read across: columns show pillars executed and persisted when the user (or CI) launches the row trigger.

TriggerVisualA11yPerfSEOSecurityTrackingPrivacyFRTScenarios in scopeBrowser sessions (order of magnitude)
Run VRTSelected or all VRT scenarios1 / page (shared capture)
Run A11y onlySelected or all VRT scenarios1 / page
Run Perf onlySelected or all VRT scenarios1 / page
Run SEO onlySelected or all VRT scenarios1 / page
Run Security onlySelected or all VRT scenarios1 / page
Run Privacy onlySelected or all VRT scenarios3 / page (initial, reject, accept)
Run FRT (feature / batch)Selected FRT features1 / FRT scenario
Run Tracking✅*Tracking plan: linked VRT pages + linked FRT features1 / linked page + 1 / linked FRT scenario
Full audit (8 pillars)All VRT + all FRT features + tracking planPage batch + privacy triple-run + FRT batch + tracking fan-out

Legend

SymbolMeaning
Pillar runs; results persist to quality score and/or rolling health (page_health, frt_health, tracking plan).
Pillar not executed for this trigger.
✅*FRT runs only for features linked to tracking-plan events — not the entire project FRT suite.

Per-trigger behavior

Run VRT (page piggyback)

Run VRT dispatches an audit-batch with page pillars: visual, a11y, perf, seo, security. The worker performs one navigation per VRT scenario and runs screenshot, axe, perf probes, SEO audit, and security audit on the already-loaded page.

Overhead vs VRT-only is small: probes run during capture without an extra reload. Tracking and FRT are not included in this click.

See also Run tests.

Single page pillar

A11y, Perf, SEO, Security, or Privacy buttons (or /api/tests/a11y, /api/tests/privacy, etc.) dispatch a dedicated runType. Only that probe runs — no VRT screenshot, no other pillars.

Run Privacy (triple-run)

Privacy dispatches privacy-test. Each VRT scenario runs three isolated browser contexts: initial load, reject-all, accept-all. Cookies, network hits, storage, CMP banner, policy link, and optional TCF/GCM signals are captured per stage. This cannot piggyback on a single VRT capture.

See Run a privacy audit.

Run FRT

A FRT feature run dispatches frt-test only. No page pillar is added automatically. Tracking overlay runs only when Verify tracking is explicitly enabled on the scenario.

See Running FRT tests.

Run Tracking (strict mode)

Tracking does not scan the whole site. It runs only entities linked in the tracking plan:

  • for each plan page with a linked VRT scenario → navigation + datalayer and network hit checks ;
  • for each plan event with FRT refs → linked FRT replay + per-step network overlay.

In strict mode (default), tracking navigations do not piggyback page pillars (a11y, perf, seo, security). Only tracking and linked FRT run.

If the plan links 8 pages and 5 FRT scenarios, cost is at most 8 + 5 jobs (parallelizable).

See Run a tracking audit.

Full audit

Full audit orchestrates four parallel groups:

  1. Page batch — visual + a11y + perf + seo + security via shared capture ;
  2. Privacy — triple-run per VRT scenario (privacy-test) ;
  3. FRT batch — all project FRT features ;
  4. Tracking — fan-out on linked plan entities (strict mode).

Plan-gated pillars or missing setup (e.g. no analytics plan) are skipped with a warning; the rest run normally.

See Run tests — Full audit.

CI / API entry points

EntryUI equivalentUseful parameters
POST /api/tests/testRun VRT (+ page piggyback)scenarios[]
POST /api/tests/a11ysecurity, privacySingle page pillarscenarios[]
POST /api/tests/trackingRun Trackingplan / scenarios
POST /api/tests/frtFRT batchfeatureIds[]
POST /api/frt/runFRT feature runfeatureId
POST /api/tests/full-suiteFull audit (scenario scope)scenarios[], pillars[]
POST /api/quality-score/full-auditFull audit (whole project)pillars[]
POST /api/ci/runBy type (vrt, a11y, frt, …)see CI endpoints
Inngest cron per pillarScheduled single pillarschedule config
Inngest full-quality-auditFull auditcapabilities.qualityPillars

Rolling health and composite score

Page pillars feed page_health/{pageId}; functional feeds frt_health; the site aggregates via site_health/summary. The composite quality score on project home comes from this rolling health — not from a single pillar's latest run.

For project KPIs via MCP, use get_site_health / get_quality_score rather than one child run.

On this page