diff --git a/.env.ci b/.env.ci new file mode 100644 index 000000000..74df3111a --- /dev/null +++ b/.env.ci @@ -0,0 +1,2 @@ +APP_NAME="Speedtest Tracker" +APP_KEY= diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42cccdca2..2bbd1b52c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,217 @@ jobs: with: args: lint --using=pint -v - test-app: + test-mariadb-11: + needs: lint-app + runs-on: ubuntu-24.04 + services: + mariadb: + image: mariadb:11 + env: + MARIADB_ROOT_PASSWORD: password + MARIADB_DATABASE: testing + ports: + - 3306:3306 + options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + + - name: Install Dependencies + run: | + composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + npm ci && npm run build + + - name: Copy Environment File + run: cp .env.ci .env + + - name: Generate App Key + run: php artisan key:generate --quiet + + - name: Run Tests + run: php artisan test + env: + DB_CONNECTION: mysql + DB_HOST: 127.0.0.1 + DB_PORT: 3306 + DB_DATABASE: testing + DB_USERNAME: root + DB_PASSWORD: password + + test-mysql-8: + needs: lint-app + runs-on: ubuntu-24.04 + services: + mysql: + image: mysql:8 + env: + MYSQL_ROOT_PASSWORD: password + MYSQL_DATABASE: testing + ports: + - 3306:3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + + - name: Install Dependencies + run: | + composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + npm ci && npm run build + + - name: Copy Environment File + run: cp .env.ci .env + + - name: Generate App Key + run: php artisan key:generate --quiet + + - name: Run Tests + run: php artisan test + env: + DB_CONNECTION: mysql + DB_HOST: 127.0.0.1 + DB_PORT: 3306 + DB_DATABASE: testing + DB_USERNAME: root + DB_PASSWORD: password + + test-postgres-15: + needs: lint-app + runs-on: ubuntu-24.04 + services: + postgres: + image: postgres:15 + env: + POSTGRES_PASSWORD: password + POSTGRES_DB: testing + ports: + - 5432:5432 + options: --health-cmd="pg_isready -U postgres" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + + - name: Install Dependencies + run: | + composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + npm ci && npm run build + + - name: Copy Environment File + run: cp .env.ci .env + + - name: Generate App Key + run: php artisan key:generate --quiet + + - name: Run Tests + run: php artisan test + env: + DB_CONNECTION: pgsql + DB_HOST: 127.0.0.1 + DB_PORT: 5432 + DB_DATABASE: testing + DB_USERNAME: postgres + DB_PASSWORD: password + + test-postgres-16: + needs: lint-app + runs-on: ubuntu-24.04 + services: + postgres: + image: postgres:16 + env: + POSTGRES_PASSWORD: password + POSTGRES_DB: testing + ports: + - 5432:5432 + options: --health-cmd="pg_isready -U postgres" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + + - name: Install Dependencies + run: | + composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + npm ci && npm run build + + - name: Copy Environment File + run: cp .env.ci .env + + - name: Generate App Key + run: php artisan key:generate --quiet + + - name: Run Tests + run: php artisan test + env: + DB_CONNECTION: pgsql + DB_HOST: 127.0.0.1 + DB_PORT: 5432 + DB_DATABASE: testing + DB_USERNAME: postgres + DB_PASSWORD: password + + test-postgres-17: + needs: lint-app + runs-on: ubuntu-24.04 + services: + postgres: + image: postgres:17 + env: + POSTGRES_PASSWORD: password + POSTGRES_DB: testing + ports: + - 5432:5432 + options: --health-cmd="pg_isready -U postgres" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + + - name: Install Dependencies + run: | + composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + npm ci && npm run build + + - name: Copy Environment File + run: cp .env.ci .env + + - name: Generate App Key + run: php artisan key:generate --quiet + + - name: Run Tests + run: php artisan test + env: + DB_CONNECTION: pgsql + DB_HOST: 127.0.0.1 + DB_PORT: 5432 + DB_DATABASE: testing + DB_USERNAME: postgres + DB_PASSWORD: password + + test-sqlite: needs: lint-app runs-on: ubuntu-24.04 steps: @@ -35,7 +245,7 @@ jobs: - name: Create SQLite Database run: | - touch database/testing.sqlite + touch database/database.sqlite - name: Install Dependencies run: | @@ -43,10 +253,12 @@ jobs: npm ci && npm run build - name: Copy Environment File - run: cp .env.example .env + run: cp .env.ci .env - name: Generate App Key run: php artisan key:generate --quiet - name: Run Tests - run: php artisan test --parallel + run: php artisan test + env: + DB_CONNECTION: sqlite \ No newline at end of file diff --git a/phpunit.xml b/phpunit.xml index 1f0019785..029d6ede2 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -19,12 +19,12 @@ - - - - - - - + + + + + + +