Beginner Steps. Advanced AI.
Published guideUpdated
Chapter 15 of 20Build & check
Try the website as a visitor
Follow the links, use the phone menu, and try the keyboard. Ask Codex to repeat the important checks.
Try the things a visitor wants to do. Write down anything that gets in the way.
Follow the pictures
Illustrated examples. Your app may look different. Tap an image to enlarge it.
-
Choose the journeys
Use the test prompt to plan three journeys through the site. Say what should happen at each step.
Illustrated example - Main journey
- Home → Services → Contact
- Also try
- About → Contact, plus the phone menu
Look for: Three short journeys each have an expected outcome.
More help with this action
Use the visitor-journey test prompt to turn three journeys into test cases: Home to Services to Contact; direct arrival on About to Contact; and opening the navigation on a phone. State the expected result for each.
Test a visitor goal
- Write the main journey: arrive on Home, find Services, and reach Contact. State the page or result you expect after each action.
- Also test arriving directly on About and finding Contact, plus opening and using the phone menu.
- Give these journeys to Codex through the linked prompt. Ask for checks of visible behaviour, not tests that merely repeat the code.
You should now see: Three short journeys each have an expected outcome.
-
Repeat the checks automatically
Ask Codex to configure and run Playwright tests for your journeys, using a local test server.
Illustrated example - Ask Codex
- Set up browser tests → Run journeys → Show results
Look for: The test report shows which journeys passed or failed.
More help with this action
Ask Codex to extend the first smoke test into Playwright browser tests for these journeys. Have it configure a local test server, install the required browsers, and document the exact test command.
Let the browser test perform real actions
- Ask Codex to extend the first smoke test into checks for your three visitor journeys.
- Have it install the required browsers, configure the local test server, and document the actual test command. Prefer the built preview where practical.
- Run the tests and read the results. Ask for reproducible evidence of a failure rather than accepting an unsupported “it works”.
You should now see: The test report shows which journeys passed or failed.
-
Try different screen sizes
Resize the preview and try a phone, using Chrome device mode when helpful.
Illustrated example - In the browser
- Wide → Tablet width → Phone width
Look for: You can read and use the site without sideways scrolling.
More help with this action
Test the production preview at narrow phone, tablet, and desktop widths, using Chrome device-mode instructions when needed. Also try a real phone when available; watch for hidden controls, overflowing text, cropped images, and unwanted sideways scrolling.
Inspect what changes when space is tight
- Open the production preview at a wide desktop size. Narrow the browser and inspect the tablet and phone layouts.
- Use the linked Chrome device-mode instructions if you want a controlled phone-sized viewport. Also try a real phone when available.
- Look for clipped headings, hidden buttons, awkwardly cropped images, and sideways scrolling. Give Codex the page and screen width when reporting a problem.
You should now see: You can read and use the site without sideways scrolling.
-
Use only the keyboard
Put the mouse aside. Use Tab and Enter to try every control, following the keyboard-access checks.
Illustrated example - Key path
- Tab → See focus → Enter
- Move back
- Shift + Tab
Look for: Each control is reachable, usable, and visibly focused.
More help with this action
Use the W3C keyboard-access checks with the mouse aside. Press Tab and Shift+Tab to move through controls, Enter to activate links, and the menu's supported keyboard controls. Check visible focus, sensible order, and whether you can escape any open interface.
Check where the keyboard takes you
- Start at the browser address bar and press Tab to move into the page. Use Shift+Tab to move backwards.
- Check that an outline or another clear indicator shows which link or control has focus. Press Enter to activate links and use each menu’s supported controls.
- Check the order and whether you can leave every open interface. Record the exact key sequence if focus disappears or becomes trapped.
You should now see: Each control is reachable, usable, and visibly focused.
-
Check reading and accessibility
Zoom to 200% and check headings and images with the accessibility guide. Ask Codex to add axe checks.
Illustrated example - In the browser
- Zoom to 200% → Read → Check headings and image text
Look for: Your report includes manual findings and automated accessibility results.
More help with this action
Follow the W3C first accessibility review: zoom to 200%, review page titles and heading order, and check meaningful image descriptions. Ask Codex to add axe-based accessibility tests alongside Playwright; automated results still need manual review.
Combine direct inspection with automated checks
- Zoom the browser to 200%. Check that the page remains readable and that important controls still work.
- Review distinct page titles, a sensible heading order, and descriptions that convey useful images. Decorative images should not add unnecessary noise.
- Ask Codex to run axe-based tests and explain their findings. Automated checks cannot establish full accessibility; record keyboard, zoom, and other manual findings too.
You should now see: Your report includes manual findings and automated accessibility results.
-
Record, fix, and retry
Save a report using the chapter checks. Ask Codex to fix failures and try those checks again.
Illustrated example - Your report
- Expected result → Actual result → Fix and retry
Look for: Failures are reproducible, and fixes have been checked again.
More help with this action
Save a short report using the chapter success checks: page, device or viewport, action, expected result, actual result, and status. Have Codex reproduce failures, fix them, and rerun affected checks. For a backend form, test both real delivery and rejected or failed submissions.
Keep useful evidence
- Record the page, device or viewport, action, expected result, actual result, and status. This tells Codex how to reproduce the problem.
- Ask Codex to fix confirmed defects and rerun the affected checks. Do not weaken assertions or remove findings just to get a passing report.
- For the email link, check the recipient rather than claiming a message was sent. Any optional backend form needs separate real delivery evidence and rejected or failed submission checks.
You should now see: Failures are reproducible, and fixes have been checked again.
Why this step matters
Playwright can operate a browser and check an expected result. Useful tests describe what a visitor accomplishes: navigating from Home to Services, finding Contact, or operating the mobile menu. Avoid tests that merely confirm that the code contains the same text Codex just wrote.
Automated accessibility checks detect some problems, including certain missing labels and contrast failures. They cannot establish complete accessibility. Keyboard use, readable content, zoom, meaningful image descriptions, and screen-reader checks need human judgement too.
Basics, explained
End-to-end test
A test that follows an action through the working system to its outcome, such as submitting a form and confirming that the receiving service got it.
Viewport
The visible area of a browser page. A narrow viewport helps reveal problems that appear on phones.
Keyboard focus
The control that currently receives keyboard input. A visible focus indicator helps people see where they are on the page.
Regression
Something that previously worked but breaks after a later change. Repeatable tests help catch it.
Ask your agent
PromptTest meaningful visitor journeys
Read the acceptance criteria and existing test setup. Use Playwright to test the Fieldnotes Studio journeys Home > Services > Contact, About > Contact, and mobile navigation. Check observable behaviour with meaningful assertions. Add an axe accessibility scan and explain its limits. Run against the built preview where practical. Report actual results and save reproducible failures; do not weaken assertions to get a pass. Fix confirmed defects, then rerun the affected checks. Give me a separate manual keyboard and zoom checklist. If something goes wrong
- Playwright cannot connect to the website.
- Have Codex check the configured server command, port, and base URL against the actual preview. Ensure the build exists and the required browser is installed.
- The automated scan passes, but keyboard navigation is confusing.
- Record the precise sequence of keys and the unexpected focus movement. Fix the control behaviour and check it manually again; an automated pass does not override that finding.
Official links & further reading
Personal notes
Add questions, decisions or ideas for your website. Saved in this browser when available; export your notes to keep a copy. Never enter secrets.
Downloads & saved progressGuide, notes and personal checks
Download the complete guide or export your notes from every chapter. Instructions last reviewed: .
Checks and notes stay in this browser, separately for each language. Export your notes to preserve them. Never enter API keys or other secrets here.
NotesNotes as Markdown
Clipboard access is unavailable. Copy the visible, selected text below using your keyboard or browser menu.
0 of 65 checks marked across the guide
These are your saved personal checkmarks. They do not run tests or verify security, and are separate from the chapter position bar above.
Starter filesWorking instructions and four skills
These templates give your agent a starting set of working instructions. Review them, adapt them to your website, and save each file at the exact path shown, relative to your project folder.
A downloaded skill is an instruction file. It does not install a test runner, run a security scan, or prove your site is safe. The guide shows how to set up and check that work.
Download the instruction files in the language of this guide. Keep the technical filenames and paths as shown.
Download all starter filesFileAGENTS.md
# Website working agreements
This project follows the website brief and acceptance criteria we have agreed with its owner. Use the existing technology choices unless a concrete requirement calls for a change.
## How to work
- For a substantial feature, explain the proposed changes and verification plan before implementing it. Complete authorized local work in small, reviewable stages.
- Read the files relevant to the task. Keep unrelated pages and configuration intact.
- Explain new technical terms in plain language when reporting to the owner.
- Use the repository's website-design, clean-code, website-testing and website-security skills when their workflows apply.
- Record important decisions and unresolved content in the project's notes. Do not invent business facts, endorsements or publishing rights.
## Verification
- Inspect package.json to find the actual build, type-check and test commands. Do not invent a successful check or create a meaningless test just to make a command pass.
- Run checks appropriate to the change. Local tests use disposable fixtures and have no production access; run them and repair failures caused by the requested change without asking at every step.
- Verify visitor interactions in a browser when browser tools are available. Report checks that remain unavailable or incomplete.
- Show the owner a working local preview and summarise changed behaviour, evidence and remaining limitations.
## Credentials and publication
- Keep API keys and other secrets out of browser code, prompts, logs and Git. Store local secrets in ignored files or the chosen secret store.
- Local build and test work is authorized. Publishing the site, sending a real message, processing a payment or changing production data requires the owner's authorization for that action.
- Preserve a recoverable working version before release. Describe how to restore it.
These are starter agreements for a new tutorial project. Adapt them to the owner's actual requirements and existing authorization.
File.agents/skills/website-design/SKILL.md
---
name: website-design
description: Develop or refine a website's visual direction and responsive interface from its brief, content and existing design. Use for page design or visual implementation.
---
Read the website brief and any existing design notes relevant to the requested page. Work within the user's brand, content and technology choices.
When establishing a new direction, propose typography, a small colour palette, a spacing rhythm and a sample page. Explain how these choices support the audience and main visitor action. Use real content to judge hierarchy and line lengths.
Implement reusable elements for navigation, headings, buttons and repeated content. Give primary actions a clear visual hierarchy. Preserve visible keyboard focus, readable contrast and usable labels. Design narrow screens alongside desktop screens; check long headings, navigation and tap targets in a browser.
Use semantic HTML before adding custom interaction. Keep motion optional and respect reduced-motion preferences. Use assets with known permission to publish; record their sources. Do not invent client testimonials, achievements or business facts.
Before expanding a design across all pages, show the first complete page at desktop and mobile widths. Describe the main design decisions and any unresolved content. When a browser tool is unavailable, report that visual verification is still pending.
File.agents/skills/clean-code/SKILL.md
---
name: clean-code
description: Implement or refactor website code into understandable components using the project's existing stack and conventions. Use for website implementation or maintainability work.
---
Read the relevant files and package scripts before choosing an implementation. Preserve working behaviour outside the requested change. Prefer the existing stack and dependencies when they meet the need.
Keep page content separate from repeated layout where that makes editing easier. Name components, variables and functions for their purpose. Use shared components for repeated navigation and page elements; avoid abstraction for a single trivial use.
Handle empty, invalid, loading and error states for interactions that need them. Use native browser controls and semantic HTML when they serve the interaction. Avoid fake form submission, simulated success messages and dead links.
Use type checking and the project's formatting or lint rules where configured. When adding a package, explain its purpose and any new maintenance or runtime requirements. Keep generated build output, dependencies and local environment files out of version control.
Run the existing checks relevant to the change, including a production build when output can change. Summarise changed behaviour, verification results and remaining limits. Explain the main files in plain language so a beginner can find and edit their content.
File.agents/skills/website-testing/SKILL.md
---
name: website-testing
description: Verify website changes through visitor journeys, appropriate automated tests and browser checks. Use when testing a website, investigating a failure or preparing a release.
---
Start from the brief and observable acceptance criteria. Inspect existing test and build commands; do not assume that a script exists. Choose checks based on the changed behaviour and the cost of failure.
Exercise the main visitor journey and affected links, navigation and forms. Include invalid input and relevant error states. For a contact form, verify actual delivery in the agreed test destination before reporting that it works. For an email link, explain that it opens the visitor's configured email app and does not send a message automatically.
Check narrow and wide screens in a browser. Include keyboard navigation, visible focus, accessible names, zoom and horizontal overflow. Automated accessibility results complement these manual checks and do not establish complete accessibility conformance.
Add automated tests for important behaviour or demonstrated regressions. Test observable outcomes and meaningful failure cases; avoid tests that merely repeat the implementation or match incidental wording. Use disposable test data and local fixtures. Never send real messages, charge payments or alter production data without the user's authorization.
Reproduce a failure, fix its cause and rerun affected checks. Report commands run, results, browser checks performed and anything not checked. A successful build shows that the site can be generated; verify visitor behaviour separately. Never report a check as passed when it was skipped or unavailable.
File.agents/skills/website-security/SKILL.md
---
name: website-security
description: Review a website's secrets, dependencies, inputs, permissions and deployment configuration, and repair scoped security findings. Use for requested security review or release preparation.
---
Identify the site's relevant surfaces: static pages, forms, backend routes, authentication, third-party scripts and stored data. Scope review to the actual architecture and authorized environment.
Keep credentials out of browser code, logs, prompts and Git. Distinguish build-time public configuration from server secrets. If a key was committed or exposed, stop using it, explain that deleting the file does not revoke the key, and have the owner revoke or rotate it before further use. Do not print the credential in your report.
Inspect applicable dependency advisories and assess whether the affected package and vulnerable behaviour are used. Repair within the project's compatible versions and rerun affected checks. Avoid automatic forced upgrades that may break the website.
For backend interactions, validate inputs on the server, encode output appropriately, and check authentication and authorization separately. Consider abuse controls for public forms or AI endpoints. An OpenAI API key belongs on the server; publishing a static site does not provide a secret server environment.
Check HTTPS and applicable security headers at the actual hosting layer. Collect only the data the feature needs, and explain its destination and retention. Do not claim legal compliance from a code scan.
Report each finding with its location, plausible impact, fix and verification. State review scope, tools used, unresolved findings and inaccessible surfaces. A clean scan is evidence about that scan's scope, not a guarantee that the website has no vulnerabilities. Do not scan third-party systems or deploy changes outside the authorized task.