AvanzaCast/packages/studio-panel/e2e/selectors_streamyard.json

104 lines
5.0 KiB
JSON

{
"source": "streamyard.com broadcasts -> studio",
"capturedAt": "2025-11-15T00:00:00Z",
"notes": "Selectores heurísticos y alternativas (texto, xpath, css) para pruebas E2E. Usar la estrategia text (Playwright) o XPath cuando el texto es estable.",
"selectors": [
{
"id": "broadcasts.enter_studio_link",
"description": "Link 'Entrar al estudio' en la tabla de broadcasts (fila de transmisión)",
"playwright": "text=Entrar al estudio",
"css": "a:has-text('Entrar al estudio')",
"xpath": "//a[contains(normalize-space(.), 'Entrar al estudio')]",
"page": "broadcasts"
},
{
"id": "prejoin.start_camera_button",
"description": "Botón para iniciar la cámara en la pantalla previa al ingreso",
"playwright": "text=Iniciar cámara",
"css": "button:has-text('Iniciar cámara')",
"xpath": "//button[contains(normalize-space(.), 'Iniciar cámara')]",
"page": "studio-prejoin"
},
{
"id": "prejoin.join_without_devices",
"description": "Botón fallback 'Entrar sin micrófono/cámara' cuando no hay dispositivos",
"playwright": "text=Entrar sin micrófono/cámara",
"css": "button:has-text('Entrar sin micrófono/cámara')",
"xpath": "//button[contains(normalize-space(.), 'Entrar sin micrófono/cámara')]",
"page": "studio-prejoin"
},
{
"id": "prejoin.enter_studio_button",
"description": "Botón final 'Entrar al estudio' en prejoin (si existe)",
"playwright": "text=Entrar al estudio",
"css": "button:has-text('Entrar al estudio'), a:has-text('Entrar al estudio')",
"xpath": "//button[contains(normalize-space(.), 'Entrar al estudio')] | //a[contains(normalize-space(.), 'Entrar al estudio')]",
"page": "studio-prejoin"
},
{
"id": "studio.add_guest_button",
"description": "Botón 'Agregar invitados' en el panel del estudio (green room)",
"playwright": "text=Agregar invitados",
"css": "button:has-text('Agregar invitados')",
"xpath": "//button[contains(normalize-space(.), 'Agregar invitados')]",
"page": "studio"
},
{
"id": "studio.record_button",
"description": "Botón 'Grabar' o 'Record' en la barra de control para iniciar/detener grabación",
"playwright": "text=Grabar",
"css": "button:has-text('Grabar'), button:has-text('Record'), button:has-text('Iniciar grabación'), button:has-text('Start Recording'), button:has-text('Recording'), button[data-testid*='record']",
"xpath": "//button[contains(normalize-space(.), 'Grabar') or contains(normalize-space(.), 'Record') or contains(normalize-space(.), 'Iniciar grabación') or contains(normalize-space(.), 'Start Recording') or contains(normalize-space(.), 'Recording')]",
"page": "studio"
},
{
"id": "studio.destination_button",
"description": "Botón 'Agregar destino' (configuración de plataformas de multistream)",
"playwright": "text=Agregar destino",
"css": "button:has-text('Agregar destino')",
"xpath": "//button[contains(normalize-space(.), 'Agregar destino')]",
"page": "studio"
},
{
"id": "scenes.show_on_stage",
"description": "Botón 'Mostrar en el escenario' dentro del listado de escenas (thumbnail)",
"playwright": "text=Mostrar en el escenario",
"css": "button:has-text('Mostrar en el escenario')",
"xpath": "//button[contains(normalize-space(.), 'Mostrar en el escenario')]",
"page": "studio-aside-scenes"
},
{
"id": "scenes.new_scene",
"description": "Botón 'Nueva escena' en panel de Scenes",
"playwright": "text=Nueva escena",
"css": "button:has-text('Nueva escena')",
"xpath": "//button[contains(normalize-space(.), 'Nueva escena')]",
"page": "studio-aside-scenes"
},
{
"id": "assets.change_logo_section",
"description": "Control para cambiar la sección del logo en Assets",
"playwright": "text=Cambiar la sección del logo",
"css": "button:has-text('Cambiar la sección del logo')",
"xpath": "//button[contains(normalize-space(.), 'Cambiar la sección del logo')]",
"page": "studio-aside-assets"
},
{
"id": "layouts.preset_individual",
"description": "Botón de preset diseño 'Individual' (uno de los presets listados)",
"playwright": "text=Diseño Individual",
"css": "button:has-text('Diseño Individual'), button:has-text('Individual Central')",
"xpath": "//button[contains(normalize-space(.), 'Diseño Individual') or contains(normalize-space(.),'Individual Central')]",
"page": "studio"
},
{
"id": "studio.leave_link",
"description": "Link 'Salir del estudio' para cerrar la sesión del studio",
"playwright": "text=Salir del estudio",
"css": "a:has-text('Salir del estudio'), button:has-text('Salir del estudio')",
"xpath": "//a[contains(normalize-space(.), 'Salir del estudio')] | //button[contains(normalize-space(.), 'Salir del estudio')]",
"page": "studio"
}
]
}