dd-timer/tests/e2e/timer-workflow.spec.ts
POL Mickaël 3e485fd09b chore: normalise fins de ligne CRLF → LF dans tout le repo
Applique .gitattributes sur tous les fichiers existants.
Élimine les différences fantômes entre WSL et Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 08:55:10 +02:00

114 lines
4.5 KiB
TypeScript
Executable File

/**
* 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 });
});
});