NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1021 most downloaded on Packagist
A browser testing and web scraping library for PHP and Symfony.
Last release 9 months ago
08 Jan 2026
Release timing varies
gaps range from 4 weeks to 1.5 years
Nearly every release is documented
notes for 25 of 26 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
26 releases · first in 2018
ci: Upgrade checkout action from v4 to v5 by @Chris53897 in #683
Full Changelog: v2.3.0...v2.4.0
Add support for PHP 8.5 Add support for Symfony 8 Disable dev-tools by default
One column per quarter.
Add support for using Selenium with the built-in web server
PANTHER_NO_REDUCED_MOTION environment variable to instruct the website to disable the reduction of non-essential movementHttpClient when using HttpBrowserwindow-size option is not set by default anymore in headless modewait* methods0 as valueImprove DX when using the Symfony binary
Add support for matches() and closest() in Crawler
matches() and closest() in CrawlerFix accessing PantherTestCaseTrait::$webServerDir before initialization by @kbond in #523
Full Changelog: v2.0.0...v2.0.1
PantherTestCaseTrait::$webServerDir before initializationAllow deprecation-contracts 3 by @derrabus in #519
Full Changelog: v1.1.2...v2.0.0
Allow deprecation-contracts 3 by @derrabus in #519
Form::offsetGet() return type by @chalasr in #500Full Changelog: v1.1.1...v1.1.2
Fix a bug preventing to disable the headless mode
Add a PANTHER_DEVTOOLS environment variable to disable the dev tools
PANTHER_DEVTOOLS environment variable to disable the dev toolsPANTHER_ERROR_SCREENSHOT_ATTACH environment variable to attach screenshots to PHPUnit reports in the JUnit formatchromedriver_arguments option to pass custom arguments to Chromedriverenv option to pass custom environment variables to the built-in web server from PantherTestCaseChromeManagerlanfest/binary-chromedriverPantherClient--debug optionServerExtension when registerClient() is called multiple timesundefined constant errors when using PantherTestCaseTrait directlyFix storing screenshots in the wrong directory when PANTHER_ERROR_SCREENSHOT_DIR is enabled
PANTHER_ERROR_SCREENSHOT_DIR is enabledBreaking Change: Remove the deprecated PHPUnit listener, use the PHPUnit extension instead
Client::waitForEnabled(), Client::waitForDisabled(), Client::waitForAttributeToContain() and Client::waitForAttributeToNotContain() methodsPantherTestCase::assertSelectorAttributeContains(), PantherTestCase::assertSelectorAttributeNotContains(), PantherTestCase::assertSelectorWillExist(),
PantherTestCase::assertSelectorWillNotExist(), PantherTestCase::assertSelectorWillBeVisible(), PantherTestCase::assertSelectorWillNotBeVisible(),
PantherTestCase::assertSelectorWillContain(), PantherTestCase::assertSelectorWillNotContain(), PantherTestCase::assertSelectorWillBeEnabled(),
PantherTestCase::assertSelectorWillBeDisabled, PantherTestCase::assertSelectorAttributeWillContain(), and PantherTestCase::assertSelectorAttributeWillNotContain()
assertionsPANTHER_ERROR_SCREENSHOT_DIR environment variable is setHttpBrowser insteadPANTHER_CHROME_DRIVER_BINARY and PANTHER_GECKO_DRIVER_BINARY environment variables, add the binaries in your PATH insteadBreaking Change: ChromeDriver and geckodriver binaries are not included in the archive anymore and must be installed separately, refer to the document…
Client::waitForStaleness() method to wait for an element to be removed from the DOMClient::waitForInvisibility() method to wait for an element to be invisibleClient::waitForElementToContain() method to wait for an element containing the given parameterClient::waitForElementToNotContain() method to wait for an element to not contain the given parameterPantherTestCase::assertSelectorIsVisible(), PantherTestCase::assertSelectorIsNotVisible(), PantherTestCase::assertSelectorIsEnabled() and PantherTestCase::assertSelectorIsDisabled() assertionsbaseUri not taken into account when using Symfony HttpBrowserUpgrade ChromeDriver to version 85.0.4183.87
Client::waitForVisibility() method to wait for an element to appearPantherTestCase::createPantherClient()Client::ping() method to check if the WebDriver connection is still activeLogicException when driver is not started yetFix some inconsistencies between Chrome and Firefox
Deprecate Goutte support (use HttpBrowser instead)
RemoteWebDriver timeouts when using SeleniumUpgrade ChromeDriver to version 79.0.3945.36
ChromeManager (connection_timeout_in_ms and request_timeout_in_ms)Deprecate ServerListener (use ServerExtension instead)
Client::waitFor() to wait for invisible elementsClient::waitFor()Crawler::attr() signature (it can return null)ServerListener (use ServerExtension instead)Fix a bug occurring when using a non-fresh client
Allow to override the APP_ENV environment variable passed to the web server by setting PANTHER_APP_ENV
APP_ENV environment variable passed to the web server by setting PANTHER_APP_ENVPantherTestCase::createClient()PantherTestCase::getClient() if this method isn't staticAdd support for Crawler test assertions
PantherTestCase::createAdditionalPantherClient() to retrieve additional isolated browsers, useful to test applications using Mercure or WebSocketRemove the direct dependency to symfony/contracts
symfony/contractsAdd basic support for file uploads
readinessPath option to use a custom path for server readiness detectionChoiceFormField::getValue() to be consistent with other BrowserKit implementationsTextareaFormField::setValue() and InputFormField::setValue()Add a new API to manipulate the mouse
9080 to prevent a conflict with XdebugAdd JS execution capabilities to Client
ClientClient::refreshCrawler())Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →