Skip to content

πŸ”– Release v2026.8.26-876f2e0b #45

πŸ”– Release v2026.8.26-876f2e0b

πŸ”– Release v2026.8.26-876f2e0b #45

Workflow file for this run

name: Tests
on:
pull_request:
push:
branches:
- main
# Callable so the release workflow can gate publishing on the same suite
# rather than duplicating these steps.
workflow_call:
# github.workflow is the *caller's* name under workflow_call, so the deploy and
# release workflows land in separate groups when both call this on the same tag
# β€” with a shared group, whichever started second cancelled the other's run.
# Direct runs (PRs, pushes to main) keep deduplicating per ref as before.
concurrency:
group: tests-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
PHP_VERSION: '8.5'
BUN_VERSION: '1.3.14'
jobs:
phpunit:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup PHP
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
with:
php-version: ${{ env.PHP_VERSION }}
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, redis
tools: composer:v2
coverage: none
- name: Cache Composer dependencies
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.cache/composer
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Install Composer dependencies
run: composer install --prefer-dist --no-interaction --no-progress
- name: Prepare environment
# phpunit.xml provides the test env (sqlite :memory:, array cache/session);
# only the app key has to exist outside it.
run: |
cp .env.example .env
php artisan key:generate
- name: Run tests
run: php artisan test
frontend:
name: Lint, typecheck & vitest
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: ${{ env.BUN_VERSION }}
- name: Cache Bun dependencies
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-
- name: Install dependencies
run: bun install --frozen-lockfile
# `bun run lint` rewrites files in place; CI only reports.
- name: Lint
run: bun run lint:ci
- name: Typecheck
run: bun run typecheck
- name: Test
run: bun run test