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
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>
117 lines
3.4 KiB
YAML
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
|