# Panel de ejecución

> Crear ejecuciones con selección de entorno, ejecutar casos en el panel deslizable — atajos de teclado, redimensionado, modo expandido, historial.

## Crear una ejecución

Abre un proyecto y haz clic en **New run** (o usa el botón **+** en el listado de ejecuciones). El modal **New test run** solicita:

| Campo                | Notas                                                                                                                                                                                                                                                                                            |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Name**             | Obligatorio. Una etiqueta corta para esta ejecución.                                                                                                                                                                                                                                             |
| **Description**      | Opcional. Notas sobre lo que cubre esta ejecución. Admite formato e imágenes.                                                                                                                                                                                                                    |
| **Environment**      | Selecciona uno de los entornos configurados en el proyecto. El **entorno predeterminado** del proyecto se preselecciona automáticamente cuando carga la lista. Si el proyecto no tiene entornos, el selector queda deshabilitado — consulta [Entornos](https://docs.probara.net/es/guides/environments/) para crear uno. |
| **Default assignee** | Opcional. Asigna un miembro del equipo a todos los casos de la ejecución.                                                                                                                                                                                                                        |
| **Cases**            | Opcional. Agrega casos desde el repositorio ahora, o añádelos más tarde desde el tablero de ejecución.                                                                                                                                                                                           |

Para vaciar la selección de entorno después de que se haya preseleccionado el predeterminado, elige la opción **None** en la parte superior del desplegable.

El entorno vinculado se muestra en el encabezado del detalle de la ejecución, en la tabla del listado y en el panel resumen lateral. Si el entorno asociado se elimina posteriormente, las ejecuciones que lo referenciaban siguen mostrando su nombre como etiqueta histórica.

## Panel de ejecución de un run

Al abrir un caso desde el tablero de ejecución (`/projects/:projectId/runs/:runId`, donde `:runId` es el ID legible de la ejecución, por ejemplo `/projects/ACME/runs/R-12`), Probara despliega un **panel deslizable** con todo lo necesario para ejecutar el caso en sitio: descripción y condiciones del caso, pasos con sus datos y resultados esperados, banda de resultado y el historial de intentos previos. Un paso Gherkin muestra su palabra clave y su argumento en lugar de datos y resultado esperado; consulta [Casos de prueba Gherkin](https://docs.probara.net/es/guides/gherkin-test-cases/). La barra de direcciones guarda el caso abierto, su pestaña y el intento que estás viendo, así que al recargar la página o enviar el enlace a un compañero de tu equipo se muestra la misma vista.

El panel es el mismo en runs `open` y `closed` — los controles se deshabilitan u ocultan solo cuando el run está **abortado** (una ejecución cerrada y no abortada sigue siendo totalmente editable), pero el layout no cambia.

## Atajos de teclado

Una vez que el panel tiene foco, puedes ejecutar el caso completo sin tocar el ratón.

| Tecla       | Acción                                                          |
| ----------- | --------------------------------------------------------------- |
| `1` / `P`   | Marcar el paso enfocado (o el caso) como **Aprobado**           |
| `2` / `F`   | Marcar como **Fallido**                                         |
| `3` / `S`   | Marcar como **Omitido**                                         |
| `4` / `B`   | Marcar como **Bloqueado**                                       |
| `ArrowDown` | Mover el foco al siguiente encabezado de paso                   |
| `ArrowUp`   | Mover el foco al encabezado anterior                            |
| `Escape`    | Cerrar el panel (o cerrar el popover de atajos si está abierto) |
| `?`         | Mostrar/ocultar el popover con la lista de atajos               |

Cuando ningún paso tiene foco, los atajos de marcado actúan sobre la **banda del resultado del caso**. Si un paso está enfocado, los atajos marcan ese paso.

Los atajos quedan **suspendidos** mientras escribes en un input, un textarea o un elemento contenteditable (escribir `P` en el campo de resultado actual inserta la letra en lugar de marcar el paso).

En el **panel de intento de solo lectura** (al abrir un intento desde la pestaña Reintentos), los atajos de marcado quedan inertes — sigues navegando entre pasos con las flechas y cerrando con `Escape`.

## Auto-avance

Después de marcar un paso, Probara hace scroll al siguiente paso sin probar y expande su disclosure si tiene datos, resultado esperado o una nota de resultado actual. Si no queda ningún paso sin probar por delante, el foco cae al paso sin probar más cercano hacia atrás.

El auto-avance no cambia el **caso** activo en el panel — solo el paso enfocado dentro de ese caso. El marcado a nivel caso (vía la banda Case result) sigue avanzando al siguiente caso sin probar en la lista visible, salvo cuando marcas **Fallido** o **Bloqueado**, que abre el flujo de captura de defectos antes de avanzar.

## Captura de defectos (Fallido / Bloqueado)

Al marcar el **caso** como **Fallido** o **Bloqueado**, Probara abre el modal **Reportar defecto** después de guardar el marcado. El auto-avance al siguiente caso sin probar espera a que cierres el modal.

Puedes:

- **Crear nuevo** — título prefijado con el snapshot del caso (autofoco), severidad `major` y prioridad `medium` por defecto. Pulsa **Enter** o **Crear** para crear el defecto y vincularlo a este intento.
- **Vincular existente** — una sola lista que empieza con hasta cinco defectos ya ligados a este caso de prueba y filtra todos los defectos del proyecto mientras escribes un título o `D-<número>`; selecciona uno y pulsa **Vincular defecto**.
- **Cancelar** — cerrar sin defecto; el avance continúa.

**Escape** en el modal equivale a Cancelar. Con el modal abierto, **Escape** en el panel no cierra el slide-over de debajo.

Los marcados **Aprobado** y **Omitido** a nivel caso siguen igual — sin modal, avance inmediato. Los marcados por paso nunca abren este modal. **Enviar resultado** masivo desde la barra de selección abre su propio modal **Agregar resultado** en modo masivo (ver más abajo la sección "Barra de selección de la ejecución"); cuando reporta un defecto, abre este MISMO modal **Reportar defecto** — crear un defecto nuevo o buscar y vincular uno existente, con reapertura automática cuando el defecto vinculado está resuelto o cerrado, igual que en el flujo individual. La única diferencia es el alcance: se crea o vincula un solo defecto y se enlaza al nuevo resultado de cada caso seleccionado en una sola petición.

Los defectos vinculados aparecen como chips **`D-<n>`** bajo la cabecera del panel (punto de color según estado, título completo al pasar el cursor). Se actualizan tras un vínculo exitoso sin recargar la página.

En la pestaña **Crear nuevo**, la descripción se prefija como texto con formato a partir de los pasos fallidos del caso (título, precondición, esperado vs. actual por paso, con las imágenes que tengan la precondición y los resultados actuales) y, cuando el intento tiene [adjuntos de resultado](#adjuntos-de-resultado), una sección **Evidence** que lista el nombre y el enlace de descarga de cada adjunto. El encabezado Evidence y el resto de la descripción autocompuesta siempre están en **inglés**, sin importar tu idioma de interfaz — así el texto prefijado se mantiene consistente para el triaje de defectos entre equipos. Puedes editar la descripción libremente antes de crear o vincular el defecto, con formato e imágenes: pega o suelta una imagen en ella, o teclea **/** y elige **Imagen**.

## Redimensionar el panel

Arrastra el borde izquierdo del panel para redimensionarlo. La anchura que elijas se guarda en `localStorage` (`tcms:run-case-panel-width`) y se restaura al recargar.

La anchura se acota entre **360 px** (mínimo) y **min(1100 px, 95 % del viewport)** (máximo). Tanto el panel en vivo como el de intento solo-lectura comparten esa anchura.

## Redimensionar y contraer el panel de resumen

El **panel resumen lateral** del detalle de la ejecución — el rail que informa el progreso y los metadatos de la ejecución — tiene los mismos dos controles manuales que los otros tres paneles de resumen.

Arrastra su **borde de entrada** para definir el ancho: hacia la izquierda el panel se ensancha y hacia la derecha se estrecha. Con el control enfocado, `ArrowLeft` lo ensancha un paso y `ArrowRight` lo estrecha otro, y un **doble clic** restablece el ancho predeterminado del panel.

El **botón circular con chevron en el borde izquierdo del panel** — aparece al pasar el cursor por el panel o al llegar a él con Tab — o la tecla `]` lo contrae en una columna de lectura de 56 px: el anillo de progreso, el porcentaje de avance y la cuenta ejecutados/total permanecen, una línea fina los separa de una fila de teclas con íconos, y cada tecla abre los valores de esa sección — estado, entorno, fechas, configuraciones, campos personalizados, etiquetas — en un emergente anclado junto a la columna. Contraer no elimina ningún valor; cada sección queda a un clic de distancia. El mismo botón, en el mismo lugar, vuelve a expandir el panel.

**El ancho y el estado contraído son compartidos por los cuatro paneles de resumen** — ejecuciones, planes de prueba, hitos y defectos — de modo que redimensionar o contraer aquí también se aplica a los otros tres, y ambos ajustes sobreviven a una recarga.

## Modo expandido

Pulsa el icono **Maximize** (⤢) en el header del panel para abrirlo como un diálogo a pantalla completa, centrado. En viewports de **1024 px o más**, los bloques **Datos** y **Resultado esperado** se distribuyen en dos columnas dentro de cada paso; todo lo demás (resultado actual, adjuntos) ocupa la fila completa.

Pulsa el icono **Minimize** (en el mismo slot) o el fondo para volver al panel deslizable. Al volver, el panel mantiene la posición de scroll que tenía.

En una pantalla angosta (ancho de teléfono) el panel ya se abre a pantalla completa, así que no hay controlador de ancho ni control de expandir — no hay nada que redimensionar o expandir en una pantalla de este tamaño.

## Menú ⋯ de la ejecución (editar, abortar, volver a ejecutar y eliminar)

El menú **⋯** del encabezado expone acciones de ciclo de vida según el estado del run y tu rol en la organización. El mismo menú, con los mismos ítems y comportamiento, también está disponible desde el disparador **⋯** de cada fila en la lista de ejecuciones del proyecto — no hace falta abrir un run para editarlo, abortarlo, volver a ejecutarlo o eliminarlo.

| Acción                | Visible cuando                           | Rol mínimo                           |
| --------------------- | ---------------------------------------- | ------------------------------------ |
| **Editar**            | Run `open`                               | Miembro (`viewer` no puede ejecutar) |
| **Abortar**           | Run `open`                               | Miembro (`viewer` no puede ejecutar) |
| **Volver a ejecutar** | Run `closed` (completada **o** abortada) | Miembro (`viewer` no puede ejecutar) |
| **Eliminar**          | Run `open` o `closed`                    | Admin u owner                        |

**Editar** abre un modal dedicado para cambiar el `name`, `description`, `environment` y `milestone` de la ejecución, y para volver a seleccionar sus casos — reutilizando el mismo selector de casos exclusivo de repositorio que la creación, precargado con la selección actual de la ejecución y sus asignados por caso. **El asignado por defecto es una configuración exclusiva de la creación**: el modal de Editar nunca lo muestra ni lo envía, tenga o no la ejecución uno. Guardar aplica los metadatos mediante el `PATCH /api/v1/runs/:runUlid` ya existente y los cambios de casos mediante el `PATCH /api/v1/runs/:runUlid/cases` atómico (ver [referencia de API](https://docs.probara.net/es/developers/api-reference/v1/)). Deseleccionar un caso que ya tiene un resultado registrado o tiempo acumulado dispara una **confirmación destructiva** que indica cuántos casos se ven afectados antes de que el guardado continúe; cancelar deja la ejecución completamente intacta. Un caso quitado y vuelto a agregar siempre vuelve como `untested` — su resultado y tiempo anteriores no se restauran. Editar solo se ofrece mientras la ejecución está `open`; en cuanto se cierra — automáticamente o con Completar — usa **Volver a ejecutar** en lugar de Editar.

**Abortar** termina anticipadamente una ejecución abierta sin fingir que terminó: los casos que seguían sin probar permanecen sin probar, los resultados y adjuntos existentes se conservan, y la ejecución se cierra con un estado proyectado **Abortada** (chip amarillo/warn). Abortar es **terminal**: los controles de caso de una ejecución abortada quedan desactivados y su tablero muestra un aviso de solo lectura, a diferencia de una ejecución completada (cerrada, no abortada), que sigue siendo totalmente editable. Las ejecuciones abortadas siguen contando como finalizadas para la autocompletación de hitos y el progreso de planes de prueba, pero no aportan ningún conteo de casos a ninguno de los dos.

No existe **Reabrir** — una ejecución, una vez cerrada, se queda cerrada; nada de lo que hagas dentro de ella (marcar, reintentar, añadir casos) la reabre. **Volver a ejecutar** reemplaza a Reabrir en el mismo lugar del menú, en ejecuciones **tanto** completadas como abortadas: abre el diálogo **Clonar ejecución de prueba** (Título obligatorio, un interruptor "Clonar con responsables" y un selector múltiple con búsqueda de los seis estados de caso a incluir — vacío significa todos) y crea una ejecución **abierta** completamente nueva a partir de la terminada. La ejecución de origen nunca se modifica.

**Eliminar** es irreversible: quita el run, todos los casos, resultados, adjuntos e instantáneas en cascada. La fila `run.deleted` permanece en Actividad del **workspace** con el scorecard final; la pestaña Actividad del run desaparece con el run. Solo admins y owners pueden eliminar. Eliminar sigue disponible en ejecuciones abortadas.

Todas las acciones abren un diálogo de confirmación (o el modal de Clonar, para Volver a ejecutar) antes de ejecutarse; el diálogo de Abortar y el paso de confirmación destructiva de Editar tienen estilo destructivo. El propio paso de metadatos/selector de casos de Editar es la superficie de edición en sí, no una confirmación.

## Guardar el resultado actual

Cuando un paso está marcado, el campo **Resultado actual** queda disponible. Admite formato. Al teclear, Probara guarda los cambios al perder el foco y muestra un indicador junto a la etiqueta:

Los cambios de texto del resultado actual en un caso **abierto** y **sin probar** emiten eventos `run.case_step_actual_result_set` en la pestaña **Actividad** del run (y en Actividad del workspace) con un diff `de → a`.

- `Guardando…` mientras la petición está en curso.
- `Guardado` cuando termina con éxito.

El campo crece verticalmente con el contenido, así notas largas se ven completas sin scroll interno.

Para mostrar lo que pasó, pega una imagen en el resultado actual, suéltala ahí o teclea **/** y elige **Imagen**: queda donde la pusiste.

## Seguimiento del tiempo

Probara mide cuánto tarda en ejecutarse cada caso y lo guarda como **tiempo dedicado**. El total del run en el listado de ejecuciones y el total por suite del tablero son la suma de esos valores, así que cuantos más casos marques, más claro queda en qué se va el tiempo.

### El cronómetro silencioso

Al abrir un caso para ejecutarlo, se inicia un cronómetro que acumula mientras el caso está abierto — de forma **silenciosa**. No hay cronómetro ni campo de tiempo visible mientras trabajas, así que nunca estás pendiente de un reloj mientras pruebas. Cuando marcas el caso, el tiempo transcurrido se guarda en la **misma petición** que el resultado — una sola acción registra estado y tiempo a la vez.

Es un cronómetro simple: solo cuenta el tiempo que el caso está abierto, sin pausa ni detección de inactividad. Las pruebas legítimas a menudo no generan actividad en el navegador — puedes estar probando en un teléfono u otro dispositivo, trabajando en otra aplicación o leyendo un caso largo — así que Probara nunca intenta adivinar cuándo "dejaste de trabajar". Si el tiempo registrado no coincide con la realidad, puedes corregirlo una vez marcado el caso (ver más abajo).

No hace falta marcar el caso para conservar el tiempo: si abandonas la página a mitad de ejecución (cierras la pestaña, navegas a otra parte), Probara vuelca el tiempo acumulado al caso antes de descargarse, sin cambiar su estado. Al reabrir el caso más tarde, el cronómetro continúa desde ese valor guardado.

### Revisar y corregir el tiempo registrado

El tiempo capturado se muestra — como un campo editable **Tiempo dedicado** — **solo después de marcar el caso**. No hay campo de tiempo mientras el caso está sin marcar; aparece cuando el caso tiene un resultado, para que puedas revisar lo que se registró y ajustarlo si hace falta (ejecutaste parte del caso sin conexión, o te apartaste por algo ajeno).

- El campo se divide en segmentos de **horas, minutos y segundos**, cada uno con su unidad indicada en pantalla. Se precarga con el valor registrado, cada segmento se edita tecleando o con las flechas, y un par de botones de menos y más al final del campo aumenta o reduce el segmento que tiene el foco. El valor se confirma con **Enter** o al salir del campo. Al enfocarlo, el borrador queda fijado, así que lo que se muestra no cambia mientras editas. También se puede pegar un total, en cualquiera de estos formatos: `1:30:05`, `02:30`, `2m 30s` o `45s`.
- Confirma con **Enter** o al salir del campo. Un valor válido se guarda de inmediato y **reemplaza** el tiempo registrado — en cualquier dirección, así que puedes reducir un valor sobrecontado o aumentarlo. Editar un caso marcado actualiza solo su tiempo, no su resultado. Un valor inválido solo se señala al salir del campo o confirmarlo — muestra una pista en línea y no se guarda.
- Una edición confirmada posterior reemplaza el valor guardado, así que puedes corregirlo tantas veces como necesites.

Un valor introducido a mano siempre prevalece sobre el capturado automáticamente.

### Qué no se cronometra

Los casos marcados con la acción **Enviar resultado** de la barra de selección siguen el total que ingreses ahí — si lo dejas vacío, mantienen un tiempo vacío (mostrado como `—`) igual que un marcado individual sin tiempo; un total que sí ingreses se divide en partes iguales entre los casos seleccionados (ver más abajo la sección "Barra de selección de la ejecución"). En cualquier caso, el tiempo siempre se puede ingresar o corregir a mano después. Las ejecuciones creadas antes de que existiera el seguimiento del tiempo no se rellenan retroactivamente; sus casos siguen en `—` hasta que se reejecuten.

## Pestaña Reintentos y panel de intento

Cambia a la pestaña **Reintentos** para ver cada marcado registrado del caso, del más reciente al más antiguo, sobre una línea de tiempo vertical:

- La fila más reciente lleva una insignia **Actual**.
- Las filas que no son el primer intento del caso muestran un indicador de **Reintento**.
- Cada fila incluye el ejecutor (avatar + nombre), el estado como chip tonal, la duración con numerales tabulares y una fecha relativa ("hace 2 h" / "ayer" / etc.).

Pulsa cualquier fila para abrir el **panel de intento de solo lectura** — una instantánea del caso tal como estaba en ese marcado. El toolbar del header te permite expandirlo, saltar de vuelta a Reintentos y cerrar.

Un caso parametrizado tiene un caso de ejecución por cada combinación, así que la pestaña **Reintentos** lista solo los intentos de este caso de ejecución. Elige **Solo los mismos valores** para mostrar únicamente los intentos que se ejecutaron con los valores de este caso de ejecución. La pestaña **Combinaciones** lista los demás casos de ejecución del mismo caso en la ejecución, con su estado y sus valores. Consulta [Casos de prueba parametrizados](https://docs.probara.net/es/guides/parameterized-test-cases/).

## Adjuntos de resultado

Marcar un caso como **Fallido** o **Bloqueado** abre un modal **Add result** para capturar un comentario y el tiempo revisado — también puedes adjuntar archivos como evidencia de todo el intento, aparte de las imágenes del comentario y del resultado actual de cada paso.

- Se acepta **cualquier tipo de archivo** (capturas de pantalla, logs, videos, archivos HAR, PDFs, etc.), hasta **32 MB por archivo** y **20 archivos por intento**. Una lista corta de tipos bloqueados impide ejecutables/scripts (por ejemplo, equivalentes a `.exe`, `.sh`, `.bat`); todo lo demás está permitido.
- **Arrastra y suelta** archivos sobre la zona de arrastre, o haz clic para abrir un selector de archivos. Cada archivo se sube con su propio indicador de progreso; puedes quitar un archivo antes de confirmar.
- Cada archivo se muestra como un mosaico con su nombre y su extensión: las **imágenes** (`PNG`, `JPEG`, `WebP`) con una miniatura y **cualquier otro tipo de archivo** — incluidos GIF y SVG, que pueden contener scripts embebidos y por eso nunca se muestran en línea — con un ícono. Al hacer clic en cualquier mosaico se abre el visor de adjuntos en ese archivo: las imágenes, los videos, el audio y los archivos de texto (logs, Markdown, JSON) se previsualizan ahí, y un archivo sin vista previa, como un PDF o un ZIP, muestra **Vista previa no disponible** con un botón **Descargar**. Para descargar directamente, pasa el cursor sobre un mosaico y usa su botón de descarga.
- Las **trazas de Playwright** (un `.zip` con `trace` en el nombre, como `trace.zip`) también tienen el botón **Abrir en el visor de trazas** (↗) en su mosaico, y el visor de adjuntos ofrece **Abrir en el visor de trazas** junto a **Descargar**: la traza se abre en el Playwright Trace Viewer en una pestaña nueva, servido por Probara desde `trace.probara.net`, sin descargar ni subir nada. Una traza grabada con una versión de Playwright más nueva que la del visor puede no abrirse; en ese caso descárgala y ábrela con tu Playwright local.
- Los archivos aparecen en la sección **Resultado actual** una vez que confirmas, junto a tu comentario.
- **Editable mientras el run está abierto o cerrado-y-no-abortado**: abre **Add result** para agregar o quitar adjuntos del intento actual. **Volver a marcar** un caso inicia un intento completamente nuevo con **cero** adjuntos — la evidencia del intento anterior permanece intacta en su propia entrada de la pestaña Reintentos. Una vez que el run está **abortado**, los adjuntos (y el resto del intento) pasan a ser de **solo lectura**.
- **Cuota de almacenamiento de la organización**: tu organización tiene un límite de almacenamiento compartido (1 GiB por defecto en el plan Free) que cubre todos los tipos de adjunto en Probara, no solo los adjuntos de resultado. Las organizaciones creadas antes del lanzamiento del plan Free conservan su límite heredado de 5 GiB. Si un guardado excedería ese límite, se rechaza el lote completo con un error claro — el comentario y el tiempo revisado que ya guardaste nunca se ven afectados. Todavía no hay una interfaz de autoservicio para la cuota; el límite de una organización puede aumentarse a pedido (contacta a soporte). Las imágenes del resultado actual de un paso siguen la misma regla: un guardado que supera la cuota deja el resultado actual como estaba. Consulta [qué cuenta como almacenamiento](https://docs.probara.net/es/guides/attachments/).

## Barra de selección de la ejecución

Al pasar el cursor sobre una fila de caso o el encabezado de una banda de suite (o al llevar el foco de teclado hasta ella) se revela su **checkbox de selección** — marcar una banda de suite selecciona todos los casos de su subárbol completo, incluidos los descendientes anidados y cualquier caso oculto actualmente por un filtro activo. Seleccionar uno o más casos anima la entrada de una **barra de selección** en línea, justo debajo de la barra de filtros (se oculta solo en una ejecución **abortada** — una ejecución abierta o cerrada-y-no-abortada la mantiene). Muestra el número de seleccionados y permite **enviar un resultado**, asignar, reintentar o eliminar todos los casos seleccionados de un clic.

**Enviar resultado** abre el mismo modal **Agregar resultado** que se usa para un solo caso, pero en modo masivo: el campo Resultado siempre parte en **Aprobado** cuando el modal se abre (sin importar el estado actual de los casos seleccionados, e incluso si lo cambiaste y cancelaste la vez anterior), el tiempo registrado es opcional y se ingresa en el campo segmentado de horas : minutos : segundos — el total que ingresas se divide en partes iguales entre los casos seleccionados del lado del servidor, y una pista sutil bajo el campo indica entre cuántos casos se dividirá; **dejar el campo sin tocar significa que no se registra ningún tiempo**, no `00:00` — y el comentario y los adjuntos compartidos se copian al nuevo resultado de cada caso. Reportar un defecto (disponible solo para Fallido/Bloqueado, igual que en el modal individual) abre el mismo modal **Reportar defecto** que se usa para un solo caso: **crear** un defecto nuevo, o **buscar y vincular** uno existente, con reapertura automática cuando el defecto vinculado está resuelto o cerrado — la elección se integra en la misma petición masiva, así que se crea o vincula un solo defecto y se enlaza al nuevo resultado de cada caso seleccionado. Al completarse, un aviso confirma el número `D-<n>` del defecto, ya sea recién creado o uno existente que vinculaste. Cada gesto — incluido el paso del defecto, cuando se usa — envía una sola petición masiva y genera **una** fila en la pestaña **Actividad** del run (y en Actividad del workspace), con una lista expandible de los casos tocados.

**Asignar** abre un modal con los miembros de tu organización y la opción **Sin asignar**; elige uno (puedes buscar por nombre o correo) y confirma para definir — o quitar — el asignado de todos los casos seleccionados. Si todos los casos seleccionados ya comparten un asignado, ese miembro aparece preseleccionado. Al confirmar se envía una sola petición masiva y se agrega una sola fila a la pestaña **Actividad** del run.

La barra se contrae al limpiar la selección — con **Limpiar selección** o desmarcando cada caso — o cuando el run se aborta.

## Quitar un caso

Cada fila de caso en un run abierto o cerrado-y-no-abortado incluye un **menú de acciones ⋮** al final de la fila. Por ahora ofrece una sola entrada, **Quitar de la run**, que saca ese caso del run. Al elegirla se pide confirmación; al confirmar se quita el caso (junto con su resultado registrado) y se registra una fila `run.case_removed` en la pestaña **Actividad** del run. El menú no aparece solo en una ejecución **abortada**, donde el tablero es de solo lectura.

## Buscar y filtrar casos

Sobre los grupos de suites, la pestaña **Casos de prueba** usa la misma barra de búsqueda y filtros que el resto de Probara: un **campo de búsqueda** seguido de una **barra de filtros** con tres dimensiones.

- **Búsqueda** — escribe para buscar por el **título** del caso, o por el nombre y el valor de sus parámetros (sin distinguir mayúsculas). El filtrado ocurre por completo en el navegador, sobre los casos ya cargados del run; no hay ninguna petición adicional.
- **Estado** — un filtro permanente de selección múltiple sobre los cinco estados de resultado (**Sin ejecutar**, **Aprobado**, **Fallido**, **Omitido**, **Bloqueado**). Seleccionar más de un estado los combina con **O**: el caso se muestra si coincide con **cualquiera** de los estados elegidos. Dejar Estado vacío no filtra por estado.
- **Asignado** — un filtro removible construido a partir de los miembros del run, con una opción **Sin asignar** que coincide con los casos que no tienen a nadie asignado (`assigneeUlid` vacío).
- **Prioridad** — un filtro removible cuyas opciones se **derivan de los valores de prioridad presentes en los casos del run**. Solo se ofrecen las prioridades que realmente aparecen; no hay una opción sintética de "sin prioridad", y la lista se actualiza a medida que cambian los casos del run.

Entre el campo de búsqueda y los tres filtros, cada dimensión activa se combina con **Y** — un caso permanece visible solo cuando satisface todas. Cuando nada coincide, el tablero muestra un **estado vacío** en lugar de cualquier grupo de suite. **La suite no es un filtro a propósito** — el tablero ya agrupa los casos en bandas por suite.

El estado completo de los filtros (el texto de búsqueda y las selecciones de Estado, Asignado y Prioridad) se **sincroniza con la URL**, de modo que una vista de ejecución filtrada se puede compartir, guardar en marcadores y **sobrevive a una recarga** — al reabrir la URL se restauran los mismos casos visibles.

## Movimiento reducido

Si tu sistema operativo activa el modo de movimiento reducido (`prefers-reduced-motion: reduce`), todas las transiciones del panel — entrada/salida, stagger del cuerpo del paso, animación del donut, hover translate del historial — se vuelven instantáneas. La funcionalidad no cambia.
