You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.1 KiB
55 lines
2.1 KiB
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);
|
|
});
|
|
});
|