[TASK] Add more acceptance tests for extension manager 02/47702/4
authorSascha Egerer <sascha@sascha-egerer.de>
Fri, 15 Apr 2016 11:49:28 +0000 (13:49 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Fri, 15 Apr 2016 18:41:25 +0000 (20:41 +0200)
Refactor the extension manager acceptance tests and add some more.

Change-Id: I72eed4cba52bf6d2451462d9a9b919cff6de20e9
Resolves: #75661
Releases: master
Reviewed-on: https://review.typo3.org/47702
Reviewed-by: Dirk Jüttner <dirk.juettner@gmail.com>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Tested-by: Dirk Jüttner <dirk.juettner@gmail.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/core/Build/Configuration/Acceptance/Support/AcceptanceTester.php
typo3/sysext/core/Tests/Acceptance/Backend/Extensionmanager/CheckExtensionmanagerListCest.php [deleted file]
typo3/sysext/core/Tests/Acceptance/Backend/Extensionmanager/InstalledExtensionsCest.php [new file with mode: 0644]
typo3/sysext/core/Tests/Acceptance/Step/Backend/Admin.php
typo3/sysext/core/Tests/Acceptance/Step/Backend/Editor.php

index bfa59cb..83390a4 100644 (file)
@@ -20,7 +20,38 @@ class AcceptanceTester extends \Codeception\Actor
 {
     use _generated\AcceptanceTesterActions;
 
-   /**
-    * Define custom actions here
-    */
+    /**
+     * The session cookie that is used if the session is injected.
+     * This session must exist in the database fixture to get a logged in state.
+     * 
+     * @var string
+     */
+    protected $sessionCookie = '';
+
+    /**
+     * Use the existing database session from the fixture by setting the backend user cookie
+     */
+    public function useExistingSession()
+    {
+        $I = $this;
+        $I->amOnPage('/typo3/index.php');
+
+        // @todo: There is a bug in PhantomJS where adding a cookie fails.
+        // This bug will be fixed in the next PhantomJS version but i also found
+        // this workaround. First reset / delete the cookie and than set it and catch
+        // the webdriver exception as the cookie has been set successful.
+        try {
+            $I->resetCookie('be_typo_user');
+            $I->setCookie('be_typo_user', $this->sessionCookie);
+        } catch (\Facebook\WebDriver\Exception\UnableToSetCookieException $e) {
+        }
+        try {
+            $I->resetCookie('be_lastLoginProvider');
+            $I->setCookie('be_lastLoginProvider', '1433416747');
+        } catch (\Facebook\WebDriver\Exception\UnableToSetCookieException $e) {
+        }
+
+        // reload the page to have a logged in backend
+        $I->amOnPage('/typo3/index.php');
+    }
 }
diff --git a/typo3/sysext/core/Tests/Acceptance/Backend/Extensionmanager/CheckExtensionmanagerListCest.php b/typo3/sysext/core/Tests/Acceptance/Backend/Extensionmanager/CheckExtensionmanagerListCest.php
deleted file mode 100644 (file)
index 31bc10a..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-namespace TYPO3\CMS\Core\Tests\Acceptance\Backend\Extensionmanager;
-
-/*
- * 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 TYPO3\CMS\Core\Tests\Acceptance\Step\Backend\Admin;
-
-/**
- * Extensionmanager list view
- */
-class CheckExtensionmanagerListCest
-{
-    public function _before(Admin $I)
-    {
-        $I->useExistingSession();
-    }
-
-    /**
-     * Check extension styleguide is there
-     *
-     * @param Admin $I
-     */
-    public function checkExtensionSyleguideIsListed(Admin $I)
-    {
-        $I->wantTo('check extension styleguide is there');
-        $I->click('Extensions');
-
-        // Load frame set extensionmanager
-        $I->waitForElement('#typo3-contentContainerWrapper');
-
-        $I->switchToIFrame('content');
-
-        $extKey = 'Styleguide';
-        // Fill extension search field
-        $I->fillField('Tx_Extensionmanager_extensionkey', $extKey);
-
-        // Wait for search result
-        $I->waitForElement('#typo3-extension-list_wrapper');
-
-        // Look for extension key
-        $I->waitForText($extKey);
-    }
-}
diff --git a/typo3/sysext/core/Tests/Acceptance/Backend/Extensionmanager/InstalledExtensionsCest.php b/typo3/sysext/core/Tests/Acceptance/Backend/Extensionmanager/InstalledExtensionsCest.php
new file mode 100644 (file)
index 0000000..92d92df
--- /dev/null
@@ -0,0 +1,120 @@
+<?php
+namespace TYPO3\CMS\Core\Tests\Acceptance\Backend\Extensionmanager;
+
+/*
+ * 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 Facebook\WebDriver\Remote\DriverCommand;
+use TYPO3\CMS\Core\Tests\Acceptance\Step\Backend\Admin;
+
+/**
+ * Tests for the "Install list view" of the extension manager
+ */
+class InstalledExtensionsCest
+{
+    /**
+     * @param Admin $I
+     */
+    public function _before(Admin $I)
+    {
+        $I->useExistingSession();
+
+        // clear the localstorage to fix problems in phantomJs where the search
+        // sometimes is preserved over multiple sessions
+        $I->executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webDriver) {
+            $webDriver->executeScript('localStorage.clear();');
+        });
+
+        $I->click('Extensions', '#typo3-module-menu');
+        $I->switchToIFrame('content');
+        $I->waitForElementVisible('#typo3-extension-list');
+    }
+
+    /**
+     * @param Admin $I
+     */
+    public function checkSearchFiltersList(Admin $I)
+    {
+        $I->canSeeNumberOfElements('#typo3-extension-list tbody tr[role="row"]', [10, 100]);
+
+        // Fill extension search field
+        $I->fillField('Tx_Extensionmanager_extensionkey', 'cshmanual');
+
+        // see 2 rows. 1 for the header and one for the result
+        $I->canSeeNumberOfElements('#typo3-extension-list tbody tr[role="row"]', 1);
+
+        // Look for extension key
+        $I->canSee('cshmanual', '#typo3-extension-list tbody tr[role="row"] td');
+
+        // unset the filter
+        $I->waitForElementVisible('#Tx_Extensionmanager_extensionkey ~button.close', 1);
+        $I->click('#Tx_Extensionmanager_extensionkey ~button.close');
+
+        $I->canSeeNumberOfElements('#typo3-extension-list tbody tr[role="row"]', [10, 100]);
+    }
+
+    /**
+     * @param Admin $I
+     */
+    public function checkIfUploadFormAppears(Admin $I)
+    {
+        $I->cantSeeElement('.module-body .uploadForm');
+        $I->click('a[title="Upload Extension .t3x/.zip"]', '.module-docheader');
+        $I->seeElement('.module-body .uploadForm');
+    }
+
+    /**
+     * @param Admin $I
+     * @return Admin
+     */
+    public function checkIfInstallingAnExtensionWithBackendModuleAddsTheModuleToTheModuleMenu(Admin $I) {
+        $I->switchToIFrame();
+        $I->canSeeElement('.typo3-module-menu-item');
+        $I->cantSeeElement('#system_BeuserTxBeuser');
+
+        $I->switchToIFrame('content');
+        $I->fillField('Tx_Extensionmanager_extensionkey', 'beuser');
+        $I->waitForElementVisible('//*[@id="typo3-extension-list"]/tbody/tr[@id="beuser"]');
+        $I->click('a[data-original-title="Activate"]', '//*[@id="typo3-extension-list"]/tbody/tr[@id="beuser"]');
+
+        $I->waitForElementVisible('#Tx_Extensionmanager_extensionkey ~button.close', 1);
+        $I->click('#Tx_Extensionmanager_extensionkey ~button.close');
+
+        $I->switchToIFrame();
+        $I->canSeeElement('#system_BeuserTxBeuser');
+
+
+        return $I;
+    }
+
+    /**
+     * @depends checkIfInstallingAnExtensionWithBackendModuleAddsTheModuleToTheModuleMenu
+     * @param Admin $I
+     */
+    public function checkIfUninstallingAnExtensionWithBackendModuleRemovesTheModuleFromTheModuleMenu(Admin $I)
+    {
+        $I->switchToIFrame();
+        $I->canSeeElement('#system_BeuserTxBeuser');
+
+        $I->switchToIFrame('content');
+        $I->fillField('Tx_Extensionmanager_extensionkey', 'beuser');
+        $I->waitForElementVisible('//*[@id="typo3-extension-list"]/tbody/tr[@id="beuser"]');
+        $I->click('a[data-original-title="Deactivate"]', '//*[@id="typo3-extension-list"]/tbody/tr[@id="beuser"]');
+
+        $I->waitForElementVisible('#Tx_Extensionmanager_extensionkey ~button.close', 1);
+        $I->click('#Tx_Extensionmanager_extensionkey ~button.close');
+
+        $I->switchToIFrame();
+        $I->cantSeeElement('#system_BeuserTxBeuser');
+    }
+}
index 99c0cd7..b11595d 100644 (file)
@@ -20,34 +20,10 @@ namespace TYPO3\CMS\Core\Tests\Acceptance\Step\Backend;
 class Admin extends \AcceptanceTester
 {
     /**
-     * @var string Assigned session cookie
+     * The session cookie that is used if the session is injected.
+     * This session must exist in the database fixture to get a logged in state.
+     *
+     * @var string
      */
     protected $sessionCookie = '886526ce72b86870739cc41991144ec1';
-
-    /**
-     * Use the existing database session from the fixture by setting the backend user cookie
-     */
-    public function useExistingSession()
-    {
-        $I = $this;
-        $I->amOnPage('/typo3/index.php');
-
-        // @todo: There is a bug in PhantomJS where adding a cookie fails.
-        // This bug will be fixed in the next PhantomJS version but i also found
-        // this workaround. First reset / delete the cookie and than set it and catch
-        // the webdriver exception as the cookie has been set successful.
-        try {
-            $I->resetCookie('be_typo_user');
-            $I->setCookie('be_typo_user', $this->sessionCookie);
-        } catch (\Facebook\WebDriver\Exception\UnableToSetCookieException $e) {
-        }
-        try {
-            $I->resetCookie('be_lastLoginProvider');
-            $I->setCookie('be_lastLoginProvider', '1433416747');
-        } catch (\Facebook\WebDriver\Exception\UnableToSetCookieException $e) {
-        }
-
-        // reload the page to have a logged in backend
-        $I->amOnPage('/typo3/index.php');
-    }
 }
index 6cb487d..6b76254 100644 (file)
@@ -20,20 +20,10 @@ namespace TYPO3\CMS\Core\Tests\Acceptance\Step\Backend;
 class Editor extends \AcceptanceTester
 {
     /**
-     * @var string Assigned session cookie
+     * The session cookie that is used if the session is injected.
+     * This session must exist in the database fixture to get a logged in state.
+     *
+     * @var string
      */
     protected $sessionCookie = 'ff83dfd81e20b34c27d3e97771a4525a';
-
-    /**
-     * Use the existing database session from the fixture by setting the backend user cookie
-     */
-    public function useExistingSession()
-    {
-        $I = $this;
-        $I->amOnPage('/typo3/index.php');
-        $I->setCookie('be_typo_user', $this->sessionCookie, array('path' => '/typo3temp/var/tests/acceptance/'));
-        $I->setCookie('be_lastLoginProvider', '1433416747', array('path' => '/typo3temp/var/tests/acceptance/'));
-        // reload the page to have a logged in backend
-        $I->amOnPage('/typo3/index.php');
-    }
 }