Files
livewire-material/.github/workflows/tests.yml
T
surtic86andClaude Opus 5 8da8b1fa20
tests / feature (8.4) (push) Successful in 1m51s
tests / feature (8.5) (push) Successful in 1m53s
tests / browser (chrome, chromium) (push) Successful in 9m11s
tests / browser (firefox, firefox) (push) Failing after 19m44s
tests / browser (safari, webkit) (push) Failing after 17m36s
Say what stood in the way when a click never lands
The two full-screen range picker tests give up after the full timeout on
the runner's Firefox, and nowhere else. Playwright waits for a click
target to be visible, still, enabled and on top, and reports none of
those when it gives up — so the failure says only that 45 seconds
passed.

Both tests now name the element the browser would hit at the toggle's own
centre before they press it (`hitTarget()`), so a covered or undrawn
control fails with what covered it rather than with a timeout. The run
also keeps the screenshots Playwright writes for a failure, as an
artifact: a page that only misbehaves there is otherwise invisible from a
workstation where all three engines pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 06:14:31 +02:00

117 lines
3.4 KiB
YAML

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:
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, and the prebuilt
# stylesheets' staleness test rebuilds them with the installed Vite.
- 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: Check formatting
if: matrix.php == '8.5'
run: vendor/bin/pint --test
- name: Run feature tests
run: vendor/bin/pest --testsuite=Feature
# One job per engine: the floor is Chrome 125, Firefox 151 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: 45000
# What the runner saw when an assertion or an action gave up. A failure that does not
# reproduce on a workstation is otherwise only a stack trace: the page itself says whether an
# element was covered, unstyled or never drawn.
- name: Keep the screenshots of what failed
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: screenshots-${{ matrix.browser }}
path: tests/Browser/Screenshots
if-no-files-found: ignore
retention-days: 7