Skip to content
Code and Bytes Code and Bytes

Code and Bytes
Code and Bytes

Solucionando el error “Connection refused” al ejecutar tests de PHPUnit en GitHub Actions

Posted on 23 March, 202611 April, 2026

Hace poco me encontré con un error bastante común (pero frustrante) al ejecutar tests de PHPUnit en GitHub Actions usando Laravel. Localmente todo funcionaba perfecto, pero en CI los tests fallaban inmediatamente con un error de conexión a la base de datos.

El problema

Al ejecutar los tests en GitHub Actions, aparecía el siguiente error:

Illuminate\Database\QueryException: SQLSTATE[08006] [7] connection to server at "127.0.0.1", port 5432 failed: Connection refused
Is the server running on that host and accepting TCP/IP connections?

Esto ocurría al intentar correr un test básico:

Tests\Feature\Auth\AuthenticationTest::test_login_screen_can_be_rendered

¿Qué significa este error?

Laravel intenta conectarse a PostgreSQL
Pero en GitHub Actions no hay ningún servidor de PostgreSQL corriendo

La solución: configurar PostgreSQL como servicio

La solución es bastante sencilla: debemos declarar PostgreSQL como un servicio dentro de nuestro workflow de GitHub Actions. Así, GitHub levantará automáticamente un contenedor con PostgreSQL antes de ejecutar los tests.

Edita el archivo .github/workflows/tests.yml

name: tests

on:
  push:
    branches:
      - develop
      - main
      - master
      - workos
  pull_request:
    branches:
      - develop
      - main
      - master
      - workos

jobs:
  ci:
    runs-on: ubuntu-latest
    environment: Testing
    strategy:
      matrix:
        php-version: ['8.4']

    services:
      postgres:
        image: pgvector/pgvector:pg16
        env:
          POSTGRES_USER: laravel
          POSTGRES_PASSWORD: secret
          POSTGRES_DB: laravel_db_test
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432

    steps:
      - name: Checkout code
        uses: actions/checkout@v6

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          tools: composer:v2
          coverage: xdebug

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '22'

      - name: Install Node Dependencies
        run: npm i

      - name: Add Flux Credentials Loaded From ENV
        run: composer config http-basic.composer.fluxui.dev "${{ secrets.FLUX_USERNAME }}" "${{ secrets.FLUX_LICENSE_KEY }}"

      - name: Install Dependencies
        run: composer install --no-interaction --prefer-dist --optimize-autoloader

      - name: Copy Environment File
        run: cp .env.example .env

      - name: Generate Application Key
        run: php artisan key:generate

      - name: Build Assets
        run: npm run build

      - name: Run Tests
        run: ./vendor/bin/phpunit

Ajustes adicionales necesarios

No olvides actualizar tu archivo phpunit.xml, debe tener

<env name="DB_CONNECTION" value="pgsql"/>
<env name="DB_DATABASE" value="laravel_ia_test"/>
DevOps

Post navigation

Previous post
Next post

Related Posts

DevOps

Configuración de despliegue automático con llaves SSH y GitHub Actions

Posted on 7 October, 202511 April, 2026

Automatizar el despliegue de tus proyectos puede ahorrarte tiempo y reducir errores. En esta guía, te explico cómo configurar un despliegue automático utilizando llaves SSH y GitHub Actions.

Read More

Usar una Deploy Key diferente para cada repositorio en un mismo servidor

Posted on 18 July, 2026

Cuando un servidor necesita acceder a varios repositorios privados de GitHub, una buena práctica es utilizar una Deploy Key independiente para cada repositorio, en lugar de compartir la misma llave SSH entre todos. Este enfoque ofrece varias ventajas: En este artículo veremos cómo configurar una llave SSH distinta para cada…

Read More
DevOps

Configurar PostgreSQL en Laravel con Docker (incluyendo pgvector)

Posted on 22 March, 202611 April, 2026

Si estás montando un proyecto Laravel y quieres una base de datos PostgreSQL aislada con Docker, esta configuración te deja todo listo en pocos pasos. ¿Qué vas a tener al final?

Read More

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Buscar

Categorias

  • AI (2)
  • Asterisk (9)
  • Bases de datos (1)
  • DevOps (4)
  • Git (2)
  • HTML (1)
  • Laravel (6)
  • Linux (67)
  • MCP Server (1)
  • Mikrotik (3)
  • MySQL (5)
  • n8n (1)
  • Personal (4)
  • PHP (15)
  • Python (2)
  • Software recomendado (1)
  • Tips (1)
  • VSCode (4)
  • vTiger (4)
  • Windows (10)
  • Wordpress (4)
©2026 Code and Bytes | WordPress Theme by SuperbThemes