- Updated PHPDoc: getIterator method on Crawler returns an ArrayIterator of WebDriverElements
- Allow Symfony 7
- Improve DX when using the Symfony binary
- Fix screenshot on test failure
- Add missing arguments when calling the legacy PHPUnit extension
- Add support for PHPUnit 10
- Add support for
matches()
andclosest()
inCrawler
- Fix accessing
PantherTestCaseTrait::$webServerDir
before initialization
- Allow Symfony 6
- Add type declarations everywhere possible
- Remove Support for Symfony 4.4
- Allow deprecation-contracts 3
- Fix
Form::offsetGet()
return type
- Fix a bug preventing to disable the headless mode
- Add a
PANTHER_DEVTOOLS
environment variable to disable the dev tools - Add a
PANTHER_ERROR_SCREENSHOT_ATTACH
environment variable to attach screenshots to PHPUnit reports in the JUnit format - Add a
chromedriver_arguments
option to pass custom arguments to Chromedriver - Add an
env
option to pass custom environment variables to the built-in web server fromPantherTestCase
- Add the possibility to pass options to
ChromeManager
- Automatically find the Chromedriver binary installed by
lanfest/binary-chromedriver
- Symfony 5.3 compatibility
- Fix assertions that were not working with clients other than
PantherClient
- Fix the ability to keep the window of the browser open when a test fail by using the
--debug
option - Fix the
ServerExtension
whenregisterClient()
is called multiple times - Fix
undefined constant
errors when usingPantherTestCaseTrait
directly
- Fix storing screenshots in the wrong directory when
PANTHER_ERROR_SCREENSHOT_DIR
is enabled
- Add
Client::waitForEnabled()
,Client::waitForDisabled()
,Client::waitForAttributeToContain()
andClient::waitForAttributeToNotContain()
methods - Add
PantherTestCase::assertSelectorAttributeContains()
,PantherTestCase::assertSelectorAttributeNotContains()
,PantherTestCase::assertSelectorWillExist()
,PantherTestCase::assertSelectorWillNotExist()
,PantherTestCase::assertSelectorWillBeVisible()
,PantherTestCase::assertSelectorWillNotBeVisible()
,PantherTestCase::assertSelectorWillContain()
,PantherTestCase::assertSelectorWillNotContain()
,PantherTestCase::assertSelectorWillBeEnabled()
,PantherTestCase::assertSelectorWillBeDisabled
,PantherTestCase::assertSelectorAttributeWillContain()
, andPantherTestCase::assertSelectorAttributeWillNotContain()
assertions - Automatically take a screenshot when a test fail and if the
PANTHER_ERROR_SCREENSHOT_DIR
environment variable is set - Add missing return types
- Breaking Change: Remove the deprecated PHPUnit listener, use the PHPUnit extension instead
- Breaking Change: Remove deprecated support for Goutte, use
HttpBrowser
instead - Breaking Change: Remove deprecated support for
PANTHER_CHROME_DRIVER_BINARY
andPANTHER_GECKO_DRIVER_BINARY
environment variables, add the binaries in yourPATH
instead - Don't allow unserializing classes with a destructor
- Breaking Change: ChromeDriver and geckodriver binaries are not included in the archive anymore and must be installed separately, refer to the documentation
- PHP 8 compatibility
- Add
Client::waitForStaleness()
method to wait for an element to be removed from the DOM - Add
Client::waitForInvisibility()
method to wait for an element to be invisible - Add
Client::waitForElementToContain()
method to wait for an element containing the given parameter - Add
Client::waitForElementToNotContain()
method to wait for an element to not contain the given parameter - Add
PantherTestCase::assertSelectorIsVisible()
,PantherTestCase::assertSelectorIsNotVisible()
,PantherTestCase::assertSelectorIsEnabled()
andPantherTestCase::assertSelectorIsDisabled()
assertions - Fix
baseUri
not taken into account when using Symfony HttpBrowser
- Upgrade ChromeDriver to version 85.0.4183.87
- Upgrade geckodriver to version 0.27.0
- Add a
Client::waitForVisibility()
method to wait for an element to appear - Allow passing options to the browser manager from
PantherTestCase::createPantherClient()
- Add a
Client::ping()
method to check if the WebDriver connection is still active - Fix setting a new value to an input field when there is an existing value
- Improve the error message when the web server crashes
- Throw an explanative
LogicException
when driver is not started yet - Prevent timeouts caused by the integrated web server
- Fix the value of cookie secure flags
- Throw an exception when getting history (unsupported feature)
- Add docs to use Panther with GitHub Actions
- Various bug fixes and documentation improvements
- Fix some inconsistencies between Chrome and Firefox
- Add built-in support for Firefox (using GeckoDriver)
- Add support for Symfony HttpBrowser
- Deprecate Goutte support (use HttpBrowser instead)
- Allow configuring
RemoteWebDriver
timeouts when using Selenium - Allow passing custom environment variables to the built-in web server
- Fix some compatibility issues with PHP WebDriver 1.8
- Upgrade ChromeDriver to version 80.0.3987.106
- Prevent access to fixture files even if the web server is misconfigured
- Upgrade ChromeDriver to version 79.0.3945.36
- Allow passing custom timeouts as options of
ChromeManager
(connection_timeout_in_ms
andrequest_timeout_in_ms
)
- Add compatibility with Symfony 5
- Allow using
Client::waitFor()
to wait for invisible elements - Add support to pass XPath expressions as parameters of
Client::waitFor()
- Fix
Crawler::attr()
signature (it can returnnull
) - Deprecate
ServerListener
(useServerExtension
instead) - Upgrade ChromeDriver to version 78.0.3904.70
- New logo
- Various docs fixes and improvements
- Fix a bug occurring when using a non-fresh client
- Allow to override the
APP_ENV
environment variable passed to the web server by settingPANTHER_APP_ENV
- Fix using assertions with a client created through
PantherTestCase::createClient()
- Don't call
PantherTestCase::getClient()
if this method isn'tstatic
- Fix remaining deprecations
- Add support for Crawler test assertions
- Add the
PantherTestCase::createAdditionalPantherClient()
to retrieve additional isolated browsers, useful to test applications using Mercure or WebSocket - Improved support for non-standard web server directories
- Allow the integrated web server to start even if the homepage doesn't return a 200 HTTP status code
- Increase default timeouts from 5 seconds to 30 seconds
- Improve error messages
- Add compatibility with Symfony 4.3
- Upgrade ChromeDriver to version 76.0.3809.68
- Various quality improvements
- Remove the direct dependency to
symfony/contracts
- Speed up the boot sequence
- Add basic support for file uploads
- Add a
readinessPath
option to use a custom path for server readiness detection - Fix the behavior of
ChoiceFormField::getValue()
to be consistent with other BrowserKit implementations - Ensure to clean the previous content of field when using
TextareaFormField::setValue()
andInputFormField::setValue()
- Add a new API to manipulate the mouse
- Keep the browser window open on fail, when running in non-headless mode
- Automatically open Chrome DevTools when running in non-headless mode
- PHPUnit 8 compatibility
- Add a PHPUnit extension to keep alive the web server, and the client between tests
- Change the default port of the web server to
9080
to prevent a conflict with Xdebug - Allow to use an external web server instead of the built-in one for testing
- Allow to use a custom router script
- Allow to use a custom Chrome binary
- Add JS execution capabilities to
Client
- Allow keeping the web server and client active even after test teardown
- Add a method to refresh the crawler (
Client::refreshCrawler()
) - Add options to configure the web server and ChromeDriver
- PHP 7.1 compatibility