From babbc4aba4768f69eb82b282b274147076257be7 Mon Sep 17 00:00:00 2001 From: Sascha Egerer <sascha@sascha-egerer.de> Date: Fri, 15 Apr 2016 20:46:45 +0200 Subject: [PATCH] [TASK] Add acceptance tests for favorite function in topbar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ib63314a930006cf2d9b98305abdbb1185d1cda71 Related: #75631 Releases: master Reviewed-on: https://review.typo3.org/47720 Reviewed-by: Dirk Jüttner <dirk.juettner@gmail.com> Tested-by: Dirk Jüttner <dirk.juettner@gmail.com> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../Backend/Topbar/FavoriteCest.php | 155 ++++++++++++++++++ .../Acceptance/Support/Helper/Topbar.php | 35 ++++ 2 files changed, 190 insertions(+) create mode 100644 typo3/sysext/core/Tests/Acceptance/Backend/Topbar/FavoriteCest.php create mode 100644 typo3/sysext/core/Tests/Acceptance/Support/Helper/Topbar.php diff --git a/typo3/sysext/core/Tests/Acceptance/Backend/Topbar/FavoriteCest.php b/typo3/sysext/core/Tests/Acceptance/Backend/Topbar/FavoriteCest.php new file mode 100644 index 000000000000..30b733c4f68b --- /dev/null +++ b/typo3/sysext/core/Tests/Acceptance/Backend/Topbar/FavoriteCest.php @@ -0,0 +1,155 @@ +<?php +namespace TYPO3\CMS\Core\Tests\Acceptance\Backend\Topbar; + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +use Codeception\Scenario; +use TYPO3\CMS\Core\Tests\Acceptance\Step\Backend\Admin; +use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog; +use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\Topbar; + +/** + * Test for the "Favorite" functionality + */ +class FavoriteCest +{ + /** + * Selector for the module container in the topbar + * + * @var string + */ + public static $topBarModuleSelector = '#typo3-cms-backend-backend-toolbaritems-shortcuttoolbaritem'; + + /** + * Selector for the "Add to favorite" button + * + * @var string + */ + protected static $docHeaderFavoriteButtonSelector = '.module-docheader .btn[title="Create a bookmark to this page"]'; + + /** + * @param Admin $I + */ + public function _before(Admin $I) + { + $I->useExistingSession(); + $I->switchToIFrame('content'); + // Ensure main content frame is fully loaded, otherwise there are load-race-conditions + $I->waitForText('Web>Page module'); + } + + /** + * @param Admin $I + * @return Admin + */ + public function checkThatFavoriteListIsInitiallyEmpty(Admin $I) + { + $this->clickFavoriteDropdownToggleInTopbar($I); + $I->cantSeeElement(self::$topBarModuleSelector . ' .shortcut'); + return $I; + } + + /** + * @depends checkThatFavoriteListIsInitiallyEmpty + * @param Admin $I + * @param ModalDialog $dialog + * @return Admin + */ + public function checkThatAddingAFavoriteAddAItemToTheFavoriteList(Admin $I, ModalDialog $dialog, Scenario $scenario) + { + $I->switchToIFrame(); + // open the scheduler module as we would like to put it into the favorite liste + $I->click('Scheduler', '#typo3-module-menu'); + + $I->switchToIFrame('content'); + + $I->click(self::$docHeaderFavoriteButtonSelector); + // cancel the action to test the functionality + $dialog->clickButtonInDialog('Cancel'); + + // check if the list is still empty + $this->checkThatFavoriteListIsInitiallyEmpty($I); + + $I->switchToIFrame('content'); + $I->click(self::$docHeaderFavoriteButtonSelector); + + $dialog->clickButtonInDialog('OK'); + + $this->clickFavoriteDropdownToggleInTopbar($I); + $I->canSee('Scheduled tasks', self::$topBarModuleSelector . ' ' . Topbar::$dropdownContainerSelector); + + // @test complese test when https://forge.typo3.org/issues/75689 is fixed + $scenario->comment( + 'Test for deleting the item in the list and readd it are missing ' . + 'as this is currently broken in the core. See https://forge.typo3.org/issues/75689' + ); + + return $I; + } + + /** + * @param Admin $I + * @depends checkThatAddingAFavoriteAddAItemToTheFavoriteList + */ + public function checkIfFavoriteItemLinksToTarget(Admin $I) + { + $this->clickFavoriteDropdownToggleInTopbar($I); + $I->click('Scheduled tasks', self::$topBarModuleSelector); + $I->switchToIFrame('content'); + $I->canSee('Scheduled tasks', 'h1'); + } + + /** + * @param Admin $I + * @depends checkThatAddingAFavoriteAddAItemToTheFavoriteList + */ + public function checkIfEditFavoriteItemWorks(Admin $I) + { + $this->clickFavoriteDropdownToggleInTopbar($I); + $firstShortcutSelector = self::$topBarModuleSelector . ' .shortcut'; + $I->click('.shortcut-edit', $firstShortcutSelector); + + $I->fillField($firstShortcutSelector . ' input[name="shortcut-title"]', 'Scheduled tasks renamed'); + $I->click('.shortcut-form-save', $firstShortcutSelector); + + // searching in a specific context fails with an "Stale Element Reference Exception" + // see http://docs.seleniumhq.org/exceptions/stale_element_reference.jsp + // currently don't know how to fix that so we search in the whole context. + $I->waitForText('Scheduled tasks renamed'); + } + + /** + * @param Admin $I + * @depends checkThatAddingAFavoriteAddAItemToTheFavoriteList + */ + public function checkIfDeleteFavoriteWorks(Admin $I, ModalDialog $dialog) + { + $this->clickFavoriteDropdownToggleInTopbar($I); + + $I->canSee('Scheduled tasks renamed', self::$topBarModuleSelector); + $I->click('.shortcut-delete', self::$topBarModuleSelector . ' .shortcut'); + $dialog->clickButtonInDialog('OK'); + + $I->cantSee('Scheduled tasks renamed', self::$topBarModuleSelector); + } + + /** + * @param Admin $I + */ + protected function clickFavoriteDropdownToggleInTopbar(Admin $I) + { + $I->switchToIFrame(); + $I->click(Topbar::$dropdownToggleSelector, self::$topBarModuleSelector); + } +} diff --git a/typo3/sysext/core/Tests/Acceptance/Support/Helper/Topbar.php b/typo3/sysext/core/Tests/Acceptance/Support/Helper/Topbar.php new file mode 100644 index 000000000000..3a348a02d38e --- /dev/null +++ b/typo3/sysext/core/Tests/Acceptance/Support/Helper/Topbar.php @@ -0,0 +1,35 @@ +<?php +namespace TYPO3\CMS\Core\Tests\Acceptance\Support\Helper; + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +/** + * Helper to interact with the Topbar + */ +class Topbar +{ + /** + * Selector for the dropdown container + * + * @var string + */ + public static $dropdownContainerSelector = '.dropdown-menu'; + + /** + * Selector for the dropdown toggle + * + * @var string + */ + public static $dropdownToggleSelector = '.dropdown-toggle'; +} -- GitLab