Presupuestos y líneas base
Escribe lo que una ejecución puede costar, y emulabzip ci hace fallar la ejecución cuando cuesta más.
emulabzip.toml#
Ponlo en la carpeta del proyecto (o pasa --config). Cada límite es opcional; una ejecución solo se somete a los que
están escritos.
[budget]
start_time_ms = 800 # the median start time; needs [startup]
memory_peak_mb = 300
cpu_avg_percent = 40
janky_frames_percent = 5
requests = 200
failed_requests = 0
log_errors = 10
crashes = 0
[startup] # optional: measure the start time before the command runs
runs = 5
kind = "cold" # cold, warm or hot
[baseline]
tolerance_percent = 10 # how much worse than the baseline counts as a regression
[size] # a build's size: see Build size (package-size.md)
max_total_mb = 25
max_dex_mb = 8
max_native_mb = 12
max_methods = 60000
max_growth_percent = 5
[visual] # screenshots: see Visual regression (visual-regression.md)
threshold_percent = 0.1
tolerance = 8
[size] se comprueba sobre un archivo de build con emulabzip size show --budget y emulabzip ci --size; [visual] define
cómo compara emulabzip visual y qué partes de la pantalla ignora. Consulta Tamaño del build y
Regresión visual.
Una clave que no existe es un error, así que una errata no deja un límite desactivado. Un límite que no se pudo
medir cuenta como incumplido: start_time_ms sin una tabla [startup] y sin --app falla, en lugar de pasar en silencio.
Presupuestos en ci#
emulabzip ci -o run.ezsession --app com.example.app -- ./gradlew connectedCheck
Después de la ejecución, los límites se comprueban y se listan en el informe Markdown bajo Budgets. Si uno se incumple, el código de salida es 1, salvo que el propio comando haya fallado, en cuyo caso prevalece su código.
Líneas base#
Compara una ejecución con una sesión anterior, normalmente la última buena:
emulabzip ci -o run.ezsession --app com.example.app --baseline last-good.ezsession --fail-on-regression -- ./test.sh
emulabzip session compare last-good.ezsession run.ezsession
Un número es peor cuando creció más que la tolerancia (10 % por defecto, --tolerance en session compare). El
informe lista cada número como mejor, peor o igual. Sin --fail-on-regression, una regresión solo se informa.
En GitHub Actions, guarda la última sesión buena como caché o como artefacto de la rama por defecto, y descárgala antes de la ejecución:
- uses: actions/cache@v4
with:
path: baseline.ezsession
key: baseline-${{ github.base_ref || github.ref_name }}
restore-keys: baseline-
- run: >
emulabzip ci -o run.ezsession --app com.example.app
--baseline baseline.ezsession --fail-on-regression -- ./gradlew connectedCheck
- if: github.ref_name == 'main'
run: cp run.ezsession baseline.ezsession
El tiempo de arranque se guarda en la sesión (startup.json), así que también se puede comparar. Las sesiones creadas antes
de esto siguen funcionando: el archivo es opcional y la versión del formato sigue siendo 1.