From 751c3a2e6106021eb7a749e466b681f54f25ab20 Mon Sep 17 00:00:00 2001 From: Nicolas PHILIPPE Date: Sat, 29 Nov 2025 12:55:32 +0100 Subject: [PATCH] chore: suport Symfony 8 --- .github/workflows/ci.yml | 2 +- composer.json | 16 ++++++++-------- phpstan-baseline.neon | 18 +++++++++--------- src/Browser.php | 5 +++++ src/Browser/Session.php | 5 +++++ src/Browser/Session/Driver.php | 9 +++++++++ 6 files changed, 37 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ca412b2..3eac9e8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ on: jobs: test: - uses: zenstruck/.github/.github/workflows/php-test-symfony.yml@main + uses: nikophil/.github-1/.github/workflows/php-test-symfony.yml@chore/sf-8 code-coverage: uses: zenstruck/.github/.github/workflows/php-coverage-codecov.yml@main diff --git a/composer.json b/composer.json index d14913f..827885e 100644 --- a/composer.json +++ b/composer.json @@ -14,10 +14,10 @@ "require": { "php": ">=8.0", "behat/mink": "^1.8", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0|^8.0", + "symfony/css-selector": "^5.4|^6.0|^7.0|^8.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0|^8.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0|^8.0", "zenstruck/assert": "^1.1", "zenstruck/callback": "^1.4.2" }, @@ -27,10 +27,10 @@ "mtdowling/jmespath.php": "^2.6", "phpstan/phpstan": "^1.4", "phpunit/phpunit": "^9.6.21|^10.4", - "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0|^8.0", "symfony/panther": "^1.1|^2.0.1", - "symfony/phpunit-bridge": "^6.0|^7.0", - "symfony/security-bundle": "^5.4|^6.0|^7.0" + "symfony/phpunit-bridge": "^6.0|^7.0|^8.0", + "symfony/security-bundle": "^5.4|^6.0|^7.0|^8.0" }, "suggest": { "justinrainbow/json-schema": "Json schema validator. Needed to use Json::assertMatchesSchema().", @@ -46,6 +46,6 @@ "autoload-dev": { "psr-4": { "Zenstruck\\Browser\\Tests\\": "tests/" } }, - "minimum-stability": "dev", + "minimum-stability": "beta", "prefer-stable": true } diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 0add98c..746a6db 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -91,22 +91,22 @@ parameters: path: src/Browser/KernelBrowser.php - - message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver\\:\\:getFormField\\(\\) should return Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField but returns array\\\\|Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\.$#" + message: "#^Parameter \\#1 \\$client of class Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver constructor expects Symfony\\\\Component\\\\BrowserKit\\\\AbstractBrowser\\, Symfony\\\\Bundle\\\\FrameworkBundle\\\\KernelBrowser given\\.$#" count: 1 - path: src/Browser/Session/Driver/BrowserKitDriver.php + path: src/Browser/KernelBrowser.php - - message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver\\:\\:getFormNode\\(\\) should return DOMElement but returns DOMNode\\.$#" + message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver\\:\\:getFormField\\(\\) should return Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField but returns array\\\\|Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\.$#" count: 1 path: src/Browser/Session/Driver/BrowserKitDriver.php - - message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver\\:\\:getValue\\(\\) return type has no value type specified in iterable type array\\.$#" + message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver\\:\\:getFormNode\\(\\) should return DOMElement but returns DOMNode\\.$#" count: 1 path: src/Browser/Session/Driver/BrowserKitDriver.php - - message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver\\:\\:setValue\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#" + message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\BrowserKitDriver\\:\\:getValue\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 path: src/Browser/Session/Driver/BrowserKitDriver.php @@ -116,7 +116,7 @@ parameters: path: src/Browser/Session/Driver/BrowserKitDriver.php - - message: "#^Parameter \\#1 \\$value of method Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\:\\:setValue\\(\\) expects string\\|null, array\\|bool\\|string given\\.$#" + message: "#^Parameter \\#1 \\$value of method Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\:\\:setValue\\(\\) expects string\\|null, array\\\\|bool\\|string given\\.$#" count: 1 path: src/Browser/Session/Driver/BrowserKitDriver.php @@ -126,17 +126,17 @@ parameters: path: src/Browser/Session/Driver/PantherDriver.php - - message: "#^Method Zenstruck\\\\Browser\\\\Session\\\\Driver\\\\PantherDriver\\:\\:setValue\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#" + message: "#^Parameter \\#1 \\$client of method Zenstruck\\\\Browser\\\\Session\\\\Driver\\:\\:__construct\\(\\) expects Symfony\\\\Component\\\\BrowserKit\\\\AbstractBrowser\\, Symfony\\\\Component\\\\Panther\\\\Client given\\.$#" count: 1 path: src/Browser/Session/Driver/PantherDriver.php - - message: "#^Parameter \\#1 \\$value of method Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\:\\:setValue\\(\\) expects string\\|null, array\\|bool\\|string given\\.$#" + message: "#^Parameter \\#1 \\$value of method Symfony\\\\Component\\\\DomCrawler\\\\Field\\\\FormField\\:\\:setValue\\(\\) expects string\\|null, array\\\\|bool\\|string given\\.$#" count: 1 path: src/Browser/Session/Driver/PantherDriver.php - - message: "#^Parameter \\#3 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, array\\|bool\\|string given\\.$#" + message: "#^Parameter \\#3 \\.\\.\\.\\$values of function sprintf expects bool\\|float\\|int\\|string\\|null, array\\\\|bool\\|string given\\.$#" count: 1 path: src/Browser/Session/Driver/PantherDriver.php diff --git a/src/Browser.php b/src/Browser.php index de88c19..3b2a16a 100644 --- a/src/Browser.php +++ b/src/Browser.php @@ -15,8 +15,10 @@ use Psr\Container\ContainerInterface; use Symfony\Component\BrowserKit\AbstractBrowser; use Symfony\Component\BrowserKit\CookieJar; +use Symfony\Component\BrowserKit\Request; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\HttpFoundation\Response; use Zenstruck\Browser\Assertion\SameUrlAssertion; use Zenstruck\Browser\Component; use Zenstruck\Browser\Session; @@ -47,6 +49,9 @@ public function __construct(Driver $driver, array $options = []) $this->sourceDebug = $options['source_debug'] ?? false; } + /** + * @return AbstractBrowser + */ final public function client(): AbstractBrowser { return $this->session->client(); diff --git a/src/Browser/Session.php b/src/Browser/Session.php index 0077f4b..f2abb24 100644 --- a/src/Browser/Session.php +++ b/src/Browser/Session.php @@ -17,7 +17,9 @@ use Behat\Mink\Session as MinkSession; use Behat\Mink\WebAssert; use Symfony\Component\BrowserKit\AbstractBrowser; +use Symfony\Component\BrowserKit\Request; use Symfony\Component\DomCrawler\Crawler; +use Symfony\Component\HttpFoundation\Response; use Zenstruck\Assert as ZenstruckAssert; use Zenstruck\Browser\Session\Assert; use Zenstruck\Browser\Session\Driver; @@ -44,6 +46,9 @@ public static function varDump($what): void \function_exists('dump') ? dump($what) : \var_dump($what); } + /** + * @return AbstractBrowser + */ public function client(): AbstractBrowser { return $this->getDriver()->client(); diff --git a/src/Browser/Session/Driver.php b/src/Browser/Session/Driver.php index 9676b26..ba41bf0 100644 --- a/src/Browser/Session/Driver.php +++ b/src/Browser/Session/Driver.php @@ -14,6 +14,8 @@ use Behat\Mink\Driver\CoreDriver; use Behat\Mink\Exception\UnsupportedDriverActionException; use Symfony\Component\BrowserKit\AbstractBrowser; +use Symfony\Component\BrowserKit\Request; +use Symfony\Component\HttpFoundation\Response; use Zenstruck\Browser\HttpOptions; /** @@ -23,14 +25,21 @@ */ abstract class Driver extends CoreDriver { + /** @var AbstractBrowser */ private AbstractBrowser $client; private bool $started = false; + /** + * @param AbstractBrowser $client + */ public function __construct(AbstractBrowser $client) { $this->client = $client; } + /** + * @return AbstractBrowser + */ public function client(): AbstractBrowser { return $this->client;