/** * Runs a Selenium_TestCase, useful if we are running an interactive Test with assertions * @param array $configEntry Single test-node from XML * @param Codex_Xtest_Xtest_Selenium_TestCase $testObject Passed testObject, needs to implement doGeneralAssert */ protected function doPageTest(array $configEntry, Codex_Xtest_Xtest_Selenium_TestCase $testObject) { /** * @var Codex_Xtest_Xtest_Pageobject_Frontend_Homepage $page */ $page = $testObject->getPageObject('xtest/pageobject_frontend_homepage'); $urlinfo = parse_url(Mage::getBaseUrl()); $urlinfo['path'] = trim($urlinfo['path']) . $configEntry['url']['url']; if ($configEntry['url']['method'] === 'get') { $urlinfo['query'] = $configEntry['url']['params']; } $url = $this->http_build_url($urlinfo); $page->url($url); if (!empty($configEntry['clickon'])) { if (is_string($configEntry['clickon'])) { $elements = $page->findElementsByCssSelector($configEntry['clickon']); foreach ($elements as $element) { $element->click(); } } else { if (is_array($configEntry['clickon'])) { foreach ($configEntry['clickon'] as $clickElement) { $elements = $page->findElementsByCssSelector($clickElement); foreach ($elements as $element) { $element->click(); } } } } } $responseBody = $page->source(); if (is_array($configEntry['assert'])) { foreach ($configEntry['assert'] as $assert) { $assert = $this->stringParser($assert); $page->assertContains($assert, $responseBody, 'Assert failed: ' . $assert); } } else { $assert = $this->stringParser($configEntry['assert']); $page->assertContains($assert, $responseBody, 'Assert failed: ' . $assert); } $page->takeResponsiveScreenshots($configEntry['rendername']); $testObject->doGeneralAssert($responseBody); }