Cheats

This cheats page is an unordered list of common, quick code examples you can use to copy and paste code into your Magium Magento tests. The un-fully qualified class names are provided for the sake of clarity on this page. Use code completion in your IDE to get the right ones.

Hint: Magium is designed to be very intuitive when using code completion.

Hint: Most examples presume that they are in a properly defined AbstractMagentoTestCase class.

Basic Operations

Starting A Test


use Magium\Magento\AbstractMagentoTestCase;

class BasicTest extends AbstractMagentoTestCase
{

    public function testGuestCheckout()
    {
        $theme = $this->getTheme();
        $this->commandOpen($theme->getBaseUrl());
    }
}
    

Navigating To A Category Page

Add Hoc Category Navigation


$this->getNavigator()->navigateTo('Men/Shirts');
    

Static Category Navigation (recommended)

This method is recommended because it provides a global category via configuration. If the category needs to be changed, it will be changed in only one place. This makes the test much simpler to use.


$this->getNavigator(DefaultSimpleProductCategory::NAVIGATOR)->navigateTo();
    

Navigating To A Product Page

Ad Hoc Navigation To A Product Page

When on a category page do the following


$this->getNavigator(Product::NAVIGATOR)->navigateTo('Blue Horizons Bracelets');
    

Static Product Navigation For A Simple Product(recommended)

This method is recommended because it provides a global category via configuration. If the category needs to be changed, it will be changed in only one place. This makes the test much simpler to use.


$this->getNavigator(DefaultSimpleProductCategory::NAVIGATOR)->navigateTo();
$this->getNavigator(DefaultSimpleProduct::NAVIGATOR)->navigateTo();
    

Static Product Navigation For A Configurable Product(recommended)

This method is recommended because it provides a global category via configuration. If the category needs to be changed, it will be changed in only one place. This makes the test much simpler to use.


$this->getNavigator(DefaultConfigurableProductCategory::NAVIGATOR)->navigateTo();
$this->getNavigator(DefaultConfigurableProduct::NAVIGATOR)->navigateTo();
    

Adding A Simple Product To The Cart From The Product Page


$this->getAction(AddSimpleProductToCart::ACTION)->execute();

// or

$action = $this->getAction(AddSimpleProductToCart::ACTION);
/* @var $action AddSimpleProductToCart */
$action->setQty(2); // configure the quantity
$action->execute();
    

Adding A Configurable Product To The Cart From The Product Page


$action = $this->getAction(AddConfigurableProductToCart::ACTION);
/* @var $action AddConfigurableProductToCart */
$action->setOption('size', 'large');
$action->setOption('color', 'red');
$action->execute();
    

Searching The Website


$this->getAction(Search::ACTION)->search('search terms');
    

Logging In As A Customer


// If you are on the login page
$this->getAction(NavigateAndLogin::ACTION)->login();

// or if you are not on the login page

$this->getAction(\Magium\Magento\Actions\Customer\Login::ACTION)->login();
    

Navigate To A Customer Page (such as Orders)


$this->getNavigator(Account::NAVIGATOR)->navigateTo('My Orders');
    

Checkout

Each example presumes a product has been added to the cart

Guest Checkout


$this->getAction(GuestCheckout::ACTION)->execute();
    

Customer Checkout


$this->getAction(CustomerCheckout::ACTION)->execute();
    

New Customer Checkout


$this->getAction(RegisterNewCustomerCheckout::ACTION)->execute();
    

Stopping Checkout


$customerCheckout= $this->getAction(CustomerCheckout::ACTION);
/* @var $customerCheckout \Magium\Magento\Actions\Checkout\CustomerCheckout */
$customerCheckout->addStep(
    $this->getAction(StopProcessing::ACTION), // The step to add, StopProcessing, in this case
    $this->getAction(PlaceOrder::ACTION) // Insert it prior to this step
);
$customerCheckout->execute();
    

Changing A Customer Parameter During Checkout


$this->getIdentity()->setBillingFirstName('Bob');
$this->getAction(GuestCheckout::ACTION)->execute();
    

Admin

Logging In


$this->getAction(\Magium\Magento\Actions\Admin\Login\Login::ACTION)->login();
    

Navigation

Navigate To An Arbitrary Page


$this->getNavigator(AdminMenu::NAVIGATOR)->navigateTo('Promotions/Catalog Price Rules');
    

Navigate To An Order


$this->getNavigator(Order::NAVIGATOR)->navigateTo('100000101);
    

Navigate To A Customer


$this->getNavigator(AdminMenu::NAVIGATOR)->navigateTo('Customers/Manage Customers');
$this->getNavigator(Customer::NAVIGATOR)->navigateTo(new Customer\ByEmail('[email protected]'));
    

Changing A System Configuration Value


$this->getAction(Login::ACTION)->login();
$this->getNavigator(AdminMenu::NAVIGATOR)->navigateTo('System/Configuration');
$modifier = $this->getAction(SettingModifier::ACTION);
/* @var $modifier \Magium\Magento\Actions\Admin\Configuration\SettingModifier */

$modifier->set('Checkout/Checkout Options::label=Enable Terms and Conditions', SettingModifier::SETTING_OPTION_YES, true); // True saves it
    

Enable Or Disable A Module


$enabler = $this->getAction(Enabler::ACTION);
/** @var $enabler \Magium\Magento\Actions\Admin\Configuration\Enabler */
$enabler->disable('Payment Methods/Saved CC');
    

Available Assertions

Assert that an element denoted by the selector is clickable (tempermental)


        $this->assertElementClickable('//body', WebDriver::BY_XPATH);
    

Assert that an element denoted by the selector is not clickable (tempermental)


        $this->assertElementNotClickable('//body', WebDriver::BY_XPATH);
    

Assert that an element denoted by the selector exists


        $this->assertElementExists('//body', WebDriver::BY_XPATH);
    

Assert that the title of a page is exactly


        $this->assertTitleEquals('The title exactly equals this text');
    

Assert that the title at least has this text in it


        $this->assertTitleContains('Title contains this text');
    

Assert that the title does not equal this text


        $this->assertNotTitleEquals('The title does not exactly equal this text');
    

Assert that the title does not contain this text as a substring


        $this->assertNotTitleContains('The title does not contain this text');
    

Assert that the current browser URL matches this exactly


        $this->assertURLEquals('An exact URL to match');
    

Assert that the current browser URL contains certain text


        $this->assertURLContains('A partial URL match');
    

Assert that the current URL does not match the specified URL


        $this->assertURLNotEquals('The current URL is not this URL');
    

Assert that the current URL does not contain the specified text


        $this->assertURLNotContains('The URL does not contain this text');
    

Assert that an element denoted by the selector exists and is displayed


        $this->assertElementDisplayed('//body', WebDriver::BY_XPATH);
    

Assert that an element denoted by the selector exists, but is not displayed


        $this->assertElementNotDisplayed('//body', WebDriver::BY_XPATH);
    

Assert that the retrieved element does not contain the specified text


        $this->assertElementHasText(WebDriverElement $node, 'Text);
    

Assert that the page contains the specified text


        $this->assertPageHasText('The page has this text in one or several of its elements');
    

Assert that the page does not contain the specified text


        $this->assertPageNotHasText('The page does not have this text');