Tiempo ahorrado

Cada ejecución indica cuánto tiempo de pruebas ahorró. Las cifras se quedan en tu CI, así que sumarlas a lo largo de un mes son unas pocas líneas de script, no un panel en el que tengas que confiar.

En cada ejecución

Un mapa de cobertura registra cuánto tardó cada clase de prueba. Antes de ejecutar nada, TestDetta suma el tiempo registrado de todo el conjunto de pruebas y el de las clases que seleccionó:

Recorded test time: 0.6 s of 3.4 s (83% saved).

La misma línea aparece en el job summary de GitHub y en el Markdown que --summary-file escribe para otros sistemas de CI. Solo cuenta el tiempo de pruebas. La compilación y el restore se hacen de todos modos, salvo en los proyectos de pruebas que se omiten por completo: esos ni siquiera se compilan, lo que ahorra más de lo que muestra la línea.

Los proyectos sin tiempos, por ejemplo porque todavía no se ha registrado ningún mapa para ellos, quedan fuera de ambas cifras; el JSON los enumera en projectsWithoutTimings.

En JSON

td affected --format json incluye las mismas cifras para scripts, para toda la ejecución y para cada proyecto de pruebas:

{
  "estimate": {
    "fullSeconds": 3.4,
    "selectedSeconds": 0.6,
    "savedSeconds": 2.8,
    "projectsWithoutTimings": []
  }
}

Sumarlo todo

Guarda el JSON de cada ejecución de pull request como artefacto de compilación. Sumar savedSeconds en cualquier periodo da el tiempo de pruebas ahorrado, sin que nada salga de tu CI:

td affected --format json > testdetta.json      # in each pull request run

# later, over the files of a month:
jq -s 'map(.estimate.savedSeconds // 0) | add / 3600' runs/*.json   # hours saved

Multiplica por el número de jobs en paralelo que ejecutan las pruebas (una matriz de SO o framework) para obtener los minutos de runner, y por el precio por minuto de tu runner para obtener el coste. La calculadora de ahorro hace lo mismo con estimaciones.

Qué significan las cifras