For additional reference, please review the source
This module uses Symfony2 Crawler and HttpKernel to emulate requests and test response.
https://github.com/DavertMik/SymfonyCodeceptionApp
- Maintainer: davert
- Stability: stable
- Contact: codecept@davert.mail.ua
- app_path: 'app' - specify custom path to your app dir, where bootstrap cache and kernel interface is located.
- environment: 'local' - environment used for load kernel
- debug: true - turn on/off debug mode
modules:
enabled: [Symfony2]
config:
Symfony2:
app_path: 'app/front'
environment: 'local_test'
- app_path: 'app' - specify custom path to your app dir, where the kernel interface is located.
- var_path: 'var' - specify custom path to your var dir, where bootstrap cache is located.
- environment: 'local' - environment used for load kernel
- debug: true - turn on/off debug mode
modules:
enabled: [Symfony2]
config:
Symfony2:
app_path: 'app/front'
var_path: 'var'
environment: 'local_test'
- kernel - HttpKernel instance
- client - current Crawler instance
- container - dependency injection container instance
Authenticates user for HTTP_AUTH
param$usernameparam$password
Opens the page. Requires relative uri as parameter
Example:
<?php
// opens front page
$I->amOnPage('/');
// opens /register page
$I->amOnPage('/register');
?>param$page
Attaches file from Codeception data directory to upload field.
Example:
<?php
// file is stored in 'tests/_data/prices.xls'
$I->attachFile('input[@type="file"]', 'prices.xls');
?>param$fieldparam$filename
Ticks a checkbox.
For radio buttons use selectOption method.
Example:
<?php
$I->checkOption('#agree');
?>param$option
Perform a click on link or button. Link or button are found by their names or CSS selector. Submits a form if button is a submit type.
If link is an image it's found by alt attribute value of image. If button is image button is found by it's value If link or button can't be found by name they are searched by CSS selector.
The second parameter is a context: CSS or XPath locator to narrow the search.
Examples:
<?php
// simple link
$I->click('Logout');
// button of form
$I->click('Submit');
// CSS button
$I->click('#form input[type=submit]');
// XPath
$I->click('//form/*[@type=submit]');
// link in context
$I->click('Logout', '#nav');
// using strict locator
$I->click(['link' => 'Login']);
?>param$linkparam$context
Check if current page doesn't contain the text specified. Specify the css selector to match only specific region.
Examples:
<?php
$I->dontSee('Login'); // I can suppose user is already logged in
$I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page
$I->dontSee('Sign Up','//body/h1'); // with XPath
?>param$textparam null$selector
Assert if the specified checkbox is unchecked. Use css selector or xpath to match.
Example:
<?php
$I->dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms
$I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form.
?>param$checkbox
Checks that cookie doesn't exist
param$cookie
Checks that current url is not equal to value.
Unlike dontSeeInCurrentUrl performs a strict check.
<?php
// current url is not root
$I->dontSeeCurrentUrlEquals('/');
?>param$uri
Checks that current url does not match a RegEx value
<?php
// to match root url
$I->dontSeeCurrentUrlMatches('~$/users/(\d+)~');
?>param$uri
Checks if element does not exist (or is visible) on a page, matching it by CSS or XPath You can also specify expected attributes of this element.
Example:
<?php
$I->dontSeeElement('.error');
$I->dontSeeElement('//form/input[1]');
$I->dontSeeElement('input', ['name' => 'login']);
$I->dontSeeElement('input', ['value' => '123456']);
?>param$selector
Checks that current uri does not contain a value
<?php
$I->dontSeeInCurrentUrl('/users/');
?>param$uri
Checks that an input field or textarea doesn't contain value. Field is matched either by label or CSS or Xpath Example:
<?php
$I->dontSeeInField('Body','Type your comment here');
$I->dontSeeInField('form textarea[name=body]','Type your comment here');
$I->dontSeeInField('form input[type=hidden]','hidden_value');
$I->dontSeeInField('#searchform input','Search');
$I->dontSeeInField('//form/*[@name=search]','Search');
$I->seeInField(['name' => 'search'], 'Search');
?>param$fieldparam$value
Checks that page title does not contain text.
param$title
Checks if page doesn't contain the link with text specified. Specify url to narrow the results.
Examples:
<?php
$I->dontSeeLink('Logout'); // I suppose user is not logged in
?>param$textparam null$url
Checks if option is not selected in select field.
<?php
$I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
?>param$selectorparam$optionText
Fills a text field or textarea with value.
Example:
<?php
$I->fillField("//input[@type='text']", "Hello World!");
$I->fillField(['name' => 'email'], 'jon@mail.com');
?>param$fieldparam$value
Grabs attribute value from an element. Fails if element is not found.
<?php
$I->grabAttributeFrom('#tooltip', 'title');
?>param$cssOrXpathparam$attributeinternal param$element
Grabs a cookie value.
param$cookie
Takes a parameters from current URI by RegEx. If no url provided returns full URI.
<?php
$user_id = $I->grabFromCurrentUrl('~$/user/(\d+)/~');
$uri = $I->grabFromCurrentUrl();
?>-
param null$uri -
internal param$url
Grabs a service from Symfony DIC container. Recommended to use for unit testing.
<?php
$em = $I->grabServiceFromContainer('doctrine');
?>param$service
Finds and returns text contents of element. Element is searched by CSS selector, XPath or matcher by regex.
Example:
<?php
$heading = $I->grabTextFrom('h1');
$heading = $I->grabTextFrom('descendant-or-self::h1');
$value = $I->grabTextFrom('~<input value=(.*?)]~sgi');
?>param$cssOrXPathOrRegex
param$field
@return array|mixed|null|string
Unsets cookie
param$cookie
Check if current page contains the text specified. Specify the css selector to match only specific region.
Examples:
<?php
$I->see('Logout'); // I can suppose user is logged in
$I->see('Sign Up','h1'); // I can suppose it's a signup page
$I->see('Sign Up','//body/h1'); // with XPath
?>param$textparam null$selector
Assert if the specified checkbox is checked. Use css selector or xpath to match.
Example:
<?php
$I->seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms
$I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form.
$I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]');
?>param$checkbox
Checks that cookie is set.
param$cookie
Checks that current url is equal to value.
Unlike seeInCurrentUrl performs a strict check.
<?php
// to match root url
$I->seeCurrentUrlEquals('/');
?>param$uri
Checks that current url is matches a RegEx value
<?php
// to match root url
$I->seeCurrentUrlMatches('~$/users/(\d+)~');
?>param$uri
Checks if element exists on a page, matching it by CSS or XPath. You can also specify expected attributes of this element.
<?php
$I->seeElement('.error');
$I->seeElement('//form/input[1]');
$I->seeElement('input', ['name' => 'login']);
$I->seeElement('input', ['value' => '123456']);
// strict locator in first arg, attributes in second
$I->seeElement(['css' => 'form input'], ['name' => 'login']);
?>param$selectorparam array$attributes @return
Checks if any email were sent by last request
\LogicException
Checks that current uri contains a value
<?php
// to match: /home/dashboard
$I->seeInCurrentUrl('home');
// to match: /users/1
$I->seeInCurrentUrl('/users/');
?>param$uri
Checks that an input field or textarea contains value. Field is matched either by label or CSS or Xpath
Example:
<?php
$I->seeInField('Body','Type your comment here');
$I->seeInField('form textarea[name=body]','Type your comment here');
$I->seeInField('form input[type=hidden]','hidden_value');
$I->seeInField('#searchform input','Search');
$I->seeInField('//form/*[@name=search]','Search');
$I->seeInField(['name' => 'search'], 'Search');
?>param$fieldparam$value
Checks that page title contains text.
<?php
$I->seeInTitle('Blog - Post #1');
?>param$title
Checks if there is a link with text specified. Specify url to match link with exact this url.
Examples:
<?php
$I->seeLink('Logout'); // matches <a href="#">Logout</a>
$I->seeLink('Logout','/logout'); // matches <a href="/api/public/proxy/github.com/logout">Logout</a>
?>param$textparam null$url
Tests number of $elements on page
<?php
$I->seeNumberOfElements('tr', 10);
$I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements
?>param$selectorparam mixed$expected:
- string: strict number
- array: range of numbers [0,10]
Checks if option is selected in select field.
<?php
$I->seeOptionIsSelected('#form input[name=payment]', 'Visa');
?>param$selectorparam$optionText
Asserts that current page has 404 response status code.
Checks that response code is equal to value provided.
param$code
Selects an option in select tag or in radio button group.
Example:
<?php
$I->selectOption('form select[name=account]', 'Premium');
$I->selectOption('form input[name=payment]', 'Monthly');
$I->selectOption('//form/select[@name=account]', 'Monthly');
?>Can select multiple options if second argument is array:
<?php
$I->selectOption('Which OS do you use?', array('Windows','Linux'));
?>param$selectparam$option
If your page triggers an ajax request, you can perform it manually. This action sends a GET ajax request with specified params.
See ->sendAjaxPostRequest for examples.
param$uriparam$params
If your page triggers an ajax request, you can perform it manually. This action sends a POST ajax request with specified params. Additional params can be passed as array.
Example:
Imagine that by clicking checkbox you trigger ajax request which updates user settings. We emulate that click by running this ajax request manually.
<?php
$I->sendAjaxPostRequest('/updateSettings', array('notifications' => true)); // POST
$I->sendAjaxGetRequest('/updateSettings', array('notifications' => true)); // GETparam$uriparam$params
If your page triggers an ajax request, you can perform it manually. This action sends an ajax request with specified method and params.
Example:
You need to perform an ajax request specifying the HTTP method.
<?php
$I->sendAjaxRequest('PUT', /posts/7', array('title' => 'new title');param$methodparam$uriparam$params
Sets a cookie.
param$cookieparam$value
Submits a form located on page. Specify the form by it's css or xpath selector. Fill the form fields values as array.
Skipped fields will be filled by their values from page. You don't need to click the 'Submit' button afterwards. This command itself triggers the request to form's action.
Examples:
<?php
$I->submitForm('#login', array('login' => 'davert', 'password' => '123456'));For sample Sign Up form:
<form action="/sign_up">
Login: <input type="text" name="user[login]" /><br/>
Password: <input type="password" name="user[password]" /><br/>
Do you agree to out terms? <input type="checkbox" name="user[agree]" /><br/>
Select pricing plan <select name="plan"><option value="1">Free</option><option value="2" selected="selected">Paid</option></select>
<input type="submit" value="Submit" />
</form>I can write this:
<?php
$I->submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true)));Note, that pricing plan will be set to Paid, as it's selected on page.
param$selectorparam$params
Unticks a checkbox.
Example:
<?php
$I->uncheckOption('#notify');
?>param$option