[TASK] Codeception Add page test 47/47147/2
authorRoland Golla <rolandgolla@gmail.com>
Mon, 7 Mar 2016 15:26:01 +0000 (16:26 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Thu, 24 Mar 2016 08:47:40 +0000 (09:47 +0100)
This test add a page with the page module and the pagetree.
It also checks the error message when you have no page title.
After adding the page the test use the pagetree contect menu to delete it.

Resolves: #74432
Releases: master
Change-Id: If40b64fd01f8d308484ff95f14c394c65ffe39f8
Reviewed-on: https://review.typo3.org/47147
Reviewed-by: Timo Schmidt <timo-schmidt@gmx.net>
Tested-by: Timo Schmidt <timo-schmidt@gmx.net>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/core/Tests/Acceptance/Backend/Page/AddPageInPageModuleCest.php

index b3ead39..803b1dd 100644 (file)
@@ -18,6 +18,7 @@ use TYPO3\CMS\Core\Tests\Acceptance\Step\Backend\Kasper;
 
 /**
  * This testcase is used to check if a page can be added with the page module.
+ * It also tests to remove the new page with the page tree context menu.
  */
 class AddPageInPageModuleCest
 {
@@ -32,21 +33,26 @@ class AddPageInPageModuleCest
     }
 
     /**
-     * @env firefox
-     * @env chrome
      * @param Kasper $I
      */
     public function tryToTest(Kasper $I)
     {
+        // Select page module
         $I->wantToTest('Add a page with page module');
         $I->click('Page');
-        $I->waitForElement('#typo3-navigationContainer');
-        $rootNode = '.x-tree-node:nth-child(1) > div > a';
-        $contextMenuNew = '#typo3-pagetree-contextmenu > ul > li:nth-child(2) > a > span.x-menu-item-text';
+
+        // New page from root page
+        $typo3NavigationContainer = '#typo3-navigationContainer';
+        $I->waitForElement($typo3NavigationContainer);
+        $rootNode = 'a.x-tree-node-anchor > span';
+        $rootNodeIcon = '#extdd-1 > span.t3js-icon.icon.icon-size-small.icon-state-default.icon-apps-pagetree-root';
+        $contextMenuNew = '#typo3-pagetree-contextmenu > ul > li.x-menu-list-item:nth-of-type(2) > a > span.x-menu-item-text';
         $I->waitForElement($rootNode);
-        $I->clickWithRightButton($rootNode);
+        $I->click($rootNodeIcon);
         $I->waitForElement($contextMenuNew);
         $I->click($contextMenuNew);
+
+        // Switch to content frame
         $I->switchToIFrame('content');
         $saveButton = 'body > div > div.module-docheader.t3js-module-docheader > div.module-docheader-bar.module-docheader-bar-buttons.t3js-module-docheader-bar.t3js-module-docheader-bar-buttons > div.module-docheader-bar-column-left > div > div > button:nth-child(1)';
         $I->waitForElement($saveButton);
@@ -55,11 +61,40 @@ class AddPageInPageModuleCest
         $I->amGoingTo('check empty error');
         $I->click($saveButton);
         $I->wait(2);
-        $generalTab = '#EditDocumentController > div > div:nth-child(1) > ul > li';
+        $editControllerDiv = '#EditDocumentController > div';
+        $generalTab = $editControllerDiv . ' > div:nth-child(1) > ul > li';
         $classString = $I->executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) use ($generalTab) {
             return $webdriver->findElement(\WebDriverBy::cssSelector($generalTab))->getAttribute('class');
         });
-        $I->assertNotEquals(false, strpos($classString, 'has-validation-error'));
+        $I->assertContains('has-validation-error', $classString);
+
+        // Add page
+        $pageTitle = $editControllerDiv . ' > div:nth-child(1) > div > div.tab-pane:nth-child(1) > fieldset:nth-child(2) > div > div:nth-child(1) > div > div.form-control-wrap > div > input';
+        $I->fillField($pageTitle, 'Testpage');
+        $I->click($saveButton);
+        $I->waitForElement($pageTitle);
+        $I->assertEquals('Testpage', $I->grabValueFrom($pageTitle), 'Value in input field.');
         $I->switchToIFrame();
+
+        // Check tree
+        $I->waitForElement($typo3NavigationContainer);
+        $pageInTree = '#typo3-pagetree-tree > div > div > ul > div > li > ul > li > div > a > span';
+        $I->assertEquals('Testpage', $I->grabTextFrom($pageInTree), 'Value in tree.');
+
+        // And delete page from tree
+        $pageInTreeIcon = '#typo3-pagetree-tree > div > div > ul > div > li > ul > li > div > span.t3js-icon.icon.icon-size-small.icon-state-default.icon-apps-pagetree-page-default';
+        $pageActions = '#typo3-pagetree-contextmenu > ul > li:nth-child(8) > a > span.x-menu-item-text';
+        $delete = '#typo3-pagetree-contextmenu-sub1 > ul > li:nth-child(6) > a > span.x-menu-item-text';
+        $I->click($pageInTreeIcon);
+        $I->waitForElement('#typo3-pagetree-contextmenu');
+        $I->waitForElement($pageActions);
+        $I->moveMouseOver($pageActions);
+        $I->waitForElement('#typo3-pagetree-contextmenu-sub1');
+        $I->click($delete);
+        $yesButtonPopup = '#-main > div.x-window.x-window-plain.x-window-dlg > div.x-window-bwrap > div.x-window-bl > div > div > div > div.x-panel-fbar.x-small-editor.x-toolbar-layout-ct > table > tbody > tr > td.x-toolbar-left > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(2) > td.x-btn-mc > em > button';
+        $I->waitForElement($yesButtonPopup);
+        $I->click($yesButtonPopup);
+        $I->wait(1);
+        $I->cantSee('Testpage');
     }
 }