Skip to content

Commit 11212c0

Browse files
authored
Merge pull request #26 from RustyRory/hotfix/11-ci-cd
Fixes #11
2 parents 85b0977 + 02676a0 commit 11212c0

67 files changed

Lines changed: 17534 additions & 1426 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches-ignore:
6+
- staging # géré par deploy-staging.yml qui inclut ces checks
7+
pull_request:
8+
branches:
9+
- main
10+
- staging
11+
- dev
12+
13+
concurrency:
14+
group: ci-${{ github.ref }}
15+
cancel-in-progress: true
16+
17+
jobs:
18+
# ─────────────────────────────────────────────
19+
# 1. Lint & Format
20+
# ─────────────────────────────────────────────
21+
lint:
22+
name: Lint & Format
23+
runs-on: ubuntu-latest
24+
25+
steps:
26+
- uses: actions/checkout@v4
27+
28+
- uses: actions/setup-node@v4
29+
with:
30+
node-version: 20
31+
cache: npm
32+
cache-dependency-path: lucky7-app/frontend/package-lock.json
33+
34+
- name: Installer les dépendances
35+
run: npm ci
36+
working-directory: lucky7-app/frontend
37+
38+
- name: TypeScript — vérification des types
39+
run: npm run typecheck
40+
working-directory: lucky7-app/frontend
41+
42+
- name: ESLint
43+
run: npm run lint
44+
working-directory: lucky7-app/frontend
45+
46+
- name: Prettier — vérification du format
47+
run: npm run format:check
48+
working-directory: lucky7-app/frontend
49+
50+
# ─────────────────────────────────────────────
51+
# 2. Tests unitaires (Vitest)
52+
# ─────────────────────────────────────────────
53+
test-unit:
54+
name: Tests unitaires
55+
runs-on: ubuntu-latest
56+
57+
steps:
58+
- uses: actions/checkout@v4
59+
60+
- uses: actions/setup-node@v4
61+
with:
62+
node-version: 20
63+
cache: npm
64+
cache-dependency-path: lucky7-app/frontend/package-lock.json
65+
66+
- name: Installer les dépendances
67+
run: npm ci
68+
working-directory: lucky7-app/frontend
69+
70+
- name: Vitest
71+
run: npm run test:coverage
72+
working-directory: lucky7-app/frontend
73+
74+
- name: Upload coverage
75+
uses: actions/upload-artifact@v4
76+
if: always()
77+
with:
78+
name: coverage-report
79+
path: lucky7-app/frontend/coverage/
80+
retention-days: 7
81+
82+
# ─────────────────────────────────────────────
83+
# 3. Tests E2E (Playwright)
84+
# ─────────────────────────────────────────────
85+
test-e2e:
86+
name: Tests E2E
87+
runs-on: ubuntu-latest
88+
needs: [lint, test-unit] # ne lance l'E2E que si lint + unit passent
89+
90+
steps:
91+
- uses: actions/checkout@v4
92+
93+
- uses: actions/setup-node@v4
94+
with:
95+
node-version: 20
96+
cache: npm
97+
cache-dependency-path: lucky7-app/frontend/package-lock.json
98+
99+
- name: Installer les dépendances
100+
run: npm ci
101+
working-directory: lucky7-app/frontend
102+
103+
- name: Installer Playwright (Chromium uniquement)
104+
run: npx playwright install --with-deps chromium
105+
working-directory: lucky7-app/frontend
106+
107+
- name: Build Next.js (prod)
108+
run: npm run build
109+
working-directory: lucky7-app/frontend
110+
111+
- name: Tests Playwright
112+
run: npm run test:e2e
113+
working-directory: lucky7-app/frontend
114+
115+
- name: Upload rapport Playwright
116+
uses: actions/upload-artifact@v4
117+
if: always()
118+
with:
119+
name: playwright-report
120+
path: lucky7-app/frontend/playwright-report/
121+
retention-days: 7

.github/workflows/deploy-staging.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,115 @@ on:
55
branches:
66
- staging
77

8+
concurrency:
9+
group: deploy-staging
10+
cancel-in-progress: true
11+
812
jobs:
13+
# ─────────────────────────────────────────────
14+
# 1. Lint & Format
15+
# ─────────────────────────────────────────────
16+
lint:
17+
name: Lint & Format
18+
runs-on: ubuntu-latest
19+
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- uses: actions/setup-node@v4
24+
with:
25+
node-version: 20
26+
cache: npm
27+
cache-dependency-path: lucky7-app/frontend/package-lock.json
28+
29+
- name: Installer les dépendances
30+
run: npm ci
31+
working-directory: lucky7-app/frontend
32+
33+
- name: TypeScript — vérification des types
34+
run: npm run typecheck
35+
working-directory: lucky7-app/frontend
36+
37+
- name: ESLint
38+
run: npm run lint
39+
working-directory: lucky7-app/frontend
40+
41+
- name: Prettier — vérification du format
42+
run: npm run format:check
43+
working-directory: lucky7-app/frontend
44+
45+
# ─────────────────────────────────────────────
46+
# 2. Tests unitaires (Vitest)
47+
# ─────────────────────────────────────────────
48+
test-unit:
49+
name: Tests unitaires
50+
runs-on: ubuntu-latest
51+
52+
steps:
53+
- uses: actions/checkout@v4
54+
55+
- uses: actions/setup-node@v4
56+
with:
57+
node-version: 20
58+
cache: npm
59+
cache-dependency-path: lucky7-app/frontend/package-lock.json
60+
61+
- name: Installer les dépendances
62+
run: npm ci
63+
working-directory: lucky7-app/frontend
64+
65+
- name: Vitest
66+
run: npm test
67+
working-directory: lucky7-app/frontend
68+
69+
# ─────────────────────────────────────────────
70+
# 3. Tests E2E (Playwright)
71+
# ─────────────────────────────────────────────
72+
test-e2e:
73+
name: Tests E2E
74+
runs-on: ubuntu-latest
75+
needs: [lint, test-unit]
76+
77+
steps:
78+
- uses: actions/checkout@v4
79+
80+
- uses: actions/setup-node@v4
81+
with:
82+
node-version: 20
83+
cache: npm
84+
cache-dependency-path: lucky7-app/frontend/package-lock.json
85+
86+
- name: Installer les dépendances
87+
run: npm ci
88+
working-directory: lucky7-app/frontend
89+
90+
- name: Installer Playwright (Chromium uniquement)
91+
run: npx playwright install --with-deps chromium
92+
working-directory: lucky7-app/frontend
93+
94+
- name: Build Next.js (prod)
95+
run: npm run build
96+
working-directory: lucky7-app/frontend
97+
98+
- name: Tests Playwright
99+
run: npm run test:e2e
100+
working-directory: lucky7-app/frontend
101+
102+
- name: Upload rapport Playwright
103+
uses: actions/upload-artifact@v4
104+
if: always()
105+
with:
106+
name: playwright-report
107+
path: lucky7-app/frontend/playwright-report/
108+
retention-days: 7
109+
110+
# ─────────────────────────────────────────────
111+
# 4. Déploiement (bloqué par lint + tests)
112+
# ─────────────────────────────────────────────
9113
deploy:
10114
name: Déploiement Lucky7 — staging
11115
runs-on: ubuntu-latest
116+
needs: [lint, test-unit, test-e2e]
12117

13118
steps:
14119
- name: Checkout code

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ next-env.d.ts
1515
dist/
1616
build/
1717

18+
# ── Tests ─────────────────────────────────────────────────────────────────────
19+
coverage/
20+
playwright-report/
21+
test-results/
22+
1823
# ── TypeScript ────────────────────────────────────────────────────────────────
1924
*.tsbuildinfo
2025

CHANGELOG.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,45 @@ Toutes les modifications notables de ce projet seront documentées dans ce fichi
55
Le format est basé sur Keep a Changelog et ce projet adhère au Semantic Versioning.
66

77
## [Unreleased]
8+
---
9+
10+
## [0.2.0] - 2026-04-08
11+
12+
### Added
13+
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.
18+
* **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.
19+
* **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.
20+
* **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+
* **Pipeline CI GitHub Actions** (`ci.yml`) — déclenché sur chaque push et pull request : lint & format → tests unitaires → tests E2E (les E2E n'attendent que si lint + unit passent).
22+
* **Tests unitaires** — Vitest + Testing Library, 11 tests couvrant `cn`, `generateId` et le composant `RulesPage`.
23+
* **Tests E2E** — Playwright (Chromium), 7 scénarios couvrant l'accueil, la navigation vers les règles, le lobby et le lancement de partie.
24+
* **Formatage** — Prettier intégré avec `.prettierrc.json` et les scripts `format` et `format:check`.
25+
26+
### Changed
27+
28+
* **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.
29+
* **Scripts `package.json`** — ajout de `typecheck`, `format`, `format:check`, `test`, `test:watch`, `test:coverage`, `test:e2e`, `test:e2e:ui`.
30+
31+
### Fixed
32+
33+
* **ESLint** — désactivation de `react/no-unescaped-entities` (incompatible avec les apostrophes du français) ; ajout des répertoires `e2e/`, `coverage/`, `playwright-report/` aux ignores.
34+
* **État `lastRolledId`** — supprimé car devenu inutilisé après la refonte du tableau de la phase de lancer.
35+
36+
---
37+
38+
## [0.1.1] - 2026-04-07
39+
40+
### Added
41+
42+
* Environnements : dev / staging
43+
* Pipelines :
44+
* Tests unitaires & e2e
45+
* Lint / format
46+
* Build & déploiement automatique
847

948
---
1049

0 commit comments

Comments
 (0)