test(e2e): helpers ne dépendent plus du signal __OBSIGATE_BOOTED retiré (bfe0c75)
CI / security (pull_request) Failing after 2s
CI / lint (pull_request) Successful in 1m18s
CI / test (pull_request) Successful in 3m35s
CI / build (pull_request) Successful in 12s
CI / e2e (pull_request) Failing after 31m42s

bfe0c75 a retiré le splash et son signal de boot côté app sans adapter les
helpers des specs ; login() attendait window.__OBSIGATE_BOOTED → timeout
60 s × chaque test des 8 suites. Signal de rechange sans dépendance au
flag interne : document prêt ET premier .tree-item rendu (preuve que
l'init a lié données+handlers). Validé local : 14 passed sur les 3 suites
qui échouaient en CI (obsigate:ci v2.82.8, auth off, mêmes fixtures).
This commit is contained in:
2026-11-03 09:26:42 -05:00
parent 9037f2dd69
commit ca367b6918
8 changed files with 8 additions and 8 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ async function login(page) {
await page.click('#login-btn'); await page.click('#login-btn');
} }
// Wait until app init() resolved (all handlers bound). // Wait until app init() resolved (all handlers bound).
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
} }
async function openFile(page, vault, filePath) { async function openFile(page, vault, filePath) {
+1 -1
View File
@@ -28,7 +28,7 @@ async function login(page) {
await page.fill('#login-password', CREDS.password); await page.fill('#login-password', CREDS.password);
await page.click('#login-btn'); await page.click('#login-btn');
} }
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
} }
async function authEnabled(page) { async function authEnabled(page) {
+1 -1
View File
@@ -26,7 +26,7 @@ async function login(page) {
await page.fill('#login-password', CREDS.password); await page.fill('#login-password', CREDS.password);
await page.click('#login-btn'); await page.click('#login-btn');
} }
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
} }
async function openFile(page, vault, filePath) { async function openFile(page, vault, filePath) {
+1 -1
View File
@@ -25,7 +25,7 @@ async function login(page) {
await page.fill('#login-password', CREDS.password); await page.fill('#login-password', CREDS.password);
await page.click('#login-btn'); await page.click('#login-btn');
} }
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
} }
async function openFile(page, vault, filePath) { async function openFile(page, vault, filePath) {
+1 -1
View File
@@ -12,7 +12,7 @@ import { test, expect } from '@playwright/test';
async function boot(page) { async function boot(page) {
await page.goto('/'); await page.goto('/');
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
await page.waitForSelector('#dashboard-home, #search-input', { timeout: 15000 }); await page.waitForSelector('#dashboard-home, #search-input', { timeout: 15000 });
} }
+1 -1
View File
@@ -30,7 +30,7 @@ async function login(page) {
await page.fill('#login-password', CREDS.password); await page.fill('#login-password', CREDS.password);
await page.click('#login-btn'); await page.click('#login-btn');
} }
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
} }
async function openFile(page, vault, filePath) { async function openFile(page, vault, filePath) {
+1 -1
View File
@@ -57,7 +57,7 @@ async function login(page) {
await page.fill('#login-password', process.env.OBSIGATE_PASS || 'test123'); await page.fill('#login-password', process.env.OBSIGATE_PASS || 'test123');
await page.click('#login-btn'); await page.click('#login-btn');
} }
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
} }
async function openFixture(page) { async function openFixture(page) {
+1 -1
View File
@@ -117,7 +117,7 @@ test.describe('XSS — lecteur markdown (BUG-021)', () => {
await api(request, 'POST', `/api/file/${VAULT}`, { path: XSS_FILE, content: `${XSS_BODY}\n` }); await api(request, 'POST', `/api/file/${VAULT}`, { path: XSS_FILE, content: `${XSS_BODY}\n` });
await page.goto(BASE); await page.goto(BASE);
await page.waitForFunction(() => window.__OBSIGATE_BOOTED === true, { timeout: 20000 }); await page.waitForFunction(() => document.readyState === 'complete' && !!document.querySelector('.tree-item'), { timeout: 20000 });
await openFile(page, VAULT, XSS_FILE); await openFile(page, VAULT, XSS_FILE);
const content = page.locator('#content-area'); const content = page.locator('#content-area');