/** * Tests E2E — Cycle de vie complet du timer * * Navigue vers un enclos, active une jauge, ajoute une DD, * demarre/pause/reprend/reset le timer. */ import { test, expect } from './electron-app'; test.describe('Cycle de vie du timer', () => { test.beforeEach(async ({ page }) => { // Naviguer vers le premier enclos via la sidebar const firstEnclos = page.locator('.sb-item[data-view]').filter({ has: page.locator('.sb-dot'), }).first(); await firstEnclos.click(); await expect(page.locator('.enclos-view')).toBeVisible({ timeout: 5000 }); }); test('Activer la jauge baffeur et definir son niveau', async ({ page }) => { // Cliquer sur le bouton baffeur pour l'activer await page.click('.gauge-btn[data-gid="baffeur"]'); // Verifier que la jauge est active (classe .on) await expect(page.locator('.gauge-btn[data-gid="baffeur"].on')).toBeVisible(); // Definir le niveau de la jauge a 50000 const gaugeInput = page.locator('.gauge-inp[data-gid="baffeur"]'); await gaugeInput.click(); await gaugeInput.fill('50000'); await gaugeInput.press('Enter'); // Verifier que la valeur est bien 50000 await expect(gaugeInput).toHaveValue('50000'); }); test('Ajouter une dragodinde puis demarrer le timer', async ({ page }) => { // Activer la jauge baffeur await page.click('.gauge-btn[data-gid="baffeur"]'); const gaugeInput = page.locator('.gauge-inp[data-gid="baffeur"]'); await gaugeInput.click(); await gaugeInput.fill('50000'); await gaugeInput.press('Enter'); // L'enclos contient deja 1 DD (creee avec l'enclos) const ddGrid = page.locator('.dd-grid'); await expect(ddGrid.locator('.dd-card')).toHaveCount(1, { timeout: 5000 }); // Demarrer le timer const startBtn = page.locator('.enc-start-btn'); await startBtn.click(); // Verifier que le bouton est passe en mode PAUSE await expect(page.locator('.enc-btn-pause')).toBeVisible({ timeout: 3000 }); // Verifier que le temps ecoule n'est plus 00:00:00 (apres un petit delai) await page.waitForTimeout(1500); const elapsedText = await page.locator('.enc-elapsed').textContent(); expect(elapsedText).not.toBe('00:00:00'); // Verifier que "Alarme dans" montre un temps (pas --:--:-- ni infini) const alarmText = await page.locator('.enc-alarm').textContent(); expect(alarmText).not.toBe('--:--:--'); expect(alarmText).not.toBe('\u221e'); }); test('Pause et reprise du timer', async ({ page }) => { // Setup: activer jauge + DD + demarrer await page.click('.gauge-btn[data-gid="baffeur"]'); const gaugeInput = page.locator('.gauge-inp[data-gid="baffeur"]'); await gaugeInput.click(); await gaugeInput.fill('50000'); await gaugeInput.press('Enter'); await page.click('button:has-text("Ajouter une Dragodinde")'); await page.click('.enc-start-btn'); await expect(page.locator('.enc-btn-pause')).toBeVisible({ timeout: 3000 }); // Mettre en pause await page.click('.enc-btn-pause'); // Le bouton devrait afficher REPRENDRE await expect(page.locator('.enc-start-btn')).toContainText('REPRENDRE', { timeout: 3000 }); // Capturer le temps ecoule apres la pause const elapsedAfterPause = await page.locator('.enc-elapsed').textContent(); // Attendre un moment pour verifier que le temps ne bouge pas await page.waitForTimeout(1500); const elapsedStillPaused = await page.locator('.enc-elapsed').textContent(); expect(elapsedStillPaused).toBe(elapsedAfterPause); // Reprendre le timer await page.click('.enc-start-btn'); await expect(page.locator('.enc-btn-pause')).toBeVisible({ timeout: 3000 }); }); test('Reset du timer', async ({ page }) => { // Setup: activer jauge + DD + demarrer await page.click('.gauge-btn[data-gid="baffeur"]'); const gaugeInput = page.locator('.gauge-inp[data-gid="baffeur"]'); await gaugeInput.click(); await gaugeInput.fill('50000'); await gaugeInput.press('Enter'); await page.click('button:has-text("Ajouter une Dragodinde")'); await page.click('.enc-start-btn'); await expect(page.locator('.enc-btn-pause')).toBeVisible({ timeout: 3000 }); // Cliquer sur le bouton reset await page.click('.enc-reset-btn'); // Verifier que le timer est revenu a 00:00:00 await expect(page.locator('.enc-elapsed')).toHaveText('00:00:00', { timeout: 3000 }); // Le bouton devrait afficher DEMARRER await expect(page.locator('.enc-start-btn')).toContainText('MARRER', { timeout: 3000 }); }); });