104 lines
5.0 KiB
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"
|
|
}
|
|
]
|
|
}
|