- aggiunge configurazione playwright.config.cjs per compatibilita runtime - aggiorna playwright.config.ts con progetto Mobile Chrome - migra i test E2E da .js a .spec.cjs - rimuove i vecchi file E2E non piu usati - allinea i test visual con snapshot baseline aggiornate
120 lines
4.8 KiB
JavaScript
120 lines
4.8 KiB
JavaScript
const { test, expect } = require('@playwright/test');
|
|
|
|
test.describe('Basic Flow: Controller ↔ Display', () => {
|
|
|
|
test('dovrebbe caricare Display e Controller con i titoli corretti', async ({ context }) => {
|
|
const displayPage = await context.newPage();
|
|
const controllerPage = await context.newPage();
|
|
|
|
await displayPage.goto('http://localhost:3000');
|
|
await controllerPage.goto('http://localhost:3001');
|
|
|
|
await expect(displayPage).toHaveTitle(/Segnapunti/);
|
|
await expect(controllerPage).toHaveTitle(/Controller/);
|
|
});
|
|
|
|
test('il punteggio iniziale dovrebbe essere 0-0', async ({ context }) => {
|
|
const controllerPage = await context.newPage();
|
|
await controllerPage.goto('http://localhost:3001');
|
|
|
|
// Attende la connessione WebSocket
|
|
await controllerPage.waitForSelector('.conn-bar.connected');
|
|
|
|
const homeScore = controllerPage.locator('.team-score.home-bg .team-pts');
|
|
const guestScore = controllerPage.locator('.team-score.guest-bg .team-pts');
|
|
await expect(homeScore).toHaveText('0');
|
|
await expect(guestScore).toHaveText('0');
|
|
});
|
|
|
|
test('click +1 Home sul Controller dovrebbe aggiornare il Display', async ({ context }) => {
|
|
const displayPage = await context.newPage();
|
|
const controllerPage = await context.newPage();
|
|
|
|
await displayPage.goto('http://localhost:3000');
|
|
await controllerPage.goto('http://localhost:3001');
|
|
|
|
// Attende la connessione WebSocket del controller
|
|
await controllerPage.waitForSelector('.conn-bar.connected');
|
|
|
|
// Reset per stato pulito
|
|
await controllerPage.getByText(/Reset/i).first().click();
|
|
const btnConfirm = controllerPage.locator('.dialog .btn-confirm');
|
|
if (await btnConfirm.isVisible()) {
|
|
await btnConfirm.click();
|
|
}
|
|
await controllerPage.waitForTimeout(200);
|
|
|
|
// Click +1 Home
|
|
await controllerPage.locator('.team-score.home-bg').click();
|
|
await controllerPage.waitForTimeout(200);
|
|
|
|
// Verifica Controller mostra 1
|
|
await expect(controllerPage.locator('.team-score.home-bg .team-pts')).toHaveText('1');
|
|
|
|
// Verifica Display mostra 1 (il punteggio grande)
|
|
await expect(displayPage.locator('.punt.home')).toHaveText('1');
|
|
});
|
|
|
|
test('click +1 Guest sul Controller dovrebbe aggiornare il Display', async ({ context }) => {
|
|
const displayPage = await context.newPage();
|
|
const controllerPage = await context.newPage();
|
|
|
|
await displayPage.goto('http://localhost:3000');
|
|
await controllerPage.goto('http://localhost:3001');
|
|
|
|
await controllerPage.waitForSelector('.conn-bar.connected');
|
|
|
|
// Reset
|
|
await controllerPage.getByText(/Reset/i).first().click();
|
|
const btnConfirm = controllerPage.locator('.dialog .btn-confirm');
|
|
if (await btnConfirm.isVisible()) {
|
|
await btnConfirm.click();
|
|
}
|
|
await controllerPage.waitForTimeout(200);
|
|
|
|
// Click +1 Guest
|
|
await controllerPage.locator('.team-score.guest-bg').click();
|
|
await controllerPage.waitForTimeout(200);
|
|
|
|
// Verifica Controller
|
|
await expect(controllerPage.locator('.team-score.guest-bg .team-pts')).toHaveText('1');
|
|
|
|
// Verifica Display
|
|
await expect(displayPage.locator('.punt.guest')).toHaveText('1');
|
|
});
|
|
|
|
test('la sincronizzazione dovrebbe funzionare con punti alternati', async ({ context }) => {
|
|
const displayPage = await context.newPage();
|
|
const controllerPage = await context.newPage();
|
|
|
|
await displayPage.goto('http://localhost:3000');
|
|
await controllerPage.goto('http://localhost:3001');
|
|
|
|
await controllerPage.waitForSelector('.conn-bar.connected');
|
|
|
|
// Reset
|
|
await controllerPage.getByText(/Reset/i).first().click();
|
|
const btnConfirm = controllerPage.locator('.dialog .btn-confirm');
|
|
if (await btnConfirm.isVisible()) {
|
|
await btnConfirm.click();
|
|
}
|
|
await controllerPage.waitForTimeout(200);
|
|
|
|
// Home +1, Guest +1, Home +1
|
|
await controllerPage.locator('.team-score.home-bg').click();
|
|
await controllerPage.waitForTimeout(100);
|
|
await controllerPage.locator('.team-score.guest-bg').click();
|
|
await controllerPage.waitForTimeout(100);
|
|
await controllerPage.locator('.team-score.home-bg').click();
|
|
await controllerPage.waitForTimeout(200);
|
|
|
|
// Controller: Home 2, Guest 1
|
|
await expect(controllerPage.locator('.team-score.home-bg .team-pts')).toHaveText('2');
|
|
await expect(controllerPage.locator('.team-score.guest-bg .team-pts')).toHaveText('1');
|
|
|
|
// Display: Home 2, Guest 1
|
|
await expect(displayPage.locator('.punt.home')).toHaveText('2');
|
|
await expect(displayPage.locator('.punt.guest')).toHaveText('1');
|
|
});
|
|
});
|