---
name: gradle_instrumented_test
kind: function
lang: bash
domain: infra
version: "1.0.0"
purity: impure
signature: "gradle_instrumented_test(project_dir: string, module: string) -> int"
description: "Corre instrumented tests Compose en emulador/device Android conectado."
tags: ["android", "gradle", "test", "compose", "emulator"]
uses_functions: ["gradle_run_bash_infra", "adb_wsl_bash_infra"]
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/infra/gradle_instrumented_test.sh"
params:
  - name: project_dir
    desc: "Raiz del proyecto Gradle"
  - name: module
    desc: "Modulo. Default app"
output: "Stdout con resultados. Linea final 'REPORT: <path>'. Exit: 0=OK, 3=no device, otro=fallos tests."
notes: "Requiere emulador corriendo. Lanzar antes con android_emulator_start. connectedAndroidTest corre en TODOS los devices conectados."
---

## Ejemplo

```bash
# Correr instrumented tests del modulo app
gradle_instrumented_test /home/user/MyAndroidProject

# Correr instrumented tests de un modulo especifico
gradle_instrumented_test /home/user/MyAndroidProject feature_login
```

## Notas

Requiere emulador corriendo. Lanzar antes con android_emulator_start. connectedAndroidTest corre en TODOS los devices conectados.

El script verifica que haya al menos un emulador o device conectado antes de lanzar Gradle. Si no hay ninguno, imprime un mensaje descriptivo a stderr y sale con exit code 3, permitiendo al llamador distinguir "no device" de "tests fallaron".

La linea `REPORT: <path>` se imprime siempre al final (incluso si los tests fallan), para que el llamador pueda abrir el reporte HTML independientemente del resultado.
