name: tests # Run by Gitea's act_runner. Nothing here needs a service container or a database. on: push: branches: - main pull_request: permissions: contents: read jobs: lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - name: Setup PHP uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2 with: php-version: '8.5' tools: composer:v2 coverage: none - name: Install dependencies run: composer install --no-interaction --no-progress --prefer-dist - name: Check formatting run: vendor/bin/pint --test feature: runs-on: ubuntu-latest strategy: fail-fast: false matrix: php: ['8.4', '8.5'] steps: - name: Checkout code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - name: Setup PHP uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2 with: php-version: ${{ matrix.php }} tools: composer:v2 coverage: none # material:scheme's tests run the bundled colour script through Node. - name: Setup Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: node-version: '22' - name: Install dependencies run: composer install --no-interaction --no-progress --prefer-dist - name: Run feature tests run: vendor/bin/pest --testsuite=Feature # One job per engine: the floor is Chrome 125, Firefox 147 and Safari 18.4, and the # components lean on platform features (dialog, popover, anchor positioning) that # differ between them. Pest calls the engines chrome, firefox and safari; Playwright # installs them as chromium, firefox and webkit. browser: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - browser: chrome playwright: chromium - browser: firefox playwright: firefox - browser: safari playwright: webkit steps: - name: Checkout code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - name: Setup PHP uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2 with: php-version: '8.5' tools: composer:v2 coverage: none - name: Setup Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: node-version: '22' - name: Install dependencies run: | composer install --no-interaction --no-progress --prefer-dist npm ci - name: Build the Workbench assets run: npm run build - name: Install the browser run: npx playwright install --with-deps ${{ matrix.playwright }} - name: Run browser tests run: vendor/bin/pest --testsuite=Browser --browser ${{ matrix.browser }} env: BROWSER_TIMEOUT: 15000