public function editCategoryNotVisibleTime(AcceptanceTester $I) { $I->logInAsAnAdmin(); $I->amOnEditCategory(CI_EDITABLE_CATEGORY_ID); $title = time() . 'title'; $I->fillField('title', $title); $I->checkOption('#exposed'); $from = date_time(time() - 10000); $until = date_time(time() - 100); $I->fillField('available_from', $from); $I->fillField('available_until', $until); $I->click('Save changes'); $I->waitForText('Edit category'); $I->seeCheckboxIsChecked('#exposed'); $I->seeInField('available_from', $from); $I->seeInField('available_until', $until); $I->amOnPage('/challenges'); $I->see($title); $I->amOnPage('/challenges?category=' . to_permalink($title)); $I->see('Category unavailable'); $I->see('This category is not available. It is open from ' . $from); $I->see('until ' . $until); $I->amOnAdminHome(); $I->see($title); }
public function administratorCreateCategoryWithoutTitleFails(AcceptanceTester $I) { $I->am('Administrator'); $I->wantToTest('Category creation in /administrator/ without title fails'); $I->doAdministratorLogin(); $I->amGoingTo('Navigate to Categories page in /administrator/'); $I->amOnPage('administrator/index.php?option=com_categories&extension=com_weblinks'); $I->waitForText('Weblinks: Categories', '60', ['css' => 'h1']); $I->expectTo('see categories page'); $I->amGoingTo('try to save a category with empty title and it should fail'); $I->clickToolbarButton('new'); $I->waitForText('Weblinks: New Category', '60', ['css' => 'h1']); $I->clickToolbarButton('save'); $I->expectTo('see an error when trying to save a category without title'); $I->see('Invalid field: Title', ['id' => 'system-message-container']); }
/** * @depends deleteNewsNoTickConfirmation */ public function deleteNewsTickConfirmation(AcceptanceTester $I) { $I->logInAsAnAdmin(); $I->amOnListNews(); $I->click('Edit'); $I->waitForText('Edit news item'); $I->seeInCurrentUrl('/edit_news'); $I->checkOption('#delete_confirmation'); $I->click('Delete news item'); $I->seeInCurrentUrl('/list_news'); $I->dontSee('Edit'); }
public function administratorUnpublishCategory(AcceptanceTester $I) { $I->am('Administrator'); $I->wantToTest('Category unpublishing in /administrator/'); $I->doAdministratorLogin(); $I->amGoingTo('Navigate to Categories page in /administrator/'); $I->amOnPage('administrator/index.php?option=com_categories&extension=com_weblinks'); $I->waitForText('Weblinks: Categories', '30', ['css' => 'h1']); $I->expectTo('see categories page'); $I->checkForPhpNoticesOrWarnings(); $I->amGoingTo('try to save a category with a filled title'); $I->click(['xpath' => "//button[@onclick=\"Joomla.submitbutton('category.add')\"]"]); $I->waitForText('Category Manager: Add A New Weblinks Category', '30', ['css' => 'h1']); $I->fillField(['id' => 'jform_title'], 'automated testing unpub' . rand(1, 100)); $I->click(['xpath' => "//button[@onclick=\"Joomla.submitbutton('category.save')\"]"]); $I->expectTo('see a success message after saving the category'); $I->see('Category successfully saved', ['id' => 'system-message-container']); $I->amGoingTo('Search for automated testing'); $I->fillField(['xpath' => "//input[@id=\"filter_search\"]"], "automated testing unpub" . "\n"); $I->waitForText('Weblinks: Categories', '30', ['css' => 'h1']); $I->amGoingTo('Select the first weblink'); $I->click(['xpath' => "//input[@id=\"cb0\"]"]); $I->amGoingTo('Try to publish a weblink category'); $I->click(['xpath' => "//button[@onclick=\"if (document.adminForm.boxchecked.value==0){alert('Please first make a selection from the list.');}else{ Joomla.submitbutton('categories.publish')}\"]"]); $I->waitForText('Weblinks: Categories', '30', ['css' => 'h1']); $I->expectTo('See a success message after publishing the category'); $I->see('1 category successfully published.', ['id' => 'system-message-container']); // Unpublish it again $I->waitForText('Weblinks: Categories', '30', ['css' => 'h1']); $I->amGoingTo('Select the first weblink'); $I->click(['xpath' => "//input[@id=\"cb0\"]"]); $I->amGoingTo('Try to unpublish a weblink category'); $I->click(['xpath' => "//button[@onclick=\"if (document.adminForm.boxchecked.value==0){alert('Please first make a selection from the list.');}else{ Joomla.submitbutton('categories.unpublish')}\"]"]); $I->waitForText('Weblinks: Categories', '30', ['css' => 'h1']); $I->expectTo('See a success message after unpublishing the category'); $I->see('1 category successfully unpublished', ['id' => 'system-message-container']); }
/** * @depends installCmc */ public function initializeCmcSettings(\AcceptanceTester $I) { $I->doAdministratorLogin(); $I->comment('Mailchimp API Key from acceptance.suite.yml (see _support/AcceptanceHelper.php)'); $key = $I->getConfiguration('api_key'); $I->amGoingTo('Navigate to CMC page in /administrator/'); $I->amOnPage('administrator/index.php?option=com_cmc&view=cpanel'); // Wait for text dashboard - wait for text not working $I->waitForElementVisible('#ctitle'); $I->checkForPhpNoticesOrWarnings(); // Options $I->click('Options'); $I->waitForText('Configuration', '30', ['css' => 'h1']); $I->fillField(['id' => 'jform_api_key'], $key); $I->click('Save & Close'); // Basck in the dashboard $I->waitForElementVisible('#ctitle'); $I->doAdministratorLogout(); }
private function savePostInNewGroupOnCard(\AcceptanceTester $I) { $I->wantTo('save post in new group on card'); $I->amOnPage('/'); $I->click('.new.btn-default'); $I->waitForElement('.save[data-id="600"]', 10); $I->click('.save[data-id="600"]'); $I->waitForElement('a.create-save', 10); $I->see('group-3 for user 100'); $I->click('a.create-save'); $I->waitForElement('form.savegroup-create', 10); $I->fillField('form.savegroup-create input[name="name"]', 'yay'); $I->click('form.savegroup-create .btn-primary'); $I->waitForElementNotVisible('form.savegroup-create', 10); $I->amOnPage('/user1/savegroups'); $I->waitForText('yay', 10); $I->amOnPage('/user1/savegroups/yay'); $I->waitForElement('.post[data-id="600"]', 10); $I->click('a.edit-savegroups'); $I->waitForElement('button.delete-savegroups', 10); $I->click('button.delete-savegroups'); $I->waitForElement('#modal-3 .btn-primary', 10); $I->click('#modal-3 .btn-primary'); $I->waitForElementNotVisible('#modal-3 .btn-primary', 10); $I->amOnPage('/user1/savegroups'); $I->waitForText('Uncategorized', 10); $I->dontsee('yay'); // delete post 600 in group 500 //$this->db->real_query('DELETE FROM `shoppyst`.`save_group_post` WHERE `save_group_post`.`save_group_id` = 500 AND `save_group_post`.`post_id` = 600'); }
$I->fillField('order_tel01', '00'); $I->fillField('order_tel02', '0000'); $I->fillField('order_tel03', '0000'); $I->fillField('order_email', '*****@*****.**'); $I->fillField('order_email02', '*****@*****.**'); $I->click('input[name="order_sex"][value="1"]'); $I->click('上記のお届け先のみに送る'); $I->click('input[name="payment_id"][value="5"]'); $I->click('次へ'); $I->click('次へ'); $I->waitForElement('#WP_checkoutBox', 5); $I->executeJS('WebPay.testMode = true'); $I->see('クレジットカード決済'); $I->click('カードで支払う'); $I->fillField('#WP_cardNumber', '4242 4242 4242 4242'); $I->selectOption('#WP_expMonth', '12'); $I->selectOption('#WP_expYear', '19'); $I->fillField('#WP_name', 'TEST TEST'); $I->fillField('#WP_cvc', '123'); $I->pushMockChargeResponse(['captured' => true]); $I->click('#WP_sendButton'); $I->waitForText('Test shopの商品をご購入いただき、ありがとうございました', 5); $I->loadRequest(); $I->seeInData('amount', 2782); $I->seeInData('card'); $I->seeInData('currency', 'jpy'); $I->seeInData('description', '1'); $admin->does(function (AcceptanceTester $I) { $steps = new AcceptanceTester\AdminSteps($I); $steps->seeLastOrder(['customer_id' => null, 'payment_id' => 'クレジットカード決済', 'status' => '入金済み']); });
<?php /** * @package redCORE * @subpackage Cept * @copyright Copyright (C) 2008 - 2015 redCOMPONENT.com. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ // Load the Step Object Page $I = new \AcceptanceTester($scenario); $I = new AcceptanceTester($scenario); $I->wantTo('Uninstall redCORE Extension'); $I->doAdministratorLogin(); $I->amOnPage('/administrator/index.php?option=com_installer&view=manage'); $I->waitForText('Extensions: Manage', 30, ['css' => 'H1']); $I->fillField('#filter_search', 'redCORE - component'); $I->click(['xpath' => "//button[@type='submit' and @data-original-title='Search']"]); $I->waitForElement(['id' => 'manageList']); $I->click(['xpath' => "//input[@id='cb0']"]); $I->click(['xpath' => "//div[@id='toolbar-delete']/button"]); $I->waitForText('Uninstalling the component was successful', 30, ['id' => 'system-message-container']); $I->see('Uninstalling the component was successful', ['id' => 'system-message-container']); $I->fillField(['id' => 'filter_search'], 'redCORE - component'); $I->click(['xpath' => "//button[@type='submit' and @data-original-title='Search']"]); $I->waitForText('There are no extensions installed matching your query.', 30, ['class' => 'alert-no-items']); $I->see('There are no extensions installed matching your query.', ['class' => 'alert-no-items']);
<?php /** * @package redCORE * @subpackage Cept * @copyright Copyright (C) 2008 - 2015 redCOMPONENT.com. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ // Load the Step Object Page $I = new \AcceptanceTester($scenario); $I->wantToTest('Activate the default webservices available in redCORE'); $I->doAdministratorLogin(); $I->comment('I enable basic authentication'); $I->amOnPage('administrator/index.php?option=com_plugins'); $I->waitForText('Plugins', 30, ['css' => 'H1']); $I->fillField(['id' => 'filter_search'], 'redcore - system plugin'); $I->click(['xpath' => "//div[@id='filter-bar']/div[2]/button"]); // search button $I->click(['link' => 'redCORE - System plugin']); $I->waitForText('Plugins: redCORE - System plugin', 30, ['css' => 'h1']); $I->click(['link' => 'Webservice options']); $I->selectOptionInRadioField('Enable webservices', 'Yes'); $I->selectOptionInRadioField('Enable SOAP Server', 'Yes'); $I->selectOptionInChosen('Check user permission against', 'Joomla - Use already defined authorization checks in Joomla'); $I->click(['xpath' => "//div[@id='toolbar-apply']/button"]); $I->waitForText('Plugin successfully saved.', 30, ['id' => 'system-message-container']); $I->amOnPage('administrator/index.php?option=com_redcore&view=webservices'); $I->waitForText('Webservice Manager', 30, ['css' => 'H1']); $I->click(['class' => 'lc-not_installed_webservices']); $I->click(['class' => 'lc-install_all_webservices']); $I->waitForElement(['id' => 'oauthClientsList'], 30);
public function administratorCreateWeblinkWithoutTitleFails(AcceptanceTester $I) { $I->am('Administrator'); $I->wantToTest('Weblink creation without title fails in /administrator/'); $I->doAdministratorLogin(); $I->amGoingTo('Navigate to Weblinks page in /administrator/'); $I->amOnPage('administrator/index.php?option=com_weblinks'); $I->waitForText('Web Links', '30', ['css' => 'h1']); $I->expectTo('see weblinks page'); $I->checkForPhpNoticesOrWarnings(); $I->amGoingTo('try to save a weblink with empty title and it should fail'); $I->click(['xpath' => "//button[@onclick=\"Joomla.submitbutton('weblink.add')\"]"]); $I->waitForText('Web Link: New', '30', ['css' => 'h1']); $I->click(['xpath' => "//button[@onclick=\"Joomla.submitbutton('weblink.apply')\"]"]); $I->expectTo('see an error when trying to save a weblink without title and without URL'); $I->see('Invalid field: Title', ['id' => 'system-message-container']); $I->see('Invalid field: URL', ['id' => 'system-message-container']); }
/** * Checking current parameters in frontend * first time goes "processing order" page by clicking, other times goes to "processing order" page immediately * if you want to skip verifying of some parameters type null * verify one payment if string or many if array transmitted * * @version 1.1 * * @param object $I Controller * @param string $DeliveryName Delivery name * @param string $description Description * @param float|int|string $price Delivery price * @param float|int|string $freefrom Delivery free from * @param string $message Delivery sum specified message * @param string|array $pays Delivery Payment methods, which will included, if passed string : "_" - delimiter for few methods * @param string $selectpay Pass to select method, confirm the order and verify payment * @return void */ protected function CheckInFrontEnd(AcceptanceTester $I, $DeliveryName, $description = null, $price = null, $freefrom = null, $message = null, $pays = null, $selectpay = null) { static $WasCalled = FALSE; if (!$WasCalled) { $I->amOnPage('/shop/product/mobilnyi-telefon-sony-xperia-v-lt25i-black'); /** * @var string buy button "buy" * @var string basket button "into basket" * @var string $Attribute1 class of "buy" button */ $buy = "//div[@class='frame-prices-buy f-s_0']//form/div[3]"; //button "buy" $basket = "//div[@class='frame-prices-buy f-s_0']//form/div[2]"; //button "into basket" $Attribute1 = $I->grabAttributeFrom($buy, 'class'); //class of "buy" button //$Attribute2 = $I->grabAttributeFrom($basket,'class'); //class of "into basket" button $I->wait(5); $Attribute1 == 'btn-buy-p btn-buy' ? $I->click($buy) : $I->click($basket); $I->waitForElementVisible("//*[@id='popupCart']"); $I->wait(3); $I->click(".btn-cart.btn-cart-p.f_r"); } else { $I->amOnPage("/shop/cart"); } $WasCalled = TRUE; $present = FALSE; $I->waitForText('Оформление заказа'); $DeliveriesInProcessingOrderPageAmount = $I->grabClassCount($I, 'name-count'); for ($j = 1; $j <= $DeliveriesInProcessingOrderPageAmount; ++$j) { $GrabbedName = $I->grabTextFrom("//div[@class='frame-radio']/div[{$j}]//span[@class='text-el']"); if ($GrabbedName == $DeliveryName) { $present = TRUE; break; } } $present ? $I->assertEquals($DeliveryName, $GrabbedName) : $I->fail("Delivery method isn't present in front end"); if ($description) { $GrabbedDescription = $I->grabAttributeFrom("//div[@class='frame-radio']/div[{$j}]//span[@class='icon_ask']", 'data-title'); $I->assertEquals($GrabbedDescription, $description, "description is the same as desired"); } if ($price) { $GrabbedPrice = $I->grabTextFrom("//div[@class='frame-radio']/div[{$j}]/div[@class='help-block']/div[1]"); $GrabbedPrice = preg_replace('/[^0-9.]*/u', '', $GrabbedPrice); $price = ceil($price); $I->assertEquals($GrabbedPrice, $price, "price is the same as desired"); } if ($freefrom) { $Grabbedfreefrom = $I->grabTextFrom("//div[@class='frame-radio']/div[{$j}]/div[@class='help-block']/div[2]"); $Grabbedfreefrom = preg_replace('/[^0-9.]*/u', '', $Grabbedfreefrom); $freefrom = ceil($freefrom); $I->assertEquals($Grabbedfreefrom, $freefrom, "price is the same as desired"); } if ($message) { $Cmessage = $I->grabTextFrom("//div[@class='frame-radio']/div[{$j}]/div[@class='help-block']"); $I->comment($Cmessage); $I->assertEquals($Cmessage, $message, "price specified messege is the same as desired"); } if ($pays) { // $JQScrollToclick = "$('html,body').animate({scrollTop:$('div.frame-radio>div:nth-child($j)').offset().top});"; $I->scrollToElement($I, "div[class=\\'frame-radio\\'] div:nth-child(1) span[class=\\'text-el\\']"); //scroll for click $I->wait(5); $I->click("//div[@class='frame-radio']/div[{$j}]//span[@class='text-el']"); $I->scrollToElement($I, '.frame-payment.p_r'); if ($pays == 'off') { $I->waitForText('Нет способов оплаты', NULL, '//div[@class="frame-form-field"]/div[@class="help-block"]'); $I->see('Нет способов оплаты', '//div[@class="frame-form-field"]/div[@class="help-block"]'); } else { $I->waitForElementVisible("#cuselFrame-paymentMethod"); $I->click(".cuselText"); foreach ((array) $pays as $key => $pay) { $GrabbedPay = $I->grabTextFrom("//div[@id='cusel-scroll-paymentMethod']/span[{$key}+1]"); $I->assertEquals($GrabbedPay, $pay); } } } if (isset($selectpay)) { //$JQScrollToclick = "$('html,body').animate({scrollTop:$('div.frame-radio>div:nth-child($j)').offset().top});"; $I->scrollToElement($I, "div[class=\\'frame-radio\\'] div:nth-child(1) span[class=\\'text-el\\']"); //scroll for click $I->wait(5); $I->click("//div[@class='frame-radio']/div[{$j}]//span[@class='text-el']"); $I->scrollToElement($I, '.frame-payment.p_r'); $I->wait(5); $I->click("#cuselFrame-paymentMethod"); //White spaces added to method in "select" //Read text ,trim then verify , if true click $I->grabTextFrom("{$cssOrXPathOrRegex}"); $I->click(" " . $selectpay . " "); $I->wait(5); } }
* @package redCORE * @subpackage Cept * @copyright Copyright (C) 2008 - 2015 redCOMPONENT.com. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ // Load the Step Object Page $I = new \AcceptanceTester($scenario); $I->wantToTest(' that there are no Warnings or Notices in redCORE'); $I->doAdministratorLogin(); $I->wantTo('Activate redCORE system plugin features'); $I->amOnPage('administrator/index.php?option=com_plugins'); $I->fillField(['id' => 'filter_search'], 'redcore - system plugin'); $I->click(['xpath' => "//div[@id='filter-bar']/div[2]/button"]); // search button $I->click(['link' => 'redCORE - System plugin']); $I->waitForText('Plugin Manager: redCORE - System plugin', 5, ['css' => 'h1']); $I->click(['link' => 'Translation options']); $I->selectOptionInChosen('Enable translations', 'Yes'); $I->click(['link' => 'Webservice options']); $I->selectOptionInChosen('Enable webservices', 'Yes'); $I->click(['xpath' => "//div[@id='toolbar-apply']/button"]); $I->waitForText('Plugin successfully saved.', 5, ['id' => 'system-message-container']); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&contentelement=&layout=manage'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&component=com_banners&contentelement=banner_clients'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&component=com_banners&contentelement=banners&return'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&component=com_banners&contentelement=categories'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&component=com_banners&contentelement=contact_details'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&component=com_banners&contentelement=content'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&component=com_banners&contentelement=languages'); $I->checkForPhpNoticesOrWarnings('administrator/index.php?option=com_redcore&view=translations&component=com_banners&contentelement=menu');
<?php /** * @package Joomla * @subpackage Tests * * @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ $I = new \AcceptanceTester($scenario); $I->wantTo('Install Joomla CMS'); $I->expect('no configuration.php is in the Joomla CMS folder'); $I->dontSeeFileFound('configuration.php', $I->getConfiguration('Joomla folder')); $I->amOnPage('/installation/index.php'); // I Wait for the text Main Configuration, meaning that the page is loaded $I->waitForText('Main Configuration', 10, 'h3'); // I instantiate the Installation Configuration Page Elements: $configurationPage = \JoomlaInstallationConfigurationPage::$elements; $I->click($configurationPage['Language Selector']); $I->click($configurationPage[$I->getConfiguration('Language')]); $I->fillField('Site Name', 'Joomla CMS test'); $I->fillField('Description', 'Site for testing Joomla CMS'); // I get the configuration from acceptance.suite.yml (see: tests/_support/acceptancehelper.php) $I->fillField('Admin Email', $I->getConfiguration('Admin email')); $I->fillField('Admin Username', $I->getConfiguration('Username')); $I->fillField('Admin Password', $I->getConfiguration('Password')); $I->fillField('Confirm Admin Password', $I->getConfiguration('Password')); $I->click($configurationPage['No Site Offline']); $I->click('Next'); $I->wantTo('Fill the form for creating the Joomla site Database'); $I->waitForText('Database Configuration', 10, 'h3');