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
+36 -7
View File
@@ -1,20 +1,18 @@
import { test, expect } from "@playwright/test";
import { test, expect, handleElementDialogs } from "../fixtures/persistent-context";
import {
goToRoom,
sendMessage,
waitForBotReply,
assertNoDecryptionErrors,
startThreadOnLastMessage,
sendThreadMessage,
waitForThreadReply,
} from "../fixtures/matrix-room";
test.describe("asistente-2", () => {
test.beforeEach(async ({ page }) => {
await page.goto("/");
// Esperar a que la sesion este lista
await expect(
page.locator('[role="tree"][aria-label="Rooms"]')
).toBeVisible({ timeout: 30_000 });
await handleElementDialogs(page);
await goToRoom(page, "Asistente 2");
});
@@ -65,6 +63,37 @@ test.describe("asistente-2", () => {
expect(reply.toLowerCase()).toContain("ping");
});
test("responde dentro del thread cuando se le habla por thread", async ({
page,
}) => {
// 1. Enviar un mensaje normal (sera el thread root)
await sendMessage(page, "Mensaje para iniciar thread");
// Esperar a que el bot responda al mensaje original
await waitForBotReply(page, {
timeout: 60_000,
sender: "Asistente 2",
});
// 2. Iniciar thread sobre el mensaje del usuario
await startThreadOnLastMessage(page);
// 3. Enviar mensaje dentro del thread
await sendThreadMessage(
page,
"Hola desde el thread, respondeme aqui por favor"
);
// 4. Esperar que el bot responda DENTRO del thread
const threadReply = await waitForThreadReply(page, {
timeout: 60_000,
sender: "Asistente 2",
});
expect(threadReply).toBeTruthy();
expect(threadReply.length).toBeGreaterThan(5);
});
test("no hay errores de E2EE en el timeline", async ({ page }) => {
await assertNoDecryptionErrors(page);
});