← EnergyView

EnergyView — samenhang in drie stappen

Methode en afbakening

De eerste nulmeting is vastgelegd vóór de UX-wijzigingen (baseline.json). Daarna zijn dezelfde volledig ingevulde, synthetische scenario’s op de oorspronkelijke commit a80f9aa en de nieuwe versie vergeleken. De oorspronkelijke versie is uitsluitend voor deze referentie opnieuw geopend; haar appcode is niet aangepast. De fixture vult 4.200 kWh elektriciteit, 17.000 kWh gas en een bestaand vast contract in. Het zonnepanelenscenario heeft 4 kWp en een auto van 3,7 kW. De eerste fixture miste manualMode voor gas; de definitieve vergelijking hieronder gebruikt aan beide kanten de gecorrigeerde fixture. Er zijn geen persoonlijke meetgegevens gebruikt.

Gemeten in echte Chrome, met een iframe-viewport van 360×640 of 1280×720. Hoogte en y-posities zijn documentcoördinaten, dus zonder voordeel van automatisch scrollen bij navigatie. Een veld telt alleen wanneer het zichtbaar is; apparaatkeuzes zijn knoppen en staan apart in de component. Uitklappers tellen alleen als hun summary zichtbaar is. De eerste baseline telde ook open structurele details-containers; de definitieve telling is gecorrigeerd. De screenshots zijn Chrome-viewportopnamen, uitgesneden tot het iframe; er is geen scherminhoud aangepast. Geen Lighthouse- of snelheidsclaim.

Alle stappen: voor en na

ScenarioBreedteStapVeldenUitklappersScrollhoogte pxSchermhoogtes
Elektriciteit36013 → 30 → 02610 → 21564.08 → 3.37
Elektriciteit36022 → 21 → 11793 → 15192.80 → 2.37
Elektriciteit36030 → 04 → 43672 → 32675.74 → 5.10
Elektriciteit en gas36014 → 40 → 02702 → 22424.22 → 3.50
Elektriciteit en gas36024 → 31 → 21968 → 18233.08 → 2.85
Elektriciteit en gas36032 → 25 → 55142 → 46068.03 → 7.20
Zonnepanelen en auto36014 → 40 → 02727 → 22464.26 → 3.51
Zonnepanelen en auto36022 → 21 → 11819 → 15182.84 → 2.37
Zonnepanelen en auto36030 → 04 → 43698 → 32675.78 → 5.10
Gas36013 → 30 → 02610 → 21564.08 → 3.37
Gas36022 → 21 → 11793 → 14952.80 → 2.34
Gas36032 → 24 → 33585 → 32515.60 → 5.08
Elektriciteit128013 → 30 → 01676 → 15302.33 → 2.12
Elektriciteit128022 → 21 → 11184 → 11011.64 → 1.53
Elektriciteit128030 → 04 → 42366 → 22233.29 → 3.09
Elektriciteit en gas128014 → 40 → 01768 → 16162.46 → 2.24
Elektriciteit en gas128024 → 31 → 21359 → 11451.89 → 1.59
Elektriciteit en gas128032 → 25 → 53440 → 31314.78 → 4.35
Zonnepanelen en auto128014 → 40 → 01768 → 16202.46 → 2.25
Zonnepanelen en auto128022 → 21 → 11184 → 11011.64 → 1.53
Zonnepanelen en auto128030 → 04 → 42366 → 22233.29 → 3.09
Gas128013 → 30 → 01676 → 15302.33 → 2.12
Gas128022 → 21 → 11184 → 10771.64 → 1.50
Gas128032 → 24 → 32406 → 22643.34 → 3.14

Conclusie en hoofdactie

ScenarioBreedteConclusie y voor → naOnderkant hoofdactie naBinnen viewport
Elektriciteit3601250 → 355627.4 pxJa
Elektriciteit en gas3601250 → 355627.4 pxJa
Zonnepanelen en auto3601275 → 354626.8 pxJa
Gas360Geen aparte antwoordkaart → 355625.2 pxJa
Elektriciteit1280769 → 297528.8 pxJa
Elektriciteit en gas1280769 → 297528.8 pxJa
Zonnepanelen en auto1280769 → 297528.8 pxJa
Gas1280Geen aparte antwoordkaart → 297528.8 pxJa

Voorheen was er geen hoofdactie in de antwoordkaart; daarvoor staat geen verzonnen y-waarde. Het doel is gebaseerd op het eerste knelpunt: de conclusie stond op mobiel rond 1.250 px en op desktop rond 769 px. In deze vier vaste scenario’s staan conclusie en volledige hoofdactie nu binnen 640 respectievelijk 720 px. Dit is geen garantie voor willekeurig lange leveranciersnamen, ingezoomde tekst of alle foutmeldingen.

Per werkstroom

1. Je woning: één permanente rij onder de navigatie, met mainContent als ouderelement in alle stappen. Dezelfde klassen blijven binnen ieder scenario behouden. De huidige en geplande apparaten zijn chips; de bestaande editor blijft via Aanpassen en Plannen bereikbaar. In stap 1 zijn Heb ik / Overweeg ik / Nee één component per apparaat. Geen nieuwe vermogensvelden toegevoegd: de bestaande editor bevat die al. 2. Contract: één kaart per energiesoort, automatisch naast elkaar of onder elkaar. Eén toegankelijk keuzeveld vervangt de zichtbare zoekveld-plus-selectcombinatie. De originele select, ID’s, opties en wijzigingshandlers blijven bestaan. Eén gedeelde maandkeuze bedient de bestaande maandvelden. Bij bewaarde verschillende maanden wordt dat uitgelegd; een ontbrekend product blijft door de bestaande beschermingslogica behouden. Zelfde leverancier vult alleen de leverancier in; bij meerdere producten kiest de gebruiker zelf. Eén Details van je contract per energiesoort; oude geneste gascontainer is een gewone sectie. 3. Instellingen: vaste onderwerpenlijst links op desktop, onderwerpenlijst met terugknop op mobiel. Standaardwaarden tonen geen herstelrij. Alleen afwijkingen tonen Aangepast en Herstel; herstel-alles verschijnt alleen bij afwijkingen. Klaar sluit de dialoog. Gewone prijskeuzes en Voor kenners zijn apart bereikbaar, met dezelfde originele controles. Uitleg blijft maximaal 140 tekens. 4. Resultaat: één antwoordkaart kopieert de bestaande resultaatteksten en bedragen; geen tweede berekening. De hoofdactie opent de bestaande contractdetails. Bij elektriciteit én gas is duidelijk dat de hoofdkaart over elektriciteit gaat en gas bij Contracten staat. Vier gewone ankerlinks geven toegang tot overzicht, contracten, woning/plannen en methode. De bestaande drie beste aanbiedingen plus Toon alle blijven. De twee uitlegblokken zijn samengebracht in Hoe is dit berekend. Dubbele gasmetrics staan bij de gasuitleg. Promotielabels en hun voorwaarden blijven bij de contracten; de volledige promotiecontrole blijft vindbaar. Investeringen blijven als eigen kaart na de eerste vergelijking. 5. Samenhang: stapkaart, woningrij en footer meten op desktop alle drie 1.050 px, tegenover 720 / 1.217 / 1.217 px. Op mobiel alle drie 313 px bij een viewport van 360 px inclusief scrollbar en paginaranden. Bestaande kleuren en lettertypes blijven lokaal; kaarten, knoppen en chips gebruiken dezelfde ontwerpwaarden. Alle CSS-fontgroottes blijven minimaal 14 px en er zijn nog steeds drie breedtegrenzen.

Oud → nieuw

OudNieuwe plek
Losse woningkaart onder stap 1/2 en voor het resultaatPermanente woningrij onder de stappenbalk
Wat heb je vandaag + tekst Wat overweeg jeEén apparaatkeuze met drie standen
Woningdetails en aankoopplannenAanpassen / Plannen in de vaste woningrij; bestaande editor
Zoekveld plus keuzelijst per energieEén keuzeveld met typen, pijltjestoetsen en Enter; oorspronkelijke select blijft onderliggend aanwezig
Elektriciteitsmaand en aparte gasmaandEén gedeelde tariefmaand boven de kaarten; bewaarde verschillen worden vermeld
Korting of andere tariefkaart + geneste gasuitklapperDetails van je contract per energiesoort
Weet je het niet in lopende tekstBestaande gewone knop Ik weet mijn contract niet
Standaard / Herstel standaard onder ieder veldAlleen bij afwijkingen: Aangepast / Herstel
Onderwerpknoppen over twee rijenZijbalk desktop; lijst en terugknop mobiel
Zeven prijsvelden met pagineringGewone keuzes + Voor kenners
Welke gegevens gebruiken we + Hoe wordt deze vergelijking berekendHoe is dit berekend bij het resultaat
Markt-, methode- en broninformatie vóór de conclusieUitleg onder de conclusie; actualiteit bij de footer en Bronnen en methode
Dubbele gasmetricsGasmethode, met de bedragen prominent in antwoordkaart en contractentabel
InvesteringenEigen zichtbare kaart na contractvergelijking, plus vaste route via Plannen

Geen bestaand element-ID verwijderd of dubbel gemaakt. Nieuwe IDs staan in de bron. De tien beschermde rekenmodules zijn met cmp byte-identiek gecontroleerd tegen de v281-referentie. De golden-referentie is niet aangepast.

Instellingen: metingen en bediening

Bij openen op mobiel: 11 → 8 zichtbare bedieningselementen; 2 → 0 invoervelden; dialoog 616 → 554 px. Je kiest eerst één onderwerp. Op desktop: 11 → 10 bedieningselementen, 2 → 2 invoervelden; dialoog 696 → 696 px. Voor een gewone instelling: één onderwerpklik op beide formaten; het eerste desktoponderwerp is meteen open. Instellingen openen is één extra klik vanuit de flow. De zes onderwerpen wrappen niet meer. Het aantal groepen blijft zes, er is geen geneste accordionstructuur.

Kwaliteit en verificatiegrenzen

De eerste UX-ronde telde 212 tests; na de aanvullende gasdetailscontrole telt de suite 213 tests (de opgegeven 207 was een oudere stand). De laatste volledige ronde slaagt met 213/213. Zie bijgevoegde logs voor de volledige runs. Golden: acht scenario’s geslaagd met identieke waarden, rangschikkingen en identifiers; beschermde bestanden byte-identiek. Lint: 737 bestaande diagnostics, nul nieuwe groepen. Typecheck: 487 bestaande diagnostics, nul nieuwe groepen. Formatcontrole geslaagd. Pages, Worker en Home Assistant zijn gebouwd; deployment-source controleert de reproduceerbare bronkoppeling.

Axe wcag2a/aa inclusief kleurcontrast: nul overtredingen op de drie stappen en instellingen, op beide breedtes (acht controles). Contractkeuze met typen, pijltjestoetsen en Enter, maandwissel met behoud van product, en een instelling wijzigen/herstellen/Klaar zijn werkelijk in Chrome bediend. ID-behoud is apart gecontroleerd. Broncode- en CSS-tests zijn aangevuld voor de drie apparaatstanden, vaste woningrij en alleen bij wijziging zichtbare herstelacties.

Niet geverifieerd: Safari/iOS, Firefox, fysieke Android-toestellen, echte Home Assistant-dashboard-interactie en een nieuwe live Cloudflare Pages-uitrol. De bestaande rapport-CSP, sandbox, framing, curvebeleid en investeringsregels zijn niet gewijzigd. Er is geen gebruikersonderzoek uitgevoerd en geen nieuwe performanceclaim gedaan. Niet elk instellingsveld, elke dropdownoptie, elke afwijkende contractnaam en ieder foutpad is handmatig bediend. De meetfixture en scripts staan in scripts/ux/cohesion* voor herhaling.

Herhalen

Voer npm ci uit en daarna node scripts/ux/cohesion-prepare.mjs. Start de normale lokale preview en open /.qa/cohesion.html uitsluitend op een testomgeving. De laadknop vervangt daar de opgeslagen invoer door synthetische gegevens. Kies scenario en breedte; navigeer met de gewone appknoppen en klik Meet huidig scherm. De verborgen output bevat JSON; Controleer toegankelijkheid voert lokale axe uit. Gebruik dezelfde brondata en fixture voor beide versies. Screenshots worden pas na een actuele schermwaarneming vastgelegd. Deze testpagina en axe worden niet in de gebruikersapp gebouwd.

Beslissingen

Voor deze presentatieverbeteringen is geen reken- of beleidsbeslissing nodig. De eerder openstaande keuzes over curve-coulance, investeringsaannames en framing blijven ongewijzigd. De novemberpublicatie blijft expliciet tijdelijk: oktober-leverancierstarieven met de november-prijscurve, totdat de gebruiker echte novembertarieven aanlevert.

Extra contractcontrole — 4 november 2026

De aanvullende Chrome-controle vond nog één geneste uitklapper bij de korting op het huidige gascontract. De eerdere omschrijving van één niveau was voor dit onderdeel nog niet volledig gerealiseerd. De overbodige binnenste uitklapper is nu een gewone sectie binnen Details van je contract. De oorspronkelijke invoervelden, IDs, attributen en wijzigingshandlers blijven behouden. Er is geen prijs- of selectieregel aangepast; app.js is byte-identiek aan de vorige release.

Aanvankelijk leek de melding over een ontbrekende elektriciteitskorting verouderd. De eerste test had de invoer echter nog niet als een gebruiker bevestigd. Met echte toetsenbordinvoer en Tab werkt de bestaande melding correct. Een voorlopig toegevoegde verversingsaanroep is daarom verwijderd; de oorspronkelijke kortingslogica blijft ongewijzigd.

Extra werkelijk bediend in Chrome:

Een nieuwe regressietest gebruikt de bestaande kortingshandler en bewaart de renderrelatie. Een structurele DOM-test controleert dat het vlak maken dezelfde input-objecten en hun listeners bewaart. Dat is geen browsermeting; de bovenstaande bediening is afzonderlijk in Chrome uitgevoerd. De volledige suite telt nu 213 tests. Definitieve logs en nieuwe schermafbeeldingen staan in het bijgewerkte bewijsdossier. De eerdere meettabellen blijven de historische metingen van de eerste UX-ronde; er is voor deze kleine correctie geen nieuwe volledige 24-scenario-meting of snelheidsclaim gedaan.