Repository navigation
Expand file tree
/
Copy pathplaywright.config.js
More file actions
45 lines (43 loc) · 2.26 KB
/
Copy pathplaywright.config.js
File metadata and controls
45 lines (43 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Testes E2E do fluxo real no navegador (login, criar contrato).
// Complementa tests/test_server.py (unittest, só backend) — aqui é HTML+JS+backend
// juntos, exatamente como um usuário usaria. Roda contra um banco/uploads/backups
// isolados (SGCA_DATA_DIR), nunca o sgca.db real.
import { defineConfig } from '@playwright/test';
import { mkdtempSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
const dataDir = mkdtempSync(join(tmpdir(), 'sgca-e2e-'));
const port = 3051;
export default defineConfig({
testDir: './tests/e2e',
timeout: 60_000, // 60s: runners Windows do CI ocasionalmente lentos (goto+fill consumiam os 30s)
// Assertions que dependem de um round-trip ao servidor Python ocasionalmente
// passam de 5s (default) sob carga nos runners Windows do GitHub. 10s dá folga
// sem mascarar travamento real (o timeout do teste inteiro continua limitado acima).
expect: { timeout: 10_000 },
// Só no CI: o runner Windows do GitHub é ~5x mais lento que a máquina local e
// ocasionalmente estoura o timeout num teste pesado, sem nada de errado no
// código (6 quedas em ~80 execuções, sempre verdes ao repetir o MESMO commit).
// Repetir não esconde problema: o Playwright reporta o que só passou na
// repetição como "flaky", e teste que falha nas 3 tentativas continua
// quebrando o build. Local segue com 0 — aqui a falha tem de doer na hora.
retries: process.env.CI ? 2 : 0,
fullyParallel: false, // um único servidor/banco compartilhado entre os specs
workers: 1,
use: {
baseURL: `http://localhost:${port}`,
screenshot: 'only-on-failure',
// Rastro completo (DOM a cada passo, rede, console) só quando o teste falha.
// Sem isto, uma queda no CI deixava apenas o log de texto — foi o que
// impediu de investigar as duas quedas de 2026-07-24, que não reproduzem
// localmente. Com o trace, a próxima é diagnosticável em vez de misteriosa.
trace: 'retain-on-failure',
},
webServer: {
command: 'python server.py',
url: `http://localhost:${port}/health`,
reuseExistingServer: false,
timeout: 30_000, // waitress boota um tico mais lento que o http.server
env: { SGCA_DATA_DIR: dataDir, SGCA_PORT: String(port), SGCA_NO_BROWSER: '1' },
},
});