refactor: migrar tests E2E a persistent context

global-setup.ts:
- Usa launchPersistentContext en vez de browser.newContext()
- Reemplaza storageState por marker file para cache de sesion
- Captura logs de consola del browser para debug
- Screenshots y HTML dump en caso de error

playwright.config.ts:
- Elimina storageState (ahora via persistent context fixture)
- Screenshots siempre activas, video y trace en failures

Tests (login, assistant-bot, asistente-2):
- Importan test/expect desde persistent-context fixture
- Usan handleElementDialogs() en vez de espera manual de rooms
- Nuevo test de threads en asistente-2: verifica que el bot
  responde dentro del thread cuando se le habla por thread

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 15:47:51 +00:00
parent 947bb70eba
commit 1e896adeaa
5 changed files with 122 additions and 62 deletions
+10 -26
View File
@@ -1,54 +1,38 @@
import { test, expect } from "@playwright/test";
import { test, expect, handleElementDialogs } from "../fixtures/persistent-context";
import { assertNoDecryptionErrors } from "../fixtures/matrix-room";
test.describe("Login y sesion E2EE", () => {
test("storageState cargado — rooms visibles en sidebar", async ({
page,
}) => {
test("sesion cargada — rooms visibles en sidebar", async ({ page }) => {
await page.goto("/");
await handleElementDialogs(page);
// Si la sesion esta cacheada, Element debe mostrar rooms directamente
await expect(
page.locator('[role="tree"][aria-label="Rooms"]')
).toBeVisible({ timeout: 30_000 });
// Si llegamos aqui, handleElementDialogs ya verifico rooms sidebar
const rooms = page.locator('[role="treeitem"]');
const roomCount = await rooms.count();
expect(roomCount).toBeGreaterThan(0);
});
test("no hay mensajes Unable to decrypt en rooms recientes", async ({
page,
}) => {
await page.goto("/");
// Esperar a que cargue la lista de rooms
await expect(
page.locator('[role="tree"][aria-label="Rooms"]')
).toBeVisible({ timeout: 30_000 });
await handleElementDialogs(page);
// Abrir el primer room visible para verificar mensajes
const firstRoom = page
.locator('[role="treeitem"]')
.first();
const firstRoom = page.locator('[role="treeitem"]').first();
const roomCount = await firstRoom.count();
if (roomCount > 0) {
await firstRoom.click();
// Esperar a que cargue el timeline
await page.waitForTimeout(3_000);
// Verificar que no hay errores de desencriptado
await assertNoDecryptionErrors(page);
}
});
test("helpers de room navegan correctamente", async ({ page }) => {
await page.goto("/");
await handleElementDialogs(page);
// Esperar a que la sesion este lista
await expect(
page.locator('[role="tree"][aria-label="Rooms"]')
).toBeVisible({ timeout: 30_000 });
// Verificar que hay al menos un room en el sidebar
const rooms = page.locator('[role="treeitem"]');
const roomCount = await rooms.count();
expect(roomCount).toBeGreaterThan(0);