Modernize PHP and Symfony version requirements; add Symfony 8 CI support
- Drop PHP <8.3 and Symfony <7.4 (both EOL), require PHP ^8.3 and symfony/config ^7.4 - Require behat ^3.31 (first version with PHP 8 attribute and PHP config support) - Upgrade phpspec to ^8.0 (supports PHP 8.5) - Add symfony/browser-kit and symfony/http-client to dev deps; switch from deprecated goutte driver to browserkit_http - Update CI matrix: PHP 8.3/8.4/8.5 × Symfony 7.4 + PHP 8.4/8.5 × Symfony 8.0/8.1 - Add Symfony 8+ CI step: override behat to 4.x-dev as 3.31.0 - Restrict push trigger to master branch only (no duplicate runs on PRs) - Add behat.dist.php for behat 4.x compatibility (PHP config format) - Update behat.yml.dist to use FQCN extension name (works in both behat 3.x and 4.x) - Add lock-symfony-version.sh script for pinning Symfony in CI Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
4
.github/workflows/lock-symfony-version.sh
vendored
Executable file
4
.github/workflows/lock-symfony-version.sh
vendored
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
cat <<< $(jq --indent 4 --arg version $VERSION '.require |= with_entries(if (.key|test("^symfony/")) then .value=$version else . end)' < composer.json) > composer.json
|
||||
cat <<< $(jq --indent 4 --arg version $VERSION '."require-dev" |= with_entries(if (.key|test("^symfony/")) then .value=$version else . end)' < composer.json) > composer.json
|
||||
49
.github/workflows/test.yaml
vendored
49
.github/workflows/test.yaml
vendored
@@ -2,8 +2,12 @@ name: Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
types: [opened, synchronize, edited, reopened]
|
||||
schedule:
|
||||
-
|
||||
cron: "0 1 * * 6" # Run at 1am every Saturday
|
||||
|
||||
jobs:
|
||||
test:
|
||||
@@ -14,24 +18,21 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-version:
|
||||
- '7.4'
|
||||
- '8.0'
|
||||
- '8.1'
|
||||
- '8.3'
|
||||
- '8.4'
|
||||
- '8.5'
|
||||
symfony-version:
|
||||
- '4.4.*'
|
||||
- '5.4.*'
|
||||
- '6.4.*'
|
||||
- '7.4.*'
|
||||
- '8.0.*'
|
||||
- '8.1.*'
|
||||
exclude:
|
||||
- php-version: '7.4'
|
||||
symfony-version: '6.4.*'
|
||||
- php-version: '8.0'
|
||||
symfony-version: '6.4.*'
|
||||
include:
|
||||
- php-version: '8.2'
|
||||
symfony-version: '7.0.*'
|
||||
- php-version: '8.3'
|
||||
symfony-version: '8.0.*'
|
||||
- php-version: '8.3'
|
||||
symfony-version: '8.1.*'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
@@ -44,8 +45,15 @@ jobs:
|
||||
- name: Validate composer.json
|
||||
run: composer validate --no-check-lock
|
||||
|
||||
- name: Configure Symfony version
|
||||
run: composer require --no-update "symfony/config:${{ matrix.symfony-version }}" "symfony/dependency-injection:${{ matrix.symfony-version }}"
|
||||
- name: Lock Symfony version
|
||||
run: VERSION=${{ matrix.symfony-version }} .github/workflows/lock-symfony-version.sh
|
||||
|
||||
- name: Require behat 4.x for Symfony 8+
|
||||
if: startsWith(matrix.symfony-version, '8.')
|
||||
run: |
|
||||
cat <<< $(jq --indent 4 '."require-dev"."behat/behat" = "4.x-dev as 3.31.0"' < composer.json) > composer.json
|
||||
composer config minimum-stability dev
|
||||
composer config prefer-stable true
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress
|
||||
@@ -54,4 +62,9 @@ jobs:
|
||||
run: vendor/bin/phpspec run -f pretty
|
||||
|
||||
- name: Behat
|
||||
run: vendor/bin/behat -fprogress --strict
|
||||
run: |
|
||||
if [[ "${{ matrix.symfony-version }}" == 8.* ]]; then
|
||||
vendor/bin/behat --config behat.dist.php -fprogress --strict
|
||||
else
|
||||
vendor/bin/behat -fprogress --strict
|
||||
fi
|
||||
|
||||
28
behat.dist.php
Normal file
28
behat.dist.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Behat\Config\Config;
|
||||
use Behat\Config\Extension;
|
||||
use Behat\Config\Profile;
|
||||
use Behat\Config\Suite;
|
||||
|
||||
return (new Config())
|
||||
->withProfile(
|
||||
(new Profile('default'))
|
||||
->withSuite(
|
||||
(new Suite('default'))
|
||||
->withPaths('%paths.base%/features')
|
||||
->withContexts(\Behat\MinkExtension\Context\MinkContext::class)
|
||||
)
|
||||
->withExtension(
|
||||
new Extension(\Behat\MinkExtension\ServiceContainer\MinkExtension::class, [
|
||||
'base_url' => 'http://en.wikipedia.org/',
|
||||
'sessions' => [
|
||||
'default' => [
|
||||
'browserkit_http' => null,
|
||||
],
|
||||
],
|
||||
])
|
||||
)
|
||||
);
|
||||
@@ -4,8 +4,8 @@ default:
|
||||
path: "%paths.base%/features"
|
||||
contexts: [Behat\MinkExtension\Context\MinkContext]
|
||||
extensions:
|
||||
Behat\MinkExtension:
|
||||
Behat\MinkExtension\ServiceContainer\MinkExtension:
|
||||
base_url: http://en.wikipedia.org/
|
||||
sessions:
|
||||
default:
|
||||
goutte: ~
|
||||
browserkit_http: ~
|
||||
|
||||
@@ -21,16 +21,17 @@
|
||||
],
|
||||
"homepage": "https://github.com/FriendsOfBehat/MinkExtension#readme",
|
||||
"require": {
|
||||
"php": "^7.4 || ^8",
|
||||
"behat/behat": "^3.0.5",
|
||||
"php": "^8.3",
|
||||
"behat/behat": "^3.31",
|
||||
"behat/mink": "^1.5",
|
||||
"symfony/config": "^4.4 || ^5.0 || ^6.0 || ^7.0",
|
||||
"symfony/deprecation-contracts": "^1.0 || ^2.0 || ^3.0"
|
||||
"symfony/config": "^7.4",
|
||||
"symfony/deprecation-contracts": "^3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"behat/mink-goutte-driver": "^1.1 || ^2.0",
|
||||
"phpspec/phpspec": "^6.0 || ^7.0 || 7.1.x-dev",
|
||||
"mink/webdriver-classic-driver": "^1.0@dev"
|
||||
"behat/mink-browserkit-driver": "^2.0",
|
||||
"phpspec/phpspec": "^8.0",
|
||||
"symfony/browser-kit": "^7.4",
|
||||
"symfony/http-client": "^7.4"
|
||||
},
|
||||
"replace": {
|
||||
"behat/mink-extension": "self.version"
|
||||
@@ -44,5 +45,11 @@
|
||||
"branch-alias": {
|
||||
"dev-master": "2.x-dev"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": [
|
||||
"vendor/bin/phpspec run -f pretty",
|
||||
"vendor/bin/behat -fprogress --strict"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user