import { expect, test } from '@playwright/test'; /* * El panel, desde fuera. * * Corre contra su propio servidor —el proyecto «panel» de la configuración—, * que es otra aplicación compilada aparte. Aquí solo se comprueba la puerta: * quién puede pasar una vez dentro lo deciden `esAdmin` y `exigirAdmin`, y eso * se prueba en `administracion.spec.ts`, donde se pueden montar las tres * situaciones sin necesitar un buzón de correo. */ test.describe('El panel', () => { test('sin sesión no se ve, se manda a entrar', async ({ page }) => { await page.goto('/'); await expect(page).toHaveURL(/\/entrar/); await expect(page.getByRole('heading', { name: 'Panel' })).toBeVisible(); await expect(page.getByLabel('Correo')).toBeVisible(); }); test('y se vuelve a donde se iba, no a la portada', async ({ page }) => { await page.goto('/?ver=pendientes'); const url = new URL(page.url()); expect(url.pathname).toBe('/entrar'); expect(url.searchParams.get('volverA')).toBe('/?ver=pendientes'); }); test('no dice qué cuenta administra', async ({ page }) => { // La respuesta es la misma exista o no la cuenta. Si dijera «esa cuenta no // administra», el formulario sería una forma cómoda de averiguar cuál sí. await page.goto('/entrar'); await page.getByLabel('Correo').fill('nadie-de-aqui@example.com'); await page.getByRole('button', { name: 'Mandar el código' }).click(); await expect(page.getByText(/si esa cuenta administra/i)).toBeVisible(); await expect(page.getByLabel('Código')).toBeVisible(); }); test('nada de aquí se indexa', async ({ request }) => { const robots = await request.get('/robots.txt'); expect(await robots.text()).toContain('Disallow: /'); }); test('no lleva la navegación del sitio', async ({ page }) => { // Es una herramienta, no una página de la web: sin cabecera de secciones, // sin reproductor y sin pie. await page.goto('/entrar'); await expect(page.getByRole('navigation', { name: 'Principal' })).toHaveCount(0); await expect(page.getByRole('region', { name: 'Reproductor' })).toHaveCount(0); await expect(page.locator('footer')).toHaveCount(0); }); });