diff --git a/.travis.yml b/.travis.yml
index 96e906a..92d4a11 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,9 +1,12 @@
language: php
php:
-- 5.4
- 5.5
- 5.6
- 7.0
+matrix:
+ allow_failures:
+ - php: 5.6
+ - php: 7.0
before_script:
- sudo apt-get update -qq
# Install Apache
@@ -28,4 +31,4 @@ before_script:
script:
- mv tests/acceptance.suite.dist.yml tests/acceptance.suite.yml
-- php vendor/bin/robo test:acceptance
+- vendor/bin/robo run:tests
diff --git a/RoboFile.php b/RoboFile.php
index b2670a5..9e4a78e 100644
--- a/RoboFile.php
+++ b/RoboFile.php
@@ -31,13 +31,14 @@ class RoboFile extends \Robo\Tasks
}
/**
- * Executes Selenium System Tests in your machine
+ * Executes all the Selenium System Tests in a suite on your machine
*
- * @param null $seleniumPath Optional path to selenium-standalone-server-x.jar
+ * @param string $seleniumPath Optional path to selenium-standalone-server-x.jar
+ * @param string $suite Optional, the name of the tests suite
*
* @return mixed
*/
- public function testAcceptance($seleniumPath = null)
+ public function runTests($seleniumPath = null, $suite = 'acceptance')
{
$this->setExecExtension();
@@ -108,7 +109,7 @@ class RoboFile extends \Robo\Tasks
$this->_exec('php' . $this->extension . ' vendor/bin/codecept build');
$this->taskCodecept()
- ->suite('acceptance')
+ ->suite($suite)
->arg('--steps')
->arg('--debug')
->run()
@@ -128,4 +129,118 @@ class RoboFile extends \Robo\Tasks
}
*/
}
-}
\ No newline at end of file
+
+ /**
+ * Executes a specific Selenium System Tests in your machine
+ *
+ * @param string $seleniumPath Optional path to selenium-standalone-server-x.jar
+ * @param string $pathToTestFile Optional name of the test to be run
+ * @param string $suite Optional name of the suite containing the tests, Acceptance by default.
+ *
+ * @return mixed
+ */
+ public function runTest($seleniumPath = null, $pathToTestFile = null, $suite = 'acceptance')
+ {
+ if (!$seleniumPath)
+ {
+ if (!file_exists('selenium-server-standalone.jar'))
+ {
+ $this->say('Downloading Selenium Server, this may take a while.');
+ $this->taskExec('wget')
+ ->arg('http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar')
+ ->arg('-O selenium-server-standalone.jar')
+ ->printed(false)
+ ->run();
+ }
+
+ $seleniumPath = 'selenium-server-standalone.jar';
+ }
+
+ // Make sure we have Composer
+ if (!file_exists('./composer.phar'))
+ {
+ $this->_exec('curl -sS https://getcomposer.org/installer | php');
+ }
+ $this->taskComposerUpdate()->run();
+
+ // Running Selenium server
+ $this->_exec("java -jar $seleniumPath > selenium-errors.log 2>selenium.log &");
+
+ $this->taskWaitForSeleniumStandaloneServer()
+ ->run()
+ ->stopOnFail();
+
+ // Make sure to Run the Build Command to Generate AcceptanceTester
+ $this->_exec("php vendor/bin/codecept build");
+
+ if (!$pathToTestFile)
+ {
+ $tests = array();
+ $this->say('Available tests in the system:');
+ $filesInSuite = scandir(getcwd() . '/tests/' . $suite);
+ $i = 1;
+
+ foreach ($filesInSuite as $file)
+ {
+ // Make sure the file is a Test file
+ if (strripos($file, 'cept.php') || strripos($file, 'cest.php'))
+ {
+ $tests[$i] = $file;
+ $this->say('[' . $i . '] ' . $file);
+ $i++;
+ }
+ }
+
+ $this->say('');
+ $testNumber = $this->ask('Type the number of the test in the list that you want to run...');
+ $pathToTestFile = "tests/$suite/" . $tests[$testNumber];
+ }
+
+ $this->taskCodecept()
+ ->test($pathToTestFile)
+ ->arg('--steps')
+ ->arg('--debug')
+ ->run()
+ ->stopOnFail();
+
+ // Kill selenium server
+ // $this->_exec('curl http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer');
+
+ $this->say('Printing Selenium Log files');
+ $this->say('------ selenium-errors.log (start) ---------');
+ $seleniumErrors = file_get_contents('selenium-errors.log');
+
+ if ($seleniumErrors)
+ {
+ $this->say(file_get_contents('selenium-errors.log'));
+ }
+ else
+ {
+ $this->say('no errors were found');
+ }
+ $this->say('------ selenium-errors.log (end) -----------');
+
+ /*
+ // Uncomment if you need to debug issues in selenium
+ $this->say('');
+ $this->say('------ selenium.log (start) -----------');
+ $this->say(file_get_contents('selenium.log'));
+ $this->say('------ selenium.log (end) -----------');
+ */
+ }
+
+ /**
+ * Creates a testing Joomla site for running the tests (use it before run:test)
+ */
+ public function createTestingSite()
+ {
+ // Get Joomla Clean Testing sites
+ if (is_dir('tests/joomla-cms3'))
+ {
+ $this->taskDeleteDir('tests/joomla-cms3')->run();
+ }
+
+ $this->_exec('git' . $this->extension . ' clone -b staging --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/joomla-cms3');
+ $this->say('Joomla CMS site created at tests/joomla-cms3');
+ }
+}
diff --git a/build.ini b/build.ini
index 15ce0e9..ad09a4a 100644
--- a/build.ini
+++ b/build.ini
@@ -1,5 +1,5 @@
# The release version for the extension package.
-version=3.4.1-rc2
+version=3.4.1
# The name of the package.
package=weblinks
diff --git a/manifest.xml b/manifest.xml
index bfae79e..8d87130 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -5,11 +5,11 @@
Joomla! CMS Weblinks Package
pkg_weblinks
package
- 3.4.0
-
- https://github.com/joomla-extensions/weblinks
+ 3.4.1
+ site
+ https://github.com/joomla-extensions/weblinks/releases/tag/3.4.1
- https://github.com/joomla-extensions/weblinks/releases/download/3.4.0/pkg_weblinks_3.4.0.zip
+ https://github.com/joomla-extensions/weblinks/releases/download/3.4.1/pkg_weblinks_3.4.1.zip
diff --git a/src/com_weblinks/weblinks.xml b/src/com_weblinks/weblinks.xml
index d50f890..6197da9 100644
--- a/src/com_weblinks/weblinks.xml
+++ b/src/com_weblinks/weblinks.xml
@@ -7,7 +7,7 @@
GNU General Public License version 2 or later; see LICENSE.txt
admin@joomla.org
www.joomla.org
- 3.4.1-rc2
+ 3.4.1
COM_WEBLINKS_XML_DESCRIPTION
script.php
diff --git a/src/mod_weblinks/mod_weblinks.xml b/src/mod_weblinks/mod_weblinks.xml
index 66b0205..abcaa38 100644
--- a/src/mod_weblinks/mod_weblinks.xml
+++ b/src/mod_weblinks/mod_weblinks.xml
@@ -7,7 +7,7 @@
GNU General Public License version 2 or later; see LICENSE.txt
admin@joomla.org
www.joomla.org
- 3.4.1-rc2
+ 3.4.1
MOD_WEBLINKS_XML_DESCRIPTION
language
diff --git a/src/pkg_weblinks.xml b/src/pkg_weblinks.xml
index fe06c27..e1d6700 100644
--- a/src/pkg_weblinks.xml
+++ b/src/pkg_weblinks.xml
@@ -10,7 +10,7 @@
Joomla! Project
admin@joomla.org
www.joomla.org
- 3.4.1-rc2
+ 3.4.1
GNU General Public License version 2 or later; see LICENSE.txt
PKG_WEBLINKS_XML_DESCRIPTION
diff --git a/src/plg_finder_weblinks/weblinks.xml b/src/plg_finder_weblinks/weblinks.xml
index 5e8b66b..7b5c5d5 100644
--- a/src/plg_finder_weblinks/weblinks.xml
+++ b/src/plg_finder_weblinks/weblinks.xml
@@ -7,7 +7,7 @@
GNU General Public License version 2 or later; see LICENSE.txt
admin@joomla.org
www.joomla.org
- 3.4.1-rc2
+ 3.4.1
PLG_FINDER_WEBLINKS_XML_DESCRIPTION
weblinks.php
diff --git a/src/plg_search_weblinks/weblinks.xml b/src/plg_search_weblinks/weblinks.xml
index f882717..1e11c8c 100644
--- a/src/plg_search_weblinks/weblinks.xml
+++ b/src/plg_search_weblinks/weblinks.xml
@@ -7,7 +7,7 @@
GNU General Public License version 2 or later; see LICENSE.txt
admin@joomla.org
www.joomla.org
- 3.4.1-rc2
+ 3.4.1
PLG_SEARCH_WEBLINKS_XML_DESCRIPTION
weblinks.php
diff --git a/tests/acceptance/01-InstallWeblinksCest.php b/tests/acceptance/01-InstallWeblinksCest.php
index 5d4ed4c..5484b7d 100644
--- a/tests/acceptance/01-InstallWeblinksCest.php
+++ b/tests/acceptance/01-InstallWeblinksCest.php
@@ -11,18 +11,21 @@ use \AcceptanceTester;
class InstallWeblinksCest
{
+ public function installJoomla(AcceptanceTester $I)
+ {
+ $I->am('Administrator');
+ $I->installJoomla();
+ $I->doAdministratorLogin();
+ $I->setErrorReportingToDevelopment();
+ }
+
// tests
public function installWeblinks(AcceptanceTester $I)
{
- $I->am('Administrator');
- $I->installJoomla();
- $I->doAdministratorLogin();
- $I->setErrorReportingToDevelopment();
-
- $I->comment('get Weblinks repository folder from acceptance.suite.yml (see _support/AcceptanceHelper.php)');
+ $I->doAdministratorLogin();
+ $I->comment('get Weblinks repository folder from acceptance.suite.yml (see _support/AcceptanceHelper.php)');
$path = $I->getConfiguration('repo_folder');
$I->installExtensionFromDirectory($path . 'src/com_weblinks/');
$I->doAdministratorLogout();
-
}
}
\ No newline at end of file
diff --git a/tests/acceptance/AdministratorCategoriesCest.php b/tests/acceptance/AdministratorCategoriesCest.php
index 035d7ce..86a41ce 100644
--- a/tests/acceptance/AdministratorCategoriesCest.php
+++ b/tests/acceptance/AdministratorCategoriesCest.php
@@ -20,7 +20,7 @@ class AdministratorCategoriesCest
$I->amGoingTo('Navigate to Categories page in /administrator/');
$I->amOnPage('administrator/index.php?option=com_categories&extension=com_weblinks');
- $I->waitForText('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['css' => 'h1']);
$I->expectTo('see categories page');
$I->checkForPhpNoticesOrWarnings();
@@ -42,7 +42,7 @@ class AdministratorCategoriesCest
$I->amGoingTo('Navigate to Categories page in /administrator/');
$I->amOnPage('administrator/index.php?option=com_categories&extension=com_weblinks');
- $I->waitForText('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['css' => 'h1']);
$I->expectTo('see categories page');
$I->amGoingTo('try to save a category with empty title and it should fail');
@@ -62,7 +62,7 @@ class AdministratorCategoriesCest
$I->amGoingTo('Navigate to Categories page in /administrator/');
$I->amOnPage('administrator/index.php?option=com_categories&extension=com_weblinks');
- $I->waitForText('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['css' => 'h1']);
$I->expectTo('see categories page');
$I->checkForPhpNoticesOrWarnings();
@@ -78,13 +78,13 @@ class AdministratorCategoriesCest
$I->amGoingTo('Search for automated testing');
$I->fillField(['xpath'=> "//input[@id=\"filter_search\"]"], "automated testing pub" . "\n");
- $I->waitForText('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['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('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['css' => 'h1']);
$I->expectTo('see a success message after publishing the category');
$I->see('1 category successfully published.',['id' => 'system-message-container']);
}
@@ -98,7 +98,7 @@ class AdministratorCategoriesCest
$I->amGoingTo('Navigate to Categories page in /administrator/');
$I->amOnPage('administrator/index.php?option=com_categories&extension=com_weblinks');
- $I->waitForText('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['css' => 'h1']);
$I->expectTo('see categories page');
$I->checkForPhpNoticesOrWarnings();
@@ -114,24 +114,24 @@ class AdministratorCategoriesCest
$I->amGoingTo('Search for automated testing');
$I->fillField(['xpath'=> "//input[@id=\"filter_search\"]"], "automated testing unpub" . "\n");
- $I->waitForText('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['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('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['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('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['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('Category Manager: Weblinks','5',['css' => 'h1']);
+ $I->waitForText('Weblinks: Categories','5',['css' => 'h1']);
$I->expectTo('See a success message after unpublishing the category');
$I->see('1 category successfully unpublished',['id' => 'system-message-container']);
}
diff --git a/tests/acceptance/MenuCest.php b/tests/acceptance/MenuCest.php
index 39c6612..9364771 100644
--- a/tests/acceptance/MenuCest.php
+++ b/tests/acceptance/MenuCest.php
@@ -31,24 +31,25 @@ class MenuCest
$I->doAdministratorLogin();
$I->amGoingTo('Navigate to Menu Manager page in /administrator/');
$I->amOnPage('administrator/index.php?option=com_menus&view=items&menutype=mainmenu');
- $I->waitForText('Menu Manager: Menu Items', '5', ['css' => 'h1']);
+ $I->waitForText('Menus: Items', '5', ['css' => 'h1']);
$I->expectTo('see menu menager items');
$I->checkForPhpNoticesOrWarnings();
$I->amGoingTo('try to save a category with a filled title');
$I->click(['xpath' => "//button[@onclick=\"Joomla.submitbutton('item.add')\"]"]);
- $I->waitForText('Menu Manager: New Menu Item', '5', ['css' => 'h1']);
+ $I->waitForText('Menus: New Item', '5', ['css' => 'h1']);
$I->fillField(['id' => 'jform_title'], 'automated testing' . rand(1, 100));
$I->click(['xpath' => "//a[@href=\"#menuTypeModal\"]"]);
- $I->waitForElement('.iframe', 15);
-
- // TODO: create a pull request in joomla-cms and add a name to the iframe there
- // attach a nanme so that we can switch to the iframe later
- $I->executeJS('jQuery(".iframe").attr("name", "blah")');
- $I->switchToIFrame("blah");
+ $I->waitForElement('.iframe', 60);
+ $I->comment('I switch to Menu Type iframe');
+ $I->switchToIFrame("Menu Item Type");
+ $I->waitForElementVisible(['link' => "Weblinks"],60);
$I->click(['link' => "Weblinks"]);
+ $I->wait(1);
+ $I->waitForElementVisible(['xpath' => "//a[contains(@title, 'Show all the web link categories within a category')]"], 60);
$I->click(['xpath' => "//a[contains(@title, 'Show all the web link categories within a category')]"]);
+ $I->wait(1);
$I->switchToIFrame();
- $I->waitForText('Menu Manager: New Menu Item', '5', ['css' => 'h1']);
+ $I->waitForElement(['xpath' => "//input[@value='List All Web Link Categories']"],60);
$I->click(['xpath' => "//button[@onclick=\"Joomla.submitbutton('item.apply')\"]"]);
$I->expectTo('see a success message after saving the category');
$I->see('Menu item successfully saved', ['id' => 'system-message-container']);