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 */