# Automated repository tests


> [!WARNING]
> Docker Hub Automated Builds is a deprecated feature.
> It will be fully retired on April 1, 2027.

> [!NOTE]
>
> Automated builds require a
> Docker Pro, Team, or Business subscription.

Docker Hub puede probar automáticamente los cambios en tus repositorios de código fuente usando contenedores. Puedes habilitar `Autotest` en cualquier repositorio de Docker Hub para ejecutar pruebas en cada pull request al repositorio de código fuente y así crear un servicio de pruebas de integración continua.

Habilitar `Autotest` compila una imagen para fines de prueba, pero no sube automáticamente la imagen compilada al repositorio de Docker. Si quieres subir las imágenes compiladas a tu repositorio de Docker Hub, habilita las [builds automáticas](/docker-hub/repos/manage/builds/automated-testing/).

## Configurar archivos de prueba automatizados

Para configurar tus pruebas automatizadas, crea un archivo `docker-compose.test.yml` que defina un servicio `sut` que enumere las pruebas a ejecutar.
El archivo `docker-compose.test.yml` debe estar ubicado en el mismo directorio que contiene el Dockerfile utilizado para compilar la imagen.

Por ejemplo:

```yaml
services:
  sut:
    build: .
    command: run_tests.sh
```

El ejemplo anterior compila el repositorio y ejecuta el archivo `run_tests.sh` dentro de un contenedor utilizando la imagen compilada.

Puedes definir cualquier cantidad de servicios vinculados en este archivo. El único requisito es que `sut` esté definido. Su código de retorno determina si las pruebas pasaron o no. Las pruebas pasan si el servicio `sut` devuelve `0`, y fallan en caso contrario.

> [!NOTE]
> 
> Solo se inician el servicio `sut` y todos los demás servicios listados en
> [`depends_on`](/reference/compose-file/services/#depends_on). Si tienes
> servicios que realizan consultas continuas (polling) en busca de cambios en otros servicios, asegúrate
> de incluir los servicios de consulta en la lista [`depends_on`](/reference/compose-file/services/#depends_on)
> para garantizar que todos tus servicios se inicien.

Puedes definir más de un archivo `docker-compose.test.yml` si es necesario. Cualquier archivo que termine en `.test.yml` se utiliza para las pruebas, y las pruebas se ejecutan de manera secuencial.
También puedes usar [hooks de compilación personalizados](/docker-hub/repos/manage/builds/automated-testing/advanced/#override-build-test-or-push-commands)
para personalizar aún más el comportamiento de tus pruebas.

> [!NOTE]
>
> Si habilitas las builds automáticas, estas también ejecutarán cualquier prueba definida
> en los archivos `test.yml`.

## Habilitar pruebas automatizadas en un repositorio

Para habilitar las pruebas en un repositorio de código fuente, primero debes crear un repositorio de compilación asociado en Docker Hub. Tu configuración de `Autotest` se realiza en la misma página que las [builds automáticas](/docker-hub/repos/manage/builds/automated-testing/); sin embargo, no necesitas habilitar las autobuilds para usar autotest. La autobuild se habilita por rama o etiqueta, y no tienes que habilitarla obligatoriamente.

Solo las ramas que están configuradas para usar autobuild suben imágenes al repositorio de Docker, independientemente de la configuración de Autotest.

1. Inicia sesión en Docker Hub y selecciona **My Hub** > **Repositories**.

2. Selecciona el repositorio en el que quieres habilitar `Autotest`.

3. Desde la vista del repositorio, selecciona la pestaña **Builds**.

4. Selecciona **Configure automated builds**.

5. Configura los ajustes de las builds automáticas como se explica en [Builds automáticas](/docker-hub/repos/manage/builds/automated-testing/).

    Como mínimo debes configurar:

    * El repositorio de código fuente
    * La ubicación de la compilación
    * Al menos una regla de compilación

6. Elige tu opción de **Autotest**.

    Las siguientes opciones están disponibles:

    * `Off`: Sin builds de prueba adicionales. Las pruebas solo se ejecutan si están configuradas como parte de una build automática.

    * `Internal pull requests`: Ejecuta una build de prueba para cualquier pull request a las ramas que coincidan con una regla de compilación, pero solo cuando el pull request provenga del mismo repositorio de origen.

    * `Internal and external pull requests`: Ejecuta una build de prueba para cualquier pull request a las ramas que coincidan con una regla de compilación, incluso cuando el pull request se haya originado en un repositorio de origen externo.

    > [!IMPORTANT]
    >
    > Por motivos de seguridad, autotest en pull requests externos está limitado en repositorios públicos. No se descargan imágenes privadas y las variables de entorno definidas en Docker Hub no están disponibles. Las builds automáticas siguen funcionando como de costumbre.

7. Selecciona **Save** para guardar la configuración, o selecciona **Save and build** para guardar y ejecutar una prueba inicial.

## Comprobar los resultados de tus pruebas

Desde la página de detalles del repositorio, selecciona **Timeline**.

Desde esta pestaña puedes ver cualquier build y ejecución de prueba pendiente, en progreso, exitosa y fallida para el repositorio.

Puedes elegir cualquier entrada de la línea de tiempo para ver los registros de cada ejecución de prueba.

