Files
segnapunti/tests/e2e/full-match.spec.cjs
T
davide d67f3669d6 test(e2e): helper condivisi e refactor degli spec di gioco
- nuovo tests/e2e/helpers.cjs: openController (viewport portrait per il layout
  mobile), openDisplay, resetGame, addPoints
- resetGame gestisce il dialog di vittoria persistente e reimposta i nomi di
  default (lo stato è condiviso e persistente: serve per il determinismo)
- full-match/game-simulation: gestito il dialog SET VINTO automatico a 25/15
- basic-flow/game-operations: migrati agli helper condivisi
2026-06-21 18:03:29 +02:00

93 lines
4.2 KiB
JavaScript

const { test, expect } = require('@playwright/test');
const { openController, resetGame, addPoints } = require('./helpers.cjs');
test.describe('Full Match Simulation', () => {
test('Partita 2/3: Home vince il primo set', async ({ context }) => {
const controllerPage = await openController(context);
await resetGame(controllerPage);
// Cambia modalità a 2/3
await controllerPage.getByText('Config').click();
await controllerPage.waitForSelector('.dialog-config');
await controllerPage.locator('.btn-mode').getByText('2/3').click();
await controllerPage.locator('.dialog-config .btn-confirm').click();
await controllerPage.waitForTimeout(200);
// === SET 1: Home vince 25-0 ===
await addPoints(controllerPage, 'home', 25);
// Verifica punteggio 25
await expect(controllerPage.locator('.team-score.home-bg .team-pts')).toHaveText('25');
// A 25-0 compare automaticamente il dialog "SET VINTO": vai al set successivo
await controllerPage.waitForSelector('.dialog-winner');
await controllerPage.getByText('VAI AL SET SUCCESSIVO').click();
// doNuovoSet riapre il dialog di configurazione: chiudilo
await controllerPage.locator('.dialog-config .btn-cancel').click();
await controllerPage.waitForTimeout(200);
// Verifica set 1 per Home
await expect(controllerPage.locator('.team-score.home-bg .team-set')).toContainText('SET 1');
});
test('Set decisivo 2/3: vittoria a 15 punti', async ({ context }) => {
const controllerPage = await openController(context);
await resetGame(controllerPage);
// Cambia modalità a 2/3
await controllerPage.getByText('Config').click();
await controllerPage.waitForSelector('.dialog-config');
await controllerPage.locator('.btn-mode').getByText('2/3').click();
await controllerPage.locator('.dialog-config .btn-confirm').click();
await controllerPage.waitForTimeout(200);
// Imposta set 1-1 manualmente (simula set pareggiati)
await controllerPage.locator('.btn-set.home-bg').click();
await controllerPage.waitForTimeout(50);
await controllerPage.locator('.btn-set.guest-bg').click();
await controllerPage.waitForTimeout(100);
// Verifica set 1-1
await expect(controllerPage.locator('.team-score.home-bg .team-set')).toContainText('SET 1');
await expect(controllerPage.locator('.team-score.guest-bg .team-set')).toContainText('SET 1');
// === SET DECISIVO: Home porta a 15 ===
await addPoints(controllerPage, 'home', 15);
// Verifica punteggio 15 (e il set è decisivo: dopo 15 punti il gioco è vinto)
await expect(controllerPage.locator('.team-score.home-bg .team-pts')).toHaveText('15');
// A 15 nel set decisivo scatta la vittoria: compare il dialog (PARTITA FINITA)
await expect(controllerPage.locator('.dialog-winner')).toBeVisible();
});
test('Set normale: punti oltre 25 fino ai vantaggi', async ({ context }) => {
const controllerPage = await openController(context);
await resetGame(controllerPage);
// Porta a 24-24
await addPoints(controllerPage, 'home', 24);
await addPoints(controllerPage, 'guest', 24);
await expect(controllerPage.locator('.team-score.home-bg .team-pts')).toHaveText('24');
await expect(controllerPage.locator('.team-score.guest-bg .team-pts')).toHaveText('24');
// Home va a 25 (non è vittoria perché serve scarto di 2)
await controllerPage.locator('.team-score.home-bg').click();
await controllerPage.waitForTimeout(100);
await expect(controllerPage.locator('.team-score.home-bg .team-pts')).toHaveText('25');
// Si possono ancora aggiungere punti (non è vittoria a 25-24)
await controllerPage.locator('.team-score.home-bg').click();
await controllerPage.waitForTimeout(100);
await expect(controllerPage.locator('.team-score.home-bg .team-pts')).toHaveText('26');
// 26-24 è vittoria → compare automaticamente il dialog SET VINTO
await expect(controllerPage.locator('.dialog-winner')).toBeVisible();
});
});