Skip to content

Commit 02676a0

Browse files
committed
Fixes #11
1 parent a5c301b commit 02676a0

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ Le format est basé sur Keep a Changelog et ce projet adhère au Semantic Versio
1111

1212
### Added
1313

14+
* **Phase de lancer — tableau permanent** — tous les joueurs sont affichés dans un tableau dès le début du tour. Les joueurs en attente apparaissent en grisé avec ``. L'animation des dés se déroule directement dans la ligne du joueur concerné (plus de dés centraux séparés).
15+
* **Phase de prolongation** — même refonte que la phase de lancer : tableau permanent, animation inline, joueurs en attente grisés.
16+
* **Titre dynamique** — le header des phases roll et prolongation affiche en temps réel qui doit lancer (`Au tour de X de lancer` / `X lance les dés…` / `X — Double 1, relance disponible` / `Tous les joueurs ont lancé`).
17+
* **Points des dés** — rayon des points passé de `size × 0.09` (trop petit aux petites tailles) à `9` unités SVG fixes pour une lisibilité constante quelle que soit la taille d'affichage.
1418
* **Règle Relance (Double 1)** — nouvelle règle optionnelle : un joueur qui fait 1•1 peut relancer ses deux dés une fois. Activable dans la configuration de partie. Si le joueur relance, son résultat est remplacé et un badge « Relancé » s'affiche dans le tableau. S'il garde le 1•1, la règle Double classique s'applique.
1519
* **Dialog de configuration des règles (lobby)** — les règles ne sont plus affichées inline dans l'écran de configuration. Un bouton ⚙️ Configurer ouvre un bottom sheet (glisse depuis le bas sur mobile, centré sur desktop) permettant d'activer/désactiver chaque règle. Les règles actives sont résumées sous forme de badges dans le lobby.
1620
* **Dialog des paramètres en jeu (GameScreen)** — un bouton ⚙️ dans le header de chaque phase (annonce, lancer, prolongation, résultats) affiche les règles actives de la partie en cours (✓ vert / ✗ grisé).
@@ -21,10 +25,6 @@ Le format est basé sur Keep a Changelog et ce projet adhère au Semantic Versio
2125

2226
### Changed
2327

24-
* **Phase de lancer — tableau permanent** — tous les joueurs sont affichés dans un tableau dès le début du tour. Les joueurs en attente apparaissent en grisé avec ``. L'animation des dés se déroule directement dans la ligne du joueur concerné (plus de dés centraux séparés).
25-
* **Phase de prolongation** — même refonte que la phase de lancer : tableau permanent, animation inline, joueurs en attente grisés.
26-
* **Titre dynamique** — le header des phases roll et prolongation affiche en temps réel qui doit lancer (`Au tour de X de lancer` / `X lance les dés…` / `X — Double 1, relance disponible` / `Tous les joueurs ont lancé`).
27-
* **Points des dés** — rayon des points passé de `size × 0.09` (trop petit aux petites tailles) à `9` unités SVG fixes pour une lisibilité constante quelle que soit la taille d'affichage.
2828
* **Déploiement staging** — le job `deploy` est désormais conditionné par les jobs `lint`, `test-unit` et `test-e2e` via `needs`. Un déploiement échoue automatiquement si l'un des checks ne passe pas.
2929
* **Scripts `package.json`** — ajout de `typecheck`, `format`, `format:check`, `test`, `test:watch`, `test:coverage`, `test:e2e`, `test:e2e:ui`.
3030

File renamed without changes.

lucky7-app/frontend/e2e/home.spec.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import { test, expect } from '@playwright/test';
22

3+
// CardTitle est un <div data-slot="card-title">, pas un heading HTML
4+
const cardTitle = (page: import('@playwright/test').Page, name: string) =>
5+
page.locator('[data-slot="card-title"]', { hasText: name });
6+
37
test.describe("Page d'accueil", () => {
48
test('affiche le titre et les boutons principaux', async ({ page }) => {
59
await page.goto('/');
6-
await expect(page.getByRole('heading', { name: 'Lucky7' })).toBeVisible();
10+
await expect(cardTitle(page, 'Lucky7')).toBeVisible();
711
await expect(page.getByRole('button', { name: '1 appareil' })).toBeVisible();
812
await expect(page.getByRole('button', { name: 'Règles du jeu' })).toBeVisible();
913
await expect(page.getByRole('button', { name: /À propos/i })).toBeVisible();
@@ -19,7 +23,7 @@ test.describe('Règles du jeu', () => {
1923
test('navigue vers la page des règles', async ({ page }) => {
2024
await page.goto('/');
2125
await page.getByRole('button', { name: 'Règles du jeu' }).click();
22-
await expect(page.getByRole('heading', { name: 'Règles du jeu' })).toBeVisible();
26+
await expect(cardTitle(page, 'Règles du jeu')).toBeVisible();
2327
await expect(page.getByText('Préparation')).toBeVisible();
2428
await expect(page.getByText('Règles spéciales')).toBeVisible();
2529
});
@@ -28,7 +32,7 @@ test.describe('Règles du jeu', () => {
2832
await page.goto('/');
2933
await page.getByRole('button', { name: 'Règles du jeu' }).click();
3034
await page.getByRole('button', { name: '←' }).first().click();
31-
await expect(page.getByRole('heading', { name: 'Lucky7' })).toBeVisible();
35+
await expect(cardTitle(page, 'Lucky7')).toBeVisible();
3236
});
3337
});
3438

@@ -73,6 +77,6 @@ test.describe('Lobby — 1 appareil', () => {
7377
}
7478

7579
await page.getByRole('button', { name: 'Lancer la partie' }).click();
76-
await expect(page.getByText('Tour 1')).toBeVisible();
80+
await expect(cardTitle(page, 'Tour 1')).toBeVisible();
7781
});
7882
});

0 commit comments

Comments
 (0)