Magento TAF is a pretty good thing to automize your Magento store testing. When you start working with Magento TAF, you have many tests, which are ready for use, so this framework can help to develop all kinds of tests without building an automatic infrastructure. Since a TAF users guide is a bit outdated, and some things in the framework have been already changed we’ve decided to write an article on this topic.
- At the base level, Magento TAF will require the following software:
- PHP: 5.2.0 or later
- PHPUnit: 3.5 or later
- Java SE Development Kit
- Apache
- MySQL Server
- Selenium RC 2.0.3
Furthermore, Magento TAF contains the following two configuration files:
1. config.yml – contains the settings of the Selenium Server.
It is located in:
../magento-afw-x.x.x/config/config.yml
Here is a default content:
## Set up browsers for running tests ##
// List of browsers which can be used
browsers:
googlechrome: &googlechrome
name: 'Google Chrome'
// Browser name
browser: '*googlechrome'
// Host where it is installed and will be run
host: 'localhost'
// Port on the Host where this browser will be available
port: 4444
timeout: 60
firefox: &firefox
name: 'Firefox'
browser: '*chrome'
host: 'localhost'
port: 4444
timeout: 60
iexplorer: &iexplorer
name: 'Internet Explorer'
browser: '*iexplore'
host: 'localhost'
port: 4444
timeout: 60
// Default browser for run tests
default: *firefox
## Framework configuration ##
framework:
// Base pathes to the fixture and testsuite
fixture_base_path: 'fixture'
testsuite_base_path: 'testsuite'
// work only if tests are run for single browser
shareSession: true
coverageScriptUrl: ''
// Capture screenshot on failure works only for browsers that support it: Firefox/Chrome, IE with snapsIE tool
captureScreenshotOnFailure: true
// Parameter sets up the saves HTML pages on failure
saveHtmlPageOnFailure: false
load_all_uimaps: true
load_all_data: true
cache:
frontend:
name: 'core'
options:
caching: false
cache_id_prefix: 'selenium_'
automatic_serialization: true
backend:
name: 'file'
options:
cache_dir: 'var/cache'
## Applications for running tests ##
//List of Applications which can be tested
applications:
//Settings of Magento application
// Name of Magento application
mage: &mage
fallbackOrderFixture: 'default'
fallbackOrderHelper: 'Core'
areas:
// General link, base UImap, login and password to the backend
admin:
url: 'http://www.localhost.com/magento/admin/'
base_page_uimap: 'log_in_to_admin'
uimap_path: 'admin'
login: 'admin_login'
password: 'admin_password'
// General link, base UImap, login and password to the frontend
frontend:
url: 'http://www.localhost.com/magento/'
base_page_uimap: 'home_page'
uimap_path: 'frontend'
login: ''
password: ''
// General link, base UImap, login and password to the paypal sandbox
paypal_sandbox: &paypalSandbox
url: 'https://www.sandbox.paypal.com/'
base_page_uimap: 'paypal_sandbox'
uimap_path: 'paypal_sandbox'
login: 'paypal_sandbox_login'
password: 'paypal_sandbox_password'
// General link, base UImap, login and password to the paypal developer
paypal_developer: &paypalDeveloper
url: 'https://developer.paypal.com/'
base_page_uimap: 'paypal_developer_home'
uimap_path: 'paypal_developer'
login: 'paypal_developer_login'
password: 'paypal_developer_password'
// Default Magento application which can be used
default: *mage
2. phpunit.xml – contains the list of the test-scripts (test cases) to be run, and it is located in:
../magento-afw-x.x.x/phpunit.xml.
Default content:
<phpunit backupGlobals="true"
backupStaticAttributes="false"
bootstrap="bootstrap.php"
cacheTokens="true"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
printerClass="PHPUnit_TextUI_ResultPrinter"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader"
strict="false"
verbose="true">
<testsuites>
<testsuite name="Test Suite">
<directory suffix=".php">tests/Customer/</directory>
</testsuite>
</testsuites>
<logging>
<log type="json" target="./var/logs/logfile.json"/>
<log type="tap" target="./var/logs/logfile.tap"/>
<log type="junit" target="./var/logs/logfile.xml" logIncompleteSkipped="false"/>
<log type="testdox-html" target="./var/logs/testdox.html"/>
<log type="testdox-text" target="./var/logs/testdox.txt"/>
</logging>
</phpunit>
Then, for executing all tests, you should change the test suite name to All Tests, choose directory with all tests, and leave empty test name in the phpunit.xml file, like on the following example:
<testsuites>
<testsuite name="All Tests">
<directory suffix=".php">testsuite</directory>
</testsuite>
</testsuites>
Moreover, for executing one or few test suites, you should change a test suite name to Test Suite, choose the directories with test suites and leave empty test name. If you want to execute all tests from the suite, it is necessary to enter the name of a single test from the chosen directory:
<testsuites>
<testsuite name="Test Suite">
<directory suffix="RegisterTest.php">testsuite/core/Mage/Customer/</directory>
<directory suffix=".php">testsuite/core/mage/Newsletter/</directory>
</testsuite>
</testsuites>
For executing a single test, you should change a test suite name to Single Test, enter full name of the test file and full path to this file:
<testsuites>
<testsuite name="Single Test">
<directory suffix="SimpleTest.php">testsuite/core/Mage/Product/Create/</directory>
</testsuite>
</testsuites>
In case of executing Magento TAF – follow these steps:
1. Run Selenium Server.
$ java -jar BaseDir/selenium-server-standalone-x.xx.x.jar
2. Execute runtest.bat (in Windows) through the command prompt for test running.
3. Execute runtest.sh for Linux/*NIX OS through the terminal for the running.
$ sh BaseDir/runtests.sh
After executing runtests.sh in the terminal, you will be able to see the current progress.
When all the tests have been executed, you’ll see a description of all failures, errors, incompletes, skips.
Legend:
- “.” – test PASSed
- “S” – test SKIPped
- “I” – test INCOMPLETE
- “F” – test FAILed
- “E” – error appears during test running
Configuration read from /Users/admin/taf/magento-afw/phpunit.xml
..FF.........................................F................. 63 / 241 ( 26%)
....................F.............F............................ 126 / 241 ( 52%)
..........F...............F.................................F.F 189 / 241 ( 78%)
..............................................FFFFFE
Time: 20.13 hours, Memory: 36.00Mb
There was 1 error:
1) Core_Mage_Product_DuplicateTest::duplicateConfigurable
OutOfRangeException: Cannot find page with mca "catalog_product/edit/attributes/NjQ1/set/4/type/configurable" in "admin" area
/Users/admin/taf/magento-afw/framework/Mage/Selenium/Helper/Uimap.php:301
/Users/admin/taf/magento-afw/framework/Mage/Selenium/TestCase.php:1697
/Users/admin/taf/magento-afw/framework/Mage/Selenium/TestCase.php:1733
/Users/admin/taf/magento-afw/framework/Mage/Selenium/TestCase.php:2876
/Users/admin/taf/magento-afw/framework/Mage/Selenium/TestCase.php:2857
/Users/admin/taf/magento-afw/tests/Product/Helper.php:429
/Users/admin/taf/magento-afw/tests/Product/DuplicateTest.php:306
--
There were 14 failures:
1) Core_Mage_Product_Create_BundleTest::allFieldsForDynamic
general_news_from: The stored value is not equal to specified: ('1/8/14' != '1/8/2014')
general_news_to: The stored value is not equal to specified: ('1/8/14' != '1/8/2014')
prices_special_price_from: The stored value is not equal to specified: ('1/8/14' != '1/8/2014')
prices_special_price_to: The stored value is not equal to specified: ('1/8/14' != '1/8/2014')
design_active_from: The stored value is not equal to specified: ('1/8/14' != '1/8/2014')
design_active_to: The stored value is not equal to specified: ('1/8/14' != '1/8/2014')
/Users/admin/taf/magento-afw/framework/Mage/Selenium/TestCase.php:1384
/Users/admin/taf/magento-afw/tests/Product/Helper.php:618
/Users/admin/taf/magento-afw/tests/Product/Create/BundleTest.php:123
That’s all for now. We hope this article will help you to start working with the test automation framework and you are welcome to share your experience and thoughts about it in the comments.
