# Multi-page website — verification

Verified **26 October 2026** against the implemented Laravel website. This supersedes the earlier homepage-only verification.

## Scope completed

Six real server-rendered GET pages: **Home, About, Services, Solutions, Products and Contact**, plus the Contact POST handler and branded 404/429 responses. The approved navy/cyan design is retained, typography is enlarged, and the original source information is preserved with documented proofreading corrections.

## Framework and build

- Laravel **13.38.0**; PHP **8.4.27** (application requirement PHP `^8.3`).
- `composer validate --strict`: passed.
- `php artisan test`: **28 passed, 282 assertions**.
- Laravel Pint: 16 PHP files checked; three formatting issues corrected; the full test suite then passed again.
- `npm run build`: passed.
- Final compiled assets: `app-7U8zN-92.css` (56.97 kB, 13.21 kB gzip) and `app-B6QGB7E0.js` (5.33 kB, 2.02 kB gzip).
- Configuration, route and Blade caches built successfully; cached homepage HTTP 200.
- The root-relative self-hosted font URLs are intentionally resolved at runtime. Both fonts returned HTTP 200; no font CDN is required.

Tests cover six page routes, source-content rendering, all values/services/solutions/products, route-based navigation, product-subject prefilling, unknown IDs, a branded 404, server validation, subject header-injection prevention, honeypot rejection, throttling, mail failure handling, escaped user HTML and honest preview-vs-configured mail states. Mail transport tests use Laravel Mail fakes, not live email delivery.

## Typography, measured in Chromium

| Element | Desktop | Mobile |
| --- | --- | --- |
| Base body | 17px | 17px |
| Homepage hero paragraph | 19px | 18px |
| Main service-card paragraph | 17px | 17px |
| Primary hero button | 15px | 15px |
| Main navigation | 15px | 18px in the mobile menu |
| Footer links | 15px | 15px |

Interior long-form copy generally uses 18–19px, and form fields use 17px. Supporting labels, logo lettering and decorative diagram annotations use smaller sizes; primary information remains available as readable HTML.

## Source fidelity

The six original source pages were fetched again. `CONTENT-MAP.md` records the page mapping, additions and wording changes. `content-source/` includes the original extracted text and JSON blocks.

The comparison reviewed **200 extracted source HTML blocks**, including repeated markup blocks:

- 191 matched after normalization of punctuation/case/spacing.
- 5 matched as close proofreading changes.
- 3 additional wording corrections were manually documented.
- 1 copied Energy/About strapline was corrected in context, with the full strapline retained on About and all five Energy offerings retained.
- **0 unresolved comparison items.** This is a source-copy review, not an independent verification of business claims.

All six original offers, five company values, 21 original service key areas, four solution areas with 20 offerings, both products with ten feature concepts, original feedback and published trust statements are mapped and retained. See `CONTENT-MAP.md` for the nebulizer noise/interface corrections and the original claims that require owner approval.

## HTTP and navigation checks

- All six pages: **200**, exactly one H1 each, no duplicate IDs and no broken local fragments.
- All internal page/fragment links were checked against the six rendered pages: **0 broken targets**.
- All **11 checked local CSS, JavaScript, image and font URLs** returned 200.
- `robots.txt` and the updated six-page `sitemap.xml`: 200.
- Forwarded HTTPS requests produce HTTPS asset URLs.
- The review heading, framework badge, device selector and full-page checkbox are absent from every website page. The separately shared screenshot HTML also contains only responsive image content, with no review controls.

## Responsive and automated accessibility checks

Chromium checked **all six pages** at **320, 360, 390, 768, 1024, 1280 and 1440 px**: **42 layout checks**. No document-level horizontal overflow or H1 overflow was detected.

Axe **4.10.3**, tags `wcag2a`, `wcag2aa`, `wcag21aa`, `best-practice`:

- Each of the six pages at **1440px** and **390px**: **0 detected violations** across 12 scans.
- Some `color-contrast` and `link-in-text-block` checks still require manual review. These automated results are **not a full accessibility audit or WCAG certification**.
- Browser JavaScript: **0 errors**. Session console: **0 errors, 0 warnings**.
- Every image finished loading before the full-page screenshots were captured.

## Actual browser interactions exercised

- Opened the mobile menu and used **Products** to navigate to the real `/products` page; the new page correctly reset the menu.
- Opened the genuine nebulizer product image: native dialog opened, contained keyboard focus and loaded the full image. Escape closed it, released the scroll lock and returned focus to the image opener.
- Followed the product enquiry link to `/contact?product=portable-mesh-nebulizer#message`; the subject correctly became **Product enquiry — Portable mesh nebulizer**.
- Confirmed the preview-only mail notice before submitting a local QA message.
- Submitted through the actual browser form with a real Laravel CSRF token/session. The handler redirected to `/contact#message`, focused the status message and explicitly confirmed **recorded locally, not emailed**. The form was usable again after the response.
- Clicked the Services index’s **3D printing** link; the URL became `/services#printing`, the index marked the correct item active, and the heading was not obscured by either sticky bar.
- The homepage industry enhancement retains keyboard controls and stale-image cancellation. Its JavaScript ran without errors during all responsive checks; its supporting content and real destination links are server rendered.

## Screenshots

Actual Chromium captures, not mockups; fonts and images were loaded, and reduced-motion settings stabilized captures. No review toolbar is added.

| Page | Desktop full page | Mobile full page |
| --- | --- | --- |
| Home | `qa/home-desktop.png` — 1440 × 6164 | `qa/home-mobile.png` — 390 × 10900 |
| About | `qa/about-desktop.png` — 1440 × 4244 | `qa/about-mobile.png` — 390 × 7473 |
| Services | `qa/services-desktop.png` — 1440 × 5918 | `qa/services-mobile.png` — 390 × 9288 |
| Solutions | `qa/solutions-desktop.png` — 1440 × 3335 | `qa/solutions-mobile.png` — 390 × 5968 |
| Products | `qa/products-desktop.png` — 1440 × 2854 | `qa/products-mobile.png` — 390 × 4543 |
| Contact | `qa/contact-desktop.png` — 1440 × 2633 | `qa/contact-mobile.png` — 390 × 4267 |

Home and Contact also have first-viewport captures (`*-fold.png`). Product-image-dialog and local contact-response screenshots are included separately. `qa/screenshot-manifest.json` records all 18 image files and their dimensions.

## Handoff limitations

- No production site has been changed or deployed.
- **SMTP/inbox delivery is not configured or verified.** Default preview mail is logged locally; the interface states this clearly. Configure and test a real provider before launch.
- Original published performance/testimonial/certification statements are carried over at the user's request, not independently substantiated. Verify them and obtain any needed permissions before publication.
- Confirm product/manufacturer specifications and asset rights. Stock sector photos are illustrative; they are not evidence of NexGen facilities or completed projects.
- Restrict trusted proxy configuration, set production environment/URL/key, configure mail and writable storage, and review hosting/security before launch. See `README.md`.
