Un hito es un punto de entrega con nombre dentro de un proyecto — un sprint, un release o cualquier conjunto acotado de actividad de pruebas que quieras seguir como unidad. Los hitos agrupan ejecuciones de prueba, tienen fechas opcionales y calculan el progreso automáticamente a partir de las ejecuciones asociadas.
Cómo llegar a la pantalla
Abre un proyecto y haz clic en Milestones en la barra lateral del proyecto. La URL es /projects/:projectId/milestones.
La lista de hitos
La lista agrupa los hitos por su hito padre. Cada hito padre se muestra como una tarjeta de grupo con borde: una fila de padre resaltada arriba, seguida de una sub-tabla con sus sub-hitos vigentes. Los padres y los hijos nunca aparecen como elementos hermanos indistintos — un hijo siempre se ubica dentro de la tarjeta de su padre. Una fila de encabezado de columnas compartida aparece una sola vez sobre la pila de tarjetas, y la fila del padre y cada fila de hijo se alinean bajo esa misma cuadrícula:
| Columna | Descripción |
|---|---|
| Hito | Icono de bandera con el color del estado, el nombre del hito (los hijos son más pequeños y van sangrados) y una descripción de una línea bajo el nombre cuando existe |
| Estado | Chip de ciclo de vida con color (Pendiente, Activo, Completado) — el estado lleva el peso visual; la lista no muestra barra de progreso |
| Fechas | Fechas en texto plano sin colores de urgencia: Finalizado {fecha} para hitos completados, Límite {fecha} cuando hay fecha límite, Sin fecha límite cuando solo hay fecha de inicio o prevista, o Sin fechas cuando no hay ninguna — con una línea secundaria de inicio/prevista |
| Casos | El conteo de casos de prueba del subárbol, como número monoespaciado |
| Autor | Avatar y nombre del autor del hito, o un guión largo para hitos creados por token de API o heredados |
| Acciones de Editar y Eliminar por fila (miembros y roles superiores) |
Un resumen monoespaciado alineado a la derecha sobre la lista muestra {n} hitos · {m} sub-hitos, contando los padres y los hijos que se ven actualmente.
Cada fila es clicable y abre la página de detalle de ese hito — al hacer clic en una fila de hijo se abre el detalle del propio hijo.
Usa el campo de búsqueda para filtrar por nombre. El filtro de estado permite restringir la lista por uno o más estados del ciclo de vida. Cambiar la búsqueda o el estado restablece la primera página.
La paginación es por hito padre
El paginador debajo de la lista sigue la regla general de la aplicación: el selector de filas por página y el resumen del rango siempre se muestran en cuanto hay suficientes hitos para paginar, y los controles de anterior/siguiente y de número de página solo aparecen cuando la lista ocupa más de una página.
La unidad de paginación es el hito padre, no el hito individual. Una página contiene hasta pageSize hitos padre; los hijos de cada padre viajan con él dentro de la misma tarjeta y nunca cuentan para el límite de la página. Por eso un padre y sus hijos nunca se reparten entre páginas. El resumen del paginador (X–Y de Z) cuenta solo hitos padre — los hijos no se incluyen en el total.
Crear un hito
- Haz clic en New milestone (visible para miembros y roles superiores; los viewers ven la lista en modo solo lectura).
- Escribe un Name (requerido, único dentro del proyecto).
- Elige opcionalmente un Status (el valor por defecto es
Upcoming). - Define opcionalmente una Start date, una Due date y una Forecast date. La fecha de vencimiento debe ser igual o posterior a la de inicio — la interfaz lo valida antes de enviar el formulario.
- Escribe opcionalmente una Description.
- Selecciona opcionalmente un Parent milestone para formar una jerarquía (un hito solo puede ser raíz o hijo directo — no se permiten nietos).
- Haz clic en Create milestone.
Si el nombre ya está en uso, aparece un error en línea en el campo nombre y el diálogo permanece abierto.
Ciclo de vida del estado de un hito
Los hitos siguen un ciclo de vida con cuatro estados:
| Estado | Significado |
|---|---|
| Upcoming | Planificado pero aún no iniciado |
| Active | En progreso actualmente |
| Completed | Todo el trabajo terminado; el hito está bloqueado para nuevas asignaciones de ejecuciones |
| Archived | Retirado; el hito está bloqueado y excluido de los selectores |
Las transiciones válidas son:
Upcoming→ActiveActive→CompletedCompleted→Active(reabrir)- Cualquier estado no archivado →
Archived
Las transiciones a Completed desde Upcoming (saltando Active) no están permitidas. Una transición inválida muestra un error en línea en el diálogo de edición.
Cuando todas las ejecuciones asociadas están cerradas, el hito se completa automáticamente: el estado pasa a Completed sin necesidad de intervención del usuario.
Jerarquía
Un hito puede tener opcionalmente un hito padre, formando una jerarquía de dos niveles. Esto es útil para agrupar sprints relacionados bajo un release, o épicas bajo un hito trimestral. Reglas de jerarquía:
- Un hito raíz no tiene padre.
- Un hito hijo tiene exactamente un padre.
- No se permiten nietos (profundidad > 2).
- No puedes asignar un hito como su propio padre.
El selector de padre en los diálogos de creación y edición muestra únicamente los hitos raíz que no sean el hito que se está editando.
Vincular ejecuciones
Las ejecuciones de prueba se pueden asignar a un hito de dos formas:
- Creación de ejecución — al crear una nueva ejecución de prueba, selecciona un hito opcional en el selector. El selector muestra solo los hitos vigentes no bloqueados (
UpcomingoActive). - Vista de detalle del hito — abre la página de detalle del hito y usa el control Assign run en la pestaña Linked Runs.
Quitar la asignación de una ejecución siempre está disponible independientemente del estado del hito, incluso en hitos bloqueados (Completed o Archived).
Progreso
Los valores de progreso se calculan en el servidor y se muestran en la vista de detalle: una barra de progreso completa más estadísticas — total de ejecuciones, ejecuciones cerradas y tasa de éxito. La vista de lista agrupada no muestra barra de progreso ni porcentaje a propósito — allí el peso lo lleva el estado.
El progreso se actualiza cuando las ejecuciones asociadas se cierran o se reasignan.
Vista de detalle del hito
Haz clic en el nombre de un hito para abrir su página de detalle (/projects/:projectId/milestones/:milestoneUlid). La página tiene un diseño de dos paneles: una columna principal desplazable a la izquierda y un panel lateral de resumen fijo a la derecha.
Panel lateral de resumen
El panel lateral siempre muestra:
- Donut de progreso — porcentaje de ejecuciones ejecutadas (cerradas / total).
- Leyenda de resultados — conteos individuales de
Aprobadas,Fallidas,Bloqueadas,OmitidasySin probar, obtenidos de los conteos de resultados del servidor. - Control de estado en línea — haz clic en el chip para cambiar el estado del hito. Cuando el hito está
Completado, el chip muestra un ícono de verificación y no se puede editar. - Celdas de fechas — Inicio, Límite, Prevista (oculta cuando está
Completado) y Finalización (cada una se muestra cuando está definida, guión largo cuando es nula). - Autor — el usuario que creó el hito (o ”—” para hitos creados con token de API o hitos anteriores al campo).
- Marcas de tiempo de Creado / Actualizado.
Columna principal — encabezado
El encabezado muestra un botón de regreso, una ruta de navegación (proyecto › hitos › shortId), el nombre del hito en la tipografía de pantalla, una descripción resumida con opción de expansión, un enlace al hito padre (cuando el hito tiene padre), un botón Editar hito (miembros y roles superiores) y un menú de más acciones.
Columna principal — banda de sub-hitos
Cuando un hito tiene hijos, aparece debajo del encabezado una banda de sub-hitos con una cuadrícula de tarjetas clicables. Cada tarjeta muestra el chip de estado del hijo, el conteo de casos de prueba, una barra de progreso y ejecuciones cerradas/totales. Hacer clic en una tarjeta navega a la página de detalle de ese hijo. Los valores de progreso en el panel lateral incluyen todos los hitos hijos.
Columna principal — pestañas
Tres pestañas organizan los elementos vinculados al hito. La pestaña activa se controla mediante el parámetro ?tab= de la URL (valor por defecto: linked-runs).
Pestaña Ejecuciones vinculadas
Muestra las ejecuciones asignadas a este hito:
- Un control Asignar ejecución (selector desplegable + botón) cuando el hito no está
Completado. - Un banner de bloqueo en lugar del control de asignación cuando el hito está
Completado. - Una tabla de ejecuciones (columnas Título / Entorno / Autor / Tiempo total / Transcurrido / Estado / Resultados) con navegación por clic de fila a la página de detalle de la ejecución.
- Un botón Quitar asignación por fila (oculto cuando el hito está
Completado).
Pestaña Casos relacionados
Muestra los casos de prueba vinculados a este hito en bandas colapsables agrupadas por suite (la misma estructura que la pestaña de Casos del detalle de un plan):
- Cada fila muestra un chip de prioridad, el ID de visualización, el título del caso y un chip de estado de ciclo de vida (oculto cuando el ciclo de vida es “Activo” — el estado normal).
- Colapsar una banda de suite oculta todas sus bandas hijas anidadas.
- Un estado vacío cuando no hay casos de prueba vinculados.
Pestaña Defectos relacionados
Muestra los defectos vinculados a este hito en una tabla de solo lectura con columnas: número (D-n), título, chip de estado, severidad y responsable. Hacer clic en una fila navega a la página de detalle del defecto. Aparece un estado vacío cuando no hay defectos vinculados.
Editar un hito
Haz clic en el botón Edit (ícono de lápiz) en una fila de la lista o en la página de detalle para abrir el diálogo de edición. Todos los campos son editables. El menú desplegable de estado muestra únicamente las transiciones válidas desde el estado actual.
Un 409 conflict (nombre ya en uso por otro hito) muestra un error en línea en el campo nombre. Un 422 validation_failed muestra errores en línea en los campos con errores.
Eliminar un hito
Haz clic en el botón Delete (ícono de papelera) en una fila de la lista. Un diálogo de confirmación muestra el nombre del hito y advierte que las ejecuciones asociadas serán desvinculadas. Haz clic en Delete para proceder, o en Cancel para volver a la lista sin cambios.
La eliminación es permanente y no se puede deshacer desde la interfaz.