Website quality, measured.
How quickly WiFi.ee loads, how accessible it is, and what protects a visit. These are dated measurements of the website; hotspot connection speeds are listed in the hotspot directory.
This is a baseline, including open issues. Automated accessibility checks do not establish WCAG conformance. Security observations are not a penetration test. Real-user Core Web Vitals and carbon emissions have not been measured.
Priority: critical dependency advisory. npm flags the committed Next.js version as affected. Update to a patched release and verify deployment. Exploitability of the running site has not been tested. See security evidence.
Performance
Lighthouse measures page loading in a controlled Chrome lab test. Each homepage result is the median of three runs. Other page types have one run per device profile. A higher score is better; load times vary with device, network, server cache and location.
Homepage · Estonian / Mobile
Homepage · Estonian / Desktop
| Page / profile | Performance | Accessibility | Best practices | SEO | LCP | CLS | TBT |
|---|---|---|---|---|---|---|---|
| Homepage · EstonianMobile · 3 run(s) · performance range 51–83 | 68 | 96 | 69 | 100 | 4.01 s | 0.137 | 60 ms |
| Homepage · EstonianDesktop · 3 run(s) · performance range 57–81 | 79 | 92 | 73 | 100 | 2.21 s | 0.004 | 0 ms |
| Homepage · EnglishMobile · 3 run(s) · performance range 64–92 | 92 | 96 | 69 | 100 | 2.01 s | 0 | 26 ms |
| Homepage · EnglishDesktop · 3 run(s) · performance range 60–90 | 74 | 92 | 73 | 100 | 2.09 s | 0.003 | 0 ms |
| Hotspot directoryMobile · 1 run(s) · performance range 71–71 | 71 | 95 | 96 | 92 | 1.54 s | 0 | 1,039 ms |
| Hotspot directoryDesktop · 1 run(s) · performance range 85–85 | 85 | 95 | 100 | 100 | 1.94 s | 0.006 | 63 ms |
| Hotspot detailMobile · 1 run(s) · performance range 88–88 | 88 | 92 | 96 | 100 | 2.33 s | 0 | 282 ms |
| Hotspot detailDesktop · 1 run(s) · performance range 89–89 | 89 | 92 | 100 | 100 | 0.99 s | 0.003 | 0 ms |
LCP measures when the largest visible element appears; CLS measures unexpected layout movement; TBT measures main-thread blocking in the lab. Reference targets are LCP ≤ 2.5 s and CLS ≤ 0.1. Real-user INP is not available from this test, so this report does not claim a Core Web Vitals pass.
Loading and best-practice findings
These checks failed in at least one retained Lighthouse run. Open the individual reports below for the affected pages and estimates.
- Reduce unused JavaScript
(unused-javascript) - Improve image delivery
(image-delivery-insight) - Use efficient cache lifetimes
(cache-insight) - Document request latency
(document-latency-insight) - Requests the geolocation permission on page load
(geolocation-on-start) - Uses third-party cookies
(third-party-cookies) - Issues were logged in the `Issues` panel in Chrome Devtools
(inspector-issues) - Elements with visible text labels do not have matching accessible names.
(label-content-name-mismatch)
Accessibility
The axe scans found 4 distinct failing rules across 12 page/profile observations. Counts below are rule types, not a count of people affected or every WCAG criterion. Incomplete rules require human review.
| Page / profile | Failing rules | Affected elements | Needs review |
|---|---|---|---|
| Homepage · EstonianMobile | 1 | 11 | 2 |
| Homepage · EstonianDesktop | 2 | 12 | 2 |
| Homepage · EnglishMobile | 1 | 11 | 2 |
| Homepage · EnglishDesktop | 2 | 12 | 2 |
| Hotspot directoryMobile | 1 | 1 | 2 |
| Hotspot directoryDesktop | 1 | 2 | 2 |
| Hotspot detailMobile | 2 | 2 | 3 |
| Hotspot detailDesktop | 2 | 2 | 4 |
| Mobile appMobile | 0 | 0 | 2 |
| Mobile appDesktop | 1 | 1 | 2 |
| Privacy policyMobile | 1 | 2 | 2 |
| Privacy policyDesktop | 2 | 3 | 2 |
Baseline findings
Elements must meet minimum color contrast ratio thresholds (6 observations)
Rule explanation and remediation · color-contrast · serious
- Homepage · Estonian / Mobile: 11 elements
- Homepage · Estonian / Desktop: 11 elements
- Homepage · English / Mobile: 11 elements
- Homepage · English / Desktop: 11 elements
- Hotspot detail / Mobile: 1 elements
- Hotspot detail / Desktop: 1 elements
ARIA hidden element must not be focusable or contain focusable elements (6 observations)
Rule explanation and remediation · aria-hidden-focus · serious
- Homepage · Estonian / Desktop: 1 elements
- Homepage · English / Desktop: 1 elements
- Hotspot directory / Mobile: 1 elements
- Hotspot directory / Desktop: 2 elements
- Mobile app / Desktop: 1 elements
- Privacy policy / Desktop: 1 elements
Form elements must have labels (2 observations)
Rule explanation and remediation · label · critical
- Hotspot detail / Mobile: 1 elements
- Hotspot detail / Desktop: 1 elements
Links must be distinguishable without relying on color (2 observations)
Rule explanation and remediation · link-in-text-block · serious
- Privacy policy / Mobile: 2 elements
- Privacy policy / Desktop: 2 elements
Reflow: 6 of 6 desktop-browser observations overflowed at 320 or 720 CSS pixels. Keyboard: 6 unnamed control stops were observed in the first 12 Tab stops per sample. These are limited checks; absence of these symptoms is not a full keyboard or zoom pass.
Still needed: VoiceOver/NVDA testing, complete keyboard journeys including dialogs and forms, text-only enlargement and 200–400% browser zoom, dark-mode contrast, and a review of content alternatives. The browser recognized the reduced-motion preference; animation behavior needs a separate manual check.
Security
The checks below observe the transport and browser protections visible on public pages. They do not evaluate account permissions, private data access, backups, incident response or application vulnerabilities.
- TLS certificate: verified by Node’s trust store · TLSv1.3 · expires Dec 9 20:32:32 2026 GMT.
- HTTP → HTTPS: 308 ·
https://next.wifi.ee/. - HTTP resources observed in HTTPS pages: 0.
| Protection | Observed | Purpose |
|---|---|---|
| HSTS | 12 / 12Present | Keeps returning browsers on HTTPS. |
| Content-Security-Policy | 0 / 12Needs attention | Restricts sources of scripts and other content. Policy strength needs separate review. |
| X-Content-Type-Options: nosniff | 0 / 12Needs attention | Prevents browsers from guessing a different content type. |
| Framing protection | 0 / 12Needs attention | X-Frame-Options or CSP frame-ancestors can restrict embedding. |
| Referrer-Policy | 0 / 12Needs attention | HTTP policy; the document’s meta policy is reported separately. |
| Permissions-Policy | 0 / 12Needs attention | Limits access to browser capabilities such as camera and microphone. |
Documents can also set a referrer policy in HTML. Observed meta policies: origin-when-cross-origin.
Production dependency advisory check (2026-10-23, f8a53593): info: 0, low: 0, moderate: 0, high: 0, critical: 1. This checks the committed lockfile against npm advisories, not the exact deployed dependency tree or undisclosed vulnerabilities.
Dependency findings and patch versions
- next: critical · available fix: 16.4.2
Including development tooling: info: 0, low: 0, moderate: 0, high: 5, critical: 1.
Next steps: introduce and test a restrictive CSP, set missing defensive headers, and verify that authentication, embeds and browser permissions still work. Any header change needs functional testing before deployment.
Privacy on a first visit
Fresh browser contexts were observed before any consent choice. Cookies are listed by name and domain only; their values are not published. Cross-origin requests may provide authentication or other functionality and are not automatically evidence of tracking.
| Name | Domain | Secure | HttpOnly | SameSite |
|---|---|---|---|---|
wifi_language | next.wifi.ee | No | No | Lax |
__cf_bm | .img.clerk.com | Yes | Yes | None |
__client | .clerk.wifi.ee | Yes | Yes | Lax |
__client_uat | .wifi.ee | Yes | No | Lax |
__client_uat_4sCzUxpj | .wifi.ee | Yes | No | Lax |
_cfuvid | .clerk.wifi.ee | Yes | Yes | None |
__cf_bm | .clerk.wifi.ee | Yes | Yes | None |
Cross-origin services contacted before consent (8)
https://clerk.wifi.eehttps://img.clerk.comhttps://client.wifi.eehttps://fonts.googleapis.comhttps://maps.googleapis.comhttps://maps.gstatic.comhttps://unpkg.comhttps://fonts.gstatic.com
A consent accept/reject journey, persistence across visits, and legal classification of cookies have not been assessed. The language preference cookie is readable by JavaScript and was observed without a Secure flag; it does not contain an authentication credential.
Data transfer and environmental impact
Smaller pages cost visitors less data and can reduce the work done by networks and devices. These are observed transfers during an unthrottled fresh visit, not an energy or emissions measurement. Lazy-loaded content below the viewport is outside the capture window.
| Page / profile | Total KiB | Scripts KiB | Images KiB | Requests | Unfinished |
|---|---|---|---|---|---|
| Homepage · EstonianMobile | 1,005 | 572 | 361 | 37 | 2 |
| Homepage · EstonianDesktop | 2,926 | 572 | 2,276 | 60 | 6 |
| Homepage · EnglishMobile | 1,008 | 572 | 361 | 37 | 0 |
| Homepage · EnglishDesktop | 2,708 | 362 | 2,276 | 45 | 1 |
| Hotspot directoryMobile | 1,489 | 992 | 401 | 87 | 5 |
| Hotspot directoryDesktop | 1,306 | 991 | 204 | 108 | 10 |
| Hotspot detailMobile | 1,098 | 780 | 245 | 46 | 3 |
| Hotspot detailDesktop | 1,629 | 1,003 | 442 | 109 | 17 |
| Mobile appMobile | 782 | 567 | 146 | 34 | 1 |
| Mobile appDesktop | 744 | 567 | 111 | 47 | 12 |
| Privacy policyMobile | 641 | 570 | 4 | 34 | 4 |
| Privacy policyDesktop | 645 | 570 | 4 | 52 | 13 |
KiB = 1,024 bytes. Failed and unfinished requests, browser timing, and third-party services can change the result. No green-hosting verification or carbon grade is claimed. Compare future snapshots with the same routes, viewport, tools and capture window.
Method and evidence
Where and when
Collected from Taiwan against the public next.wifi.ee deployment. The older wifi.ee site is a separate website and was not included in the scores. This is not a before/after comparison.
— (UTC).
Tools and profiles
Chrome 155.0.8059.85; Lighthouse 13.4.1; axe-core 4.13.0; Playwright 1.62.1. Browser observations: 390 × 844 / 1440 × 900. Lighthouse uses its own mobile and desktop presets; exact settings are in the JSON.
How to interpret
New browser storage for every sample; hosting caches may be warm. Homepage medians are calculated independently for each metric and category. Results describe these URLs at this time and do not guarantee future performance or site-wide conformance.
Individual Lighthouse reports
- Homepage · Estonian / Mobile / run 1
- Homepage · Estonian / Mobile / run 2
- Homepage · Estonian / Mobile / run 3
- Homepage · Estonian / Desktop / run 1
- Homepage · Estonian / Desktop / run 2
- Homepage · Estonian / Desktop / run 3
- Homepage · English / Mobile / run 1
- Homepage · English / Mobile / run 2
- Homepage · English / Mobile / run 3
- Homepage · English / Desktop / run 1
- Homepage · English / Desktop / run 2
- Homepage · English / Desktop / run 3
- Hotspot directory / Mobile / run 1
- Hotspot directory / Desktop / run 1
- Hotspot detail / Mobile / run 1
- Hotspot detail / Desktop / run 1
SEO and discovery checks
/robots.txt: HTTP 200/sitemap.xml: HTTP 200/.well-known/security.txt: HTTP 404
Lighthouse SEO scores are shown above. Canonical URLs, language tags, descriptions and heading counts for each sampled page are retained in the JSON. Search-engine indexing and ranking are not verified by this audit.
Standards and guidance: Lighthouse, WCAG conformance, OWASP HTTP headers, Core Web Vitals.