feat: auth fixtures y helpers de interaccion E2E
Implementa el issue 0022b — fixtures de Playwright para autenticacion en Element Web y helpers de interaccion con rooms. - element-auth.ts: flujo completo de login + cross-signing con recovery key, preparado para cachear sesion via storageState - global-setup.ts: ejecuta login una vez antes de todos los tests, reutiliza sesion cacheada si tiene menos de 12 horas - matrix-room.ts: helpers goToRoom, sendMessage, waitForBotReply, getLastMessage, assertNoDecryptionErrors (detecta "Unable to decrypt") - login.spec.ts: 3 smoke tests validando sesion, E2EE y navegacion - playwright.config.ts: configurado storageState para inyectar sesion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { assertNoDecryptionErrors } from "../fixtures/matrix-room";
|
||||
|
||||
test.describe("Login y sesion E2EE", () => {
|
||||
test("storageState cargado — rooms visibles en sidebar", async ({
|
||||
page,
|
||||
}) => {
|
||||
await page.goto("/");
|
||||
|
||||
// Si la sesion esta cacheada, Element debe mostrar rooms directamente
|
||||
await expect(
|
||||
page.locator('[role="tree"][aria-label="Rooms"]')
|
||||
).toBeVisible({ timeout: 30_000 });
|
||||
});
|
||||
|
||||
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 });
|
||||
|
||||
// Abrir el primer room visible para verificar mensajes
|
||||
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("/");
|
||||
|
||||
// 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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user