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.
senzapaura_es/e2e-estudio/personas.e2e.ts

70 lines
4.3 KiB

import { test, expect } from '@playwright/test';
import { randomUUID } from 'node:crypto';
test.beforeEach(async ({ page }) => {
await page.goto('/entrar');
await page.getByLabel('Código de prueba', { exact: true }).fill('123456');
await page.getByRole('button', { name: 'Entrar', exact: true }).click();
await expect(page.getByRole('navigation', { name: 'Administración' })).toBeVisible();
});
test('una persona combina tipos, se puede editar y aparece al filtrar letristas', async ({
page
}) => {
const nombre = 'Persona integral ' + randomUUID().slice(0, 8);
await page.goto('/personas/nuevo');
await page.getByLabel('Nombre o título').fill(nombre);
for (const tipo of ['Artista', 'Letrista', 'Compositor', 'Artista virtual'])
await page.getByRole('checkbox', { name: tipo, exact: true }).check();
await page.getByRole('button', { name: 'Crear borrador', exact: false }).click();
await expect(page.getByRole('heading', { name: nombre, exact: true, level: 1 })).toBeVisible();
await expect(page.locator('.tipos-ficha')).toContainText('Letrista');
await page.getByRole('link', { name: 'Datos y contenido', exact: true }).click();
await expect(page.getByRole('checkbox', { name: 'Artista virtual', exact: true })).toBeChecked();
await page.getByRole('checkbox', { name: 'Músico', exact: true }).check();
await page.getByLabel('Nombre legal', { exact: true }).fill('Nombre para autoría');
await page.getByRole('button', { name: 'Guardar borrador', exact: true }).first().click();
await expect(page.getByRole('status')).toContainText('guardado');
await page.reload();
await expect(page.getByRole('checkbox', { name: 'Músico', exact: true })).toBeChecked();
await expect(page.getByLabel('Nombre legal', { exact: true })).toHaveValue('Nombre para autoría');
await page.screenshot({ path: 'docs/assets/estudio/persona.png', fullPage: true });
await page.goto('/personas');
await page.getByLabel('Buscar personas', { exact: true }).fill(nombre);
await page.getByLabel('Tipo de persona', { exact: true }).selectOption('letrista');
await page.locator('main').getByRole('button', { name: 'Buscar', exact: true }).click();
const fila = page
.getByRole('row')
.filter({ has: page.getByRole('link', { name: nombre, exact: true }) });
await expect(fila).toContainText('Letrista');
await expect(fila).toContainText('Artista virtual');
await page.screenshot({ path: 'docs/assets/estudio/personas.png', fullPage: true });
});
test('crear un letrista desde los créditos lo clasifica y conserva la grabación', async ({
page
}) => {
await page.goto('/canciones/nuevo');
await page.getByLabel('Nombre o título').fill('Canción con letra ' + randomUUID().slice(0, 8));
await page.getByRole('button', { name: 'Crear borrador', exact: false }).click();
await page.getByRole('link', { name: 'Grabaciones', exact: true }).click();
await page.getByRole('link', { name: 'Abrir →', exact: true }).click();
await page.getByRole('link', { name: 'Créditos', exact: true }).click();
const letra = page
.locator('section.bloque')
.filter({ has: page.getByRole('heading', { name: 'Autoría de la letra', exact: true }) });
await letra.getByRole('button', { name: 'Crear', exact: false }).click();
const dialog = page.getByRole('dialog');
const nombre = 'Letrista ' + randomUUID().slice(0, 8);
await expect(dialog.getByRole('checkbox', { name: 'Letrista', exact: true })).toBeChecked();
await dialog.getByLabel('Nombre', { exact: true }).fill(nombre);
await dialog.getByRole('checkbox', { name: 'Compositor', exact: true }).check();
await dialog.getByRole('button', { name: 'Crear y seleccionar' }).click();
await expect(dialog).not.toBeVisible();
await expect(letra.getByRole('link', { name: nombre, exact: true })).toBeVisible();
await page.getByRole('button', { name: 'Guardar borrador', exact: true }).click();
await expect(page.getByRole('status')).toContainText('guardado');
await letra.getByRole('link', { name: nombre, exact: true }).click();
await expect(page.getByRole('heading', { name: nombre, exact: true, level: 1 })).toBeVisible();
await page.getByRole('link', { name: 'Datos y contenido', exact: true }).click();
await expect(page.getByRole('checkbox', { name: 'Letrista', exact: true })).toBeChecked();
await expect(page.getByRole('checkbox', { name: 'Compositor', exact: true })).toBeChecked();
});

Powered by TurnKey Linux.