# Manuell QA-sjekkliste — ms-ai-architect Playground v3

**Versjon:** v3 (single-file `ms-ai-architect-v3.html`)
**Sist oppdatert:** 2026-05-03
**Bruk:** Krysser av når seksjonen er verifisert. Bruk DevTools-konsoll for assertions.

Åpne `playground/ms-ai-architect-v3.html` direkte fra filsystemet (`file://`). Ingen server kreves. Kjør hver seksjon i rekkefølge — flere tester forutsetter state fra tidligere seksjoner.

---

## 1. Onboarding round-trip (felles state)

- [ ] Åpne playground i tom state (slett `localStorage` først hvis nødvendig: `localStorage.clear()`)
- [ ] Forventet redirect til onboarding-surface (siden ingen organization.name finnes)
- [ ] Fyll inn alle 5 grupper (organization, technology, security, architecture, business)
- [ ] Klikk "Lagre og fortsett"
- [ ] **Assertion:** `JSON.parse(localStorage.getItem('ms-ai-architect-state-v1')).shared.organization.name` returnerer det du skrev inn
- [ ] Re-onboard via topbar — verifiser at felter er forhåndsutfylt fra forrige runde

## 2. Schema-migrasjon

- [ ] **Assertion:** `__store.state.__schema_version` er satt til siste SCHEMA_VERSION-verdi
- [ ] Manuelt nedgrader: `localStorage.setItem('ms-ai-architect-state-v1', JSON.stringify({__schema_version: 0, projects: []}))`
- [ ] Reload — forventet at MIGRATIONS-pipeline kjører og oppdaterer `__schema_version` til siste versjon
- [ ] Ingen console.error-meldinger underveis

## 3. Prosjekt-CRUD

- [ ] Fra Home-surface: klikk "Nytt prosjekt"
- [ ] Modal vises — fyll inn navn + beskrivelse → "Opprett"
- [ ] **Assertion:** `__store.state.projects.length === 1`
- [ ] Naviger til prosjektet (klikk fleet-tile)
- [ ] Klikk "Slett" → bekreft → tilbake til Home med 0 prosjekter
- [ ] **Assertion:** `__store.state.projects.length === 0`

## 4. Command-skjema-prefill

- [ ] Opprett et nytt prosjekt
- [ ] Åpne en command (f.eks. "classify") fra prosjekt-tab
- [ ] Verifiser at felter med `from: 'shared'` er forhåndsutfylt fra onboarding
- [ ] **Assertion:** `__buildCommand('classify', {})` returnerer en streng som starter med `/architect:classify`
- [ ] Endre et felt → "Forhåndsvis" → bekreft pipeline-streng oppdateres

## 5. Paste-import per rapport-type (17 commands)

For hver av de 17 rapport-produserende commands:

- [ ] Åpne fixture-fila under `playground/test-fixtures/<command>.md`
- [ ] Kopier hele innholdet
- [ ] I prosjekt-tabben: lim inn i textarea → klikk "Analyser rapport"
- [ ] Verifiser at `[data-report-slot="<command>"]` rendrer rapport (ikke "Kunne ikke parse")
- [ ] **Assertion:** `__handlePasteImport('<cmd>', '<paste>')` returnerer uten feil

Commands å teste: classify, requirements, transparency, frimpact, conformity, dpia, security, ros, review, cost, license, migrate, adr, summary, poc, utredning, compare.

## 6. Parse-feil — skadet markdown

- [ ] Lim inn ufullstendig markdown (slett en seksjon-overskrift fra fixture)
- [ ] Verifiser at `[data-report-slot]` rendrer en synlig feil-melding (ikke crash)
- [ ] **Assertion:** Console viser ingen uncaught exceptions
- [ ] Feil-meldingen identifiserer hvilken seksjon som mangler

## 7. Eksport/import-syklus

- [ ] Etter onboarding + 1+ prosjekt + 1+ rapport: klikk "Eksporter" i topbar
- [ ] JSON-fil lastes ned (Blob via URL.createObjectURL)
- [ ] Slett alt: `localStorage.clear()` + reload
- [ ] Klikk "Importer" → velg den eksporterte fila
- [ ] **Assertion:** Alle prosjekter, rapporter og onboarding-svar er gjenopprettet

## 8. Theme-toggle (Step 13)

- [ ] Klikk theme-toggle (text "Mørk" eller "Lys" i topbar)
- [ ] **Assertion:** `document.documentElement.getAttribute('data-theme')` matcher `localStorage.getItem('ms-ai-architect-theme')`
- [ ] Reload siden — bekreft tema overlever
- [ ] Verifiser ingen flash-of-wrong-theme (FOUC) ved reload (theme-bootstrap-script i `<head>`)
- [ ] Bytt tema flere ganger — alle surfaces bytter farge konsistent

## 9. file://-standalone

- [ ] Kopier mappen `plugins/ms-ai-architect/` til en helt ny lokasjon (f.eks. `/tmp/standalone-test/`)
- [ ] Åpne `playground/ms-ai-architect-v3.html` derfra med `open` eller direkte i nettleser
- [ ] Verifiser ingen console-errors ved load
- [ ] Alle 4 surfaces fungerer (onboarding, home, catalog, project)
- [ ] Vendored CSS lastes (`vendor/playground-design-system/*.css`)

## 10. axe-core a11y per surface

For hver surface (onboarding, home, catalog, project):

1. Naviger til surfacen
2. Åpne DevTools-konsollen
3. Lim inn:
   ```js
   var s = document.createElement('script');
   s.src = 'https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.10.0/axe.min.js';
   document.head.appendChild(s);
   ```
4. Vent til axe lastes (~1 sek), så kjør:
   ```js
   axe.run().then(r => console.log(JSON.stringify({violations: r.violations.length, byImpact: r.violations.reduce((a,v)=>{a[v.impact]=(a[v.impact]||0)+1;return a;},{})}, null, 2)));
   ```
5. Hvis violations: kjør `axe.run().then(r => console.table(r.violations.map(v => ({id:v.id, impact:v.impact, nodes:v.nodes.length, help:v.help}))))` for detaljert tabell
6. Lim inn JSON-resultatet i A11Y-RAPPORT.md (seksjon "axe-core-kjøring")

**Forventet baseline:** 0 critical, ≤ 3 serious totalt, ≤ 5 moderate. Alle skal logges i A11Y-RAPPORT.md selv om de er innenfor toleranse.

**Tab-test:** Etter axe — naviger hele surfacen kun med Tab/Shift+Tab/Enter. Notér i rapporten hvis fokus-rekkefølge føles uintuitiv eller hvis en interaktiv element ikke er nåbar.

## Avslutning

- [ ] Alle seksjoner ovenfor avkrysset
- [ ] A11Y-RAPPORT.md oppdatert med browser-versjon, tester-navn, dato
- [ ] axe-core JSON limt inn i rapporten
- [ ] Avvik dokumentert med severity og handlingsplan
