# Visual and mobile QA worksheet

Record what you saw on the rendered page. A note that the source "looks fine" is not a completed row.

## Page

- URL or file:
- Brief the page is supposed to meet:
- Desktop viewport you opened:
- Narrow viewport you opened, usually 390 × 844 px:
- Browser or device:
- Zoom, usually 100%:
- Page state, including sign-in, banners, and dialogs:
- Capture date:

## Worked example

This row is fictional. It shows how to fill the sheet. It is not a browser session against a live Harbor Ledger site.

- Viewport: 390 × 844 px.
- Browser or device: example only; no browser session was run.
- Zoom: 100%.
- Page state: signed out, with no banners or dialogs.
- What the brief required: price and the call to action in the first screen.
- What the page did: a 720px-tall photo pushed the $89 price and the button below the fold.
- Correction: stack the headline, the reader line, the price, and the button first. Place the photo after that stack.
- Recheck: the desktop row still shows the price, and there is still one primary button.

## Your page

- Viewport:
- Browser or device:
- Zoom:
- Page state:
- Capture date:
- What the brief required:
- What the page did:
- Correction:
- What you rechecked:

## Keyboard and form

Leave these blank if you have not done them. Do not mark them passed from memory.

- Tab reached the primary action, and focus was visible:
- You could leave every control you entered:
- Empty form submit named the failed field:
- Contrast of the price and the button label against their surfaces:

## Images and headings

- Informative images have alt text that matches their job:
- Decorative images use an empty alt attribute:
- Heading order matches the sections:
- Iter0's house convention of one h1 per page is met:

## Not done

List any check you skipped. A skipped keyboard pass means the page is not reviewed, even if the screenshot looks right.
