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>
114 lines
4.5 KiB
TypeScript
Executable File
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 });
|
|
});
|
|
});
|