Codeception Module that interacts with Symfony 1.4 applications.
Replaces functional testing framework from symfony. Authorization features uses Doctrine and sfDoctrineGuardPlugin. Uses native symfony connections and test classes. Provides additional informations on every actions.
If test fails stores last shown page in 'log' dir.
In composer.json
"require-dev": {
"codeception/codeception": "~2.1",
"codeception/symfony1module": "*"
}
- Maintainer: davert
- Stability: stable
- Contact: [email protected]
- app required - application you want to test. In most cases it will be 'frontend'
- browser - current instance of sfBrowser class.
Log in as sfDoctrineGuardUser. Only name of user should be provided. Fetches user by it's username from sfGuardUser table.
param
$name \Exception
Opens the page.
param
$page
Click on link or button and move to next page. Either link text, css selector, or xpath can be passed
param
$link
Emulates click on form's submit button. You don't need that action if you fill form by ->submitForm action.
param
$selector
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
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
$selector
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
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
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.
param
$selector
Checks if there were at least one email sent through Symfony test mailer.
Checks for invalid value in Symfony1 form. Matches the first sfForm instance from controller and returns getErrorSchema() values. Specify field which should contain error message.
param
$field
Performs validation of Symfony1 form. Matches the first sfForm instance from controller and returns getErrorSchema() values. Shows all errors in debug.
Performs validation of Symfony1 form. Matches the first sfForm instance from controller and returns isValid() value.
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="/logout">Logout</a>
param
$textparam null
$url
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); // GET
param
$uriparam
$params
Sign's user in with sfGuardAuth. Uses standard path: /sfGuardAuth/signin for authorization. Provide username and password.
param
$usernameparam
$password
Sign out is performing by triggering '/logout' url.
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