98 lines
5.7 KiB
Markdown
98 lines
5.7 KiB
Markdown
|
|
# Phase 1 — Rapport visuel initial (baseline)
|
|||
|
|
|
|||
|
|
Vue fixe : **1280×720**, thème **dark**, **reduced motion**.
|
|||
|
|
Screenshots de référence : `visual-tests/baselines/*-desktop.png`.
|
|||
|
|
Génération : `npm run visual:baseline` (serveur dev démarré sur http://localhost:5173).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. Écrans critiques et fichiers
|
|||
|
|
|
|||
|
|
| # | Écran | URL | Fichier baseline | Rôle |
|
|||
|
|
|---|--------|-----|-------------------|------|
|
|||
|
|
| 1 | Login | `/login` | `login-desktop.png` | Auth, formulaire centré |
|
|||
|
|
| 2 | Register | `/register` | `register-desktop.png` | Auth, formulaire |
|
|||
|
|
| 3 | Dashboard | `/dashboard` | `dashboard-desktop.png` | Écran principal, shell + contenu |
|
|||
|
|
| 4 | Sidebar | `/dashboard` (locator `aside`) | `sidebar-desktop.png` | Navigation latérale |
|
|||
|
|
| 5 | Playlists (liste) | `/playlists` | `playlists-desktop.png` | Vue liste dense |
|
|||
|
|
| 6 | Library | `/library` | `library-desktop.png` | Liste / grille |
|
|||
|
|
| 7 | 404 | `/non-existent-route-404` | `404-desktop.png` | Erreur, empty state |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Annotations par écran
|
|||
|
|
|
|||
|
|
À remplir ou compléter après capture des baselines. Chaque écran est évalué sur : **hiérarchie visuelle**, **densité verticale**, **alignements**, **contraste texte/fond**, **incohérences visibles**.
|
|||
|
|
|
|||
|
|
### 2.1 Login (`login-desktop.png`)
|
|||
|
|
|
|||
|
|
- **Hiérarchie** : Titre / sous-titre / champs / bouton. À vérifier : ordre de lecture et poids visuel (font-size, graisse).
|
|||
|
|
- **Densité** : Espacement vertical entre blocs. Référence design system : `--layout-page-min-height-sm` (400px), pas de valeurs arbitraires.
|
|||
|
|
- **Alignements** : Formulaire centré ; alignement des labels et champs (grid ou stack).
|
|||
|
|
- **Contraste** : Texte secondaire (`muted-foreground`) vs fond (`background`). Vérifier ratio WCAG.
|
|||
|
|
- **Incohérences** : Liens “Forgot password” / “Register” : même style que le reste ? Bordures des inputs cohérentes avec `--input`, `--ring` ?
|
|||
|
|
|
|||
|
|
### 2.2 Register (`register-desktop.png`)
|
|||
|
|
|
|||
|
|
- **Hiérarchie** : Même logique que login ; étapes ou sections si présentes.
|
|||
|
|
- **Densité** : Souvent plus long ; vérifier que la page ne soit pas “étouffée” (spacing tokens).
|
|||
|
|
- **Alignements** : Cohérence avec login (même layout centré).
|
|||
|
|
- **Contraste** : Labels, hints, messages d’erreur.
|
|||
|
|
- **Incohérences** : Boutons et champs identiques au login (même composants design system).
|
|||
|
|
|
|||
|
|
### 2.3 Dashboard (`dashboard-desktop.png`)
|
|||
|
|
|
|||
|
|
- **Hiérarchie** : Header (titre, actions) > contenu principal. Cartes / stats : niveau de titre (h2/h3) et corps.
|
|||
|
|
- **Densité** : Espacement entre cartes et entre sections (tokens `space-*`, `gap-*`). Ni trop vide ni trop serré.
|
|||
|
|
- **Alignements** : Grille ou colonnes alignées ; header et main partagent la même grille (ou max-width).
|
|||
|
|
- **Contraste** : Texte des cartes, labels de graphiques, texte secondaire lisible.
|
|||
|
|
- **Incohérences** : Sidebar vs zone contenu (même hauteur, séparateur net) ; player bar en bas (fixe, pas de chevauchement).
|
|||
|
|
|
|||
|
|
### 2.4 Sidebar (`sidebar-desktop.png`)
|
|||
|
|
|
|||
|
|
- **Hiérarchie** : Logo/titre > sections (labels) > items. Labels de section en `text-xs`, items en `text-sm`.
|
|||
|
|
- **Densité** : Espacement entre sections (`space-y-6` dans le code) ; entre items (`space-y-0.5`). Vérifier alignement avec Discord/Spotify (cf. Phase 2).
|
|||
|
|
- **Alignements** : Icônes + texte alignés (gap fixe) ; rétrécissement collapsed cohérent.
|
|||
|
|
- **Contraste** : Item actif (primary) vs inactif (muted-foreground) ; hover (sidebar-accent).
|
|||
|
|
- **Incohérences** : Pas de valeurs arbitraires (ex. `w-64`, `z-[90]`) — à migrer vers tokens. Scrollbar visible si contenu long.
|
|||
|
|
|
|||
|
|
### 2.5 Playlists — liste dense (`playlists-desktop.png`)
|
|||
|
|
|
|||
|
|
- **Hiérarchie** : Titre de page > toolbar (filtres, actions) > liste (lignes ou cartes). Titre de liste > ligne.
|
|||
|
|
- **Densité** : Hauteur de ligne ou carte ; espacement entre lignes. Comparer à une liste Discord (canaux) ou Spotify (playlists) pour rythme.
|
|||
|
|
- **Alignements** : Colonnes (nom, durée, etc.) alignées ; icônes d’action alignées.
|
|||
|
|
- **Contraste** : Ligne hover vs normale ; texte secondaire (durée, métadonnées).
|
|||
|
|
- **Incohérences** : Skeleton vs état chargé (même layout pour éviter layout shift).
|
|||
|
|
|
|||
|
|
### 2.6 Library (`library-desktop.png`)
|
|||
|
|
|
|||
|
|
- **Hiérarchie** : Titre > filtres/vue > grille ou liste.
|
|||
|
|
- **Densité** : Grille : gap et taille des cartes (tokens) ; liste : comme playlists.
|
|||
|
|
- **Alignements** : Grille régulière ; en liste, alignement des métadonnées.
|
|||
|
|
- **Contraste** : Couverture vs texte ; états hover/focus.
|
|||
|
|
- **Incohérences** : Cohérence avec playlists (même patterns de liste/carte).
|
|||
|
|
|
|||
|
|
### 2.7 404 (`404-desktop.png`)
|
|||
|
|
|
|||
|
|
- **Hiérarchie** : Message principal > explication > CTA (retour).
|
|||
|
|
- **Densité** : Centré, pas trop serré (min-h-layout-page-sm).
|
|||
|
|
- **Contraste** : Lisible sur fond dark.
|
|||
|
|
- **Incohérences** : Utilisation de KodoEmptyState ou composant dédié ; pas de style ad hoc.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Synthèse des incohérences (à mettre à jour après capture)
|
|||
|
|
|
|||
|
|
- **Layout** : Valeurs arbitraires (ex. Sidebar `w-64`, `z-[90]`) à remplacer par tokens / primitives.
|
|||
|
|
- **Spacing** : Vérifier que partout on utilise l’échelle Tailwind ou les layout primitives (`index.css`).
|
|||
|
|
- **Focus / états** : Vérifier focus visible (ring) et hover sur tous les écrans critiques ; continuité des durées (`--duration-*`, `--ease-*`).
|
|||
|
|
- **Contrastes** : Audit ponctuel (axe ou outil) sur login, dashboard, sidebar pour respect WCAG.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. Prochaines étapes (Phase 2)
|
|||
|
|
|
|||
|
|
- Comparaison **explicite** avec équivalents Discord / Spotify (sidebar, liste, header) : spacing en px, font-size, line-height, contraste secondaire, radius, ombres.
|
|||
|
|
- Extraire des **règles implicites** (pas copier) pour ajuster les tokens si nécessaire.
|
|||
|
|
- Une seule **catégorie de correction à la fois** (spacing, typo, alignement, couleurs, états) puis capture + pixelmatch + validation.
|