Bug fixes:
- Explicitly mark method parameters with
null
default values as nullable to avoid deprecation notice in PHP 8.4
New features:
- Added support for
symfony/css-selector
7 - Added constants for the supported key modifiers
- Improved types to help static analysis
- Added parameter types for most methods
Testsuite:
- Added CI jobs for PHP 8.2 and 8.3
- Added static analysis in our CI
New features:
- Added support for
symfony/css-selector
6 - Added
WebAssert::elementAttributeNotExists
Removed:
- Removed support for PHP <7.2
- Removed support for
symfony/css-selector
<4.4
Bug fixes:
- Fixed phpdoc for a bunch of arguments that were not properly marked as nullable
New features:
- Fixed deprecation warnings on PHP 8.1
- Improved responsiveness of
Element::waitFor
- Allowed selectors and replacements to be registered late
Removed:
- Removed support for PHP 5.3
Testsuite:
- Added CI jobs for PHP 8.0 and 8.1
Bug fixes:
- Fixed the phpdoc of
NodeElement::getValue
. This method actually returnsnull
in some cases (unchecked checkbox for instance)
New features:
- Auto-start the session on first call to
visit
.Mink::getSession()
will no longer start the session automatically. - Added support for
symfony/css-selector
4 and 5
Bug fixes:
- Fixed the message when reporting the deprecation of
ExpectationException::getSession()
- Fixed support for XPath selectors using
|
inside strings or conditions rather than as a top-level union - Fixed compatibility with PHP 7.2 not allowing to use
count
on strings
Testsuite:
- Added PHP 7.1, 7.2, 7.3 and 7.4 in the CI
- Removed HHVM from CI as they stopped supporting PHP compatibility
Driver testsuite:
- The driver testsuite is no longer part of this package. Use
mink/driver-testsuite
to run driver tests instead.
Misc:
- Changed phpdoc types from
Boolean
toboolean
to be compatible with psalm type checking
Bug fixes:
- Refactored the CssSelector to use the new API of the Symfony CssSelector component to be compatible with Symfony 3
Testsuite:
- Disallowed failures on PHP 7 on Travis (tests were passing since a long time)
Driver testsuite:
- Fixed the driver testsuite to account for driver inheritance when checking recommended practices
- Added a test for cookie values with semicolon, to ensure all drivers support it
- Improved the window resize test to consider headless browsers
- Fixed the compatibility of the testsuite with PHPUnit 5
- Added a test ensuring that
wait()
always return a boolean even when the JS expression does not cast the value - Added HTML escaping of submitted values in the driver testsuite web-fixtures
Misc:
- Removed the Mink testsuite from archives generated by Github to make them smaller
New features:
- Added
Session::getResponseHeader
to access a response header easily - Added support for header assertions
- Added a forward compatibility layer for drivers to allow them to prepare
for Mink 2.0 (they won't require any change if they use it). They should
now overwrite
CoreDriver::findElementXpaths
instead of implementingfind
andsetSession
themselves. - Added escaping of the locator in the NamedSelector rather than expecting the caller to perform the escaping. Passing an escaped locator is still supported but deprecated.
- Remove the dependency on the Session in expectation exceptions. Passing the session in the exception constructor is now deprecated. The driver should be passed instead.
Bug fixes:
- Fixed the URL assertions when comparing paths ending in
.php
- Silenced deprecation warnings (following the Symfony convention) to make
them less invasive. Use the
symfony/phpunit-bridge
to get them reported when using Mink in your PHPUnit tests. - Fixed
NodeElement::hasClass
in case the class attribute contains newlines
Testsuite:
- Made the testsuite compatible with PHPUnit strict timing mode (only the library testsuite, not the driver one)
- Added testing against PHP 7
- Added testing against lowest version of dependencies to ensure we got the lower bounds right
Driver testsuite:
- Added an extra test to ensure the right behavior when getting the HTML with empty elements
- Added a few more safeguards to ensure test failures rather than fatal errors for misbehaving drivers
- Added a test ensuring that drivers follow recommended practices
Misc:
- Added a few missing deprecation warnings for deprecated APIs or classes.
Bug fixes:
- Added a check for empty path in
WebAssert::cleanUrl()
Driver testsuite:
- Added an extra test to ensure the right behavior for traversal
Misc:
- Changed the description in the composer.json
- Switched the repository structure to use PSR-4
- Updated URLs for the move to the new Github organization
- [BC break] Changed the named selector to prefer exact matches over partial matches
- [BC break] Changed
NodeElement::getValue
for checkboxes to return the value rather than the checked state (useisChecked
for that) - Fixed the XPath prefixing when searching inside an existing element
- Refactored the driver testsuite entirely and expand it to cover drivers entirely (covering many more cases for consistency)
- Changed
NodeElement::setValue
to support any fields rather than only input elements - Removed the wrapping of any driver-level exception in a MinkException on invalid usage as it was making the code too complex
- Fixed the matching of the input type in the named selector to be case insensitive according to the HTML spec
- Introduced
Behat\Mink\Selector\Xpath\Escaper
to allow reusing the XPath escaping - Deprecated
Element::getSession
. Code needing the session should get it from outside rather than the element - Changed ElementNotFoundException to extend from ExpectationException
- Added
Element::getOuterHtml
to get the HTML code of the element including itself - Fixed the name selectors to match on the
placeholder
only for textual inputs - Enforced consistent behavior for drivers on 4xx and 5xx response to return the response rather than throwing an exception
- Added
Element::waitFor
to allow retrying some code until it succeeds or the timeout is reached - Added
Element::isValid
to check whether an element still exists in the page - Made
Session::executeScript
compatible across drivers by ensuring they all support the same syntaxes for the JS expression - Made
Session::evaluateScript
compatible across drivers by ensuring they all support the same syntaxes for the JS expression - Removed
hasClass
fromDocumentElement
(instead of triggering a fatal error) - Added testing on HHVM to ensure consistency
- Fixed
NodeElement::getTagName
to ensure that the tag name is lowercase for all drivers - Fixed
Element::hasAttribute
to ensure it supports attributes with an empty value - Fixed the
field
selector to avoid matching inputs with the typesubmit
orreset
- Changed the button XPath selection to accept
reset
buttons as well - Changed
Session::wait
to return the condition value rather than nothing - Added
Session::getWindowName
andSession::getWindowNames
to get the name of the current and of all windows - Added
Session::maximizeWindow
to maximize the window - Added
NodeElement::isSelected
to check whether an<option>
is selected - Added
NodeElement::submitForm
to allow submitting a form without using a button - Added assertions about the value of an attribute
- Added the anchor in the assertion on the URL in
WebAssert
- Add
CoreDriver
to simplify future drivers improvements - Add
Mink::isSessionStarted()
method - Fix multibite string
preg_replace
bugs - Fix handling of whitespaces in
WebAssert::pageText...()
methods
- Bump dependencies constraints
- Fix wrong test case to ensure that core drivers work as expected
- Update dependencies
- Add ElementException to element actions
- Rel attribute support for named selectors
- Add hasClass() helper to traversable elements
- Add getScreenshot() method to session
- Name attr support in named selector for button
- Fix for bunch of bugs
- New
Session::selectWindow()
andSession::selectIFrame()
methods - New built-in
WebAssert
class - Fixed DocBlocks (autocompletion in any IDE now should just work)
- Moved Behat-related code into
Behat\MinkExtension
- Removed PHPUnit test case class
- Updated composer dependencies to not require custom repository anymore
- All drivers moved into separate packages
- Prevent exceptions in
__toString()
- Added couple of useful step definitions for Behat
- Fixed issues #168, #211, #212, #208
- Lot of small bug fixes and improvements
- Fixed dependencies and composer installation routine
- Fixed webdriver registration in MinkContext
- Fixed Composer package
- Brand new Selenium2Driver (webdriver session)
- Multiselect bugfixes
- ZombieDriver back in the business
- Composer now manages dependencies
- Some MinkContext steps got fixes
- Lots of bug fixes and cleanup
- Brand new SeleniumDriver (thanks @alexandresalome)
- Multiselect support (multiple options selection), including new Behat steps
- Ability to select option by it's text (in addition to value)
- ZombieDriver updates
- Use SuiteHooks to populate parameters (no need to call parent __construct anymore)
- Updated Goutte and all vendors
- Lot of bugfixes and new tests
- Fixed Zombie.js server termination on Linux
- Fixed base_url usage for external URLs
- Added Zombie.js driver (thanks @b00giZm)
- Added pt translation (thanks Daniel Gomes)
- Refactored MinkContext and MinkTestCase
- File uploads for empty fields fixed (GoutteDriver)
- Lazy sessions restart
show_tmp_dir
option in MinkContext- Updated to stable Symfony2 components
- SahiClient connection limit bumped to 60 seconds
- Dutch language support
- ElementHtmlException fixed (thanks @Stof)
- Fixed buggy assertions in MinkContext
- Added missing tests for almost everything
- Hude speedup for SahiDriver
- Support for Behat 2.0 contexts
- Bundled PHPUnit TestCase
- Deep element traversing
- Correct behavior of getText() method
- New getHtml() method
- Basic HTTP auth support
- Soft and hard session resetting
- Cookies management
- Browser history interactions (reload(), back(), forward())
- Weaverryan'd exception messages
- Huge amount of bugfixes and small additions
- Fixed file uploads in Goutte driver
- Fixed setting of long texts into fields
- Added getPlainText() (returns text without tags and whitespaces) method to the element's API
- Start_url is now optional parameter
- Default session (if needed) name now need to be always specified by hands with setDefaultSessionName()
- default_driver => default_session
- Updated Symfony Components
- Small SahiClient update (it generates SID now if no provided)
- setActiveSessionName => setDefaultSessionName method rename
- Rewritten from scratch Mink drivers handler. Now it's sessions handler. And Mink now sessions-centric tool. See examples in readme. Much cleaner API now.
- Fixed wrong url locator function
- Fixed wrong regex in
should see
step - Fixed delimiters use in
should see
step - Added url-match step for checking urls against regex
- Updated SahiClient with new version, which is faster and cleaner with it's exceptions
- Ability to use already started browser as SahiDriver aim
- Added japanese translation for bundled steps (thanks @hidenorigoto)
- 10 seconds limit for browser connection in SahiDriver
- Fixed some bundled step definitions
- Additional step definitions
- Support for extended drivers configuration through behat.yml environment parameters
- Lots of new named selectors
- Bug fixes
- Small improvements
- Fixed Sahi url escaping
- Fixed should/should_not steps
- Added spanish translation
- Fixed forms to use element
- Fixed small UnsupportedByDriverException issue
- Initial release