Commit 0d96ed312ae03bece59169bf203e6cd149c96c38

Authored by Yarik
1 parent a926053f

test

tests/_support/_generated/AcceptanceTesterActions.php
1   -<?php //[STAMP] 11cfc123f33c5f6417461c48aa19af00
  1 +<?php //[STAMP] 584deab9f7b9cb890a39728f7857171e
2 2 namespace _generated;
3 3  
4 4 // This class was automatically generated by build task
5 5 // You should not change it manually as it will be overwritten on next build
6 6 // @codingStandardsIgnoreFile
7 7  
8   -use Codeception\Module\WebDriver;
  8 +use Codeception\Module\PhpBrowser;
9 9 use Helper\Acceptance;
10 10  
11 11 trait AcceptanceTesterActions
... ... @@ -19,253 +19,210 @@ trait AcceptanceTesterActions
19 19 /**
20 20 * [!] Method is generated. Documentation taken from corresponding module.
21 21 *
22   - * Print out latest Selenium Logs in debug mode
23   - * @see \Codeception\Module\WebDriver::debugWebDriverLogs()
  22 + * Alias to `haveHttpHeader`
  23 + *
  24 + * @param $name
  25 + * @param $value
  26 + * @see \Codeception\Module\PhpBrowser::setHeader()
24 27 */
25   - public function debugWebDriverLogs() {
26   - return $this->getScenario()->runStep(new \Codeception\Step\Action('debugWebDriverLogs', func_get_args()));
  28 + public function setHeader($name, $value) {
  29 + return $this->getScenario()->runStep(new \Codeception\Step\Action('setHeader', func_get_args()));
27 30 }
28 31  
29 32  
30 33 /**
31 34 * [!] Method is generated. Documentation taken from corresponding module.
32 35 *
33   - * Changes the subdomain for the 'url' configuration parameter.
34   - * Does not open a page; use `amOnPage` for that.
35   - *
36   - * ``` php
37   - * <?php
38   - * // If config is: 'http://mysite.com'
39   - * // or config is: 'http://www.mysite.com'
40   - * // or config is: 'http://company.mysite.com'
41   - *
42   - * $I->amOnSubdomain('user');
43   - * $I->amOnPage('/');
44   - * // moves to http://user.mysite.com/
45   - * ?>
46   - * ```
47   - *
48   - * @param $subdomain
  36 + * Authenticates user for HTTP_AUTH
49 37 *
50   - * @return mixed
51   - * @see \Codeception\Module\WebDriver::amOnSubdomain()
  38 + * @param $username
  39 + * @param $password
  40 + * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated()
52 41 */
53   - public function amOnSubdomain($subdomain) {
54   - return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args()));
  42 + public function amHttpAuthenticated($username, $password) {
  43 + return $this->getScenario()->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args()));
55 44 }
56 45  
57 46  
58 47 /**
59 48 * [!] Method is generated. Documentation taken from corresponding module.
60 49 *
61   - * Takes a screenshot of the current window and saves it to `tests/_output/debug`.
  50 + * Open web page at the given absolute URL and sets its hostname as the base host.
62 51 *
63 52 * ``` php
64 53 * <?php
65   - * $I->amOnPage('/user/edit');
66   - * $I->makeScreenshot('edit_page');
67   - * // saved to: tests/_output/debug/edit_page.png
  54 + * $I->amOnUrl('http://codeception.com');
  55 + * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart
68 56 * ?>
69 57 * ```
70   - *
71   - * @param $name
72   - * @see \Codeception\Module\WebDriver::makeScreenshot()
  58 + * @see \Codeception\Module\PhpBrowser::amOnUrl()
73 59 */
74   - public function makeScreenshot($name) {
75   - return $this->getScenario()->runStep(new \Codeception\Step\Action('makeScreenshot', func_get_args()));
  60 + public function amOnUrl($url) {
  61 + return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args()));
76 62 }
77 63  
78 64  
79 65 /**
80 66 * [!] Method is generated. Documentation taken from corresponding module.
81 67 *
82   - * Resize the current window.
  68 + * Changes the subdomain for the 'url' configuration parameter.
  69 + * Does not open a page; use `amOnPage` for that.
83 70 *
84 71 * ``` php
85 72 * <?php
86   - * $I->resizeWindow(800, 600);
87   - *
88   - * ```
89   - *
90   - * @param int $width
91   - * @param int $height
92   - * @see \Codeception\Module\WebDriver::resizeWindow()
93   - */
94   - public function resizeWindow($width, $height) {
95   - return $this->getScenario()->runStep(new \Codeception\Step\Action('resizeWindow', func_get_args()));
96   - }
97   -
98   -
99   - /**
100   - * [!] Method is generated. Documentation taken from corresponding module.
101   - *
102   - * Checks that a cookie with the given name is set.
103   - * You can set additional cookie params like `domain`, `path` as array passed in last argument.
  73 + * // If config is: 'http://mysite.com'
  74 + * // or config is: 'http://www.mysite.com'
  75 + * // or config is: 'http://company.mysite.com'
104 76 *
105   - * ``` php
106   - * <?php
107   - * $I->seeCookie('PHPSESSID');
  77 + * $I->amOnSubdomain('user');
  78 + * $I->amOnPage('/');
  79 + * // moves to http://user.mysite.com/
108 80 * ?>
109 81 * ```
110 82 *
111   - * @param $cookie
112   - * @param array $params
113   - * @return mixed
114   - * Conditional Assertion: Test won't be stopped on fail
115   - * @see \Codeception\Module\WebDriver::seeCookie()
116   - */
117   - public function canSeeCookie($cookie, $params = null) {
118   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args()));
119   - }
120   - /**
121   - * [!] Method is generated. Documentation taken from corresponding module.
122   - *
123   - * Checks that a cookie with the given name is set.
124   - * You can set additional cookie params like `domain`, `path` as array passed in last argument.
125   - *
126   - * ``` php
127   - * <?php
128   - * $I->seeCookie('PHPSESSID');
129   - * ?>
130   - * ```
  83 + * @param $subdomain
131 84 *
132   - * @param $cookie
133   - * @param array $params
134 85 * @return mixed
135   - * @see \Codeception\Module\WebDriver::seeCookie()
  86 + * @see \Codeception\Module\PhpBrowser::amOnSubdomain()
136 87 */
137   - public function seeCookie($cookie, $params = null) {
138   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args()));
  88 + public function amOnSubdomain($subdomain) {
  89 + return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args()));
139 90 }
140 91  
141 92  
142 93 /**
143 94 * [!] Method is generated. Documentation taken from corresponding module.
144 95 *
145   - * Checks that there isn't a cookie with the given name.
146   - * You can set additional cookie params like `domain`, `path` as array passed in last argument.
147   - *
148   - * @param $cookie
149   - *
150   - * @param array $params
151   - * @return mixed
152   - * Conditional Assertion: Test won't be stopped on fail
153   - * @see \Codeception\Module\WebDriver::dontSeeCookie()
154   - */
155   - public function cantSeeCookie($cookie, $params = null) {
156   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args()));
157   - }
158   - /**
159   - * [!] Method is generated. Documentation taken from corresponding module.
160   - *
161   - * Checks that there isn't a cookie with the given name.
162   - * You can set additional cookie params like `domain`, `path` as array passed in last argument.
163   - *
164   - * @param $cookie
165   - *
166   - * @param array $params
167   - * @return mixed
168   - * @see \Codeception\Module\WebDriver::dontSeeCookie()
169   - */
170   - public function dontSeeCookie($cookie, $params = null) {
171   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args()));
172   - }
173   -
174   -
175   - /**
176   - * [!] Method is generated. Documentation taken from corresponding module.
  96 + * Low-level API method.
  97 + * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly
177 98 *
178   - * Sets a cookie with the given name and value.
179   - * You can set additional cookie params like `domain`, `path`, `expires`, `secure` in array passed as last argument.
  99 + * Example:
180 100 *
181 101 * ``` php
182 102 * <?php
183   - * $I->setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3');
  103 + * $I->executeInGuzzle(function (\GuzzleHttp\Client $client) {
  104 + * $client->get('/get', ['query' => ['foo' => 'bar']]);
  105 + * });
184 106 * ?>
185 107 * ```
186 108 *
187   - * @param $name
188   - * @param $val
189   - * @param array $params
  109 + * It is not recommended to use this command on a regular basis.
  110 + * If Codeception lacks important Guzzle Client methods, implement them and submit patches.
190 111 *
191   - * @return mixed
192   - * @see \Codeception\Module\WebDriver::setCookie()
  112 + * @param callable $function
  113 + * @see \Codeception\Module\PhpBrowser::executeInGuzzle()
193 114 */
194   - public function setCookie($cookie, $value, $params = null) {
195   - return $this->getScenario()->runStep(new \Codeception\Step\Action('setCookie', func_get_args()));
  115 + public function executeInGuzzle($function) {
  116 + return $this->getScenario()->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args()));
196 117 }
197 118  
198 119  
199 120 /**
200 121 * [!] Method is generated. Documentation taken from corresponding module.
201 122 *
202   - * Unsets cookie with the given name.
203   - * You can set additional cookie params like `domain`, `path` in array passed as last argument.
  123 + * Sets the HTTP header to the passed value - which is used on
  124 + * subsequent HTTP requests through PhpBrowser.
204 125 *
205   - * @param $cookie
  126 + * Example:
  127 + * ```php
  128 + * <?php
  129 + * $I->setHeader('X-Requested-With', 'Codeception');
  130 + * $I->amOnPage('test-headers.php');
  131 + * ?>
  132 + * ```
206 133 *
207   - * @param array $params
208   - * @return mixed
209   - * @see \Codeception\Module\WebDriver::resetCookie()
  134 + * @param string $name the name of the request header
  135 + * @param string $value the value to set it to for subsequent
  136 + * requests
  137 + * @see \Codeception\Lib\InnerBrowser::haveHttpHeader()
210 138 */
211   - public function resetCookie($cookie, $params = null) {
212   - return $this->getScenario()->runStep(new \Codeception\Step\Action('resetCookie', func_get_args()));
  139 + public function haveHttpHeader($name, $value) {
  140 + return $this->getScenario()->runStep(new \Codeception\Step\Action('haveHttpHeader', func_get_args()));
213 141 }
214 142  
215 143  
216 144 /**
217 145 * [!] Method is generated. Documentation taken from corresponding module.
218 146 *
219   - * Grabs a cookie value.
220   - * You can set additional cookie params like `domain`, `path` in array passed as last argument.
  147 + * Deletes the header with the passed name. Subsequent requests
  148 + * will not have the deleted header in its request.
221 149 *
222   - * @param $cookie
  150 + * Example:
  151 + * ```php
  152 + * <?php
  153 + * $I->haveHttpHeader('X-Requested-With', 'Codeception');
  154 + * $I->amOnPage('test-headers.php');
  155 + * // ...
  156 + * $I->deleteHeader('X-Requested-With');
  157 + * $I->amOnPage('some-other-page.php');
  158 + * ?>
  159 + * ```
223 160 *
224   - * @param array $params
225   - * @return mixed
226   - * @see \Codeception\Module\WebDriver::grabCookie()
  161 + * @param string $name the name of the header to delete.
  162 + * @see \Codeception\Lib\InnerBrowser::deleteHeader()
227 163 */
228   - public function grabCookie($cookie, $params = null) {
229   - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabCookie', func_get_args()));
  164 + public function deleteHeader($name) {
  165 + return $this->getScenario()->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args()));
230 166 }
231 167  
232 168  
233 169 /**
234 170 * [!] Method is generated. Documentation taken from corresponding module.
235 171 *
236   - * Open web page at the given absolute URL and sets its hostname as the base host.
  172 + * Opens the page for the given relative URI.
237 173 *
238 174 * ``` php
239 175 * <?php
240   - * $I->amOnUrl('http://codeception.com');
241   - * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart
242   - * ?>
  176 + * // opens front page
  177 + * $I->amOnPage('/');
  178 + * // opens /register page
  179 + * $I->amOnPage('/register');
243 180 * ```
244   - * @see \Codeception\Module\WebDriver::amOnUrl()
  181 + *
  182 + * @param $page
  183 + * @see \Codeception\Lib\InnerBrowser::amOnPage()
245 184 */
246   - public function amOnUrl($url) {
247   - return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args()));
  185 + public function amOnPage($page) {
  186 + return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args()));
248 187 }
249 188  
250 189  
251 190 /**
252 191 * [!] Method is generated. Documentation taken from corresponding module.
253 192 *
254   - * Opens the page for the given relative URI.
  193 + * Perform a click on a link or a button, given by a locator.
  194 + * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string.
  195 + * For buttons, the "value" attribute, "name" attribute, and inner text are searched.
  196 + * For links, the link text is searched.
  197 + * For images, the "alt" attribute and inner text of any parent links are searched.
  198 + *
  199 + * The second parameter is a context (CSS or XPath locator) to narrow the search.
  200 + *
  201 + * Note that if the locator matches a button of type `submit`, the form will be submitted.
255 202 *
256 203 * ``` php
257 204 * <?php
258   - * // opens front page
259   - * $I->amOnPage('/');
260   - * // opens /register page
261   - * $I->amOnPage('/register');
  205 + * // simple link
  206 + * $I->click('Logout');
  207 + * // button of form
  208 + * $I->click('Submit');
  209 + * // CSS button
  210 + * $I->click('#form input[type=submit]');
  211 + * // XPath
  212 + * $I->click('//form/*[@type=submit]');
  213 + * // link in context
  214 + * $I->click('Logout', '#nav');
  215 + * // using strict locator
  216 + * $I->click(['link' => 'Login']);
  217 + * ?>
262 218 * ```
263 219 *
264   - * @param $page
265   - * @see \Codeception\Module\WebDriver::amOnPage()
  220 + * @param $link
  221 + * @param $context
  222 + * @see \Codeception\Lib\InnerBrowser::click()
266 223 */
267   - public function amOnPage($page) {
268   - return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args()));
  224 + public function click($link, $context = null) {
  225 + return $this->getScenario()->runStep(new \Codeception\Step\Action('click', func_get_args()));
269 226 }
270 227  
271 228  
... ... @@ -301,7 +258,7 @@ trait AcceptanceTesterActions
301 258 * @param $text
302 259 * @param null $selector
303 260 * Conditional Assertion: Test won't be stopped on fail
304   - * @see \Codeception\Module\WebDriver::see()
  261 + * @see \Codeception\Lib\InnerBrowser::see()
305 262 */
306 263 public function canSee($text, $selector = null) {
307 264 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args()));
... ... @@ -337,7 +294,7 @@ trait AcceptanceTesterActions
337 294 *
338 295 * @param $text
339 296 * @param null $selector
340   - * @see \Codeception\Module\WebDriver::see()
  297 + * @see \Codeception\Lib\InnerBrowser::see()
341 298 */
342 299 public function see($text, $selector = null) {
343 300 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('see', func_get_args()));
... ... @@ -374,7 +331,7 @@ trait AcceptanceTesterActions
374 331 * @param $text
375 332 * @param null $selector
376 333 * Conditional Assertion: Test won't be stopped on fail
377   - * @see \Codeception\Module\WebDriver::dontSee()
  334 + * @see \Codeception\Lib\InnerBrowser::dontSee()
378 335 */
379 336 public function cantSee($text, $selector = null) {
380 337 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args()));
... ... @@ -408,7 +365,7 @@ trait AcceptanceTesterActions
408 365 *
409 366 * @param $text
410 367 * @param null $selector
411   - * @see \Codeception\Module\WebDriver::dontSee()
  368 + * @see \Codeception\Lib\InnerBrowser::dontSee()
412 369 */
413 370 public function dontSee($text, $selector = null) {
414 371 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args()));
... ... @@ -428,7 +385,7 @@ trait AcceptanceTesterActions
428 385 *
429 386 * @param $raw
430 387 * Conditional Assertion: Test won't be stopped on fail
431   - * @see \Codeception\Module\WebDriver::seeInSource()
  388 + * @see \Codeception\Lib\InnerBrowser::seeInSource()
432 389 */
433 390 public function canSeeInSource($raw) {
434 391 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInSource', func_get_args()));
... ... @@ -445,7 +402,7 @@ trait AcceptanceTesterActions
445 402 * ```
446 403 *
447 404 * @param $raw
448   - * @see \Codeception\Module\WebDriver::seeInSource()
  405 + * @see \Codeception\Lib\InnerBrowser::seeInSource()
449 406 */
450 407 public function seeInSource($raw) {
451 408 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInSource', func_get_args()));
... ... @@ -465,7 +422,7 @@ trait AcceptanceTesterActions
465 422 *
466 423 * @param $raw
467 424 * Conditional Assertion: Test won't be stopped on fail
468   - * @see \Codeception\Module\WebDriver::dontSeeInSource()
  425 + * @see \Codeception\Lib\InnerBrowser::dontSeeInSource()
469 426 */
470 427 public function cantSeeInSource($raw) {
471 428 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInSource', func_get_args()));
... ... @@ -482,7 +439,7 @@ trait AcceptanceTesterActions
482 439 * ```
483 440 *
484 441 * @param $raw
485   - * @see \Codeception\Module\WebDriver::dontSeeInSource()
  442 + * @see \Codeception\Lib\InnerBrowser::dontSeeInSource()
486 443 */
487 444 public function dontSeeInSource($raw) {
488 445 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInSource', func_get_args()));
... ... @@ -492,192 +449,93 @@ trait AcceptanceTesterActions
492 449 /**
493 450 * [!] Method is generated. Documentation taken from corresponding module.
494 451 *
495   - * Checks that the page source contains the given string.
  452 + * Checks that there's a link with the specified text.
  453 + * Give a full URL as the second parameter to match links with that exact URL.
496 454 *
497   - * ```php
  455 + * ``` php
498 456 * <?php
499   - * $I->seeInPageSource('<link rel="apple-touch-icon"');
  457 + * $I->seeLink('Logout'); // matches <a href="#">Logout</a>
  458 + * $I->seeLink('Logout','/logout'); // matches <a href="/logout">Logout</a>
  459 + * ?>
500 460 * ```
501 461 *
502   - * @param $text
  462 + * @param $text
  463 + * @param null $url
503 464 * Conditional Assertion: Test won't be stopped on fail
504   - * @see \Codeception\Module\WebDriver::seeInPageSource()
  465 + * @see \Codeception\Lib\InnerBrowser::seeLink()
505 466 */
506   - public function canSeeInPageSource($text) {
507   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInPageSource', func_get_args()));
  467 + public function canSeeLink($text, $url = null) {
  468 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args()));
508 469 }
509 470 /**
510 471 * [!] Method is generated. Documentation taken from corresponding module.
511 472 *
512   - * Checks that the page source contains the given string.
  473 + * Checks that there's a link with the specified text.
  474 + * Give a full URL as the second parameter to match links with that exact URL.
513 475 *
514   - * ```php
  476 + * ``` php
515 477 * <?php
516   - * $I->seeInPageSource('<link rel="apple-touch-icon"');
  478 + * $I->seeLink('Logout'); // matches <a href="#">Logout</a>
  479 + * $I->seeLink('Logout','/logout'); // matches <a href="/logout">Logout</a>
  480 + * ?>
517 481 * ```
518 482 *
519   - * @param $text
520   - * @see \Codeception\Module\WebDriver::seeInPageSource()
  483 + * @param $text
  484 + * @param null $url
  485 + * @see \Codeception\Lib\InnerBrowser::seeLink()
521 486 */
522   - public function seeInPageSource($text) {
523   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInPageSource', func_get_args()));
  487 + public function seeLink($text, $url = null) {
  488 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args()));
524 489 }
525 490  
526 491  
527 492 /**
528 493 * [!] Method is generated. Documentation taken from corresponding module.
529 494 *
530   - * Checks that the page source doesn't contain the given string.
  495 + * Checks that the page doesn't contain a link with the given string.
  496 + * If the second parameter is given, only links with a matching "href" attribute will be checked.
  497 + *
  498 + * ``` php
  499 + * <?php
  500 + * $I->dontSeeLink('Logout'); // I suppose user is not logged in
  501 + * $I->dontSeeLink('Checkout now', '/store/cart.php');
  502 + * ?>
  503 + * ```
531 504 *
532 505 * @param $text
  506 + * @param null $url
533 507 * Conditional Assertion: Test won't be stopped on fail
534   - * @see \Codeception\Module\WebDriver::dontSeeInPageSource()
  508 + * @see \Codeception\Lib\InnerBrowser::dontSeeLink()
535 509 */
536   - public function cantSeeInPageSource($text) {
537   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInPageSource', func_get_args()));
  510 + public function cantSeeLink($text, $url = null) {
  511 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args()));
538 512 }
539 513 /**
540 514 * [!] Method is generated. Documentation taken from corresponding module.
541 515 *
542   - * Checks that the page source doesn't contain the given string.
  516 + * Checks that the page doesn't contain a link with the given string.
  517 + * If the second parameter is given, only links with a matching "href" attribute will be checked.
  518 + *
  519 + * ``` php
  520 + * <?php
  521 + * $I->dontSeeLink('Logout'); // I suppose user is not logged in
  522 + * $I->dontSeeLink('Checkout now', '/store/cart.php');
  523 + * ?>
  524 + * ```
543 525 *
544 526 * @param $text
545   - * @see \Codeception\Module\WebDriver::dontSeeInPageSource()
  527 + * @param null $url
  528 + * @see \Codeception\Lib\InnerBrowser::dontSeeLink()
546 529 */
547   - public function dontSeeInPageSource($text) {
548   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInPageSource', func_get_args()));
  530 + public function dontSeeLink($text, $url = null) {
  531 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args()));
549 532 }
550 533  
551 534  
552 535 /**
553 536 * [!] Method is generated. Documentation taken from corresponding module.
554 537 *
555   - * Perform a click on a link or a button, given by a locator.
556   - * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string.
557   - * For buttons, the "value" attribute, "name" attribute, and inner text are searched.
558   - * For links, the link text is searched.
559   - * For images, the "alt" attribute and inner text of any parent links are searched.
560   - *
561   - * The second parameter is a context (CSS or XPath locator) to narrow the search.
562   - *
563   - * Note that if the locator matches a button of type `submit`, the form will be submitted.
564   - *
565   - * ``` php
566   - * <?php
567   - * // simple link
568   - * $I->click('Logout');
569   - * // button of form
570   - * $I->click('Submit');
571   - * // CSS button
572   - * $I->click('#form input[type=submit]');
573   - * // XPath
574   - * $I->click('//form/*[@type=submit]');
575   - * // link in context
576   - * $I->click('Logout', '#nav');
577   - * // using strict locator
578   - * $I->click(['link' => 'Login']);
579   - * ?>
580   - * ```
581   - *
582   - * @param $link
583   - * @param $context
584   - * @see \Codeception\Module\WebDriver::click()
585   - */
586   - public function click($link, $context = null) {
587   - return $this->getScenario()->runStep(new \Codeception\Step\Action('click', func_get_args()));
588   - }
589   -
590   -
591   - /**
592   - * [!] Method is generated. Documentation taken from corresponding module.
593   - *
594   - * Checks that there's a link with the specified text.
595   - * Give a full URL as the second parameter to match links with that exact URL.
596   - *
597   - * ``` php
598   - * <?php
599   - * $I->seeLink('Logout'); // matches <a href="#">Logout</a>
600   - * $I->seeLink('Logout','/logout'); // matches <a href="/logout">Logout</a>
601   - * ?>
602   - * ```
603   - *
604   - * @param $text
605   - * @param null $url
606   - * Conditional Assertion: Test won't be stopped on fail
607   - * @see \Codeception\Module\WebDriver::seeLink()
608   - */
609   - public function canSeeLink($text, $url = null) {
610   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args()));
611   - }
612   - /**
613   - * [!] Method is generated. Documentation taken from corresponding module.
614   - *
615   - * Checks that there's a link with the specified text.
616   - * Give a full URL as the second parameter to match links with that exact URL.
617   - *
618   - * ``` php
619   - * <?php
620   - * $I->seeLink('Logout'); // matches <a href="#">Logout</a>
621   - * $I->seeLink('Logout','/logout'); // matches <a href="/logout">Logout</a>
622   - * ?>
623   - * ```
624   - *
625   - * @param $text
626   - * @param null $url
627   - * @see \Codeception\Module\WebDriver::seeLink()
628   - */
629   - public function seeLink($text, $url = null) {
630   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args()));
631   - }
632   -
633   -
634   - /**
635   - * [!] Method is generated. Documentation taken from corresponding module.
636   - *
637   - * Checks that the page doesn't contain a link with the given string.
638   - * If the second parameter is given, only links with a matching "href" attribute will be checked.
639   - *
640   - * ``` php
641   - * <?php
642   - * $I->dontSeeLink('Logout'); // I suppose user is not logged in
643   - * $I->dontSeeLink('Checkout now', '/store/cart.php');
644   - * ?>
645   - * ```
646   - *
647   - * @param $text
648   - * @param null $url
649   - * Conditional Assertion: Test won't be stopped on fail
650   - * @see \Codeception\Module\WebDriver::dontSeeLink()
651   - */
652   - public function cantSeeLink($text, $url = null) {
653   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args()));
654   - }
655   - /**
656   - * [!] Method is generated. Documentation taken from corresponding module.
657   - *
658   - * Checks that the page doesn't contain a link with the given string.
659   - * If the second parameter is given, only links with a matching "href" attribute will be checked.
660   - *
661   - * ``` php
662   - * <?php
663   - * $I->dontSeeLink('Logout'); // I suppose user is not logged in
664   - * $I->dontSeeLink('Checkout now', '/store/cart.php');
665   - * ?>
666   - * ```
667   - *
668   - * @param $text
669   - * @param null $url
670   - * @see \Codeception\Module\WebDriver::dontSeeLink()
671   - */
672   - public function dontSeeLink($text, $url = null) {
673   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args()));
674   - }
675   -
676   -
677   - /**
678   - * [!] Method is generated. Documentation taken from corresponding module.
679   - *
680   - * Checks that current URI contains the given string.
  538 + * Checks that current URI contains the given string.
681 539 *
682 540 * ``` php
683 541 * <?php
... ... @@ -690,7 +548,7 @@ trait AcceptanceTesterActions
690 548 *
691 549 * @param $uri
692 550 * Conditional Assertion: Test won't be stopped on fail
693   - * @see \Codeception\Module\WebDriver::seeInCurrentUrl()
  551 + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl()
694 552 */
695 553 public function canSeeInCurrentUrl($uri) {
696 554 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args()));
... ... @@ -710,7 +568,7 @@ trait AcceptanceTesterActions
710 568 * ```
711 569 *
712 570 * @param $uri
713   - * @see \Codeception\Module\WebDriver::seeInCurrentUrl()
  571 + * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl()
714 572 */
715 573 public function seeInCurrentUrl($uri) {
716 574 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args()));
... ... @@ -720,158 +578,158 @@ trait AcceptanceTesterActions
720 578 /**
721 579 * [!] Method is generated. Documentation taken from corresponding module.
722 580 *
723   - * Checks that the current URL is equal to the given string.
724   - * Unlike `seeInCurrentUrl`, this only matches the full URL.
  581 + * Checks that the current URI doesn't contain the given string.
725 582 *
726 583 * ``` php
727 584 * <?php
728   - * // to match root url
729   - * $I->seeCurrentUrlEquals('/');
  585 + * $I->dontSeeInCurrentUrl('/users/');
730 586 * ?>
731 587 * ```
732 588 *
733 589 * @param $uri
734 590 * Conditional Assertion: Test won't be stopped on fail
735   - * @see \Codeception\Module\WebDriver::seeCurrentUrlEquals()
  591 + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl()
736 592 */
737   - public function canSeeCurrentUrlEquals($uri) {
738   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args()));
  593 + public function cantSeeInCurrentUrl($uri) {
  594 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args()));
739 595 }
740 596 /**
741 597 * [!] Method is generated. Documentation taken from corresponding module.
742 598 *
743   - * Checks that the current URL is equal to the given string.
744   - * Unlike `seeInCurrentUrl`, this only matches the full URL.
  599 + * Checks that the current URI doesn't contain the given string.
745 600 *
746 601 * ``` php
747 602 * <?php
748   - * // to match root url
749   - * $I->seeCurrentUrlEquals('/');
  603 + * $I->dontSeeInCurrentUrl('/users/');
750 604 * ?>
751 605 * ```
752 606 *
753 607 * @param $uri
754   - * @see \Codeception\Module\WebDriver::seeCurrentUrlEquals()
  608 + * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl()
755 609 */
756   - public function seeCurrentUrlEquals($uri) {
757   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args()));
  610 + public function dontSeeInCurrentUrl($uri) {
  611 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args()));
758 612 }
759 613  
760 614  
761 615 /**
762 616 * [!] Method is generated. Documentation taken from corresponding module.
763 617 *
764   - * Checks that the current URL matches the given regular expression.
  618 + * Checks that the current URL is equal to the given string.
  619 + * Unlike `seeInCurrentUrl`, this only matches the full URL.
765 620 *
766 621 * ``` php
767 622 * <?php
768 623 * // to match root url
769   - * $I->seeCurrentUrlMatches('~$/users/(\d+)~');
  624 + * $I->seeCurrentUrlEquals('/');
770 625 * ?>
771 626 * ```
772 627 *
773 628 * @param $uri
774 629 * Conditional Assertion: Test won't be stopped on fail
775   - * @see \Codeception\Module\WebDriver::seeCurrentUrlMatches()
  630 + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals()
776 631 */
777   - public function canSeeCurrentUrlMatches($uri) {
778   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args()));
  632 + public function canSeeCurrentUrlEquals($uri) {
  633 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args()));
779 634 }
780 635 /**
781 636 * [!] Method is generated. Documentation taken from corresponding module.
782 637 *
783   - * Checks that the current URL matches the given regular expression.
  638 + * Checks that the current URL is equal to the given string.
  639 + * Unlike `seeInCurrentUrl`, this only matches the full URL.
784 640 *
785 641 * ``` php
786 642 * <?php
787 643 * // to match root url
788   - * $I->seeCurrentUrlMatches('~$/users/(\d+)~');
  644 + * $I->seeCurrentUrlEquals('/');
789 645 * ?>
790 646 * ```
791 647 *
792 648 * @param $uri
793   - * @see \Codeception\Module\WebDriver::seeCurrentUrlMatches()
  649 + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals()
794 650 */
795   - public function seeCurrentUrlMatches($uri) {
796   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args()));
  651 + public function seeCurrentUrlEquals($uri) {
  652 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args()));
797 653 }
798 654  
799 655  
800 656 /**
801 657 * [!] Method is generated. Documentation taken from corresponding module.
802 658 *
803   - * Checks that the current URI doesn't contain the given string.
  659 + * Checks that the current URL doesn't equal the given string.
  660 + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
804 661 *
805 662 * ``` php
806 663 * <?php
807   - * $I->dontSeeInCurrentUrl('/users/');
  664 + * // current url is not root
  665 + * $I->dontSeeCurrentUrlEquals('/');
808 666 * ?>
809 667 * ```
810 668 *
811 669 * @param $uri
812 670 * Conditional Assertion: Test won't be stopped on fail
813   - * @see \Codeception\Module\WebDriver::dontSeeInCurrentUrl()
  671 + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals()
814 672 */
815   - public function cantSeeInCurrentUrl($uri) {
816   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args()));
  673 + public function cantSeeCurrentUrlEquals($uri) {
  674 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args()));
817 675 }
818 676 /**
819 677 * [!] Method is generated. Documentation taken from corresponding module.
820 678 *
821   - * Checks that the current URI doesn't contain the given string.
  679 + * Checks that the current URL doesn't equal the given string.
  680 + * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
822 681 *
823 682 * ``` php
824 683 * <?php
825   - * $I->dontSeeInCurrentUrl('/users/');
  684 + * // current url is not root
  685 + * $I->dontSeeCurrentUrlEquals('/');
826 686 * ?>
827 687 * ```
828 688 *
829 689 * @param $uri
830   - * @see \Codeception\Module\WebDriver::dontSeeInCurrentUrl()
  690 + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals()
831 691 */
832   - public function dontSeeInCurrentUrl($uri) {
833   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args()));
  692 + public function dontSeeCurrentUrlEquals($uri) {
  693 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args()));
834 694 }
835 695  
836 696  
837 697 /**
838 698 * [!] Method is generated. Documentation taken from corresponding module.
839 699 *
840   - * Checks that the current URL doesn't equal the given string.
841   - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
  700 + * Checks that the current URL matches the given regular expression.
842 701 *
843 702 * ``` php
844 703 * <?php
845   - * // current url is not root
846   - * $I->dontSeeCurrentUrlEquals('/');
  704 + * // to match root url
  705 + * $I->seeCurrentUrlMatches('~$/users/(\d+)~');
847 706 * ?>
848 707 * ```
849 708 *
850 709 * @param $uri
851 710 * Conditional Assertion: Test won't be stopped on fail
852   - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlEquals()
  711 + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches()
853 712 */
854   - public function cantSeeCurrentUrlEquals($uri) {
855   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args()));
  713 + public function canSeeCurrentUrlMatches($uri) {
  714 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args()));
856 715 }
857 716 /**
858 717 * [!] Method is generated. Documentation taken from corresponding module.
859 718 *
860   - * Checks that the current URL doesn't equal the given string.
861   - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
  719 + * Checks that the current URL matches the given regular expression.
862 720 *
863 721 * ``` php
864 722 * <?php
865   - * // current url is not root
866   - * $I->dontSeeCurrentUrlEquals('/');
  723 + * // to match root url
  724 + * $I->seeCurrentUrlMatches('~$/users/(\d+)~');
867 725 * ?>
868 726 * ```
869 727 *
870 728 * @param $uri
871   - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlEquals()
  729 + * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches()
872 730 */
873   - public function dontSeeCurrentUrlEquals($uri) {
874   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args()));
  731 + public function seeCurrentUrlMatches($uri) {
  732 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args()));
875 733 }
876 734  
877 735  
... ... @@ -889,7 +747,7 @@ trait AcceptanceTesterActions
889 747 *
890 748 * @param $uri
891 749 * Conditional Assertion: Test won't be stopped on fail
892   - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlMatches()
  750 + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches()
893 751 */
894 752 public function cantSeeCurrentUrlMatches($uri) {
895 753 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args()));
... ... @@ -907,7 +765,7 @@ trait AcceptanceTesterActions
907 765 * ```
908 766 *
909 767 * @param $uri
910   - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlMatches()
  768 + * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches()
911 769 */
912 770 public function dontSeeCurrentUrlMatches($uri) {
913 771 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args()));
... ... @@ -930,7 +788,7 @@ trait AcceptanceTesterActions
930 788 * @param null $uri
931 789 *
932 790 * @return mixed
933   - * @see \Codeception\Module\WebDriver::grabFromCurrentUrl()
  791 + * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl()
934 792 */
935 793 public function grabFromCurrentUrl($uri = null) {
936 794 return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args()));
... ... @@ -952,7 +810,7 @@ trait AcceptanceTesterActions
952 810 *
953 811 * @param $checkbox
954 812 * Conditional Assertion: Test won't be stopped on fail
955   - * @see \Codeception\Module\WebDriver::seeCheckboxIsChecked()
  813 + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked()
956 814 */
957 815 public function canSeeCheckboxIsChecked($checkbox) {
958 816 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args()));
... ... @@ -971,7 +829,7 @@ trait AcceptanceTesterActions
971 829 * ```
972 830 *
973 831 * @param $checkbox
974   - * @see \Codeception\Module\WebDriver::seeCheckboxIsChecked()
  832 + * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked()
975 833 */
976 834 public function seeCheckboxIsChecked($checkbox) {
977 835 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args()));
... ... @@ -992,7 +850,7 @@ trait AcceptanceTesterActions
992 850 *
993 851 * @param $checkbox
994 852 * Conditional Assertion: Test won't be stopped on fail
995   - * @see \Codeception\Module\WebDriver::dontSeeCheckboxIsChecked()
  853 + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked()
996 854 */
997 855 public function cantSeeCheckboxIsChecked($checkbox) {
998 856 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args()));
... ... @@ -1010,7 +868,7 @@ trait AcceptanceTesterActions
1010 868 * ```
1011 869 *
1012 870 * @param $checkbox
1013   - * @see \Codeception\Module\WebDriver::dontSeeCheckboxIsChecked()
  871 + * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked()
1014 872 */
1015 873 public function dontSeeCheckboxIsChecked($checkbox) {
1016 874 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args()));
... ... @@ -1037,7 +895,7 @@ trait AcceptanceTesterActions
1037 895 * @param $field
1038 896 * @param $value
1039 897 * Conditional Assertion: Test won't be stopped on fail
1040   - * @see \Codeception\Module\WebDriver::seeInField()
  898 + * @see \Codeception\Lib\InnerBrowser::seeInField()
1041 899 */
1042 900 public function canSeeInField($field, $value) {
1043 901 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args()));
... ... @@ -1061,7 +919,7 @@ trait AcceptanceTesterActions
1061 919 *
1062 920 * @param $field
1063 921 * @param $value
1064   - * @see \Codeception\Module\WebDriver::seeInField()
  922 + * @see \Codeception\Lib\InnerBrowser::seeInField()
1065 923 */
1066 924 public function seeInField($field, $value) {
1067 925 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args()));
... ... @@ -1088,7 +946,7 @@ trait AcceptanceTesterActions
1088 946 * @param $field
1089 947 * @param $value
1090 948 * Conditional Assertion: Test won't be stopped on fail
1091   - * @see \Codeception\Module\WebDriver::dontSeeInField()
  949 + * @see \Codeception\Lib\InnerBrowser::dontSeeInField()
1092 950 */
1093 951 public function cantSeeInField($field, $value) {
1094 952 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args()));
... ... @@ -1112,7 +970,7 @@ trait AcceptanceTesterActions
1112 970 *
1113 971 * @param $field
1114 972 * @param $value
1115   - * @see \Codeception\Module\WebDriver::dontSeeInField()
  973 + * @see \Codeception\Lib\InnerBrowser::dontSeeInField()
1116 974 */
1117 975 public function dontSeeInField($field, $value) {
1118 976 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args()));
... ... @@ -1182,7 +1040,7 @@ trait AcceptanceTesterActions
1182 1040 * @param $formSelector
1183 1041 * @param $params
1184 1042 * Conditional Assertion: Test won't be stopped on fail
1185   - * @see \Codeception\Module\WebDriver::seeInFormFields()
  1043 + * @see \Codeception\Lib\InnerBrowser::seeInFormFields()
1186 1044 */
1187 1045 public function canSeeInFormFields($formSelector, $params) {
1188 1046 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args()));
... ... @@ -1249,7 +1107,7 @@ trait AcceptanceTesterActions
1249 1107 *
1250 1108 * @param $formSelector
1251 1109 * @param $params
1252   - * @see \Codeception\Module\WebDriver::seeInFormFields()
  1110 + * @see \Codeception\Lib\InnerBrowser::seeInFormFields()
1253 1111 */
1254 1112 public function seeInFormFields($formSelector, $params) {
1255 1113 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args()));
... ... @@ -1299,7 +1157,7 @@ trait AcceptanceTesterActions
1299 1157 * @param $formSelector
1300 1158 * @param $params
1301 1159 * Conditional Assertion: Test won't be stopped on fail
1302   - * @see \Codeception\Module\WebDriver::dontSeeInFormFields()
  1160 + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields()
1303 1161 */
1304 1162 public function cantSeeInFormFields($formSelector, $params) {
1305 1163 return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args()));
... ... @@ -1346,7 +1204,7 @@ trait AcceptanceTesterActions
1346 1204 *
1347 1205 * @param $formSelector
1348 1206 * @param $params
1349   - * @see \Codeception\Module\WebDriver::dontSeeInFormFields()
  1207 + * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields()
1350 1208 */
1351 1209 public function dontSeeInFormFields($formSelector, $params) {
1352 1210 return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args()));
... ... @@ -1356,100 +1214,277 @@ trait AcceptanceTesterActions
1356 1214 /**
1357 1215 * [!] Method is generated. Documentation taken from corresponding module.
1358 1216 *
1359   - * Selects an option in a select tag or in radio button group.
  1217 + * Submits the given form on the page, optionally with the given form
  1218 + * values. Pass the form field's values as an array in the second
  1219 + * parameter.
1360 1220 *
1361   - * ``` php
1362   - * <?php
1363   - * $I->selectOption('form select[name=account]', 'Premium');
1364   - * $I->selectOption('form input[name=payment]', 'Monthly');
1365   - * $I->selectOption('//form/select[@name=account]', 'Monthly');
1366   - * ?>
1367   - * ```
  1221 + * Although this function can be used as a short-hand version of
  1222 + * `fillField()`, `selectOption()`, `click()` etc. it has some important
  1223 + * differences:
  1224 + *
  1225 + * * Only field *names* may be used, not CSS/XPath selectors nor field labels
  1226 + * * If a field is sent to this function that does *not* exist on the page,
  1227 + * it will silently be added to the HTTP request. This is helpful for testing
  1228 + * some types of forms, but be aware that you will *not* get an exception
  1229 + * like you would if you called `fillField()` or `selectOption()` with
  1230 + * a missing field.
  1231 + *
  1232 + * Fields that are not provided will be filled by their values from the page,
  1233 + * or from any previous calls to `fillField()`, `selectOption()` etc.
  1234 + * You don't need to click the 'Submit' button afterwards.
  1235 + * This command itself triggers the request to form's action.
1368 1236 *
1369   - * Provide an array for the second argument to select multiple options:
  1237 + * You can optionally specify which button's value to include
  1238 + * in the request with the last parameter (as an alternative to
  1239 + * explicitly setting its value in the second parameter), as
  1240 + * button values are not otherwise included in the request.
  1241 + *
  1242 + * Examples:
1370 1243 *
1371 1244 * ``` php
1372 1245 * <?php
1373   - * $I->selectOption('Which OS do you use?', array('Windows','Linux'));
1374   - * ?>
1375   - * ```
  1246 + * $I->submitForm('#login', [
  1247 + * 'login' => 'davert',
  1248 + * 'password' => '123456'
  1249 + * ]);
  1250 + * // or
  1251 + * $I->submitForm('#login', [
  1252 + * 'login' => 'davert',
  1253 + * 'password' => '123456'
  1254 + * ], 'submitButtonName');
1376 1255 *
1377   - * @param $select
1378   - * @param $option
1379   - * @see \Codeception\Module\WebDriver::selectOption()
1380   - */
1381   - public function selectOption($select, $option) {
1382   - return $this->getScenario()->runStep(new \Codeception\Step\Action('selectOption', func_get_args()));
1383   - }
1384   -
1385   -
1386   - /**
1387   - * [!] Method is generated. Documentation taken from corresponding module.
  1256 + * ```
1388 1257 *
  1258 + * For example, given this sample "Sign Up" form:
1389 1259 *
1390   - * @see \Codeception\Module\WebDriver::unselectOption()
1391   - */
1392   - public function unselectOption($select, $option) {
1393   - return $this->getScenario()->runStep(new \Codeception\Step\Action('unselectOption', func_get_args()));
1394   - }
1395   -
1396   -
1397   - /**
1398   - * [!] Method is generated. Documentation taken from corresponding module.
  1260 + * ``` html
  1261 + * <form action="/sign_up">
  1262 + * Login:
  1263 + * <input type="text" name="user[login]" /><br/>
  1264 + * Password:
  1265 + * <input type="password" name="user[password]" /><br/>
  1266 + * Do you agree to our terms?
  1267 + * <input type="checkbox" name="user[agree]" /><br/>
  1268 + * Select pricing plan:
  1269 + * <select name="plan">
  1270 + * <option value="1">Free</option>
  1271 + * <option value="2" selected="selected">Paid</option>
  1272 + * </select>
  1273 + * <input type="submit" name="submitButton" value="Submit" />
  1274 + * </form>
  1275 + * ```
1399 1276 *
1400   - * Ticks a checkbox. For radio buttons, use the `selectOption` method instead.
  1277 + * You could write the following to submit it:
1401 1278 *
1402 1279 * ``` php
1403 1280 * <?php
1404   - * $I->checkOption('#agree');
1405   - * ?>
1406   - * ```
1407   - *
1408   - * @param $option
1409   - * @see \Codeception\Module\WebDriver::checkOption()
  1281 + * $I->submitForm(
  1282 + * '#userForm',
  1283 + * [
  1284 + * 'user' => [
  1285 + * 'login' => 'Davert',
  1286 + * 'password' => '123456',
  1287 + * 'agree' => true
  1288 + * ]
  1289 + * ],
  1290 + * 'submitButton'
  1291 + * );
  1292 + * ```
  1293 + * Note that "2" will be the submitted value for the "plan" field, as it is
  1294 + * the selected option.
  1295 + *
  1296 + * You can also emulate a JavaScript submission by not specifying any
  1297 + * buttons in the third parameter to submitForm.
  1298 + *
  1299 + * ```php
  1300 + * <?php
  1301 + * $I->submitForm(
  1302 + * '#userForm',
  1303 + * [
  1304 + * 'user' => [
  1305 + * 'login' => 'Davert',
  1306 + * 'password' => '123456',
  1307 + * 'agree' => true
  1308 + * ]
  1309 + * ]
  1310 + * );
  1311 + * ```
  1312 + *
  1313 + * This function works well when paired with `seeInFormFields()`
  1314 + * for quickly testing CRUD interfaces and form validation logic.
  1315 + *
  1316 + * ``` php
  1317 + * <?php
  1318 + * $form = [
  1319 + * 'field1' => 'value',
  1320 + * 'field2' => 'another value',
  1321 + * 'checkbox1' => true,
  1322 + * // ...
  1323 + * ];
  1324 + * $I->submitForm('#my-form', $form, 'submitButton');
  1325 + * // $I->amOnPage('/path/to/form-page') may be needed
  1326 + * $I->seeInFormFields('#my-form', $form);
  1327 + * ```
  1328 + *
  1329 + * Parameter values can be set to arrays for multiple input fields
  1330 + * of the same name, or multi-select combo boxes. For checkboxes,
  1331 + * you can use either the string value or boolean `true`/`false` which will
  1332 + * be replaced by the checkbox's value in the DOM.
  1333 + *
  1334 + * ``` php
  1335 + * <?php
  1336 + * $I->submitForm('#my-form', [
  1337 + * 'field1' => 'value',
  1338 + * 'checkbox' => [
  1339 + * 'value of first checkbox',
  1340 + * 'value of second checkbox',
  1341 + * ],
  1342 + * 'otherCheckboxes' => [
  1343 + * true,
  1344 + * false,
  1345 + * false
  1346 + * ],
  1347 + * 'multiselect' => [
  1348 + * 'first option value',
  1349 + * 'second option value'
  1350 + * ]
  1351 + * ]);
  1352 + * ```
  1353 + *
  1354 + * Mixing string and boolean values for a checkbox's value is not supported
  1355 + * and may produce unexpected results.
  1356 + *
  1357 + * Field names ending in `[]` must be passed without the trailing square
  1358 + * bracket characters, and must contain an array for its value. This allows
  1359 + * submitting multiple values with the same name, consider:
  1360 + *
  1361 + * ```php
  1362 + * <?php
  1363 + * // This will NOT work correctly
  1364 + * $I->submitForm('#my-form', [
  1365 + * 'field[]' => 'value',
  1366 + * 'field[]' => 'another value', // 'field[]' is already a defined key
  1367 + * ]);
  1368 + * ```
  1369 + *
  1370 + * The solution is to pass an array value:
  1371 + *
  1372 + * ```php
  1373 + * <?php
  1374 + * // This way both values are submitted
  1375 + * $I->submitForm('#my-form', [
  1376 + * 'field' => [
  1377 + * 'value',
  1378 + * 'another value',
  1379 + * ]
  1380 + * ]);
  1381 + * ```
  1382 + *
  1383 + * @param $selector
  1384 + * @param $params
  1385 + * @param $button
  1386 + * @see \Codeception\Lib\InnerBrowser::submitForm()
1410 1387 */
1411   - public function checkOption($option) {
1412   - return $this->getScenario()->runStep(new \Codeception\Step\Action('checkOption', func_get_args()));
  1388 + public function submitForm($selector, $params, $button = null) {
  1389 + return $this->getScenario()->runStep(new \Codeception\Step\Action('submitForm', func_get_args()));
1413 1390 }
1414 1391  
1415 1392  
1416 1393 /**
1417 1394 * [!] Method is generated. Documentation taken from corresponding module.
1418 1395 *
1419   - * Unticks a checkbox.
  1396 + * Fills a text field or textarea with the given string.
1420 1397 *
1421 1398 * ``` php
1422 1399 * <?php
1423   - * $I->uncheckOption('#notify');
  1400 + * $I->fillField("//input[@type='text']", "Hello World!");
  1401 + * $I->fillField(['name' => 'email'], 'jon@mail.com');
  1402 + * ?>
  1403 + * ```
  1404 + *
  1405 + * @param $field
  1406 + * @param $value
  1407 + * @see \Codeception\Lib\InnerBrowser::fillField()
  1408 + */
  1409 + public function fillField($field, $value) {
  1410 + return $this->getScenario()->runStep(new \Codeception\Step\Action('fillField', func_get_args()));
  1411 + }
  1412 +
  1413 +
  1414 + /**
  1415 + * [!] Method is generated. Documentation taken from corresponding module.
  1416 + *
  1417 + * Selects an option in a select tag or in radio button group.
  1418 + *
  1419 + * ``` php
  1420 + * <?php
  1421 + * $I->selectOption('form select[name=account]', 'Premium');
  1422 + * $I->selectOption('form input[name=payment]', 'Monthly');
  1423 + * $I->selectOption('//form/select[@name=account]', 'Monthly');
1424 1424 * ?>
1425 1425 * ```
1426 1426 *
  1427 + * Provide an array for the second argument to select multiple options:
  1428 + *
  1429 + * ``` php
  1430 + * <?php
  1431 + * $I->selectOption('Which OS do you use?', array('Windows','Linux'));
  1432 + * ?>
  1433 + * ```
  1434 + *
  1435 + * Or provide an associative array for the second argument to specifically define which selection method should be used:
  1436 + *
  1437 + * ``` php
  1438 + * <?php
  1439 + * $I->selectOption('Which OS do you use?', array('text' => 'Windows')); // Only search by text 'Windows'
  1440 + * $I->selectOption('Which OS do you use?', array('value' => 'windows')); // Only search by value 'windows'
  1441 + * ?>
  1442 + + ```
  1443 + *
  1444 + * @param $select
1427 1445 * @param $option
1428   - * @see \Codeception\Module\WebDriver::uncheckOption()
  1446 + * @see \Codeception\Lib\InnerBrowser::selectOption()
1429 1447 */
1430   - public function uncheckOption($option) {
1431   - return $this->getScenario()->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args()));
  1448 + public function selectOption($select, $option) {
  1449 + return $this->getScenario()->runStep(new \Codeception\Step\Action('selectOption', func_get_args()));
1432 1450 }
1433 1451  
1434 1452  
1435 1453 /**
1436 1454 * [!] Method is generated. Documentation taken from corresponding module.
1437 1455 *
1438   - * Fills a text field or textarea with the given string.
  1456 + * Ticks a checkbox. For radio buttons, use the `selectOption` method instead.
1439 1457 *
1440 1458 * ``` php
1441 1459 * <?php
1442   - * $I->fillField("//input[@type='text']", "Hello World!");
1443   - * $I->fillField(['name' => 'email'], 'jon@mail.com');
  1460 + * $I->checkOption('#agree');
1444 1461 * ?>
1445 1462 * ```
1446 1463 *
1447   - * @param $field
1448   - * @param $value
1449   - * @see \Codeception\Module\WebDriver::fillField()
  1464 + * @param $option
  1465 + * @see \Codeception\Lib\InnerBrowser::checkOption()
1450 1466 */
1451   - public function fillField($field, $value) {
1452   - return $this->getScenario()->runStep(new \Codeception\Step\Action('fillField', func_get_args()));
  1467 + public function checkOption($option) {
  1468 + return $this->getScenario()->runStep(new \Codeception\Step\Action('checkOption', func_get_args()));
  1469 + }
  1470 +
  1471 +
  1472 + /**
  1473 + * [!] Method is generated. Documentation taken from corresponding module.
  1474 + *
  1475 + * Unticks a checkbox.
  1476 + *
  1477 + * ``` php
  1478 + * <?php
  1479 + * $I->uncheckOption('#notify');
  1480 + * ?>
  1481 + * ```
  1482 + *
  1483 + * @param $option
  1484 + * @see \Codeception\Lib\InnerBrowser::uncheckOption()
  1485 + */
  1486 + public function uncheckOption($option) {
  1487 + return $this->getScenario()->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args()));
1453 1488 }
1454 1489  
1455 1490  
... ... @@ -1467,7 +1502,7 @@ trait AcceptanceTesterActions
1467 1502 *
1468 1503 * @param $field
1469 1504 * @param $filename
1470   - * @see \Codeception\Module\WebDriver::attachFile()
  1505 + * @see \Codeception\Lib\InnerBrowser::attachFile()
1471 1506 */
1472 1507 public function attachFile($field, $filename) {
1473 1508 return $this->getScenario()->runStep(new \Codeception\Step\Action('attachFile', func_get_args()));
... ... @@ -1477,13 +1512,71 @@ trait AcceptanceTesterActions
1477 1512 /**
1478 1513 * [!] Method is generated. Documentation taken from corresponding module.
1479 1514 *
1480   - * Grabs all visible text from the current page.
  1515 + * If your page triggers an ajax request, you can perform it manually.
  1516 + * This action sends a GET ajax request with specified params.
  1517 + *
  1518 + * See ->sendAjaxPostRequest for examples.
  1519 + *
  1520 + * @param $uri
  1521 + * @param $params
  1522 + * @see \Codeception\Lib\InnerBrowser::sendAjaxGetRequest()
  1523 + */
  1524 + public function sendAjaxGetRequest($uri, $params = null) {
  1525 + return $this->getScenario()->runStep(new \Codeception\Step\Action('sendAjaxGetRequest', func_get_args()));
  1526 + }
  1527 +
  1528 +
  1529 + /**
  1530 + * [!] Method is generated. Documentation taken from corresponding module.
  1531 + *
  1532 + * If your page triggers an ajax request, you can perform it manually.
  1533 + * This action sends a POST ajax request with specified params.
  1534 + * Additional params can be passed as array.
  1535 + *
  1536 + * Example:
  1537 + *
  1538 + * Imagine that by clicking checkbox you trigger ajax request which updates user settings.
  1539 + * We emulate that click by running this ajax request manually.
  1540 + *
  1541 + * ``` php
  1542 + * <?php
  1543 + * $I->sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST
  1544 + * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GET
  1545 + *
  1546 + * ```
  1547 + *
  1548 + * @param $uri
  1549 + * @param $params
  1550 + * @see \Codeception\Lib\InnerBrowser::sendAjaxPostRequest()
  1551 + */
  1552 + public function sendAjaxPostRequest($uri, $params = null) {
  1553 + return $this->getScenario()->runStep(new \Codeception\Step\Action('sendAjaxPostRequest', func_get_args()));
  1554 + }
  1555 +
  1556 +
  1557 + /**
  1558 + * [!] Method is generated. Documentation taken from corresponding module.
  1559 + *
  1560 + * If your page triggers an ajax request, you can perform it manually.
  1561 + * This action sends an ajax request with specified method and params.
  1562 + *
  1563 + * Example:
  1564 + *
  1565 + * You need to perform an ajax request specifying the HTTP method.
1481 1566 *
1482   - * @return string
1483   - * @see \Codeception\Module\WebDriver::getVisibleText()
  1567 + * ``` php
  1568 + * <?php
  1569 + * $I->sendAjaxRequest('PUT', '/posts/7', array('title' => 'new title'));
  1570 + *
  1571 + * ```
  1572 + *
  1573 + * @param $method
  1574 + * @param $uri
  1575 + * @param $params
  1576 + * @see \Codeception\Lib\InnerBrowser::sendAjaxRequest()
1484 1577 */
1485   - public function getVisibleText() {
1486   - return $this->getScenario()->runStep(new \Codeception\Step\Action('getVisibleText', func_get_args()));
  1578 + public function sendAjaxRequest($method, $uri, $params = null) {
  1579 + return $this->getScenario()->runStep(new \Codeception\Step\Action('sendAjaxRequest', func_get_args()));
1487 1580 }
1488 1581  
1489 1582  
... ... @@ -1504,7 +1597,7 @@ trait AcceptanceTesterActions
1504 1597 * @param $cssOrXPathOrRegex
1505 1598 *
1506 1599 * @return mixed
1507   - * @see \Codeception\Module\WebDriver::grabTextFrom()
  1600 + * @see \Codeception\Lib\InnerBrowser::grabTextFrom()
1508 1601 */
1509 1602 public function grabTextFrom($cssOrXPathOrRegex) {
1510 1603 return $this->getScenario()->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args()));
... ... @@ -1528,7 +1621,7 @@ trait AcceptanceTesterActions
1528 1621 * @param $attribute
1529 1622 *
1530 1623 * @return mixed
1531   - * @see \Codeception\Module\WebDriver::grabAttributeFrom()
  1624 + * @see \Codeception\Lib\InnerBrowser::grabAttributeFrom()
1532 1625 */
1533 1626 public function grabAttributeFrom($cssOrXpath, $attribute) {
1534 1627 return $this->getScenario()->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args()));
... ... @@ -1538,31 +1631,6 @@ trait AcceptanceTesterActions
1538 1631 /**
1539 1632 * [!] Method is generated. Documentation taken from corresponding module.
1540 1633 *
1541   - * Finds the value for the given form field.
1542   - * If a fuzzy locator is used, the field is found by field name, CSS, and XPath.
1543   - *
1544   - * ``` php
1545   - * <?php
1546   - * $name = $I->grabValueFrom('Name');
1547   - * $name = $I->grabValueFrom('input[name=username]');
1548   - * $name = $I->grabValueFrom('descendant-or-self::form/descendant::input[@name = 'username']');
1549   - * $name = $I->grabValueFrom(['name' => 'username']);
1550   - * ?>
1551   - * ```
1552   - *
1553   - * @param $field
1554   - *
1555   - * @return mixed
1556   - * @see \Codeception\Module\WebDriver::grabValueFrom()
1557   - */
1558   - public function grabValueFrom($field) {
1559   - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args()));
1560   - }
1561   -
1562   -
1563   - /**
1564   - * [!] Method is generated. Documentation taken from corresponding module.
1565   - *
1566 1634 * Grabs either the text content, or attribute values, of nodes
1567 1635 * matched by $cssOrXpath and returns them as an array.
1568 1636 *
... ... @@ -1585,7 +1653,7 @@ trait AcceptanceTesterActions
1585 1653 * @param $cssOrXpath
1586 1654 * @param $attribute
1587 1655 * @return string[]
1588   - * @see \Codeception\Module\WebDriver::grabMultiple()
  1656 + * @see \Codeception\Lib\InnerBrowser::grabMultiple()
1589 1657 */
1590 1658 public function grabMultiple($cssOrXpath, $attribute = null) {
1591 1659 return $this->getScenario()->runStep(new \Codeception\Step\Action('grabMultiple', func_get_args()));
... ... @@ -1595,1092 +1663,534 @@ trait AcceptanceTesterActions
1595 1663 /**
1596 1664 * [!] Method is generated. Documentation taken from corresponding module.
1597 1665 *
1598   - * Checks that the given element exists on the page and is visible.
1599   - * You can also specify expected attributes of this element.
1600   - *
1601   - * ``` php
1602   - * <?php
1603   - * $I->seeElement('.error');
1604   - * $I->seeElement('//form/input[1]');
1605   - * $I->seeElement('input', ['name' => 'login']);
1606   - * $I->seeElement('input', ['value' => '123456']);
1607   - *
1608   - * // strict locator in first arg, attributes in second
1609   - * $I->seeElement(['css' => 'form input'], ['name' => 'login']);
1610   - * ?>
1611   - * ```
  1666 + * @param $field
1612 1667 *
1613   - * @param $selector
1614   - * @param array $attributes
1615   - * @return
1616   - * Conditional Assertion: Test won't be stopped on fail
1617   - * @see \Codeception\Module\WebDriver::seeElement()
  1668 + * @return array|mixed|null|string
  1669 + * @see \Codeception\Lib\InnerBrowser::grabValueFrom()
1618 1670 */
1619   - public function canSeeElement($selector, $attributes = null) {
1620   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args()));
  1671 + public function grabValueFrom($field) {
  1672 + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args()));
1621 1673 }
  1674 +
  1675 +
1622 1676 /**
1623 1677 * [!] Method is generated. Documentation taken from corresponding module.
1624 1678 *
1625   - * Checks that the given element exists on the page and is visible.
1626   - * You can also specify expected attributes of this element.
  1679 + * Sets a cookie with the given name and value.
  1680 + * You can set additional cookie params like `domain`, `path`, `expires`, `secure` in array passed as last argument.
1627 1681 *
1628 1682 * ``` php
1629 1683 * <?php
1630   - * $I->seeElement('.error');
1631   - * $I->seeElement('//form/input[1]');
1632   - * $I->seeElement('input', ['name' => 'login']);
1633   - * $I->seeElement('input', ['value' => '123456']);
1634   - *
1635   - * // strict locator in first arg, attributes in second
1636   - * $I->seeElement(['css' => 'form input'], ['name' => 'login']);
  1684 + * $I->setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3');
1637 1685 * ?>
1638 1686 * ```
1639 1687 *
1640   - * @param $selector
1641   - * @param array $attributes
1642   - * @return
1643   - * @see \Codeception\Module\WebDriver::seeElement()
1644   - */
1645   - public function seeElement($selector, $attributes = null) {
1646   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args()));
1647   - }
1648   -
1649   -
1650   - /**
1651   - * [!] Method is generated. Documentation taken from corresponding module.
1652   - *
1653   - * Checks that the given element is invisible or not present on the page.
1654   - * You can also specify expected attributes of this element.
1655   - *
1656   - * ``` php
1657   - * <?php
1658   - * $I->dontSeeElement('.error');
1659   - * $I->dontSeeElement('//form/input[1]');
1660   - * $I->dontSeeElement('input', ['name' => 'login']);
1661   - * $I->dontSeeElement('input', ['value' => '123456']);
1662   - * ?>
1663   - * ```
1664   - *
1665   - * @param $selector
1666   - * @param array $attributes
1667   - * Conditional Assertion: Test won't be stopped on fail
1668   - * @see \Codeception\Module\WebDriver::dontSeeElement()
1669   - */
1670   - public function cantSeeElement($selector, $attributes = null) {
1671   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args()));
1672   - }
1673   - /**
1674   - * [!] Method is generated. Documentation taken from corresponding module.
1675   - *
1676   - * Checks that the given element is invisible or not present on the page.
1677   - * You can also specify expected attributes of this element.
1678   - *
1679   - * ``` php
1680   - * <?php
1681   - * $I->dontSeeElement('.error');
1682   - * $I->dontSeeElement('//form/input[1]');
1683   - * $I->dontSeeElement('input', ['name' => 'login']);
1684   - * $I->dontSeeElement('input', ['value' => '123456']);
1685   - * ?>
1686   - * ```
1687   - *
1688   - * @param $selector
1689   - * @param array $attributes
1690   - * @see \Codeception\Module\WebDriver::dontSeeElement()
1691   - */
1692   - public function dontSeeElement($selector, $attributes = null) {
1693   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args()));
1694   - }
1695   -
1696   -
1697   - /**
1698   - * [!] Method is generated. Documentation taken from corresponding module.
1699   - *
1700   - * Checks that the given element exists on the page, even it is invisible.
1701   - *
1702   - * ``` php
1703   - * <?php
1704   - * $I->seeElementInDOM('//form/input[type=hidden]');
1705   - * ?>
1706   - * ```
1707   - *
1708   - * @param $selector
1709   - * Conditional Assertion: Test won't be stopped on fail
1710   - * @see \Codeception\Module\WebDriver::seeElementInDOM()
1711   - */
1712   - public function canSeeElementInDOM($selector, $attributes = null) {
1713   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElementInDOM', func_get_args()));
1714   - }
1715   - /**
1716   - * [!] Method is generated. Documentation taken from corresponding module.
1717   - *
1718   - * Checks that the given element exists on the page, even it is invisible.
1719   - *
1720   - * ``` php
1721   - * <?php
1722   - * $I->seeElementInDOM('//form/input[type=hidden]');
1723   - * ?>
1724   - * ```
1725   - *
1726   - * @param $selector
1727   - * @see \Codeception\Module\WebDriver::seeElementInDOM()
1728   - */
1729   - public function seeElementInDOM($selector, $attributes = null) {
1730   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElementInDOM', func_get_args()));
1731   - }
1732   -
1733   -
1734   - /**
1735   - * [!] Method is generated. Documentation taken from corresponding module.
1736   - *
1737   - * Opposite of `seeElementInDOM`.
1738   - *
1739   - * @param $selector
1740   - * Conditional Assertion: Test won't be stopped on fail
1741   - * @see \Codeception\Module\WebDriver::dontSeeElementInDOM()
1742   - */
1743   - public function cantSeeElementInDOM($selector, $attributes = null) {
1744   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElementInDOM', func_get_args()));
1745   - }
1746   - /**
1747   - * [!] Method is generated. Documentation taken from corresponding module.
1748   - *
1749   - * Opposite of `seeElementInDOM`.
1750   - *
1751   - * @param $selector
1752   - * @see \Codeception\Module\WebDriver::dontSeeElementInDOM()
1753   - */
1754   - public function dontSeeElementInDOM($selector, $attributes = null) {
1755   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeElementInDOM', func_get_args()));
1756   - }
1757   -
1758   -
1759   - /**
1760   - * [!] Method is generated. Documentation taken from corresponding module.
1761   - *
1762   - * Checks that there are a certain number of elements matched by the given locator on the page.
1763   - *
1764   - * ``` php
1765   - * <?php
1766   - * $I->seeNumberOfElements('tr', 10);
1767   - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements
1768   - * ?>
1769   - * ```
1770   - * @param $selector
1771   - * @param mixed $expected :
1772   - * - string: strict number
1773   - * - array: range of numbers [0,10]
1774   - * Conditional Assertion: Test won't be stopped on fail
1775   - * @see \Codeception\Module\WebDriver::seeNumberOfElements()
1776   - */
1777   - public function canSeeNumberOfElements($selector, $expected) {
1778   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args()));
1779   - }
1780   - /**
1781   - * [!] Method is generated. Documentation taken from corresponding module.
1782   - *
1783   - * Checks that there are a certain number of elements matched by the given locator on the page.
1784   - *
1785   - * ``` php
1786   - * <?php
1787   - * $I->seeNumberOfElements('tr', 10);
1788   - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements
1789   - * ?>
1790   - * ```
1791   - * @param $selector
1792   - * @param mixed $expected :
1793   - * - string: strict number
1794   - * - array: range of numbers [0,10]
1795   - * @see \Codeception\Module\WebDriver::seeNumberOfElements()
1796   - */
1797   - public function seeNumberOfElements($selector, $expected) {
1798   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args()));
1799   - }
1800   -
1801   -
1802   - /**
1803   - * [!] Method is generated. Documentation taken from corresponding module.
1804   - *
1805   - *
1806   - * Conditional Assertion: Test won't be stopped on fail
1807   - * @see \Codeception\Module\WebDriver::seeNumberOfElementsInDOM()
1808   - */
1809   - public function canSeeNumberOfElementsInDOM($selector, $expected) {
1810   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElementsInDOM', func_get_args()));
1811   - }
1812   - /**
1813   - * [!] Method is generated. Documentation taken from corresponding module.
1814   - *
1815   - *
1816   - * @see \Codeception\Module\WebDriver::seeNumberOfElementsInDOM()
1817   - */
1818   - public function seeNumberOfElementsInDOM($selector, $expected) {
1819   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElementsInDOM', func_get_args()));
1820   - }
1821   -
1822   -
1823   - /**
1824   - * [!] Method is generated. Documentation taken from corresponding module.
1825   - *
1826   - * Checks that the given option is selected.
1827   - *
1828   - * ``` php
1829   - * <?php
1830   - * $I->seeOptionIsSelected('#form input[name=payment]', 'Visa');
1831   - * ?>
1832   - * ```
1833   - *
1834   - * @param $selector
1835   - * @param $optionText
1836   - *
1837   - * @return mixed
1838   - * Conditional Assertion: Test won't be stopped on fail
1839   - * @see \Codeception\Module\WebDriver::seeOptionIsSelected()
1840   - */
1841   - public function canSeeOptionIsSelected($selector, $optionText) {
1842   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args()));
1843   - }
1844   - /**
1845   - * [!] Method is generated. Documentation taken from corresponding module.
1846   - *
1847   - * Checks that the given option is selected.
1848   - *
1849   - * ``` php
1850   - * <?php
1851   - * $I->seeOptionIsSelected('#form input[name=payment]', 'Visa');
1852   - * ?>
1853   - * ```
1854   - *
1855   - * @param $selector
1856   - * @param $optionText
  1688 + * @param $name
  1689 + * @param $val
  1690 + * @param array $params
1857 1691 *
1858 1692 * @return mixed
1859   - * @see \Codeception\Module\WebDriver::seeOptionIsSelected()
  1693 + * @see \Codeception\Lib\InnerBrowser::setCookie()
1860 1694 */
1861   - public function seeOptionIsSelected($selector, $optionText) {
1862   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args()));
  1695 + public function setCookie($name, $val, $params = null) {
  1696 + return $this->getScenario()->runStep(new \Codeception\Step\Action('setCookie', func_get_args()));
1863 1697 }
1864 1698  
1865 1699  
1866 1700 /**
1867 1701 * [!] Method is generated. Documentation taken from corresponding module.
1868 1702 *
1869   - * Checks that the given option is not selected.
1870   - *
1871   - * ``` php
1872   - * <?php
1873   - * $I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
1874   - * ?>
1875   - * ```
1876   - *
1877   - * @param $selector
1878   - * @param $optionText
1879   - *
1880   - * @return mixed
1881   - * Conditional Assertion: Test won't be stopped on fail
1882   - * @see \Codeception\Module\WebDriver::dontSeeOptionIsSelected()
1883   - */
1884   - public function cantSeeOptionIsSelected($selector, $optionText) {
1885   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args()));
1886   - }
1887   - /**
1888   - * [!] Method is generated. Documentation taken from corresponding module.
1889   - *
1890   - * Checks that the given option is not selected.
1891   - *
1892   - * ``` php
1893   - * <?php
1894   - * $I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
1895   - * ?>
1896   - * ```
  1703 + * Grabs a cookie value.
  1704 + * You can set additional cookie params like `domain`, `path` in array passed as last argument.
1897 1705 *
1898   - * @param $selector
1899   - * @param $optionText
  1706 + * @param $cookie
1900 1707 *
  1708 + * @param array $params
1901 1709 * @return mixed
1902   - * @see \Codeception\Module\WebDriver::dontSeeOptionIsSelected()
  1710 + * @see \Codeception\Lib\InnerBrowser::grabCookie()
1903 1711 */
1904   - public function dontSeeOptionIsSelected($selector, $optionText) {
1905   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args()));
  1712 + public function grabCookie($cookie, $params = null) {
  1713 + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabCookie', func_get_args()));
1906 1714 }
1907 1715  
1908 1716  
1909 1717 /**
1910 1718 * [!] Method is generated. Documentation taken from corresponding module.
1911 1719 *
1912   - * Checks that the page title contains the given string.
  1720 + * Checks that a cookie with the given name is set.
  1721 + * You can set additional cookie params like `domain`, `path` as array passed in last argument.
1913 1722 *
1914 1723 * ``` php
1915 1724 * <?php
1916   - * $I->seeInTitle('Blog - Post #1');
  1725 + * $I->seeCookie('PHPSESSID');
1917 1726 * ?>
1918 1727 * ```
1919 1728 *
1920   - * @param $title
1921   - *
  1729 + * @param $cookie
  1730 + * @param array $params
1922 1731 * @return mixed
1923 1732 * Conditional Assertion: Test won't be stopped on fail
1924   - * @see \Codeception\Module\WebDriver::seeInTitle()
  1733 + * @see \Codeception\Lib\InnerBrowser::seeCookie()
1925 1734 */
1926   - public function canSeeInTitle($title) {
1927   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args()));
  1735 + public function canSeeCookie($cookie, $params = null) {
  1736 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args()));
1928 1737 }
1929 1738 /**
1930 1739 * [!] Method is generated. Documentation taken from corresponding module.
1931 1740 *
1932   - * Checks that the page title contains the given string.
  1741 + * Checks that a cookie with the given name is set.
  1742 + * You can set additional cookie params like `domain`, `path` as array passed in last argument.
1933 1743 *
1934 1744 * ``` php
1935 1745 * <?php
1936   - * $I->seeInTitle('Blog - Post #1');
  1746 + * $I->seeCookie('PHPSESSID');
1937 1747 * ?>
1938 1748 * ```
1939 1749 *
1940   - * @param $title
1941   - *
1942   - * @return mixed
1943   - * @see \Codeception\Module\WebDriver::seeInTitle()
1944   - */
1945   - public function seeInTitle($title) {
1946   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args()));
1947   - }
1948   -
1949   -
1950   - /**
1951   - * [!] Method is generated. Documentation taken from corresponding module.
1952   - *
1953   - * Checks that the page title does not contain the given string.
1954   - *
1955   - * @param $title
1956   - *
1957   - * @return mixed
1958   - * Conditional Assertion: Test won't be stopped on fail
1959   - * @see \Codeception\Module\WebDriver::dontSeeInTitle()
1960   - */
1961   - public function cantSeeInTitle($title) {
1962   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args()));
1963   - }
1964   - /**
1965   - * [!] Method is generated. Documentation taken from corresponding module.
1966   - *
1967   - * Checks that the page title does not contain the given string.
1968   - *
1969   - * @param $title
1970   - *
  1750 + * @param $cookie
  1751 + * @param array $params
1971 1752 * @return mixed
1972   - * @see \Codeception\Module\WebDriver::dontSeeInTitle()
1973   - */
1974   - public function dontSeeInTitle($title) {
1975   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args()));
1976   - }
1977   -
1978   -
1979   - /**
1980   - * [!] Method is generated. Documentation taken from corresponding module.
1981   - *
1982   - * Accepts the active JavaScript native popup window, as created by `window.alert`|`window.confirm`|`window.prompt`.
1983   - * Don't confuse popups with modal windows, as created by [various libraries](http://jster.net/category/windows-modals-popups).
1984   - * @see \Codeception\Module\WebDriver::acceptPopup()
1985   - */
1986   - public function acceptPopup() {
1987   - return $this->getScenario()->runStep(new \Codeception\Step\Action('acceptPopup', func_get_args()));
1988   - }
1989   -
1990   -
1991   - /**
1992   - * [!] Method is generated. Documentation taken from corresponding module.
1993   - *
1994   - * Dismisses the active JavaScript popup, as created by `window.alert`|`window.confirm`|`window.prompt`.
1995   - * @see \Codeception\Module\WebDriver::cancelPopup()
1996   - */
1997   - public function cancelPopup() {
1998   - return $this->getScenario()->runStep(new \Codeception\Step\Action('cancelPopup', func_get_args()));
1999   - }
2000   -
2001   -
2002   - /**
2003   - * [!] Method is generated. Documentation taken from corresponding module.
2004   - *
2005   - * Checks that the active JavaScript popup, as created by `window.alert`|`window.confirm`|`window.prompt`, contains the given string.
2006   - *
2007   - * @param $text
2008   - * Conditional Assertion: Test won't be stopped on fail
2009   - * @see \Codeception\Module\WebDriver::seeInPopup()
2010   - */
2011   - public function canSeeInPopup($text) {
2012   - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInPopup', func_get_args()));
2013   - }
2014   - /**
2015   - * [!] Method is generated. Documentation taken from corresponding module.
2016   - *
2017   - * Checks that the active JavaScript popup, as created by `window.alert`|`window.confirm`|`window.prompt`, contains the given string.
2018   - *
2019   - * @param $text
2020   - * @see \Codeception\Module\WebDriver::seeInPopup()
2021   - */
2022   - public function seeInPopup($text) {
2023   - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInPopup', func_get_args()));
2024   - }
2025   -
2026   -
2027   - /**
2028   - * [!] Method is generated. Documentation taken from corresponding module.
2029   - *
2030   - * Enters text into a native JavaScript prompt popup, as created by `window.prompt`.
2031   - *
2032   - * @param $keys
2033   - * @see \Codeception\Module\WebDriver::typeInPopup()
2034   - */
2035   - public function typeInPopup($keys) {
2036   - return $this->getScenario()->runStep(new \Codeception\Step\Action('typeInPopup', func_get_args()));
2037   - }
2038   -
2039   -
2040   - /**
2041   - * [!] Method is generated. Documentation taken from corresponding module.
2042   - *
2043   - * Reloads the current page.
2044   - * @see \Codeception\Module\WebDriver::reloadPage()
  1753 + * @see \Codeception\Lib\InnerBrowser::seeCookie()
2045 1754 */
2046   - public function reloadPage() {
2047   - return $this->getScenario()->runStep(new \Codeception\Step\Action('reloadPage', func_get_args()));
2048   - }
2049   -
2050   -
2051   - /**
2052   - * [!] Method is generated. Documentation taken from corresponding module.
2053   - *
2054   - * Moves back in history.
2055   - * @see \Codeception\Module\WebDriver::moveBack()
2056   - */
2057   - public function moveBack() {
2058   - return $this->getScenario()->runStep(new \Codeception\Step\Action('moveBack', func_get_args()));
2059   - }
2060   -
2061   -
2062   - /**
2063   - * [!] Method is generated. Documentation taken from corresponding module.
2064   - *
2065   - * Moves forward in history.
2066   - * @see \Codeception\Module\WebDriver::moveForward()
2067   - */
2068   - public function moveForward() {
2069   - return $this->getScenario()->runStep(new \Codeception\Step\Action('moveForward', func_get_args()));
  1755 + public function seeCookie($cookie, $params = null) {
  1756 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args()));
2070 1757 }
2071 1758  
2072 1759  
2073 1760 /**
2074 1761 * [!] Method is generated. Documentation taken from corresponding module.
2075 1762 *
2076   - * Submits the given form on the page, optionally with the given form
2077   - * values. Give the form fields values as an array. Note that hidden fields
2078   - * can't be accessed.
2079   - *
2080   - * Skipped fields will be filled by their values from the page.
2081   - * You don't need to click the 'Submit' button afterwards.
2082   - * This command itself triggers the request to form's action.
2083   - *
2084   - * You can optionally specify what button's value to include
2085   - * in the request with the last parameter as an alternative to
2086   - * explicitly setting its value in the second parameter, as
2087   - * button values are not otherwise included in the request.
2088   - *
2089   - * Examples:
2090   - *
2091   - * ``` php
2092   - * <?php
2093   - * $I->submitForm('#login', [
2094   - * 'login' => 'davert',
2095   - * 'password' => '123456'
2096   - * ]);
2097   - * // or
2098   - * $I->submitForm('#login', [
2099   - * 'login' => 'davert',
2100   - * 'password' => '123456'
2101   - * ], 'submitButtonName');
2102   - *
2103   - * ```
2104   - *
2105   - * For example, given this sample "Sign Up" form:
2106   - *
2107   - * ``` html
2108   - * <form action="/sign_up">
2109   - * Login:
2110   - * <input type="text" name="user[login]" /><br/>
2111   - * Password:
2112   - * <input type="password" name="user[password]" /><br/>
2113   - * Do you agree to our terms?
2114   - * <input type="checkbox" name="user[agree]" /><br/>
2115   - * Select pricing plan:
2116   - * <select name="plan">
2117   - * <option value="1">Free</option>
2118   - * <option value="2" selected="selected">Paid</option>
2119   - * </select>
2120   - * <input type="submit" name="submitButton" value="Submit" />
2121   - * </form>
2122   - * ```
2123   - *
2124   - * You could write the following to submit it:
2125   - *
2126   - * ``` php
2127   - * <?php
2128   - * $I->submitForm(
2129   - * '#userForm',
2130   - * [
2131   - * 'user[login]' => 'Davert',
2132   - * 'user[password]' => '123456',
2133   - * 'user[agree]' => true
2134   - * ],
2135   - * 'submitButton'
2136   - * );
2137   - * ```
2138   - * Note that "2" will be the submitted value for the "plan" field, as it is
2139   - * the selected option.
2140   - *
2141   - * Also note that this differs from PhpBrowser, in that
2142   - * ```'user' => [ 'login' => 'Davert' ]``` is not supported at the moment.
2143   - * Named array keys *must* be included in the name as above.
2144   - *
2145   - * Pair this with seeInFormFields for quick testing magic.
2146   - *
2147   - * ``` php
2148   - * <?php
2149   - * $form = [
2150   - * 'field1' => 'value',
2151   - * 'field2' => 'another value',
2152   - * 'checkbox1' => true,
2153   - * // ...
2154   - * ];
2155   - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton');
2156   - * // $I->amOnPage('/path/to/form-page') may be needed
2157   - * $I->seeInFormFields('//form[@id=my-form]', $form);
2158   - * ?>
2159   - * ```
2160   - *
2161   - * Parameter values must be set to arrays for multiple input fields
2162   - * of the same name, or multi-select combo boxes. For checkboxes,
2163   - * either the string value can be used, or boolean values which will
2164   - * be replaced by the checkbox's value in the DOM.
2165   - *
2166   - * ``` php
2167   - * <?php
2168   - * $I->submitForm('#my-form', [
2169   - * 'field1' => 'value',
2170   - * 'checkbox' => [
2171   - * 'value of first checkbox',
2172   - * 'value of second checkbox,
2173   - * ],
2174   - * 'otherCheckboxes' => [
2175   - * true,
2176   - * false,
2177   - * false
2178   - * ],
2179   - * 'multiselect' => [
2180   - * 'first option value',
2181   - * 'second option value'
2182   - * ]
2183   - * ]);
2184   - * ?>
2185   - * ```
2186   - *
2187   - * Mixing string and boolean values for a checkbox's value is not supported
2188   - * and may produce unexpected results.
2189   - *
2190   - * Field names ending in "[]" must be passed without the trailing square
2191   - * bracket characters, and must contain an array for its value. This allows
2192   - * submitting multiple values with the same name, consider:
2193   - *
2194   - * ```php
2195   - * $I->submitForm('#my-form', [
2196   - * 'field[]' => 'value',
2197   - * 'field[]' => 'another value', // 'field[]' is already a defined key
2198   - * ]);
2199   - * ```
  1763 + * Checks that there isn't a cookie with the given name.
  1764 + * You can set additional cookie params like `domain`, `path` as array passed in last argument.
2200 1765 *
2201   - * The solution is to pass an array value:
  1766 + * @param $cookie
2202 1767 *
2203   - * ```php
2204   - * // this way both values are submitted
2205   - * $I->submitForm('#my-form', [
2206   - * 'field' => [
2207   - * 'value',
2208   - * 'another value',
2209   - * ]
2210   - * ]);
2211   - * ```
2212   - * @param $selector
2213   - * @param $params
2214   - * @param $button
2215   - * @see \Codeception\Module\WebDriver::submitForm()
  1768 + * @param array $params
  1769 + * @return mixed
  1770 + * Conditional Assertion: Test won't be stopped on fail
  1771 + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie()
2216 1772 */
2217   - public function submitForm($selector, $params, $button = null) {
2218   - return $this->getScenario()->runStep(new \Codeception\Step\Action('submitForm', func_get_args()));
  1773 + public function cantSeeCookie($cookie, $params = null) {
  1774 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args()));
2219 1775 }
2220   -
2221   -
2222 1776 /**
2223 1777 * [!] Method is generated. Documentation taken from corresponding module.
2224 1778 *
2225   - * Waits up to $timeout seconds for the given element to change.
2226   - * Element "change" is determined by a callback function which is called repeatedly until the return value evaluates to true.
  1779 + * Checks that there isn't a cookie with the given name.
  1780 + * You can set additional cookie params like `domain`, `path` as array passed in last argument.
2227 1781 *
2228   - * ``` php
2229   - * <?php
2230   - * use \Facebook\WebDriver\WebDriverElement
2231   - * $I->waitForElementChange('#menu', function(WebDriverElement $el) {
2232   - * return $el->isDisplayed();
2233   - * }, 100);
2234   - * ?>
2235   - * ```
  1782 + * @param $cookie
2236 1783 *
2237   - * @param $element
2238   - * @param \Closure $callback
2239   - * @param int $timeout seconds
2240   - * @throws \Codeception\Exception\ElementNotFound
2241   - * @see \Codeception\Module\WebDriver::waitForElementChange()
  1784 + * @param array $params
  1785 + * @return mixed
  1786 + * @see \Codeception\Lib\InnerBrowser::dontSeeCookie()
2242 1787 */
2243   - public function waitForElementChange($element, $callback, $timeout = null) {
2244   - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementChange', func_get_args()));
  1788 + public function dontSeeCookie($cookie, $params = null) {
  1789 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args()));
2245 1790 }
2246 1791  
2247 1792  
2248 1793 /**
2249 1794 * [!] Method is generated. Documentation taken from corresponding module.
2250 1795 *
2251   - * Waits up to $timeout seconds for an element to appear on the page.
2252   - * If the element doesn't appear, a timeout exception is thrown.
  1796 + * Unsets cookie with the given name.
  1797 + * You can set additional cookie params like `domain`, `path` in array passed as last argument.
2253 1798 *
2254   - * ``` php
2255   - * <?php
2256   - * $I->waitForElement('#agree_button', 30); // secs
2257   - * $I->click('#agree_button');
2258   - * ?>
2259   - * ```
  1799 + * @param $cookie
2260 1800 *
2261   - * @param $element
2262   - * @param int $timeout seconds
2263   - * @throws \Exception
2264   - * @see \Codeception\Module\WebDriver::waitForElement()
  1801 + * @param array $params
  1802 + * @return mixed
  1803 + * @see \Codeception\Lib\InnerBrowser::resetCookie()
2265 1804 */
2266   - public function waitForElement($element, $timeout = null) {
2267   - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElement', func_get_args()));
  1805 + public function resetCookie($name, $params = null) {
  1806 + return $this->getScenario()->runStep(new \Codeception\Step\Action('resetCookie', func_get_args()));
2268 1807 }
2269 1808  
2270 1809  
2271 1810 /**
2272 1811 * [!] Method is generated. Documentation taken from corresponding module.
2273 1812 *
2274   - * Waits up to $timeout seconds for the given element to be visible on the page.
2275   - * If element doesn't appear, a timeout exception is thrown.
  1813 + * Checks that the given element exists on the page and is visible.
  1814 + * You can also specify expected attributes of this element.
2276 1815 *
2277 1816 * ``` php
2278 1817 * <?php
2279   - * $I->waitForElementVisible('#agree_button', 30); // secs
2280   - * $I->click('#agree_button');
  1818 + * $I->seeElement('.error');
  1819 + * $I->seeElement('//form/input[1]');
  1820 + * $I->seeElement('input', ['name' => 'login']);
  1821 + * $I->seeElement('input', ['value' => '123456']);
  1822 + *
  1823 + * // strict locator in first arg, attributes in second
  1824 + * $I->seeElement(['css' => 'form input'], ['name' => 'login']);
2281 1825 * ?>
2282 1826 * ```
2283 1827 *
2284   - * @param $element
2285   - * @param int $timeout seconds
2286   - * @throws \Exception
2287   - * @see \Codeception\Module\WebDriver::waitForElementVisible()
  1828 + * @param $selector
  1829 + * @param array $attributes
  1830 + * @return
  1831 + * Conditional Assertion: Test won't be stopped on fail
  1832 + * @see \Codeception\Lib\InnerBrowser::seeElement()
2288 1833 */
2289   - public function waitForElementVisible($element, $timeout = null) {
2290   - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementVisible', func_get_args()));
  1834 + public function canSeeElement($selector, $attributes = null) {
  1835 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args()));
2291 1836 }
2292   -
2293   -
2294 1837 /**
2295 1838 * [!] Method is generated. Documentation taken from corresponding module.
2296 1839 *
2297   - * Waits up to $timeout seconds for the given element to become invisible.
2298   - * If element stays visible, a timeout exception is thrown.
  1840 + * Checks that the given element exists on the page and is visible.
  1841 + * You can also specify expected attributes of this element.
2299 1842 *
2300 1843 * ``` php
2301 1844 * <?php
2302   - * $I->waitForElementNotVisible('#agree_button', 30); // secs
  1845 + * $I->seeElement('.error');
  1846 + * $I->seeElement('//form/input[1]');
  1847 + * $I->seeElement('input', ['name' => 'login']);
  1848 + * $I->seeElement('input', ['value' => '123456']);
  1849 + *
  1850 + * // strict locator in first arg, attributes in second
  1851 + * $I->seeElement(['css' => 'form input'], ['name' => 'login']);
2303 1852 * ?>
2304 1853 * ```
2305 1854 *
2306   - * @param $element
2307   - * @param int $timeout seconds
2308   - * @throws \Exception
2309   - * @see \Codeception\Module\WebDriver::waitForElementNotVisible()
  1855 + * @param $selector
  1856 + * @param array $attributes
  1857 + * @return
  1858 + * @see \Codeception\Lib\InnerBrowser::seeElement()
2310 1859 */
2311   - public function waitForElementNotVisible($element, $timeout = null) {
2312   - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementNotVisible', func_get_args()));
  1860 + public function seeElement($selector, $attributes = null) {
  1861 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args()));
2313 1862 }
2314 1863  
2315 1864  
2316 1865 /**
2317 1866 * [!] Method is generated. Documentation taken from corresponding module.
2318 1867 *
2319   - * Waits up to $timeout seconds for the given string to appear on the page.
2320   - * Can also be passed a selector to search in.
2321   - * If the given text doesn't appear, a timeout exception is thrown.
  1868 + * Checks that the given element is invisible or not present on the page.
  1869 + * You can also specify expected attributes of this element.
2322 1870 *
2323 1871 * ``` php
2324 1872 * <?php
2325   - * $I->waitForText('foo', 30); // secs
2326   - * $I->waitForText('foo', 30, '.title'); // secs
  1873 + * $I->dontSeeElement('.error');
  1874 + * $I->dontSeeElement('//form/input[1]');
  1875 + * $I->dontSeeElement('input', ['name' => 'login']);
  1876 + * $I->dontSeeElement('input', ['value' => '123456']);
2327 1877 * ?>
2328 1878 * ```
2329 1879 *
2330   - * @param string $text
2331   - * @param int $timeout seconds
2332   - * @param null $selector
2333   - * @throws \Exception
2334   - * @see \Codeception\Module\WebDriver::waitForText()
2335   - */
2336   - public function waitForText($text, $timeout = null, $selector = null) {
2337   - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForText', func_get_args()));
2338   - }
2339   -
2340   -
2341   - /**
2342   - * [!] Method is generated. Documentation taken from corresponding module.
2343   - *
2344   - * Wait for $timeout seconds.
2345   - *
2346   - * @param int $timeout secs
2347   - * @throws \Codeception\Exception\TestRuntimeException
2348   - * @see \Codeception\Module\WebDriver::wait()
  1880 + * @param $selector
  1881 + * @param array $attributes
  1882 + * Conditional Assertion: Test won't be stopped on fail
  1883 + * @see \Codeception\Lib\InnerBrowser::dontSeeElement()
2349 1884 */
2350   - public function wait($timeout) {
2351   - return $this->getScenario()->runStep(new \Codeception\Step\Action('wait', func_get_args()));
  1885 + public function cantSeeElement($selector, $attributes = null) {
  1886 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args()));
2352 1887 }
2353   -
2354   -
2355 1888 /**
2356 1889 * [!] Method is generated. Documentation taken from corresponding module.
2357 1890 *
2358   - * Low-level API method.
2359   - * If Codeception commands are not enough, this allows you to use Selenium WebDriver methods directly:
  1891 + * Checks that the given element is invisible or not present on the page.
  1892 + * You can also specify expected attributes of this element.
2360 1893 *
2361 1894 * ``` php
2362   - * $I->executeInSelenium(function(\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {
2363   - * $webdriver->get('http://google.com');
2364   - * });
  1895 + * <?php
  1896 + * $I->dontSeeElement('.error');
  1897 + * $I->dontSeeElement('//form/input[1]');
  1898 + * $I->dontSeeElement('input', ['name' => 'login']);
  1899 + * $I->dontSeeElement('input', ['value' => '123456']);
  1900 + * ?>
2365 1901 * ```
2366 1902 *
2367   - * This runs in the context of the [RemoteWebDriver class](https://github.com/facebook/php-webdriver/blob/master/lib/remote/RemoteWebDriver.php).
2368   - * Try not to use this command on a regular basis.
2369   - * If Codeception lacks a feature you need, please implement it and submit a patch.
2370   - *
2371   - * @param callable $function
2372   - * @see \Codeception\Module\WebDriver::executeInSelenium()
  1903 + * @param $selector
  1904 + * @param array $attributes
  1905 + * @see \Codeception\Lib\InnerBrowser::dontSeeElement()
2373 1906 */
2374   - public function executeInSelenium($function) {
2375   - return $this->getScenario()->runStep(new \Codeception\Step\Action('executeInSelenium', func_get_args()));
  1907 + public function dontSeeElement($selector, $attributes = null) {
  1908 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args()));
2376 1909 }
2377 1910  
2378 1911  
2379 1912 /**
2380 1913 * [!] Method is generated. Documentation taken from corresponding module.
2381 1914 *
2382   - * Switch to another window identified by name.
2383   - *
2384   - * The window can only be identified by name. If the $name parameter is blank, the parent window will be used.
2385   - *
2386   - * Example:
2387   - * ``` html
2388   - * <input type="button" value="Open window" onclick="window.open('http://example.com', 'another_window')">
2389   - * ```
2390   - *
2391   - * ``` php
2392   - * <?php
2393   - * $I->click("Open window");
2394   - * # switch to another window
2395   - * $I->switchToWindow("another_window");
2396   - * # switch to parent window
2397   - * $I->switchToWindow();
2398   - * ?>
2399   - * ```
2400   - *
2401   - * If the window has no name, the only way to access it is via the `executeInSelenium()` method, like so:
  1915 + * Checks that there are a certain number of elements matched by the given locator on the page.
2402 1916 *
2403 1917 * ``` php
2404 1918 * <?php
2405   - * $I->executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {
2406   - * $handles=$webdriver->getWindowHandles();
2407   - * $last_window = end($handles);
2408   - * $webdriver->switchTo()->window($last_window);
2409   - * });
  1919 + * $I->seeNumberOfElements('tr', 10);
  1920 + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements
2410 1921 * ?>
2411 1922 * ```
2412   - *
2413   - * @param string|null $name
2414   - * @see \Codeception\Module\WebDriver::switchToWindow()
  1923 + * @param $selector
  1924 + * @param mixed $expected :
  1925 + * - string: strict number
  1926 + * - array: range of numbers [0,10]
  1927 + * Conditional Assertion: Test won't be stopped on fail
  1928 + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements()
2415 1929 */
2416   - public function switchToWindow($name = null) {
2417   - return $this->getScenario()->runStep(new \Codeception\Step\Action('switchToWindow', func_get_args()));
  1930 + public function canSeeNumberOfElements($selector, $expected) {
  1931 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args()));
2418 1932 }
2419   -
2420   -
2421 1933 /**
2422 1934 * [!] Method is generated. Documentation taken from corresponding module.
2423 1935 *
2424   - * Switch to another frame on the page.
2425   - *
2426   - * Example:
2427   - * ``` html
2428   - * <iframe name="another_frame" src="http://example.com">
2429   - *
2430   - * ```
  1936 + * Checks that there are a certain number of elements matched by the given locator on the page.
2431 1937 *
2432 1938 * ``` php
2433 1939 * <?php
2434   - * # switch to iframe
2435   - * $I->switchToIFrame("another_frame");
2436   - * # switch to parent page
2437   - * $I->switchToIFrame();
2438   - *
  1940 + * $I->seeNumberOfElements('tr', 10);
  1941 + * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements
  1942 + * ?>
2439 1943 * ```
2440   - *
2441   - * @param string|null $name
2442   - * @see \Codeception\Module\WebDriver::switchToIFrame()
  1944 + * @param $selector
  1945 + * @param mixed $expected :
  1946 + * - string: strict number
  1947 + * - array: range of numbers [0,10]
  1948 + * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements()
2443 1949 */
2444   - public function switchToIFrame($name = null) {
2445   - return $this->getScenario()->runStep(new \Codeception\Step\Action('switchToIFrame', func_get_args()));
  1950 + public function seeNumberOfElements($selector, $expected) {
  1951 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args()));
2446 1952 }
2447 1953  
2448 1954  
2449 1955 /**
2450 1956 * [!] Method is generated. Documentation taken from corresponding module.
2451 1957 *
2452   - * Executes JavaScript and waits up to $timeout seconds for it to return true.
2453   - *
2454   - * In this example we will wait up to 60 seconds for all jQuery AJAX requests to finish.
  1958 + * Checks that the given option is selected.
2455 1959 *
2456 1960 * ``` php
2457 1961 * <?php
2458   - * $I->waitForJS("return $.active == 0;", 60);
  1962 + * $I->seeOptionIsSelected('#form input[name=payment]', 'Visa');
2459 1963 * ?>
2460 1964 * ```
2461 1965 *
2462   - * @param string $script
2463   - * @param int $timeout seconds
2464   - * @see \Codeception\Module\WebDriver::waitForJS()
  1966 + * @param $selector
  1967 + * @param $optionText
  1968 + *
  1969 + * @return mixed
  1970 + * Conditional Assertion: Test won't be stopped on fail
  1971 + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected()
2465 1972 */
2466   - public function waitForJS($script, $timeout = null) {
2467   - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForJS', func_get_args()));
  1973 + public function canSeeOptionIsSelected($selector, $optionText) {
  1974 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args()));
2468 1975 }
2469   -
2470   -
2471 1976 /**
2472 1977 * [!] Method is generated. Documentation taken from corresponding module.
2473 1978 *
2474   - * Executes custom JavaScript.
2475   - *
2476   - * This example uses jQuery to get a value and assigns that value to a PHP variable:
  1979 + * Checks that the given option is selected.
2477 1980 *
2478   - * ```php
  1981 + * ``` php
2479 1982 * <?php
2480   - * $myVar = $I->executeJS('return $("#myField").val()');
  1983 + * $I->seeOptionIsSelected('#form input[name=payment]', 'Visa');
2481 1984 * ?>
2482 1985 * ```
2483 1986 *
2484   - * @param $script
2485   - * @return mixed
2486   - * @see \Codeception\Module\WebDriver::executeJS()
2487   - */
2488   - public function executeJS($script) {
2489   - return $this->getScenario()->runStep(new \Codeception\Step\Action('executeJS', func_get_args()));
2490   - }
2491   -
2492   -
2493   - /**
2494   - * [!] Method is generated. Documentation taken from corresponding module.
  1987 + * @param $selector
  1988 + * @param $optionText
2495 1989 *
2496   - * Maximizes the current window.
2497   - * @see \Codeception\Module\WebDriver::maximizeWindow()
  1990 + * @return mixed
  1991 + * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected()
2498 1992 */
2499   - public function maximizeWindow() {
2500   - return $this->getScenario()->runStep(new \Codeception\Step\Action('maximizeWindow', func_get_args()));
  1993 + public function seeOptionIsSelected($selector, $optionText) {
  1994 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args()));
2501 1995 }
2502 1996  
2503 1997  
2504 1998 /**
2505 1999 * [!] Method is generated. Documentation taken from corresponding module.
2506 2000 *
2507   - * Performs a simple mouse drag-and-drop operation.
  2001 + * Checks that the given option is not selected.
2508 2002 *
2509 2003 * ``` php
2510 2004 * <?php
2511   - * $I->dragAndDrop('#drag', '#drop');
  2005 + * $I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
2512 2006 * ?>
2513 2007 * ```
2514 2008 *
2515   - * @param string $source (CSS ID or XPath)
2516   - * @param string $target (CSS ID or XPath)
2517   - * @see \Codeception\Module\WebDriver::dragAndDrop()
  2009 + * @param $selector
  2010 + * @param $optionText
  2011 + *
  2012 + * @return mixed
  2013 + * Conditional Assertion: Test won't be stopped on fail
  2014 + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected()
2518 2015 */
2519   - public function dragAndDrop($source, $target) {
2520   - return $this->getScenario()->runStep(new \Codeception\Step\Action('dragAndDrop', func_get_args()));
  2016 + public function cantSeeOptionIsSelected($selector, $optionText) {
  2017 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args()));
2521 2018 }
2522   -
2523   -
2524 2019 /**
2525 2020 * [!] Method is generated. Documentation taken from corresponding module.
2526 2021 *
2527   - * Move mouse over the first element matched by the given locator.
2528   - * If the second and third parameters are given, then the mouse is moved to an offset of the element's top-left corner.
2529   - * Otherwise, the mouse is moved to the center of the element.
  2022 + * Checks that the given option is not selected.
2530 2023 *
2531 2024 * ``` php
2532 2025 * <?php
2533   - * $I->moveMouseOver(['css' => '.checkout'], 20, 50);
  2026 + * $I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
2534 2027 * ?>
2535 2028 * ```
2536 2029 *
2537   - * @param string $cssOrXPath css or xpath of the web element
2538   - * @param int $offsetX
2539   - * @param int $offsetY
  2030 + * @param $selector
  2031 + * @param $optionText
2540 2032 *
2541   - * @throws \Codeception\Exception\ElementNotFound
2542   - * @see \Codeception\Module\WebDriver::moveMouseOver()
  2033 + * @return mixed
  2034 + * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected()
2543 2035 */
2544   - public function moveMouseOver($cssOrXPath, $offsetX = null, $offsetY = null) {
2545   - return $this->getScenario()->runStep(new \Codeception\Step\Action('moveMouseOver', func_get_args()));
  2036 + public function dontSeeOptionIsSelected($selector, $optionText) {
  2037 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args()));
2546 2038 }
2547 2039  
2548 2040  
2549 2041 /**
2550 2042 * [!] Method is generated. Documentation taken from corresponding module.
2551 2043 *
2552   - * Performs contextual click with the right mouse button on an element.
  2044 + * Asserts that current page has 404 response status code.
  2045 + * Conditional Assertion: Test won't be stopped on fail
  2046 + * @see \Codeception\Lib\InnerBrowser::seePageNotFound()
  2047 + */
  2048 + public function canSeePageNotFound() {
  2049 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args()));
  2050 + }
  2051 + /**
  2052 + * [!] Method is generated. Documentation taken from corresponding module.
2553 2053 *
2554   - * @param $cssOrXPath
2555   - * @throws \Codeception\Exception\ElementNotFound
2556   - * @see \Codeception\Module\WebDriver::clickWithRightButton()
  2054 + * Asserts that current page has 404 response status code.
  2055 + * @see \Codeception\Lib\InnerBrowser::seePageNotFound()
2557 2056 */
2558   - public function clickWithRightButton($cssOrXPath) {
2559   - return $this->getScenario()->runStep(new \Codeception\Step\Action('clickWithRightButton', func_get_args()));
  2057 + public function seePageNotFound() {
  2058 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args()));
2560 2059 }
2561 2060  
2562 2061  
2563 2062 /**
2564 2063 * [!] Method is generated. Documentation taken from corresponding module.
2565 2064 *
2566   - * Pauses test execution in debug mode.
2567   - * To proceed test press "ENTER" in console.
  2065 + * Checks that response code is equal to value provided.
2568 2066 *
2569   - * This method is useful while writing tests, since it allows you to inspect the current page in the middle of a test case.
2570   - * @see \Codeception\Module\WebDriver::pauseExecution()
  2067 + * @param $code
  2068 + *
  2069 + * @return mixed
  2070 + * Conditional Assertion: Test won't be stopped on fail
  2071 + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs()
2571 2072 */
2572   - public function pauseExecution() {
2573   - return $this->getScenario()->runStep(new \Codeception\Step\Action('pauseExecution', func_get_args()));
  2073 + public function canSeeResponseCodeIs($code) {
  2074 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args()));
2574 2075 }
2575   -
2576   -
2577 2076 /**
2578 2077 * [!] Method is generated. Documentation taken from corresponding module.
2579 2078 *
2580   - * Performs a double-click on an element matched by CSS or XPath.
  2079 + * Checks that response code is equal to value provided.
  2080 + *
  2081 + * @param $code
2581 2082 *
2582   - * @param $cssOrXPath
2583   - * @throws \Codeception\Exception\ElementNotFound
2584   - * @see \Codeception\Module\WebDriver::doubleClick()
  2083 + * @return mixed
  2084 + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs()
2585 2085 */
2586   - public function doubleClick($cssOrXPath) {
2587   - return $this->getScenario()->runStep(new \Codeception\Step\Action('doubleClick', func_get_args()));
  2086 + public function seeResponseCodeIs($code) {
  2087 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args()));
2588 2088 }
2589 2089  
2590 2090  
2591 2091 /**
2592 2092 * [!] Method is generated. Documentation taken from corresponding module.
2593 2093 *
2594   - * Presses the given key on the given element.
2595   - * To specify a character and modifier (e.g. ctrl, alt, shift, meta), pass an array for $char with
2596   - * the modifier as the first element and the character as the second.
2597   - * For special keys use key constants from WebDriverKeys class.
  2094 + * Checks that the page title contains the given string.
2598 2095 *
2599 2096 * ``` php
2600 2097 * <?php
2601   - * // <input id="page" value="old" />
2602   - * $I->pressKey('#page','a'); // => olda
2603   - * $I->pressKey('#page',array('ctrl','a'),'new'); //=> new
2604   - * $I->pressKey('#page',array('shift','111'),'1','x'); //=> old!!!1x
2605   - * $I->pressKey('descendant-or-self::*[@id='page']','u'); //=> oldu
2606   - * $I->pressKey('#name', array('ctrl', 'a'), \Facebook\WebDriver\WebDriverKeys::DELETE); //=>''
  2098 + * $I->seeInTitle('Blog - Post #1');
2607 2099 * ?>
2608 2100 * ```
2609 2101 *
2610   - * @param $element
2611   - * @param $char Can be char or array with modifier. You can provide several chars.
2612   - * @throws \Codeception\Exception\ElementNotFound
2613   - * @see \Codeception\Module\WebDriver::pressKey()
  2102 + * @param $title
  2103 + *
  2104 + * @return mixed
  2105 + * Conditional Assertion: Test won't be stopped on fail
  2106 + * @see \Codeception\Lib\InnerBrowser::seeInTitle()
2614 2107 */
2615   - public function pressKey($element, $char) {
2616   - return $this->getScenario()->runStep(new \Codeception\Step\Action('pressKey', func_get_args()));
  2108 + public function canSeeInTitle($title) {
  2109 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args()));
2617 2110 }
2618   -
2619   -
2620 2111 /**
2621 2112 * [!] Method is generated. Documentation taken from corresponding module.
2622 2113 *
2623   - * Append the given text to the given element.
2624   - * Can also add a selection to a select box.
  2114 + * Checks that the page title contains the given string.
2625 2115 *
2626 2116 * ``` php
2627 2117 * <?php
2628   - * $I->appendField('#mySelectbox', 'SelectValue');
2629   - * $I->appendField('#myTextField', 'appended');
  2118 + * $I->seeInTitle('Blog - Post #1');
2630 2119 * ?>
2631 2120 * ```
2632 2121 *
2633   - * @param string $field
2634   - * @param string $value
2635   - * @throws \Codeception\Exception\ElementNotFound
2636   - * @see \Codeception\Module\WebDriver::appendField()
  2122 + * @param $title
  2123 + *
  2124 + * @return mixed
  2125 + * @see \Codeception\Lib\InnerBrowser::seeInTitle()
2637 2126 */
2638   - public function appendField($field, $value) {
2639   - return $this->getScenario()->runStep(new \Codeception\Step\Action('appendField', func_get_args()));
  2127 + public function seeInTitle($title) {
  2128 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args()));
2640 2129 }
2641 2130  
2642 2131  
2643 2132 /**
2644 2133 * [!] Method is generated. Documentation taken from corresponding module.
2645 2134 *
2646   - * @param string $name
2647   - * @see \Codeception\Module\WebDriver::saveSessionSnapshot()
  2135 + * Checks that the page title does not contain the given string.
  2136 + *
  2137 + * @param $title
  2138 + *
  2139 + * @return mixed
  2140 + * Conditional Assertion: Test won't be stopped on fail
  2141 + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle()
2648 2142 */
2649   - public function saveSessionSnapshot($name) {
2650   - return $this->getScenario()->runStep(new \Codeception\Step\Action('saveSessionSnapshot', func_get_args()));
  2143 + public function cantSeeInTitle($title) {
  2144 + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args()));
2651 2145 }
2652   -
2653   -
2654 2146 /**
2655 2147 * [!] Method is generated. Documentation taken from corresponding module.
2656 2148 *
2657   - * @param string $name
2658   - * @return bool
2659   - * @see \Codeception\Module\WebDriver::loadSessionSnapshot()
  2149 + * Checks that the page title does not contain the given string.
  2150 + *
  2151 + * @param $title
  2152 + *
  2153 + * @return mixed
  2154 + * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle()
2660 2155 */
2661   - public function loadSessionSnapshot($name) {
2662   - return $this->getScenario()->runStep(new \Codeception\Step\Action('loadSessionSnapshot', func_get_args()));
  2156 + public function dontSeeInTitle($title) {
  2157 + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args()));
2663 2158 }
2664 2159  
2665 2160  
2666 2161 /**
2667 2162 * [!] Method is generated. Documentation taken from corresponding module.
2668 2163 *
2669   - * Move to the middle of the given element matched by the given locator.
2670   - * Extra shift, calculated from the top-left corner of the element, can be set by passing $offsetX and $offsetY parameters.
  2164 + * Switch to iframe or frame on the page.
  2165 + *
  2166 + * Example:
  2167 + * ``` html
  2168 + * <iframe name="another_frame" src="http://example.com">
  2169 + * ```
2671 2170 *
2672 2171 * ``` php
2673 2172 * <?php
2674   - * $I->scrollTo(['css' => '.checkout'], 20, 50);
2675   - * ?>
  2173 + * # switch to iframe
  2174 + * $I->switchToIframe("another_frame");
2676 2175 * ```
2677 2176 *
2678   - * @param $selector
2679   - * @param int $offsetX
2680   - * @param int $offsetY
2681   - * @see \Codeception\Module\WebDriver::scrollTo()
  2177 + * @param string $name
  2178 + * @see \Codeception\Lib\InnerBrowser::switchToIframe()
  2179 + */
  2180 + public function switchToIframe($name) {
  2181 + return $this->getScenario()->runStep(new \Codeception\Step\Action('switchToIframe', func_get_args()));
  2182 + }
  2183 +
  2184 +
  2185 + /**
  2186 + * [!] Method is generated. Documentation taken from corresponding module.
  2187 + *
  2188 + * Moves back in history.
  2189 + *
  2190 + * @param int $numberOfSteps (default value 1)
  2191 + * @see \Codeception\Lib\InnerBrowser::moveBack()
2682 2192 */
2683   - public function scrollTo($selector, $offsetX = null, $offsetY = null) {
2684   - return $this->getScenario()->runStep(new \Codeception\Step\Action('scrollTo', func_get_args()));
  2193 + public function moveBack($numberOfSteps = null) {
  2194 + return $this->getScenario()->runStep(new \Codeception\Step\Action('moveBack', func_get_args()));
2685 2195 }
2686 2196 }
... ...
tests/_support/_generated/FunctionalTesterActions.php
1   -<?php //[STAMP] 72d7b03ef9d64e3a484fd8745044f950
  1 +<?php //[STAMP] aa1a37cfb0104e766c197952fba6d5ef
2 2 namespace _generated;
3 3  
4 4 // This class was automatically generated by build task
... ...
tests/_support/_generated/UnitTesterActions.php
1   -<?php //[STAMP] afe236e24211133b48645948576bce9f
  1 +<?php //[STAMP] d534c7efe0c90e2049d137a1fc54d008
2 2 namespace _generated;
3 3  
4 4 // This class was automatically generated by build task
... ... @@ -54,6 +54,7 @@ trait UnitTesterActions
54 54 * @param $expected
55 55 * @param $actual
56 56 * @param string $message
  57 + * @return mixed|void
57 58 * @see \Codeception\Module\Asserts::assertSame()
58 59 */
59 60 public function assertSame($expected, $actual, $message = null) {
... ... @@ -94,17 +95,6 @@ trait UnitTesterActions
94 95 /**
95 96 * [!] Method is generated. Documentation taken from corresponding module.
96 97 *
97   - * @deprecated
98   - * @see \Codeception\Module\Asserts::assertGreaterThen()
99   - */
100   - public function assertGreaterThen($expected, $actual, $message = null) {
101   - return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThen', func_get_args()));
102   - }
103   -
104   -
105   - /**
106   - * [!] Method is generated. Documentation taken from corresponding module.
107   - *
108 98 * Checks that actual is greater or equal than expected
109 99 *
110 100 * @param $expected
... ... @@ -120,17 +110,6 @@ trait UnitTesterActions
120 110 /**
121 111 * [!] Method is generated. Documentation taken from corresponding module.
122 112 *
123   - * @deprecated
124   - * @see \Codeception\Module\Asserts::assertGreaterThenOrEqual()
125   - */
126   - public function assertGreaterThenOrEqual($expected, $actual, $message = null) {
127   - return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThenOrEqual', func_get_args()));
128   - }
129   -
130   -
131   - /**
132   - * [!] Method is generated. Documentation taken from corresponding module.
133   - *
134 113 * Checks that actual is less than expected
135 114 *
136 115 * @param $expected
... ... @@ -333,6 +312,109 @@ trait UnitTesterActions
333 312 /**
334 313 * [!] Method is generated. Documentation taken from corresponding module.
335 314 *
  315 + * @param $expected
  316 + * @param $actual
  317 + * @param $description
  318 + * @see \Codeception\Module\Asserts::assertGreaterOrEquals()
  319 + */
  320 + public function assertGreaterOrEquals($expected, $actual, $description = null) {
  321 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterOrEquals', func_get_args()));
  322 + }
  323 +
  324 +
  325 + /**
  326 + * [!] Method is generated. Documentation taken from corresponding module.
  327 + *
  328 + * @param $expected
  329 + * @param $actual
  330 + * @param $description
  331 + * @see \Codeception\Module\Asserts::assertLessOrEquals()
  332 + */
  333 + public function assertLessOrEquals($expected, $actual, $description = null) {
  334 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessOrEquals', func_get_args()));
  335 + }
  336 +
  337 +
  338 + /**
  339 + * [!] Method is generated. Documentation taken from corresponding module.
  340 + *
  341 + * @param $actual
  342 + * @param $description
  343 + * @see \Codeception\Module\Asserts::assertIsEmpty()
  344 + */
  345 + public function assertIsEmpty($actual, $description = null) {
  346 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsEmpty', func_get_args()));
  347 + }
  348 +
  349 +
  350 + /**
  351 + * [!] Method is generated. Documentation taken from corresponding module.
  352 + *
  353 + * @param $key
  354 + * @param $actual
  355 + * @param $description
  356 + * @see \Codeception\Module\Asserts::assertArrayHasKey()
  357 + */
  358 + public function assertArrayHasKey($key, $actual, $description = null) {
  359 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayHasKey', func_get_args()));
  360 + }
  361 +
  362 +
  363 + /**
  364 + * [!] Method is generated. Documentation taken from corresponding module.
  365 + *
  366 + * @param $key
  367 + * @param $actual
  368 + * @param $description
  369 + * @see \Codeception\Module\Asserts::assertArrayNotHasKey()
  370 + */
  371 + public function assertArrayNotHasKey($key, $actual, $description = null) {
  372 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayNotHasKey', func_get_args()));
  373 + }
  374 +
  375 +
  376 + /**
  377 + * [!] Method is generated. Documentation taken from corresponding module.
  378 + *
  379 + * @param $class
  380 + * @param $actual
  381 + * @param $description
  382 + * @see \Codeception\Module\Asserts::assertInstanceOf()
  383 + */
  384 + public function assertInstanceOf($class, $actual, $description = null) {
  385 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInstanceOf', func_get_args()));
  386 + }
  387 +
  388 +
  389 + /**
  390 + * [!] Method is generated. Documentation taken from corresponding module.
  391 + *
  392 + * @param $class
  393 + * @param $actual
  394 + * @param $description
  395 + * @see \Codeception\Module\Asserts::assertNotInstanceOf()
  396 + */
  397 + public function assertNotInstanceOf($class, $actual, $description = null) {
  398 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotInstanceOf', func_get_args()));
  399 + }
  400 +
  401 +
  402 + /**
  403 + * [!] Method is generated. Documentation taken from corresponding module.
  404 + *
  405 + * @param $type
  406 + * @param $actual
  407 + * @param $description
  408 + * @see \Codeception\Module\Asserts::assertInternalType()
  409 + */
  410 + public function assertInternalType($type, $actual, $description = null) {
  411 + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInternalType', func_get_args()));
  412 + }
  413 +
  414 +
  415 + /**
  416 + * [!] Method is generated. Documentation taken from corresponding module.
  417 + *
336 418 * Fails the test with message.
337 419 *
338 420 * @param $message
... ... @@ -341,4 +423,38 @@ trait UnitTesterActions
341 423 public function fail($message) {
342 424 return $this->getScenario()->runStep(new \Codeception\Step\Action('fail', func_get_args()));
343 425 }
  426 +
  427 +
  428 + /**
  429 + * [!] Method is generated. Documentation taken from corresponding module.
  430 + *
  431 + * Handles and checks exception called inside callback function.
  432 + * Either exception class name or exception instance should be provided.
  433 + *
  434 + * ```php
  435 + * <?php
  436 + * $I->expectException(MyException::class, function() {
  437 + * $this->doSomethingBad();
  438 + * });
  439 + *
  440 + * $I->expectException(new MyException(), function() {
  441 + * $this->doSomethingBad();
  442 + * });
  443 + * ```
  444 + * If you want to check message or exception code, you can pass them with exception instance:
  445 + * ```php
  446 + * <?php
  447 + * // will check that exception MyException is thrown with "Don't do bad things" message
  448 + * $I->expectException(new MyException("Don't do bad things"), function() {
  449 + * $this->doSomethingBad();
  450 + * });
  451 + * ```
  452 + *
  453 + * @param $exception string or \Exception
  454 + * @param $callback
  455 + * @see \Codeception\Module\Asserts::expectException()
  456 + */
  457 + public function expectException($exception, $callback) {
  458 + return $this->getScenario()->runStep(new \Codeception\Step\Action('expectException', func_get_args()));
  459 + }
344 460 }
... ...
tests/acceptance.suite.yml
... ... @@ -8,6 +8,6 @@ class_name: AcceptanceTester
8 8 modules:
9 9 enabled:
10 10 - PhpBrowser:
11   - url: http://home-1.local/
  11 + url: http://mfp.dev/
12 12 # browser: firefox
13 13 - \Helper\Acceptance
14 14 \ No newline at end of file
... ...