diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5aaeca21..d1831b31 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -37,8 +37,10 @@ jobs:
- name: Install dependencies
uses: ramsey/composer-install@v3
+ with:
+ dependency-versions: highest
env:
- SYMFONY_REQUIRE: ^7
+ SYMFONY_REQUIRE: ^8
- name: Install PHPUnit dependencies
run: vendor/bin/simple-phpunit --version
@@ -195,3 +197,34 @@ jobs:
- name: Run tests
run: vendor/bin/phpunit --configuration phpunit.xml.dist.10
+
+ phpunit-11:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php-versions: ['8.2', '8.3', '8.4', '8.5']
+ fail-fast: false
+ name: PHP ${{ matrix.php-versions }} (PHPUnit 11) Test on ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: zip
+
+ - name: Install dependencies
+ uses: ramsey/composer-install@v3
+ with:
+ composer-options: "--prefer-dist"
+
+ - name: Remove phpunit-bridge dependency (not yet PHPUnit 11+ compliant)
+ run: composer remove --dev symfony/phpunit-bridge
+
+ - name: Install latest PHPUnit 11
+ run: composer require --dev --prefer-dist 'phpunit/phpunit:11.5.*'
+
+ - name: Run tests
+ run: vendor/bin/phpunit --configuration phpunit.xml.dist.11
diff --git a/composer.json b/composer.json
index 5345fa08..2405c2ab 100644
--- a/composer.json
+++ b/composer.json
@@ -32,7 +32,7 @@
"symfony/dependency-injection": "^6.4 || ^7.3 || ^8.0",
"symfony/deprecation-contracts": "^2.4 || ^3",
"symfony/dom-crawler": "^6.4 || ^7.3 || ^8.0",
- "symfony/http-client": "^6.4 || ^7.0",
+ "symfony/http-client": "^6.4 || ^7.0 || ^8.0",
"symfony/http-kernel": "^6.4 || ^7.3 || ^8.0",
"symfony/process": "^6.4 || ^7.3 || ^8.0"
},
diff --git a/phpunit.xml.dist.10 b/phpunit.xml.dist.10
index 113cfe72..4090bf13 100644
--- a/phpunit.xml.dist.10
+++ b/phpunit.xml.dist.10
@@ -21,8 +21,6 @@
-
-
diff --git a/phpunit.xml.dist.11 b/phpunit.xml.dist.11
new file mode 100644
index 00000000..5abe7b94
--- /dev/null
+++ b/phpunit.xml.dist.11
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tests
+
+
+
+
+
+ src
+
+
+
+ trigger_deprecation
+
+
+
+
diff --git a/src/Client.php b/src/Client.php
index 601f93aa..d21a07a5 100644
--- a/src/Client.php
+++ b/src/Client.php
@@ -291,7 +291,7 @@ protected function createCrawler(): PantherCrawler
return new PantherCrawler($elements, $this->webDriver, $this->webDriver->getCurrentURL());
}
- protected function doRequest($request)
+ protected function doRequest(object $request): object
{
throw new LogicException('Not useful in WebDriver mode.');
}
diff --git a/src/DomCrawler/Crawler.php b/src/DomCrawler/Crawler.php
index 1a435a29..5ef275d5 100644
--- a/src/DomCrawler/Crawler.php
+++ b/src/DomCrawler/Crawler.php
@@ -142,7 +142,7 @@ public function matches(string $selector): bool
return $this->filterXPath($xpath)->count() > 0;
}
- public function closest(string $selector): ?self
+ public function closest(string $selector): ?static
{
$converter = $this->createCssSelectorConverter();
$xpath = WebDriverBy::xpath($converter->toXPath($selector, 'self::'));
diff --git a/tests/AssertionsTest.php b/tests/AssertionsTest.php
index 231e3b16..677d8f77 100644
--- a/tests/AssertionsTest.php
+++ b/tests/AssertionsTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\BrowserKit\AbstractBrowser;
@@ -29,6 +30,7 @@ protected function setUp(): void
}
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/ClientTest.php b/tests/ClientTest.php
index 3096212d..bb65064d 100644
--- a/tests/ClientTest.php
+++ b/tests/ClientTest.php
@@ -20,6 +20,7 @@
use Facebook\WebDriver\JavaScriptExecutor;
use Facebook\WebDriver\WebDriver;
use Facebook\WebDriver\WebDriverExpectedCondition;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\BrowserKit\AbstractBrowser;
use Symfony\Component\BrowserKit\Cookie;
use Symfony\Component\BrowserKit\CookieJar as BrowserKitCookieJar;
@@ -56,6 +57,7 @@ public function testWaitForEmptyLocator(): void
$client->waitFor('');
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -83,6 +85,7 @@ public static function waitForDataProvider(): iterable
yield 'xpath expression' => ['locator' => '//*[@id="hello"]'];
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -95,6 +98,7 @@ public function testWaitForVisibility(string $locator): void
$this->assertSame('Hello', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -107,6 +111,7 @@ public function testWaitForInvisibility(string $locator): void
$this->assertSame('', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -119,6 +124,7 @@ public function testWaitForElementToContain(string $locator): void
$this->assertSame('Hello new content', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -131,6 +137,7 @@ public function testWaitForElementToNotContain(string $locator): void
$this->assertSame('Hello', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -143,6 +150,7 @@ public function testWaitForEnabled(string $locator): void
$this->assertTrue($crawler->filter('#hello')->isEnabled());
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -155,6 +163,7 @@ public function testWaitForDisabled(string $locator): void
$this->assertFalse($crawler->filter('#hello')->isEnabled());
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -167,6 +176,7 @@ public function testWaitForAttributeToContain(string $locator): void
$this->assertSame('42', $crawler->filter('#hello')->getAttribute('data-old-price'));
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -179,6 +189,7 @@ public function testWaitForAttributeToNotContain(string $locator): void
$this->assertSame('36', $crawler->filter('#hello')->getAttribute('data-old-price'));
}
+ #[DataProvider('waitForDataProvider')]
/**
* @dataProvider waitForDataProvider
*/
@@ -244,6 +255,7 @@ public static function waitForExceptionsProvider(): iterable
];
}
+ #[DataProvider('waitForExceptionsProvider')]
/**
* @dataProvider waitForExceptionsProvider
*/
@@ -287,6 +299,7 @@ public function testExecuteAsyncScript(): void
$this->assertSame('P1', $innerText);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -318,6 +331,7 @@ public function testRefreshCrawler(): void
$this->assertSame('Hello', $refreshedCrawler->filter('h1')->text(null, true));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -336,6 +350,7 @@ public function testFollowLink(callable $clientFactory, string $type): void
$this->assertSame(self::$baseUri.'/basic.html#e12', $crawler->getUri());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -391,6 +406,7 @@ public function testSubmitForm(callable $clientFactory): void
$this->assertSame('I1: n/a', $crawler->filter('#result')->text(null, true));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -417,6 +433,7 @@ public function testSubmitFormWithValues(callable $clientFactory): void
$this->assertSame('I1: Reclus', $crawler->filter('#result')->text(null, true));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -444,6 +461,7 @@ public function testHistory(callable $clientFactory): void
$this->assertSame(self::$baseUri.'/link.html', $crawler->getUri());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -496,6 +514,7 @@ public function testCookie(callable $clientFactory, string $type): void
$this->assertNull($cookieJar->get('foo'));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -506,6 +525,7 @@ public function testServerPort(callable $clientFactory): void
$this->assertEquals($expectedPort, mb_substr(self::$baseUri, -4));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -593,6 +613,7 @@ public function testCreateHttpBrowserClientWithInvalidHttpClientOptions(): void
]);
}
+ #[DataProvider('providePrefersReducedMotion')]
/**
* @dataProvider providePrefersReducedMotion
*/
@@ -605,6 +626,7 @@ public function testPrefersReducedMotion(string $browser): void
$this->assertStringEndsWith('#clicked', $client->getCurrentURL());
}
+ #[DataProvider('providePrefersReducedMotion')]
/**
* @dataProvider providePrefersReducedMotion
*/
diff --git a/tests/DomCrawler/CrawlerTest.php b/tests/DomCrawler/CrawlerTest.php
index 5932e733..1af35e9e 100644
--- a/tests/DomCrawler/CrawlerTest.php
+++ b/tests/DomCrawler/CrawlerTest.php
@@ -14,6 +14,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler;
use Facebook\WebDriver\WebDriverElement;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\Panther\Client;
use Symfony\Component\Panther\Client as PantherClient;
@@ -34,6 +35,7 @@ public function testCreateCrawler(): void
$this->assertInstanceOf(WebDriverElement::class, $crawler);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -43,6 +45,7 @@ public function testGetUri(callable $clientFactory): void
$this->assertSame(static::$baseUri.'/basic.html', $crawler->getUri());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -52,6 +55,7 @@ public function testHtml(callable $clientFactory): void
$this->assertStringContainsString('A basic page', $crawler->html());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -63,6 +67,7 @@ public function testIterate(callable $clientFactory): void
}
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -86,6 +91,7 @@ public function testFilterXpath(callable $clientFactory): void
});
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -102,6 +108,7 @@ public function testFilter(callable $clientFactory): void
$this->assertSame('Sibling 2', $crawler->filter('main')->filter('#a-sibling')->text(null, true));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -115,6 +122,7 @@ public function testReduce(callable $clientFactory): void
});
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -124,6 +132,7 @@ public function testEq(callable $clientFactory): void
$this->assertSame('a-sibling', $crawler->filter('main > p')->eq(1)->attr('id'));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -133,6 +142,7 @@ public function testFirst(callable $clientFactory): void
$this->assertSame('Sibling', $crawler->filter('main > p')->first()->text(null, true));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -142,6 +152,7 @@ public function testLast(callable $clientFactory): void
$this->assertSame('Sibling 3', $crawler->filter('main > p')->last()->text(null, true));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -157,6 +168,7 @@ public function testSiblings(callable $clientFactory): void
$this->assertSame(['Main', 'Sibling 2', 'Sibling 3'], $texts);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -173,6 +185,7 @@ public function testMatches(callable $clientFactory): void
$this->assertFalse($p->matches('.bar'));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -201,6 +214,7 @@ public function testClosest(callable $clientFactory): void
$this->assertNull($notFound);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -216,6 +230,7 @@ public function testNextAll(callable $clientFactory): void
$this->assertSame(['Sibling 2', 'Sibling 3'], $texts);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -231,6 +246,7 @@ public function testPreviousAll(callable $clientFactory): void
$this->assertSame(['Main'], $texts);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -246,6 +262,7 @@ public function testChildren(callable $clientFactory): void
$this->assertSame(['h1', 'main', 'p', 'p', 'input', 'p', 'div'], $names);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -282,6 +299,7 @@ public function testParents(callable $clientFactory): void
$this->assertSame(['main', 'body', 'html'], $names);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -297,6 +315,7 @@ public function testAncestors(callable $clientFactory): void
$this->assertSame(['main', 'body', 'html'], $names);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -310,6 +329,7 @@ public function testExtract(callable $clientFactory): void
$this->assertSame([[], [], []], $crawler->filter('main > p')->extract([]));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -339,6 +359,7 @@ public function testLink(callable $clientFactory, string $type): void
$this->assertSame('https://api-platform.com/', $link->getUri());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -365,6 +386,7 @@ public function testImage(callable $clientFactory, string $type): void
$this->assertSame('https://api-platform.com/logo-250x250.png', $image->getUri());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -374,6 +396,7 @@ public function testTextDefault(callable $clientFactory): void
$this->assertSame('default', $crawler->filter('header')->text('default'));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -383,6 +406,7 @@ public function testHtmlDefault(callable $clientFactory): void
$this->assertSame('default', $crawler->filter('header')->html('default'));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -392,6 +416,7 @@ public function testEmptyHtml(callable $clientFactory): void
$this->assertEmpty($crawler->filter('.empty')->html(''));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -401,6 +426,7 @@ public function testEmptyHtmlWithoutDefault(callable $clientFactory): void
$this->assertEmpty($crawler->filter('.empty')->html());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DomCrawler/Field/ChoiceFormFieldTest.php b/tests/DomCrawler/Field/ChoiceFormFieldTest.php
index caa84f19..2c61b79e 100644
--- a/tests/DomCrawler/Field/ChoiceFormFieldTest.php
+++ b/tests/DomCrawler/Field/ChoiceFormFieldTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler\Field;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Field\ChoiceFormField;
use Symfony\Component\Panther\Client as PantherClient;
use Symfony\Component\Panther\Tests\TestCase;
@@ -22,6 +23,7 @@
*/
class ChoiceFormFieldTest extends TestCase
{
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -36,6 +38,7 @@ public function testGetValueFromSelectIfOneIsSelected(callable $clientFactory):
$this->assertSame('20', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -50,6 +53,7 @@ public function testGetValueFromSelectIfNoneIsSelected(callable $clientFactory):
$this->assertSame('', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -64,6 +68,7 @@ public function testGetValueFromSelectMultipleIfOneIsSelected(callable $clientFa
$this->assertSame(['20'], $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -78,6 +83,7 @@ public function testGetValueFromSelectMultipleIfMultipleIsSelected(callable $cli
$this->assertSame(['20', '30'], $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -92,6 +98,7 @@ public function testGetValueFromSelectMultipleIfNoneIsSelected(callable $clientF
$this->assertSame([], $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -106,6 +113,7 @@ public function testGetValueFromRadioIfSelected(callable $clientFactory): void
$this->assertSame('i_am_checked', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -120,6 +128,7 @@ public function testGetValueFromRadioIfNoneIsChecked(callable $clientFactory): v
$this->assertNull($field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -134,6 +143,7 @@ public function testGetValueFromCheckboxIfChecked(callable $clientFactory): void
$this->assertSame('i_am_checked', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -152,6 +162,7 @@ public function testGetValueFromCheckboxIfMultipleAreChecked(callable $clientFac
$this->assertSame(['checked_one', 'checked_two'], $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DomCrawler/Field/EmailInputFormFieldTest.php b/tests/DomCrawler/Field/EmailInputFormFieldTest.php
index 4e2dc84a..2c449994 100644
--- a/tests/DomCrawler/Field/EmailInputFormFieldTest.php
+++ b/tests/DomCrawler/Field/EmailInputFormFieldTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler\Field;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Field\InputFormField;
use Symfony\Component\Panther\Tests\TestCase;
@@ -21,6 +22,7 @@
*/
class EmailInputFormFieldTest extends TestCase
{
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -35,6 +37,7 @@ public function testGetValueWithSomeValueFromTextInput(callable $clientFactory):
$this->assertSame('some_value', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -49,6 +52,7 @@ public function testGetValueWithNoValueFromTextInput(callable $clientFactory): v
$this->assertSame('', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -68,6 +72,7 @@ public function testSetValueMultipleTimesInTextInput(callable $clientFactory): v
$this->assertSame('second@example.com', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DomCrawler/Field/FileFormFieldTest.php b/tests/DomCrawler/Field/FileFormFieldTest.php
index f6d12051..2ce25874 100644
--- a/tests/DomCrawler/Field/FileFormFieldTest.php
+++ b/tests/DomCrawler/Field/FileFormFieldTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler\Field;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Field\FileFormField;
use Symfony\Component\Panther\Tests\TestCase;
@@ -38,6 +39,7 @@ private function assertValueContains($needle, $haystack): void
$this->assertContains($needle, $haystack);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -54,6 +56,7 @@ public function testFileUploadWithUpload(callable $clientFactory): void
$this->assertValueContains(self::$uploadFileName, $form['file_upload']->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -70,6 +73,7 @@ public function testFileUploadWithSetValue(callable $clientFactory): void
$this->assertValueContains(self::$uploadFileName, $form['file_upload']->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -89,6 +93,7 @@ public function testFileUploadWithSetFilePath(callable $clientFactory, $class):
$this->assertValueContains(self::$anotherUploadFileName, $form['file_upload']->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -114,6 +119,7 @@ public function testFileUploadWithInvalidValue(callable $clientFactory): void
);
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DomCrawler/Field/InputFormFieldTest.php b/tests/DomCrawler/Field/InputFormFieldTest.php
index cbe76a02..7c074d2f 100644
--- a/tests/DomCrawler/Field/InputFormFieldTest.php
+++ b/tests/DomCrawler/Field/InputFormFieldTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler\Field;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Field\InputFormField;
use Symfony\Component\Panther\Tests\TestCase;
@@ -21,6 +22,7 @@
*/
class InputFormFieldTest extends TestCase
{
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -35,6 +37,7 @@ public function testGetValueWithSomeValueFromTextInput(callable $clientFactory):
$this->assertSame('some_value', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -49,6 +52,7 @@ public function testGetValueWithNoValueFromTextInput(callable $clientFactory): v
$this->assertSame('', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DomCrawler/Field/NumberInputFormFieldTest.php b/tests/DomCrawler/Field/NumberInputFormFieldTest.php
index 43296f8f..51063da5 100644
--- a/tests/DomCrawler/Field/NumberInputFormFieldTest.php
+++ b/tests/DomCrawler/Field/NumberInputFormFieldTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler\Field;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Field\InputFormField;
use Symfony\Component\Panther\Tests\TestCase;
@@ -21,6 +22,7 @@
*/
class NumberInputFormFieldTest extends TestCase
{
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -35,6 +37,7 @@ public function testGetValueWithSomeValueFromTextInput(callable $clientFactory):
$this->assertSame('10', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -49,6 +52,7 @@ public function testGetValueWithNoValueFromTextInput(callable $clientFactory): v
$this->assertSame('', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -68,6 +72,7 @@ public function testSetValueMultipleTimesInTextInput(callable $clientFactory): v
$this->assertSame('30', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DomCrawler/Field/TextareaFormFieldTest.php b/tests/DomCrawler/Field/TextareaFormFieldTest.php
index fa27a22a..6ca487e8 100644
--- a/tests/DomCrawler/Field/TextareaFormFieldTest.php
+++ b/tests/DomCrawler/Field/TextareaFormFieldTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler\Field;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Field\TextareaFormField;
use Symfony\Component\Panther\Tests\TestCase;
@@ -21,6 +22,7 @@
*/
class TextareaFormFieldTest extends TestCase
{
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -35,6 +37,7 @@ public function testGetValueWithSomeValue(callable $clientFactory): void
$this->assertSame('some_value', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -49,6 +52,7 @@ public function testGetValueWithNoValue(callable $clientFactory): void
$this->assertSame('', $field->getValue());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DomCrawler/FormTest.php b/tests/DomCrawler/FormTest.php
index 2a07597c..16941bb6 100644
--- a/tests/DomCrawler/FormTest.php
+++ b/tests/DomCrawler/FormTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\DomCrawler;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\DomCrawler\Field\ChoiceFormField;
use Symfony\Component\Panther\Tests\TestCase;
@@ -21,6 +22,7 @@
*/
class FormTest extends TestCase
{
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -47,6 +49,7 @@ public function testFormByButton(callable $clientFactory): void
$this->assertFalse($form->has('notexist'));
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -70,6 +73,7 @@ public function testFormById(callable $clientFactory): void
$this->assertSame('DELETE', $crawler->filter('#special-submit')->form()->getMethod());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -96,6 +100,7 @@ public function testFormFields(callable $clientFactory): void
$this->assertSame($originalValues, $form->getValues());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -131,6 +136,7 @@ public function testSelect(callable $clientFactory): void
], $form->getPhpValues());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
@@ -146,6 +152,7 @@ public function testGetValuesDoesNotContainFiles(callable $clientFactory): void
$this->assertNotContains(self::$uploadFileName, $form->getValues());
}
+ #[DataProvider('clientFactoryProvider')]
/**
* @dataProvider clientFactoryProvider
*/
diff --git a/tests/DummyKernel.php b/tests/DummyKernel.php
index 36eb8a34..2ac2dfe7 100644
--- a/tests/DummyKernel.php
+++ b/tests/DummyKernel.php
@@ -26,7 +26,7 @@
*/
class DummyKernel implements KernelInterface
{
- public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true): Response
+ public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = true): Response
{
return new Response();
}
@@ -150,4 +150,9 @@ public function getBuildDir(): string
{
return '';
}
+
+ public function getShareDir(): ?string
+ {
+ return null;
+ }
}
diff --git a/tests/FutureAssertionsTest.php b/tests/FutureAssertionsTest.php
index ec0eea3c..49adaae4 100644
--- a/tests/FutureAssertionsTest.php
+++ b/tests/FutureAssertionsTest.php
@@ -13,8 +13,11 @@
namespace Symfony\Component\Panther\Tests;
+use PHPUnit\Framework\Attributes\DataProvider;
+
class FutureAssertionsTest extends TestCase
{
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureExistenceAssertion(string $locator): void
{
@@ -23,6 +26,7 @@ public function testFutureExistenceAssertion(string $locator): void
$this->assertSame('Hello', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureStalenessAssertion(string $locator): void
{
@@ -31,6 +35,7 @@ public function testFutureStalenessAssertion(string $locator): void
$this->assertCount(0, $crawler->filter('body')->children());
}
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureVisibilityAssertion(string $locator): void
{
@@ -40,6 +45,7 @@ public function testFutureVisibilityAssertion(string $locator): void
$this->assertSelectorExists($locator);
}
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureInvisibilityAssertion(string $locator): void
{
@@ -48,6 +54,7 @@ public function testFutureInvisibilityAssertion(string $locator): void
$this->assertSame('', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureContainAssertion(string $locator): void
{
@@ -56,6 +63,7 @@ public function testFutureContainAssertion(string $locator): void
$this->assertSame('Hello new content', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureNotContainAssertion(string $locator): void
{
@@ -64,6 +72,7 @@ public function testFutureNotContainAssertion(string $locator): void
$this->assertSame('Hello', $crawler->filter('#hello')->text(null, true));
}
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureEnabledAssertion(string $locator): void
{
@@ -72,6 +81,7 @@ public function testFutureEnabledAssertion(string $locator): void
$this->assertNull($crawler->filter('#hello')->getAttribute('disabled'));
}
+ #[DataProvider('futureDataProvider')]
/** @dataProvider futureDataProvider */
public function testFutureDisabledAssertion(string $locator): void
{
@@ -80,6 +90,7 @@ public function testFutureDisabledAssertion(string $locator): void
$this->assertSame('true', $crawler->filter('#hello')->getAttribute('disabled'));
}
+ #[DataProvider('futureDataProvider')]
/**
* @dataProvider futureDataProvider
*/
@@ -90,6 +101,7 @@ public function testFutureAttributeContainAssertion(string $locator): void
$this->assertSame('42', $crawler->filter('#hello')->getAttribute('data-old-price'));
}
+ #[DataProvider('futureDataProvider')]
/**
* @dataProvider futureDataProvider
*/
diff --git a/tests/ServerExtensionTest.php b/tests/ServerExtensionTest.php
index ad5f4593..cdad8db1 100644
--- a/tests/ServerExtensionTest.php
+++ b/tests/ServerExtensionTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\Panther\PantherTestCase;
use Symfony\Component\Panther\ServerExtensionLegacy;
@@ -34,6 +35,7 @@ public function testStartAndStop(): void
static::assertNull(PantherTestCase::$webServerManager);
}
+ #[DataProvider('provideTestPauseOnFailure')]
/**
* @dataProvider provideTestPauseOnFailure
*/
diff --git a/tests/WebDriver/WebDriverCheckBoxTest.php b/tests/WebDriver/WebDriverCheckBoxTest.php
index 2d1d8ac4..592f393b 100644
--- a/tests/WebDriver/WebDriverCheckBoxTest.php
+++ b/tests/WebDriver/WebDriverCheckBoxTest.php
@@ -15,6 +15,7 @@
use Facebook\WebDriver\Exception\NoSuchElementException;
use Facebook\WebDriver\Exception\UnsupportedOperationException;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\Panther\Tests\TestCase;
use Symfony\Component\Panther\WebDriver\WebDriverCheckbox;
@@ -36,6 +37,7 @@ public function testWebDriverCheckboxIsMultiple(): void
$this->assertFalse($c->isMultiple());
}
+ #[DataProvider('getOptionsDataProvider')]
/**
* @dataProvider getOptionsDataProvider
*/
@@ -74,6 +76,7 @@ public function testWebDriverCheckboxGetFirstSelectedOption(): void
$this->assertSame('j3a', $c->getFirstSelectedOption()->getAttribute('value'));
}
+ #[DataProvider('selectByValueDataProvider')]
/**
* @dataProvider selectByValueDataProvider
*/
@@ -111,6 +114,7 @@ public function testWebDriverCheckboxSelectByValueInvalid(): void
$c->selectByValue('notexist');
}
+ #[DataProvider('selectByIndexDataProvider')]
/**
* @dataProvider selectByIndexDataProvider
*/
@@ -148,6 +152,7 @@ public function testWebDriverCheckboxSelectByIndexInvalid(): void
$c->selectByIndex(\PHP_INT_MAX);
}
+ #[DataProvider('selectByVisibleTextDataProvider')]
/**
* @dataProvider selectByVisibleTextDataProvider
*/
@@ -169,6 +174,7 @@ public static function selectByVisibleTextDataProvider(): iterable
yield ['radio', 'J3C', 'j3c'];
}
+ #[DataProvider('selectByVisiblePartialTextDataProvider')]
/**
* @dataProvider selectByVisiblePartialTextDataProvider
*/
@@ -300,6 +306,7 @@ public function testWebDriverCheckboxDeselectByVisiblePartialTextRadio(): void
$c->deselectByVisiblePartialText('AB');
}
+ #[DataProvider('selectByValueDataProviderWithZeroValue')]
/**
* @dataProvider selectByValueDataProviderWithZeroValue
*/
diff --git a/tests/WebDriver/WebDriverMouseTest.php b/tests/WebDriver/WebDriverMouseTest.php
index 5c47f4e5..e7b5eae5 100644
--- a/tests/WebDriver/WebDriverMouseTest.php
+++ b/tests/WebDriver/WebDriverMouseTest.php
@@ -13,6 +13,7 @@
namespace Symfony\Component\Panther\Tests\WebDriver;
+use PHPUnit\Framework\Attributes\DataProvider;
use Symfony\Component\Panther\Tests\TestCase;
/**
@@ -25,6 +26,7 @@ public static function setUpBeforeClass(): void
self::createPantherClient()->request('GET', self::$baseUri.'/mouse.html');
}
+ #[DataProvider('provide')]
/**
* @dataProvider provide
*/