regenerateId
of session is disabled.seeLink
and dontSeeLink
Codeception\Util\Stub
by @davertmik. See #3093 and #3080settings: backup_global
to config, to disable backup_global option of PHPUnit by @mkeasling. See #3045. Fixes #3044see
matches UTF-8 text case-insensitively by @Naktibalda. Fixes #3114--steps
will not disable code coverage. By @Naktibalda. Fixes #2620--quiet
by @EspadaV8. See #2370initializeLumen()
method has been called twice on start by @kt81. See #3124 #2607seeInDatabase
and dontSeeInDatabase
with empty criteria. Closes #3116leave()
method added to Friend class. See #3068handler
and middleware
config options to customize Guzzle handlers and middlewaresaveSessionSnapshot
with codecoverage. Closes #2923Util\Locator
added methods to create locators to match element at their position: elementAt
, firstElement
, lastElement
rebootable_client
that reboots client's kernel before each request.seeInField
for textarea with whitespaces before and after string. Closes #2921grabServiceFromContainer
use grabService
instead. For consistency with other frameworks.assert*
methods from PHPUnit addedexpectException
methodcodecept self-update
works with proxy by @gr1ev0uscodeception.yml
- settings: lint: false
scrollTo
action by @javigomez and @davertmik #2844clearQueue
for AmazonSQS by @mikitu #2805amHttpAuthenticated
allows null, null as parameters to unset authentication. #2896Util\Locator
added contains
method to easily locate any element containing a text.guard
parameters to seeAuthentication
and dontSeeAuthentication
methods. By @janhenkgerritsen. See #2876amLoggedAs
with an instance of Authenticable
. See #2795phantom
in WebDriver config in order to use PhantomJS-specific hooks.seeResponseJsonMatchesXpath
when JSON contains ampersand. By @Naktibalda.seeNumberNewLines
method to check the number of new lines in opened file. By @sergeyklayseeCurrentRouteMatches
action by @laszlo-karpati See #2665sqs
function to generate unique sequences per suite. #2766 by @johnatannvmdseeOptionIsSelected
sees first option as selected if none is selected by @NaktibaldaseeHttpHeader
and dontSeeHttpHeader
from null to expected value #2697 by @zondorstopFollowingRedirects
and startFollowingRedirects
by @brutuscatanimate_slides
config to disable left-right sliding animation between screenshots by @vml-rmottExternalUrlException
when a test tries to open a URL that is not handled by the framework, i.e. an external URL. See #2396ParseException
handles syntax error, otherwise linting happens with php -l
. @davertmikfilter_var($value, FILTER_VALIDATE_URL)
appendField
to work with content editable div by @nsanden #2588cache_router
added (disabled by default) by @raistlin.services
part added to allow access Symfony DIC while wokring with WebDriver or PhpBrowser by @laszlo-karpati See #2629_after
by @pfz. See #2572seeInField
for textareas by @nsandenenableMiddleware
and enableEvents
methods. See #2602. By @janhenkgerritsenseeCurrentRouteIs
when routes don't match. See #2593. By @maddhatter_getResponseContent
hidden method. By @NaktibaldamoveBack
method. By @NaktibaldaseeInSource
, dontSeeInSource
methods to check raw HTML instead of stripped text in see
/dontSee
. By @zbateson in #2465debugWebDriverLogs
in debug mode. Config option debug_log_entries
added. See #2471 By @MasonM and @DavertMik.json_last_error_msg
function on PHP 5.4. See #2535. By @NaktibaldaseeResponseIsJsonType
can now validate emails with string:email
definition. By @DavertMikseeResponseIsJsonType
: string|null
as well as null|string
can be used to match null type. #2522 #2500 By @vslovikdepends: Silex
in config. By @arduanov #2503expectEvents
and added seeEventTriggered
and dontSeeEventTriggered
. By @janhenkgerritsenseeCurrentRouteIs
and seeCurrentActionIs
methods. See #2517. By @janhenkgerritsenamOnRoute
and seeCurrentRouteIs
methods by @sergeyklayseeSessionHasValues
by @sergeyklaygetApplication()
method by @sergeyklayxdebug.max_nesting_level
to 200 only if it is lower. Fixes error hiding #2462 by @mhightowercleanup
flag. See #2488. By @ivokundgenerate:suite
respect bootstrap setting in #2512. By @dmitrivereshchaginseeResponseMatchesJsonType
and dontSeeResponseMatchesJsonType
. See #2391_request
and _loadPage
hidden API methods for performing arbitrary requests.seeInField
, dontSeeInField
for disabled fields #2378. See #2414.tests/_env
by @ZifiusamOnRoute
and seeCurrentRouteIs
methods by @raistlinamOnRoute
and seeCurrentRouteIs
methods module, by @NaktibaldaseeCurrentUrlEquals
and dontSeeCurrentUrlEquals
methods #2324. By @janhenkgerritsen_request()
method to send requests to backend from Helper classes.disableEvents()
, enableEvents()
and expectEvents()
methods. By @janhenkgerritsendontSeeFormErrors()
method. By @janhenkgerritsenCodeception\Exception\ExternalUrlException
when framework module tries to open an external URL #2328. By @NaktibaldaswitchToIframe
method. By @Naktibalda_before
. 2015-08-08disableMiddleware()
and enableMiddleware()
methods. By @janhenkgerritsen 2015-08-07tests/_support/_generated
directory, it will be created automatically before run.Extension\Recorder
navigate over slides with left and right arrow keys, do not create screenshots for comment steps.Extension\Recorder
generates index html for all saved records.Extension\Recorder
fixed for creating directories twice. Fixed #2216Extension\Logger
fixed #2216Stub::makeEmpty
on interfaces works again by @Naktibaldagenerate:scenarios
fixed for Cest files by @mkudenko See #1962http_proxy
and http_proxy_port
config options by @jdq22 2015-07-29haveRecord()
method in Laravel modules #2217 by @janhenkgerritsen 2015-07-28waitForElementChange
fatal error by @stipsanFacebook\WebDriver
namespace. Please take that into account when using WebDriver API directly.
Till 2.2 Codeception will keep non-namespaced aliases of WebDriver classes.test.before
and test.after
events. For instance, WebDriver browser won't be started and Db cleanups won't be executed on incomplete or skipped tests.skip
and incomplete
enabled in Cest files #2131_findElements($locator)
method added to use in Helper classes 2015-07-11
Now you can use $this->getModule('WebDriver')->findElements('.user');
in Helpers to match all elements with user
class using WebDriver moduleamOnUrl
method to open absolute URLs.fillField
using values that contain ampersands by @GawainLynch and @zbateson Issue #2132Annotations in Cept files.
Instead of calling $scenario->skip()
, $scenario->group('firefox')
, etc, it is recommended to set scenario metadata with annotations // @skip
, // @group firefox
.
Annotations can be parsed from line or block comments. $scenario->skip()
and $scenario->incomplete()
are still valid and can be executed inside conditional statements:
if (!extension_loaded('xdebug')) $scenario->skip('Xdebug required')
PSR-4: all support classes moved to tests/_support
by default. Actors, Helpers, PageObjects, StepObjects, GroupObjects to follow PSR-4 naming style. Autoloader implemented by @splinter89.
Dependency Injection: support classes can be injected into tests. Support classes can be injected into each other too. This happens by implementing method _inject
and explicitly specifying class names as parameters. Implemented by @splinter89.
Actor classes can be extended, their generated parts were moved to special traits in _generated
namespace. Each *Tester class can be updated with custom methods.
Module config simplified: Modules can be configured in enabled
section of suite config.
Conflicts: module can define conflicts with each other by implementing _conflicts
method
Dependencies: module can explicitly define dependencies and expect their injection by implementing _inject
and _depends
methods and relying on dependency injection container.
Current modules, environment, and test name can be received in scenario. Example: $scenario->current('env')
returns current environment name. Fixes #1251
Environment Matrix: environments can be merged. Environment configs can be created in tests/_envs
, environment generator added. Implemented by By @sjableka. See #1747
Custom Printers: XML, JSON, TAP, Report printers can be redefined in configuration. See #1425
[Db] Added reconnect
option for long running tests, which will connect to database before the test and disconnect after. By @Naktibalda
Module parts. Actions of modules can be loaded partially in order to disable actions which are not used in current tests. For instance, disable web actions of framework modules in unit testsing.
Kohana, Symfony1, Doctrine1 modules considered deprecated and moved to standalone packages.
shuffle
added to settings. Randomizes order of running tests. See #1504
Console output improved: scenario stack traces contain files and lines of fail.
[Doctrine2][Symfony2] symfony_em_service
config option moved from Doctrine2 to Symfony2 module and renamed to em_service
2015-06-03
[PhpBrowser][Frameworks] Fixed cloning form nodes Codeception\Lib\InnerBrowser::getFormFromCrawler(): ID XXX already defined
2015-05-13
[WebDriver] session snapshot implemented, allows to store cookies and load them, i.e., to keep user session between testss.
[WebDriver][PhpBrowser][Frameworks] Malformed XPath locators wil throw an exception #1441
MODULE_INIT
event is fired before initializing modules #1370
Graceful tests termination using pcntl_signal
. See #1286
Group classes renamed to GroupObjects; Base GroupObject class renamed to Codeception\GroupObject
Official extensions moved to ext
dir; Base Extension class renamed to Codeception\Extension
Duplicate environment options won't cause Codeception to run environment tests twice
[Phalcon1] haveServiceInDi
method implemented by @sergeyklay
[Db] seeNumRecords
method added by @sergeyklay