Website Content & Responsive UX Audit avatar

Website Content & Responsive UX Audit

Under maintenance

Pricing

$50.00 / 1,000 website audit reports

Go to Apify Store
Website Content & Responsive UX Audit

Website Content & Responsive UX Audit

Under maintenance

Audit server-rendered website content and responsive layouts. Get desktop/mobile screenshots, measured usability checks, and developer-ready findings in a downloadable report pack. Site JavaScript is not executed.

Pricing

$50.00 / 1,000 website audit reports

Rating

0.0

(0)

Developer

bread kim

bread kim

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

22 days ago

Last modified

Categories

Security

Limited permissions

Share

Website Content & Responsive UX Evidence Audit

Private Apify Actor for developers and agencies preparing a client handoff. It fetches one caller-declared public HTTPS page, keeps server-rendered HTML plus bounded same-origin CSS, renders fresh 1440×900 and 390×844 Chromium contexts with JavaScript disabled, and produces measured screenshots, observations, acceptance checks, and a portable hashed report pack.

It does not perform real-user testing, automatic redesign, conversion optimization, interactive-JavaScript testing, or usability/WCAG certification. Missing expectations remain NOT_PROVIDED; the Actor never invents business intent. Form/control state and ordinary anchor semantics are preserved for accurate rendering while submission actions, site JavaScript, and all browser requests are blocked; image boxes become explicitly reported layout approximations, and safe charset/viewport metadata is retained. Images, fonts, scripts, iframes, media, third-party resources, CSS imports, and CSS URL assets are not fetched. Unknown, imported, or omitted styles produce prominent partial-coverage warnings. Challenge and script-only pages fail as unsupported instead of producing a clean-looking audit.

Input and output

Set demoMode: true for the deterministic built-in fixture (no DNS or HTTP). Live mode requires one public HTTPS URL with no credentials, custom port, query, hash, or IP literal. Optional expectedPrimaryAction, up to five literal expectedMessageTerms, and audience are caller declarations.

Successful runs write one default-dataset summary and OUTPUT, UX_AUDIT.json, UX_FINDINGS.csv, UX_REPORT.html, DESKTOP.png, MOBILE.png, HANDOFF.md, MANIFEST.json, and UX_AUDIT_PACK.zip to the default key-value store. Output provenance records DEMO or LIVE, normalized requested URL, verified final URL, and observation time; demo URL fields remain null. To avoid an impossible self-referential hash, packaged UX_AUDIT.json identifies the archive with convention: EXTERNAL_OUTPUT_ONLY but excludes the outer ZIP hash/size. The external authoritative OUTPUT adds the exact final ZIP SHA-256 and byte count. Standalone HANDOFF.md is the same byte string listed in the manifest and ZIP. Failed runs write only a safe failed OUTPUT and no success dataset item; invalid/missing input preserves the operator contract error.code: INVALID_INPUT with process exit 0.

Local verification

Use Node 22.23.3: npm ci --ignore-scripts, npm test, npm run typecheck, npm run preflight. Local Chromium proof uses only task-owned .native-test-libs extracted from the pinned @sparticuz/chromium AL2023 bundle; that folder and .npm-cache are excluded from the image/upload context. The Docker image expands Chromium once during build into immutable /opt/ux-chromium and performs a real deterministic render self-check. Runtime never accepts a customer or environment executable path. Before any remote mutation, the signed operator still must build once and run the isolated smoke; no Docker execution or deployment was performed here.

Public page screenshots can contain public PII. Only audit pages you are authorized to review. Raw headers, credentials, cookies, and source HTML are never stored.

Overlap analysis samples the first 100 visible controls and retains at most 50 pair observations per viewport. OVERLAP_CHECK_LIMIT_REACHED explicitly marks untested remaining pairs; an omitted finding is not proof of no overlap. This bounds pairwise memory/compute even on dense hostile pages.

On a fresh Linux test checkout without Chromium native dependencies, extract the pinned package's bundled libraries into the ignored, task-owned folder (no system package installation):

mkdir -p .native-test-libs
TMPDIR="$PWD/.native-test-libs" node --input-type=module -e 'import { inflate } from "@sparticuz/chromium"; await inflate("node_modules/@sparticuz/chromium/bin/al2023.tar.br")'
npm run preflight