# Ejecuciones

> Crea, ejecuta y cierra ejecuciones de prueba; controla el tiempo y los resultados.

Una **ejecución de prueba** es una sesión de ejecución: eliges un conjunto de
casos de prueba, los congelas dentro de la ejecución y registras el resultado de
cada uno. Las ejecuciones viven dentro de un proyecto — abre la entrada
**Ejecuciones** en la barra lateral del proyecto.

## Crear una ejecución

1. En la pantalla de Ejecuciones, pulsa **Nueva ejecución**.
2. Completa la sección **Detalles**:
   - **Título** (obligatorio) — precargado con un valor por defecto
     `Ejecución YYYY/MM/DD` (la fecha de hoy, p. ej. `Ejecución 2026/07/29`),
     totalmente editable antes de crear la ejecución.
   - **Descripción** (opcional). Admite formato e imágenes.
   - **Entorno** — elige entre los entornos ya usados en el proyecto o escribe
     un valor libre (p. ej. `Staging`, `v2-preview`).
   - **Asignado por defecto** — el miembro asignado a cada caso de la ejecución
     que no tenga un asignado propio. Si lo dejas vacío, la primera persona que
     abra un caso queda asignada a él automáticamente.
   - **Hito** — visible pero aún no funcional (próximamente).
3. En la sección **Casos de prueba**, elige **Desde repositorio** (la única
   fuente activa; **Desde plan de pruebas** es un stub próximamente) y pulsa
   **Agregar casos** para abrir el modal de selección de casos.
4. En el modal de selección de casos:
   - Navega el árbol de suites a la izquierda para filtrar la tabla por suite.
   - Usa la caja de búsqueda y la barra de filtros (Estado, Prioridad, Etiqueta)
     para acotar la lista.
   - Marca los casos a incluir. Usa **Seleccionar todo** para marcar todos los
     casos visibles después de búsqueda y filtros.
   - Opcionalmente asigna un **asignado por caso** con el selector de la columna
     Asignado. El asignado por caso sobreescribe el asignado por defecto de la
     ejecución solo para ese caso.
   - Pulsa **Listo** para volver al modal de creación con la selección. En
     este paso se permiten cero casos; la ejecución misma requiere al menos uno
     (paso 6).
5. Los casos seleccionados aparecen agrupados por suite en la sección Casos de
   prueba. Pulsa **×** en cualquier fila para quitar un caso antes de crear la
   ejecución. Debe quedar al menos un caso — el botón **Crear** está
   deshabilitado a cero casos.
6. Pulsa **Crear**. La ejecución se abre lista para ejecutarse.

Si el proyecto solo admite casos de prueba aprobados en las ejecuciones (una opción de la
[revisión de casos de prueba](https://docs.probara.net/es/guides/test-case-review/#solo-casos-aprobados-en-las-ejecuciones)),
el selector de casos muestra solo los casos aprobados y el diálogo te pide quitar cualquier caso
seleccionado sin aprobar antes de crear la ejecución.

Un caso parametrizado aparece en la selección con **× N**, su número de combinaciones, y el diálogo muestra cuántos casos de ejecución crea la selección en total. Cada combinación se convierte en su propio caso de ejecución, con su estado y sus resultados. Consulta [Casos de prueba parametrizados](https://docs.probara.net/es/guides/parameterized-test-cases/).

En una pantalla angosta (ancho de teléfono), el par **Entorno**/**Hito** y los
campos de **Configuraciones** se acomodan en una sola columna en lugar de lado
a lado — los mismos campos, en el mismo orden, solo apilados. El modal
**Editar ejecución** (más abajo) comparte esta disposición.

El modal de selección de casos (paso 4) también presenta un panel a la vez. La
lista de casos va primero, y el árbol de suites queda un nivel adentro, detrás
de una barra **Suites** arriba que nombra la suite a la que la lista está
acotada. Tocar esa barra abre la lista de suites a ancho completo, donde
**Seleccionar todo** y la casilla de cada suite funcionan igual que en una
pantalla más ancha; tocar una suite acota la lista y vuelve a ella, y la **✕**
junto a la barra quita ese acotado con un toque.

Dentro de esa lista, las filas siguen el ancho que la lista misma tiene, que es
el que deja tu barra de suites — así que ensanchar la barra puede cambiar su
forma en cualquier tamaño de pantalla. Mientras la lista es holgada es la tabla
de cinco columnas: casilla, prioridad, ID, título, asignado. Cuando queda más
angosta de lo que un título de caso necesita, cada caso pasa a ser una entrada
reglada: casilla, prioridad e ID en una línea, y debajo el título con su propio
control de asignado a ancho completo; las etiquetas de columna ceden ante un
control **Seleccionar los visibles**. En ninguna de las dos formas se oculta
nada, y en pantalla de tablet o más ancha el árbol de suites y la tabla de
casos siguen uno junto al otro.

> **Cambio breaking (API):** `POST /api/v1/projects/:projectId/runs` ahora
> requiere que `caseUlids` sea un array no vacío (`minItems: 1`). Las
> solicitudes con `caseUlids: []` o sin `caseUlids` devuelven
> `422 validation_failed`. Si creabas ejecuciones vacías por API y añadías
> casos después con `POST /runs/:runUlid/cases`, actualiza el flujo: incluye al
> menos un caso en el `POST /runs` inicial.
>
> **Excepción para herramientas de CI:** `automated: true` permite crear una
> ejecución sin casos: envíalo y omite `caseUlids`, y después reporta resultados
> en ella con `POST /api/v1/projects/:projectId/reports` y `run: { ulid }` — una
> sola ejecución en la que reporta cada shard de CI. El indicador nunca quita
> casos: los casos de `caseUlids` o `planUlid` se siguen añadiendo. Es solo de
> la solicitud (no se guarda) y `caseUlids: []` sigue rechazándose. El diálogo de
> **Nueva ejecución** sigue exigiendo al menos un caso.

**Orden de resolución del asignado** (por caso): asignado por caso definido en
el modal de selección → asignado por defecto de la ejecución → sin asignar
(null).

Cuando un caso se añade a una ejecución, la ejecución conserva la
[versión](https://docs.probara.net/es/guides/test-repository/#historial-de-versiones) del caso que tenía
en ese momento: su título, campos y pasos se **congelan** dentro de ella. Editar
después el caso original en el repositorio no cambia la ejecución por sí solo, y
las ejecuciones cerradas nunca cambian.
Un [paso compartido](https://docs.probara.net/es/guides/shared-steps/) del caso se congela con los
pasos que tiene en ese momento; editarlo o eliminarlo después no cambia la
ejecución.

#### Cuando un caso cambia durante una ejecución

Mientras la ejecución está abierta, un caso pendiente de ejecutar (sin probar o
reintentado) que se editó en el repositorio después de añadirse muestra un
icono violeta de historial (un reloj con una flecha hacia atrás) junto a su
título, y **Caso actualizado** en el panel del caso; pasa el cursor por encima
del icono para ver qué versión tiene la ejecución y cuál es la más reciente. Un
caso que ya tiene un resultado
conserva la versión con la que se ejecutó y no muestra el aviso. Para ejecutar
la última versión, haz clic en **Aplicar la última versión** en el panel del caso
o en el menú de acciones de la fila, o en **Aplicar la última versión a todos los
casos pendientes** en el menú de acciones de la ejecución. Solo es posible antes
de que algún paso del intento actual tenga un resultado. Para actualizar un caso
completado, reinténtalo primero: los intentos anteriores conservan el título, los
pasos, los resultados de los pasos y los adjuntos con los que se ejecutaron, así
que cada resultado registrado sigue coincidiendo con ellos.

Un caso parametrizado se actualiza un caso de ejecución a la vez. **Aplicar la última versión** en un caso de ejecución toma la última versión del caso para la combinación de ese caso de ejecución. Si la combinación ya no existe en la última versión, la ejecución rechaza la actualización: quita ese caso de ejecución, o vuelve a agregar el caso a la ejecución para obtener sus combinaciones actuales. **Aplicar la última versión a todos los casos pendientes** actualiza los casos de ejecución que puede, y nombra los que omite y el motivo. Consulta [Casos de prueba parametrizados](https://docs.probara.net/es/guides/parameterized-test-cases/).

### Crear una ejecución desde una selección del repositorio

Puedes saltarte por completo el modal de selección de casos si partes de una
selección existente en el **Repositorio de pruebas**:

1. Marca uno o más casos (o toda una banda de suite) con las casillas de
   selección masiva.
2. En la barra de acciones masivas, pulsa **Ejecutar**.
3. Se abre la pantalla de Ejecuciones con el modal de nueva ejecución ya
   abierto y tus casos seleccionados preseleccionados en la sección **Casos
   de prueba**.
4. Añade o quita casos según necesites, completa los detalles de la ejecución
   y pulsa **Crear**.

La selección del repositorio no se ve afectada por Ejecutar — se mantiene tal
cual para que puedas iniciar otra acción masiva después.

### Lanzar una ejecución en GitHub Actions

Con la [integración con GitHub](https://docs.probara.net/es/guides/integrations/github/) conectada, **Ejecutar en GitHub
Actions** en la pantalla de Ejecuciones crea una ejecución automatizada e inicia tu workflow de
pruebas en la rama que elijas. La ejecución muestra el estado, el enlace y la duración del build, y
los reporters envían los resultados a ella. Consulta
[Ejecutar pruebas con GitHub Actions](https://docs.probara.net/es/guides/integrations/github-actions/).

## El listado de ejecuciones

La pantalla de Ejecuciones presenta cada ejecución del proyecto como una tabla
con ocho columnas:

- **Título** — la referencia (`R-12`) y el nombre de la ejecución, con la
  fecha en que se inició debajo.
- **Entorno** — etiqueta libre capturada al crear la ejecución (p. ej.
  `Staging`, `Producción`). Las ejecuciones sin entorno muestran un guion
  largo (`—`).
- **Configuraciones** — los valores de configuración con los que está etiquetada
  la ejecución (p. ej. `Chrome / Windows`), unidos por `/`. Una ejecución sin
  configuraciones muestra un guion largo. Como el nombre por defecto de una
  ejecución ahora se basa en la fecha y no en la combinación (ver "Crear una
  ejecución" más abajo), esta columna es la que distingue varias ejecuciones
  creadas el mismo día. La misma columna aparece, sin cambios, en la sección de
  ejecuciones de un plan de pruebas y en la pestaña de ejecuciones de un hito.
- **Autor** — quién lanzó la ejecución. Para ejecuciones creadas desde la web,
  es el nombre y avatar del usuario. Para ejecuciones creadas vía API
  (CI/CD), es el nombre del token de API mostrado con el icono de llave que
  también se usa en el feed de Actividad; para ejecuciones enviadas por un
  [token de aplicación](https://docs.probara.net/es/guides/integrations/junit-xml/), el logotipo y el
  nombre de la aplicación junto al nombre del token, por ejemplo **JUnit XML ·
  nightly-ci**. Las ejecuciones heredadas cuyo
  autor original no puede recuperarse muestran un guion largo.
- **Tiempo total** — la suma acumulada de las duraciones individuales de cada
  caso ejecutado hasta ahora en la ejecución.
- **Transcurrido** — el intervalo de reloj entre el primer y el último
  resultado registrado en la ejecución. Para ejecuciones en progreso este
  valor avanza segundo a segundo en vivo.
- **Estado** — la etiqueta proyectada (En progreso / Aprobada / Fallida) —
  ver abajo.
- **Resultados** — una barra apilada horizontal con la distribución de los
  casos en los cinco estados (aprobado / fallido / bloqueado / omitido / sin
  probar), con el conteo ejecutado/total y el porcentaje de éxito debajo.

En una pantalla angosta (ancho de teléfono) el listado presenta las mismas
ejecuciones como una pila de entradas con reglas en vez de una tabla: cada
entrada encabeza con el título de la ejecución y luego lista el entorno, las
configuraciones, el autor, el tiempo total, el transcurrido, el estado y los
resultados debajo. Todos los valores, filtros y acciones que tienes en una
pantalla más ancha siguen ahí — solo cambia la disposición. En ancho de
tableta y superior el listado es la tabla con reglas descrita arriba.

La barra de filtros sobre la tabla combina búsqueda, un chip permanente de
**Estado** y filtros adicionales desde **Añadir filtro**:

- La búsqueda filtra por nombre de ejecución o entorno (sin distinguir
  mayúsculas).
- **Estado** es un chip siempre presente (sin **×** y que nunca aparece en
  **Añadir filtro**). Abre su editor emergente para marcar **En progreso**,
  **Aprobada** o **Fallida** —combínalas para mostrar varios estados proyectados—
  o déjalo vacío.
- **Entorno** usa los entornos ya vistos en el proyecto. Puedes seleccionar más
  de un valor.
- **Autor** filtra ejecuciones creadas por usuarios. Las ejecuciones creadas por
  tokens de API siguen visibles en la tabla, pero no coinciden con un filtro de
  autor de usuario.
- **Asignado por defecto** filtra por el asignado por defecto de la ejecución,
  incluido **(empty)** para ejecuciones sin asignado.
- **Campos personalizados de la ejecución** — **Añadir filtro** también lista
  los campos personalizados `test_run` filtrables del proyecto (opciones,
  casilla y selector de miembro; los campos de texto libre y numéricos no son
  filtrables y nunca aparecen aquí). Cada editor ofrece una opción **(empty)**
  para ejecuciones sin valor almacenado para ese campo. Los filtros personalizados
  se evalúan solo contra **filas de valor almacenadas**; un valor por defecto que
  se ve en el detalle de la ejecución no satisface el filtro hasta que el valor
  se guarda de verdad.

Los filtros activos aparecen como chips removibles y se reflejan en la URL para
compartir la vista filtrada. Un contador `N de M` a la derecha refleja el estado
filtrado, y **Limpiar filtros** quita búsqueda y chips juntos.

## Etiquetas de estado de la ejecución

Cada ejecución muestra una sola insignia que combina si sigue abierta y el
resultado global:

- **En progreso** — la ejecución sigue abierta; puedes seguir marcando casos.
- **Aprobada** — la ejecución está cerrada y todos los resultados son
  favorables (incluye omitidos; un cierre solo con casos sin probar sigue
  contando como aprobada si no hay fallos).
- **Fallida** — la ejecución está cerrada y al menos un caso falló o quedó
  bloqueado.

La misma insignia aparece en el listado de ejecuciones y en la cabecera de la
pantalla de ejecución.

## Ejecutar una ejecución

La pantalla de ejecución es un **tablero agrupado por suite**: cada suite se
pliega en una banda con su propia barra de progreso, duración agregada, número
de casos y el nombre de la suite (snapshot). Los casos sin suite caen en una
banda "Casos sin suite". Una **caja de búsqueda** en la parte superior filtra
los casos por título o ID corto a través de todas las bandas.

A la derecha, un **rail de resumen** muestra el progreso global: un dónut
(ejecutados sobre el total), una leyenda de estados y campos de metadatos
incluyendo la **Estimación** — una previsión de cuánto debería durar la
ejecución calculada a partir del tiempo medio de los mismos casos en
ejecuciones anteriores del proyecto. Cuando ningún caso tiene historial, la
estimación se muestra como un guión largo (`—`).

En teléfono o tableta (por debajo de 1024 px) el rail no es una columna. Una
banda **Resumen** se sitúa justo debajo del encabezado de la página con la
lectura principal — porcentaje ejecutado, la cuenta ejecutados/total, el número
de fallos cuando lo hay y el estado actual — y al activarla se abre el rail
completo como hoja inferior. No se pierde ningún valor; solo cambia el número de
toques necesarios para llegar a él.

Si el proyecto tiene campos personalizados de ejecución configurados, el rail
también muestra un bloque de **Campos personalizados de la ejecución**,
ubicado entre **Transcurrido** y **Etiquetas**. Este bloque
es de **solo lectura** — para cambiar un valor, usa la sección Campos
personalizados en el modal de creación o edición de la ejecución (ver
"Campos personalizados de la ejecución" más abajo). Un campo sin valor
guardado muestra su valor por defecto configurado, o un guion largo si no
tiene uno. El bloque no aparece si el proyecto no tiene campos personalizados
de ejecución.

Los defectos vinculados no aparecen en el rail. Tienen su propia pestaña
**Defectos**, entre **Casos de prueba** y **Actividad**. Cada fila muestra la
referencia `D-<n>`, el título, el estado, la severidad, la prioridad y el asignado.
Haz clic en una fila para abrir el defecto. En un enlace compartido, las filas son
solo texto.

## Redimensionar y contraer el panel de resumen

En pantallas de escritorio (1024 px o más) el rail es un panel real cuyo ancho
defines tú. Arrastra su **borde de entrada** — hacia la izquierda el rail se
ensancha y hacia la derecha se estrecha. Con el control de arrastre enfocado
también puedes ajustar el ancho con `ArrowLeft` (más ancho) y `ArrowRight` (más
angosto), y hacer **doble clic** sobre él para restablecer 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. Contraído, el rail se convierte 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 en un emergente
anclado junto a la columna. Contraer no elimina ningún valor: cada sección queda
a un clic de distancia. Activar 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. Si redimensionas el
panel de una ejecución, los de planes, hitos y defectos se muestran con el mismo
ancho; si contraes uno, los otros tres también se muestran contraídos, incluso
después de recargar y después de navegar a otra superficie. Expandir cualquiera
de ellos expande los demás.

Estos controles existen solo en pantallas de escritorio. En teléfono o tableta
el resumen sigue siendo la banda **Resumen** y su hoja inferior, como se
describió arriba.

Al abrir un caso, el rail se sustituye por un **panel lateral de ejecución**:
short-id del caso, título, la descripción / pre-condiciones / post-condiciones
del snapshot (solo se muestran las condiciones que el proyecto tenga
habilitadas), y los pasos. Cada paso tiene su propia banda de Aprobar /
Fallar / Omitir / Bloquear y una tarjeta plegable de **Datos / Resultado
esperado** — pulsa el chevron para revelar **Datos** y **Resultado esperado**
apilados dentro del cuerpo. Un paso Gherkin no tiene resultado esperado: su tarjeta muestra su palabra clave antes del texto, y un **Argumento** en lugar de **Datos**. Marcar un paso revela su campo **Resultado
actual** sin forzar la apertura o cierre de ese desplegable. Admite formato e
imágenes: para mostrar lo que pasó, pega una imagen en él, suéltala ahí o
teclea **/** y elige **Imagen**. El resultado actual se guarda de forma automática — no hay botón de
Guardar explícito.

Los pasos que vienen de un [paso compartido](https://docs.probara.net/es/guides/shared-steps/) son
pasos normales del caso, cada uno con su número y sin etiqueta: una ejecución
los muestra igual que cualquier otro paso, y cada uno se marca por separado.

Un control **Resultado del caso** está anclado en la parte inferior de la
pestaña **Ejecución**. Úsalo para marcar el caso completo como Aprobado /
Fallido / Omitido / Bloqueado. Este es el resultado a nivel de caso que
registra una entrada en la pestaña **Reintentos** (con una instantánea congelada
por paso que puedes reabrir después). Las marcas por paso actualizan el espacio
de trabajo en vivo de inmediato y aparecen en el feed de **Actividad** del
proyecto, pero **no** crean una entrada en la pestaña Reintentos por sí solas.

Los casos que ya tienen un resultado terminal (Aprobado, Fallido, Omitido o
Bloqueado) se abren en una **vista consultiva de solo lectura**: el control de
resultado del caso no está disponible, las marcas por paso son de solo lectura,
y el panel muestra una pestaña **Defectos** (defectos vinculados durante el
intento) y un rail de metadatos con quién ejecutó el caso, cuándo empezó,
cuánto tardó y cuándo terminó.

Para un caso con ese resultado terminal, la cabecera del panel lidera el
título del caso con una **marca de resultado** compacta — un pequeño glifo de
estado en un círculo con tinte — en lugar del chip de resultado que antes
aparecía junto al short-id del caso. Esto aplica en todas las superficies: el
panel lateral, la vista a pantalla completa y el panel de intento de solo
lectura. La marca es solo icono; el conteo de reintentos no se muestra en la
cabecera. Un caso aún sin probar, o recién reiniciado con Reintentar, no
muestra indicador de resultado en la cabecera.

La cabecera del panel incluye un **control de expansión** (⤢) que abre una
vista a pantalla completa con el mismo contenido del caso. Pulsa **Escape** o
el control de contracción (⤡) en la esquina superior derecha de la vista a
pantalla completa para volver al panel lateral. El control de cierre (✕) a su
lado, o un clic fuera de la vista a pantalla completa, cierra el caso; el
siguiente caso que abras vuelve a mostrarse a pantalla completa.

### Navegador de casos en la vista a pantalla completa

Al abrir la vista a pantalla completa, aparece un **navegador de casos** como
un rail a la izquierda. El navegador lista todos los casos de la ejecución
agrupados por suite; cada grupo de suite muestra su propio mini-gráfico de
progreso, y cada fila de caso muestra la **marca de resultado** compacta
descrita arriba (un anillo punteado neutro para los casos sin probar).

- **Busca** en el navegador con su propio campo de búsqueda — este filtro aplica
  únicamente a la lista del navegador y no modifica los filtros del tablero ni
  la URL de la página.
- Haz clic en cualquier fila de caso para cambiar el panel principal a ese caso.
  El breadcrumb y el contenido se actualizan; el cronómetro del caso anterior se
  conserva. Las pestañas **Reintentos** y **Defectos** muestran los intentos y
  los defectos vinculados de ese caso; sus intentos solo se listan, así que abre
  el caso desde el tablero para ver uno.
- El caso que se está visualizando aparece resaltado en la lista con un estado
  "seleccionado".
- El navegador es de solo lectura: seleccionar un caso aquí no te lo asigna
  automáticamente.

Otras cosas útiles:

- La barra de acciones masivas ofrece **Enviar resultado**, **Asignar** (define
  o quita el asignado de los casos seleccionados), **Reintentar** (devuelve los
  casos seleccionados a `untested`) y **Quitar** (los elimina de la ejecución);
  solo se ocultan en una ejecución **abortada** — una ejecución completada
  (cerrada, no abortada) las mantiene disponibles. Consulta
  [Barra de selección de la ejecución](https://docs.probara.net/es/guides/runs/execution-panel/#barra-de-selección-de-la-ejecución).
- El **cronómetro** sigue arrancando al abrir un caso y deteniéndose al
  marcarlo.
- Marcar los pasos no fija el estado del caso: márcalo en la banda **Resultado
  del caso**. La barra sobre los pasos cuenta los pasos que marcaste y los que
  fallaron.
- Los metadatos de la ejecución (estado, iniciado por, entorno, inicio, tiempo
  total, transcurrido) viven en el rail de resumen; el rail se oculta siempre
  que haya un panel de caso abierto.

### Ejecutar en una pantalla angosta (ancho de teléfono)

Ejecutar es un flujo de primera clase en el teléfono — nada queda solo de
lectura ni reducido. En una pantalla angosta:

- Cada fila de caso se **apila** en vez de mostrar una sola línea: el título
  encabeza su propia línea para que nunca quede truncado hasta volverse
  ilegible, y su estado, asignado y tiempo acumulado se ordenan debajo. La fila
  se apila siempre que el tablero en sí sea demasiado estrecho para la línea
  única — lo que depende de algo más que la ventana: plegar el panel del
  proyecto ensancha el tablero y puede recuperar la fila de una línea con la
  ventana del mismo tamaño. Marcar,
  asignar, filtrar, buscar, seleccionar y las acciones masivas, las acciones
  por caso, reintentar, quitar, la pestaña Actividad y el menú de opciones de
  la ejecución siguen siendo alcanzables — ninguno se oculta para hacer
  espacio. Las bandas de suite conservan su jerarquía y la selección
  tri-estado exactamente igual que en una pantalla más ancha. La lista
  completa de casos de una ejecución siempre se renderiza, sin importar
  cuántos casos tenga — nada se pagina ni se retiene para mantener el tablero
  rápido en un teléfono.
- Abrir un caso presenta el panel de ejecución a **pantalla completa** en vez
  de como panel lateral: el cuerpo del caso, el marcado por paso y por caso,
  las pestañas, el avance automático, el indicador de guardado y el gesto de
  **Escape** para cerrar funcionan igual. El control de redimensionar y el
  control de expandir a pantalla completa no se muestran — el panel ya ocupa
  toda la pantalla, así que no hay nada a lo cual expandirse. Avanzar al
  siguiente caso tras marcar sigue desplazando la fila de ese caso a la vista
  detrás del panel y mueve el foco de teclado hacia él, exactamente igual que
  en una pantalla más ancha.
- El control acoplado **Resultado del caso** se mantiene despejado del
  indicador de inicio del dispositivo y de cualquier interfaz del navegador en
  la parte inferior de la pantalla, y cada una de sus teclas presenta un
  objetivo táctil cómodamente grande.
- Los botones de la ejecución (**Completar** y su menú de opciones) están en
  la barra de la parte inferior de la pantalla. Mientras hay un caso abierto
  se apartan, de modo que el control **Resultado del caso** es lo único
  anclado ahí.

### Icono de estado del caso durante la ejecución

Al ejecutar una ejecución, el tablero muestra un pequeño icono en el extremo
derecho de cada fila de caso cuando el **Estado** del caso no es Activo. Es el
mismo indicador que aparece en el repositorio de pruebas.

Puntos clave:

- El icono refleja el estado **actual** del caso en el repositorio — no el
  estado del snapshot capturado cuando se creó la ejecución. Si el estado
  cambia después de añadir un caso a la ejecución, el icono se actualiza en
  consecuencia.
- El estado Activo y el estado no configurado no muestran nada. Solo las
  opciones no Activas (Borrador, Obsoleto o una opción personalizada no activa
  con icono) activan el indicador.
- Esto es diferente de otros datos del caso (título, pasos) que **sí** se
  congelan en el momento de añadir el caso y no cambian aunque se edite el caso
  fuente.

## Cerrar una ejecución

Una ejecución **se cierra sola, automáticamente**, en cuanto todos sus casos
tienen un resultado registrado — no hay que pulsar nada. En cuanto se marca el
último caso sin probar (o en reintento), Probara cierra la ejecución de
inmediato y el listado de ejecuciones lo refleja al momento.

Aun así puedes pulsar **Completar** para terminar una ejecución **antes de
tiempo**, mientras quedan casos sin probar — un cierre manual para cuando ya
terminaste de probar pero algunos casos nunca iban a ejecutarse. Si quedan
casos sin probar se te pide confirmación. Completar no desaparece porque
exista el cierre automático: ambos funcionan juntos, no como alternativas.

Cerrarse — sea automático o manual — no es el final de la historia de la
ejecución. Una ejecución cerrada y no abortada sigue siendo **totalmente
editable**: puedes marcar, reintentar o quitar casos, añadir casos nuevos,
adjuntar archivos y editar resultados. El tablero solo pierde el botón
**Completar** y el aviso de solo lectura que se muestra en ejecuciones
abortadas (ver más abajo); nada más cambia. Volver a marcar el último caso
restante más adelante nunca "reabre" la ejecución — cerrarse es un estado de
**una sola dirección**. Si reintentas un caso o añades un caso nuevo sin
probar dentro de una ejecución cerrada, la ejecución sigue cerrada; nunca
vuelve a abrirse por sí sola.

## Abortar una ejecución

Si una ejecución necesita detenerse antes de tiempo — cambió el alcance, la
build no sirve o la ejecución se inició por error — usa **Abortar ejecución**
desde el menú **⋯** en la página de detalle de la ejecución, en lugar de
Completar o Eliminar. Abortar solo está disponible mientras la ejecución está
**abierta**; una ejecución completada o ya abortada no tiene la opción de
abortar.

Confirmar el abandono en el diálogo destructivo (sin campo de motivo) congela
la ejecución de inmediato: la ejecución se cierra, los casos que seguían sin
probar **permanecen sin probar** — abortar nunca registra un resultado en tu
nombre — y los resultados y adjuntos existentes se conservan tal cual estaban.
La ejecución muestra un chip **Abortada** en el listado de ejecuciones y
también puede encontrarse con la opción de filtro de Estado **Abortada**, junto
a En progreso / Aprobada / Fallida.

A diferencia de una ejecución completada (cerrada, no abortada), una ejecución
**abortada** queda **congelada de forma terminal**: marcar, reintentar,
quitar, añadir casos y adjuntar archivos se mantienen desactivados, y el
tablero muestra el aviso de solo lectura. Si necesitas intentarlo de nuevo,
usa **Volver a ejecutar** (más abajo) para clonar una ejecución nueva a partir
de ella.

Una ejecución abortada sigue **contando como finalizada** para hitos y planes
de prueba — nunca bloquea que un hito se autocomplete ni detiene el avance de
un plan — pero sus conteos de casos (aprobados, fallidos, bloqueados,
omitidos, sin probar) quedan **excluidos** de los números de progreso de hitos
y planes de prueba, de modo que una ejecución abandonada no distorsiona lo que
significa "terminado" para el resto del equipo.

## Retención de datos

Toda ejecución que creas se conserva **indefinidamente por defecto** — no hay
vencimiento automático a menos que tu plan incluya una ventana de retención.
Si el plan de tu organización incluye una, las ejecuciones (y todo lo que
contienen: casos, pasos, resultados y adjuntos) que lleven **cerradas o
abortadas** más tiempo que esa ventana se eliminan automáticamente en un
proceso recurrente. Una ejecución que sigue **abierta** nunca se elimina, sin
importar cuán antigua sea.

**Esta eliminación es permanente.** No hay forma de deshacerla, no hay
papelera de reciclaje ni opción de restaurar — una vez que pasa la ventana de
retención de una ejecución, esta y sus resultados desaparecen. Si necesitas
conservar el historial de una ejecución más allá de la ventana de tu plan,
expórtalo o archívalo antes de que se elimine.

La misma ventana se aplica al **feed de actividad**: las entradas más
antiguas que ella se eliminan en el mismo proceso. Una entrada más reciente
que hacía referencia a una ejecución eliminada se conserva; solo se quita su
enlace a la ejecución.

Si crees que la ventana de retención de tu organización está mal configurada,
contacta a soporte — el equipo puede otorgarla, quitarla o aumentarla a
pedido.

## Editar una ejecución

Usa **Editar ejecución** desde el menú **⋯** para cambiar los datos
descriptivos de una ejecución o para volver a seleccionar sus casos después de
crearla. Editar solo está disponible mientras la ejecución está **abierta**;
una ejecución completada o abortada no tiene la opción de editar.

El modal **Editar ejecución** reutiliza los mismos campos que la creación —
**Título**, **Descripción**, **Entorno** y **Hito** — precargados con los
valores actuales de la ejecución. **El asignado por defecto no se puede
editar aquí**: es una configuración inicial que solo se usa al crear la
ejecución, así que el modal nunca lo muestra ni lo envía al guardar. Los
asignados por caso siguen siendo la forma de controlar quién trabaja en cada
caso después de creada la ejecución.

Al hacer clic en **Agregar casos** se abre el mismo modal de selección de
casos que en la creación, precargado con la selección actual de la ejecución
y sus asignados por caso — marca o desmarca casos y ajusta los asignados
exactamente como lo harías al crear una ejecución. Solo está disponible el
selector de **repositorio**; traer casos desde un plan de pruebas es un flujo
exclusivo de la creación. Guardar aplica juntos los cambios a la selección de
casos y a los campos de metadatos.

Si tus cambios eliminarían uno o más casos que ya tienen un resultado
registrado o tiempo acumulado, Probara muestra una **confirmación
destructiva** antes de guardar, indicando cuántos casos se ven afectados.
Confirmar continúa con el guardado; cancelar (o presionar Escape) deja la
ejecución **completamente intacta** — no se envía ninguna solicitud. Quitar
casos que siguen sin probar y sin tiempo acumulado nunca dispara esta
confirmación adicional.

**Los resultados y el tiempo registrado no se recuperan.** Si quitas un caso
que ya se había ejecutado y lo vuelves a agregar más adelante, vuelve como un
caso nuevo y sin probar — su resultado y tiempo anteriores se pierden para
siempre.

## Campos personalizados de la ejecución

Si tu organización configuró campos personalizados para la entidad
**Ejecución** (ver [Campos personalizados](https://docs.probara.net/es/guides/workspace-custom-fields/)),
tanto el modal de creación de ejecuciones como el modal **Editar ejecución**
muestran una sección **Campos personalizados**, con los mismos controles de
campo usados en el resto de la aplicación (texto corto, número, selección,
casilla, selector de usuario, etc.).

- En el modal de **creación**, la sección solo aparece en la pestaña **Desde
  repositorio**, precargada con el valor por defecto configurado en cada
  campo. **Desde plan de pruebas** nunca la muestra ni envía ningún valor de
  campo personalizado con las ejecuciones generadas: igual que cualquier otra
  ejecución, reciben automáticamente el valor por defecto de cada campo
  obligatorio.
- En el modal **Editar ejecución**, la sección se precarga con los valores
  actualmente guardados en la ejecución (no con los valores por defecto de
  los campos), así que editar una ejecución nunca sobrescribe en silencio un
  valor que ya habías fijado.
- Un campo obligatorio vacío bloquea el guardado y muestra **Este campo es
  obligatorio** junto al control — no se envía ninguna solicitud hasta que
  todos los campos visibles obligatorios tengan un valor.
- Si el proyecto no tiene campos de ejecución visibles, ningún modal muestra
  la sección.
- Cerrar cualquiera de los dos modales sin guardar descarta los cambios en
  los campos personalizados, igual que con cualquier otro campo del
  formulario.

## Configuraciones de la ejecución

Si tu proyecto tiene grupos de configuración (ver
[Configuraciones](https://docs.probara.net/es/guides/configurations/)) con valores vigentes, tanto el
modal de creación de ejecuciones como el modal **Editar ejecución** muestran
una sección **Configuraciones** — un selector por grupo, con un único valor
como máximo.

- El selector de cada grupo incluye una opción **Sin valor**, así que una
  ejecución puede llevar un valor para algunos grupos y ninguno para otros.
- En el modal de **creación**, la sección aparece en todas las pestañas y los
  valores elegidos se envían junto con el resto de la ejecución en una sola
  solicitud.
- En el modal **Editar ejecución**, la sección se precarga con las
  configuraciones actuales de la ejecución. Guardar solo envía la nueva
  selección cuando realmente cambió; vaciar todos los valores y guardar
  elimina por completo las configuraciones de la ejecución.
- Editar configuraciones sigue la misma regla que cualquier otro campo de
  metadatos: funciona en una ejecución **abierta** y en una **cerrada sin
  abortar**. Una ejecución **abortada** no tiene opción de edición, así que sus
  configuraciones quedan fijas.
- Si el proyecto no tiene grupos de configuración con valores vigentes,
  ningún modal muestra la sección.
- Cerrar cualquiera de los dos modales sin guardar descarta cualquier cambio
  de configuración sin guardar.

## Volver a ejecutar una ejecución

No existe **Reabrir** — una vez que una ejecución se cierra (automáticamente,
al completarla o al abortarla), se queda cerrada. Para volver a ejecutar, usa
**Volver a ejecutar** desde el menú **⋯** en cualquier ejecución **cerrada**
(completada o abortada). Abre el diálogo **Clonar ejecución de prueba**, que
crea una ejecución **abierta** completamente nueva a partir de la terminada —
la ejecución de origen nunca se modifica.

El diálogo pide:

- **Título** (obligatorio) — prellenado como "_nombre de la ejecución de
  origen_ (clon)"; edítalo antes de confirmar.
- **Clonar con responsables** — si lo marcas, cada caso arrastrado conserva su
  responsable de la ejecución de origen; si lo dejas sin marcar (opción por
  defecto), todos los casos de la ejecución nueva quedan sin asignar.
- **Estados de caso a incluir** — un selector múltiple con búsqueda de los seis
  resultados de caso (Sin probar, Reintento, Aprobado, Fallido, Omitido,
  Bloqueado). Déjalo vacío para arrastrar **todos** los casos de la ejecución
  de origen sin importar su último resultado; selecciona uno o más estados
  para arrastrar solo los casos que coincidan — el uso típico es seleccionar
  Fallido + Bloqueado para volver a ejecutar justo lo que falló.

## Agregar un resultado y reportar un defecto

Marcar un caso como **Aprobado**, **Reintentar** u **Omitido** avanza de
inmediato sin ningún modal — la marca y el tiempo capturado en silencio se
guardan al instante.

Marcar un caso como **Fallido** o **Bloqueado** abre el modal de **Agregar
resultado** **antes de guardar nada** — el caso permanece sin probar hasta
que confirmes. Dentro del modal puedes:

- Cambiar el **Resultado** si marcaste el desenlace equivocado — el selector
  ofrece los cuatro resultados posibles (Aprobar / Fallar / Omitir / Bloquear).
  Cambiar a Aprobado u Omitido oculta el interruptor de defecto y, al
  confirmar, guarda ese resultado en su lugar, conservando el comentario, el
  tiempo o los adjuntos que ya hayas ingresado.
- Agregar un **comentario del resultado** describiendo qué ocurrió. Admite
  formato e imágenes: pega o suelta una imagen en él, o teclea **/** y elige
  **Imagen**.
- Revisar y, si hace falta, ajustar el **tiempo registrado** del intento. Es
  un campo segmentado de horas, minutos y segundos con las unidades
  indicadas en pantalla, precargado con el tiempo registrado del intento:
  edítalo tecleando o con los botones de menos/más al final del campo, y
  confirma con **Enter** o al salir del campo. También se puede pegar un
  total, por ejemplo `2m 30s` o `45s`.
- Adjuntar archivos (de cualquier tipo, hasta los límites por archivo y por
  resultado del proyecto) mientras el modal sigue abierto — las subidas
  ocurren en segundo plano para que Confirmar siga siendo rápido.
- Decidir si crear o vincular un defecto, mediante un interruptor que viene
  activado por defecto cuando el resultado seleccionado es Fallido o
  Bloqueado.

Pulsar **Cancelar** o **Escape** en el modal de Agregar resultado descarta
todo: el caso permanece sin probar, no se guarda nada, el cronómetro
retoma exactamente desde donde estaba al abrir el modal, y el foco no avanza —
es como si nunca hubieras marcado el caso.

**Confirmar** guarda juntos, como una sola acción, el resultado seleccionado,
el comentario, el tiempo registrado (el valor segmentado de horas : minutos :
segundos) y los adjuntos. Con el interruptor de
defecto desactivado, el caso avanza al siguiente. Con el interruptor activado
(disponible solo para Fallido/Bloqueado), Confirmar abre el modal de
**Reportar defecto** contra el intento recién guardado, con dos pestañas:

- **Crear nuevo** — registra un defecto nuevo. La **descripción**
  empieza pre-rellenada como texto con formato a partir de los pasos fallidos
  del caso (resultado esperado frente al actual de cada uno, con sus
  imágenes), así que casi nunca necesitas escribirla desde cero; sigue siendo
  totalmente editable y admite formato e imágenes. Los encabezados
  compuestos (`Case:`, `Precondition:`, `Failed steps:`, `Expected:` /
  `Actual:`) siempre están en inglés por diseño, sin importar tu idioma de
  interfaz — así se mantienen consistentes las descripciones de defectos para
  equipos que triaguen en un tracker compartido. También puedes definir
  severidad, prioridad, un hito y un responsable antes de crearlo. En una
  pantalla angosta (ancho de teléfono), el par severidad/prioridad y el campo
  de hito se acomodan en una sola columna en lugar de lado a lado.
- **Vincular existente** — selecciona un defecto que ya hayas registrado, ya
  sea desde la lista sugerida (vinculados antes a este caso) o buscando en los
  defectos del proyecto, y pulsa **Vincular defecto** para vincularlo. Si
  intentas vincular sin haber seleccionado nada, aparece un aviso en línea en
  lugar de vincular. Seleccionar un defecto resuelto o cerrado anuncia que
  confirmar lo reabrirá; al vincular, el intento se vincula y el defecto se
  reabre juntos.

En cualquiera de las dos pestañas, marca **Crear otro defecto** para registrar
o vincular varios defectos desde el mismo intento sin salir del modal — cada
creación o vinculación exitosa reinicia esa pestaña y mantiene el modal
abierto.

¿Cambiaste de opinión después de ver el modal de Reportar defecto? Haz clic en
la **flecha hacia atrás** junto al título para volver al modal de Agregar
resultado con todo lo que ingresaste intacto — resultado, comentario, tiempo y
adjuntos. Volver a confirmar solo vuelve a guardar lo que realmente cambiaste.

Usa la acción **Agregar defecto** del panel de reintentos en un caso bloqueado
para abrir el modal de Reportar defecto directamente para ese intento, sin
pasar por el paso de Agregar resultado.

Consulta [Defectos](https://docs.probara.net/es/guides/defects/) para las vistas de listado y detalle
del proyecto.
