gatein SVN: r1652 - in portal/trunk/testsuite: selenium-snifftests/src/suite/org/exoplatform/portal/selenium and 1 other directories.
by do-not-reply@jboss.org
Author: dbaeli
Date: 2010-02-11 22:22:00 -0500 (Thu, 11 Feb 2010)
New Revision: 1652
Added:
portal/trunk/testsuite/GateIn_v3.0_BasicPortlets_TestDefinition.ods
portal/trunk/testsuite/GateIn_v3.0_MainFucntions_TestDefinition.ods
portal/trunk/testsuite/GateIn_v3.0_SniffTests.ods
Removed:
portal/trunk/testsuite/ui-tests/GateIn_v3.0_BasicPortlets_TestDefinition.ods
portal/trunk/testsuite/ui-tests/GateIn_v3.0_MainFucntions_TestDefinition.ods
portal/trunk/testsuite/ui-tests/GateIn_v3.0_SniffTests.ods
Modified:
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html
Log:
GTNPORTAL-509: Recorded SniffTests with Generator
* Updated tests definitions
* Stability improvments for 09 and 11recorded scripts
Copied: portal/trunk/testsuite/GateIn_v3.0_BasicPortlets_TestDefinition.ods (from rev 1651, portal/trunk/testsuite/ui-tests/GateIn_v3.0_BasicPortlets_TestDefinition.ods)
===================================================================
(Binary files differ)
Copied: portal/trunk/testsuite/GateIn_v3.0_MainFucntions_TestDefinition.ods (from rev 1651, portal/trunk/testsuite/ui-tests/GateIn_v3.0_MainFucntions_TestDefinition.ods)
===================================================================
(Binary files differ)
Copied: portal/trunk/testsuite/GateIn_v3.0_SniffTests.ods (from rev 1651, portal/trunk/testsuite/ui-tests/GateIn_v3.0_SniffTests.ods)
===================================================================
(Binary files differ)
Modified: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html 2010-02-12 02:43:19 UTC (rev 1651)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html 2010-02-12 03:22:00 UTC (rev 1652)
@@ -4,12 +4,12 @@
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://localhost:8080/" />
-<title>SNF_PRL_09</title>
+<title>Test_SNF_PRL_09</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
-<tr><td rowspan="1" colspan="3">SNF_PRL_09</td></tr>
+<tr><td rowspan="1" colspan="3">Test_SNF_PRL_09</td></tr>
</thead><tbody>
<tr>
<td>open</td>
@@ -53,7 +53,7 @@
</tr>
<tr>
<td>echo</td>
- <td>--Select "Application Registry"</td>
+ <td>--Select "Application Registry"</td>
<td></td>
</tr>
<tr>
@@ -98,6 +98,26 @@
</tr>
<tr>
<td>waitForElementPresent</td>
+ <td>//a[contains(@onclick,'op=RemoveApplication&objectId=WSRPAdminPortlet&ajaxRequest=true')]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[contains(@onclick,'op=RemoveApplication&objectId=WSRPAdminPortlet&ajaxRequest=true')]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure to delete this application?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>WSRP Admin Portlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
<td>link=Sign out</td>
<td></td>
</tr>
Modified: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html 2010-02-12 02:43:19 UTC (rev 1651)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html 2010-02-12 03:22:00 UTC (rev 1652)
@@ -4,12 +4,12 @@
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="" />
-<title>SNF_PRL_11</title>
+<title>Test_SNF_PRL_11</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
-<tr><td rowspan="1" colspan="3">SNF_PRL_11</td></tr>
+<tr><td rowspan="1" colspan="3">Test_SNF_PRL_11</td></tr>
</thead><tbody>
<tr>
<td>open</td>
@@ -83,7 +83,7 @@
</tr>
<tr>
<td>clickAt</td>
- <td>//input[@name='application' and @value='2']</td>
+ <td>//input[@name='application' and @value='1']</td>
<td>1,1</td>
</tr>
<tr>
Deleted: portal/trunk/testsuite/ui-tests/GateIn_v3.0_BasicPortlets_TestDefinition.ods
===================================================================
(Binary files differ)
Deleted: portal/trunk/testsuite/ui-tests/GateIn_v3.0_MainFucntions_TestDefinition.ods
===================================================================
(Binary files differ)
Deleted: portal/trunk/testsuite/ui-tests/GateIn_v3.0_SniffTests.ods
===================================================================
(Binary files differ)
14 years, 11 months
gatein SVN: r1651 - in portal/trunk/testsuite: selenium-snifftests and 13 other directories.
by do-not-reply@jboss.org
Author: dbaeli
Date: 2010-02-11 21:43:19 -0500 (Thu, 11 Feb 2010)
New Revision: 1651
Added:
portal/trunk/testsuite/pom.xml
portal/trunk/testsuite/selenium-snifftests/
portal/trunk/testsuite/selenium-snifftests/Readme.txt
portal/trunk/testsuite/selenium-snifftests/pom.xml
portal/trunk/testsuite/selenium-snifftests/src/
portal/trunk/testsuite/selenium-snifftests/src/eclipse/
portal/trunk/testsuite/selenium-snifftests/src/eclipse/generate Tests.launch
portal/trunk/testsuite/selenium-snifftests/src/eclipse/start Selenium Server.launch
portal/trunk/testsuite/selenium-snifftests/src/main/
portal/trunk/testsuite/selenium-snifftests/src/main/java/
portal/trunk/testsuite/selenium-snifftests/src/main/java/org/
portal/trunk/testsuite/selenium-snifftests/src/main/java/org/exoplatform/
portal/trunk/testsuite/selenium-snifftests/src/main/java/org/exoplatform/portal/
portal/trunk/testsuite/selenium-snifftests/src/main/java/org/exoplatform/portal/selenium/
portal/trunk/testsuite/selenium-snifftests/src/main/java/org/exoplatform/portal/selenium/SeleniumTestCaseGenerator.java
portal/trunk/testsuite/selenium-snifftests/src/suite/
portal/trunk/testsuite/selenium-snifftests/src/suite/org/
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestCleanUp.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL_with_clean.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_02.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_04.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_05.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_06.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_07.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_08.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_10.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_12.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_13.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_14.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_15.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_16.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_17.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_18.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_19.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_20.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_21.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_22.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_23.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_24.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_25.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_26.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_27.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_28.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_29.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_30.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_31.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_32.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_33.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_34.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_35.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_UserExtensions.html
portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/user-extensions.js.ori
portal/trunk/testsuite/selenium-snifftests/src/suite/user-extensions.js
Log:
GTNPORTAL-509: Recorded SniffTests with Generator
* Some tests still failing due to known issues
* Careful on OSX with Snow Leopard (see the readme.txt)
Added: portal/trunk/testsuite/pom.xml
===================================================================
--- portal/trunk/testsuite/pom.xml (rev 0)
+++ portal/trunk/testsuite/pom.xml 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>exo.portal.parent</artifactId>
+ <version>3.0.0-CR01-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>exo.portal.testsuite</artifactId>
+ <packaging>pom</packaging>
+
+ <name>TestSuite for GateIn</name>
+
+ <modules>
+ <module>selenium-snifftests</module>
+ </modules>
+
+</project>
Property changes on: portal/trunk/testsuite/selenium-snifftests
___________________________________________________________________
Name: svn:ignore
+ target
.classpath
.project
Added: portal/trunk/testsuite/selenium-snifftests/Readme.txt
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/Readme.txt (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/Readme.txt 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,65 @@
+**************
+To run the Selenium tests for GateIn
+**************
+
+From mvn command line:
+* Start a GateIn server (Tomcat or JBoss)
+* Start the server
+* Launch the tests:
+** mvn install -Pselenium to run the html recorded Scripts generated in Java during the process
+
+From Eclipse:
+* Start a GateIn server (Tomcat or JBoss)
+* Start the Selenium server ( GateIn server (Tomcat or JBoss)
+** Main class: org.openqa.selenium.server.SeleniumServer
+** Parameter: -userExtensions ${project_loc}/src/suite/user-extensions.js
+** Some .launch files are available in src/eclipse
+* Run any test like a unit test
+
+
+**************
+Informations:
+**************
+
+* suite/ contains the recorded tests
+** They can be edited using the Selenium IDE
+* src/java/main/java/ contains a generator to create the same tests in Java
+** One Test per Selenium test
+* target/generated/test contains the generated tests
+
+******************************
+Known Issues:
+******************************
+
+For Mac OSX Snow Leopard Users:
+* Known Issue make FF to crash : http://jira.openqa.org/browse/SRC-743
+** Details for the fix : http://jira.openqa.org/browse/SRC-743?focusedCommentId=19345&page=com.atl...
+
+For selenium-maven-plugin and JUnit Selenium users here is what worked for me:
+
+* patch selenium-rc with this patch
+<begining of patch>
+Index: server-coreless/src/main/java/org/openqa/selenium/server/browserlaunchers/SystemUtils.java
+===================================================================
+--- server-coreless/src/main/java/org/openqa/selenium/server/browserlaunchers/SystemUtils.java (revision 7242)
++++ server-coreless/src/main/java/org/openqa/selenium/server/browserlaunchers/SystemUtils.java (working copy)
+@@ -14,7 +14,7 @@
+ return WindowsUtils.getExactPathEnvKey();
+ }
+ if (Os.isFamily("mac")) {
+- return "DYLD_LIBRARY_PATH";
++ return "XXX_DYLD_LIBRARY_PATH";
+ }
+ // TODO other linux?
+ return "LD_LIBRARY_PATH";
+<end of patch>
+* checkout, patch & compile selenium-rc 1.0.2-SNAPSHOT (it requires the selenium-core to be compiled or get the SNAPSHOTs one the openqa repo)
+** http://svn.openqa.org/svn/selenium-rc/trunk
+** http://svn.openqa.org/svn/selenium-core/trunk
+** checkout and patch the selenium-maven-plugin to use selenium-server 1.0.2-SNAPSHOT
+** http://svn.codehaus.org/mojo/trunk/mojo/selenium-maven-plugin
+** Change the dependency 1.0.1 to 1.0.2-SNAPSHOT
+
+Then in this project you can force the use of those versions:
+* mvn install -Pselenium -Denforcer.skip=true -Dorg.selenium.maven-plugin.version=1.1-SNAPSHOT -Dorg.selenium.server.version=1.0.2-SNAPSHOT
+* mvn eclipse:eclipse -Pselenium -Denforcer.skip=true -Dorg.selenium.maven-plugin.version=1.1-SNAPSHOT -Dorg.selenium.server.version=1.0.2-SNAPSHOT
Added: portal/trunk/testsuite/selenium-snifftests/pom.xml
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/pom.xml (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/pom.xml 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,150 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>exo.portal.testsuite</artifactId>
+ <version>3.0.0-CR01-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>exo.portal.selenium.snifftests</artifactId>
+ <packaging>jar</packaging>
+ <name>Selenium Sniff Test for GateIn</name>
+ <description>Minimal UI tests that should work for GateIn</description>
+
+ <properties>
+ <org.selenium.server.version>1.0.1</org.selenium.server.version>
+ <org.selenium.maven-plugin.version>1.0</org.selenium.maven-plugin.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.seleniumhq.selenium.client-drivers</groupId>
+ <artifactId>selenium-java-client-driver</artifactId>
+ <version>${org.selenium.server.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.seleniumhq.selenium.server</groupId>
+ <artifactId>selenium-server</artifactId>
+ <version>${org.selenium.server.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.4</version>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>selenium</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>add-test-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-test-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${project.build.directory}/generated/test</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-test-sources</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <mainClass>org.exoplatform.portal.selenium.SeleniumTestCaseGenerator</mainClass>
+ <arguments>
+ <argument>${project.basedir}/src/suite</argument>
+ <argument>${project.build.directory}/generated/test</argument>
+ </arguments>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>selenium-maven-plugin</artifactId>
+ <version>${org.selenium.maven-plugin.version}</version>
+ <executions>
+ <execution>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>start-server</goal>
+ </goals>
+ <configuration>
+ <background>true</background>
+ <logFile>${project.build.directory}/server.log</logFile>
+ <logOutput>true</logOutput>
+ <userExtensions>${pom.basedir}/src/suite/user-extensions.js</userExtensions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <skip>false</skip>
+ <!--
+ <includes><include>**/Test_SNF_PRL_26.java</include></includes>
+ -->
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+ <!-- no tests by default -->
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Added: portal/trunk/testsuite/selenium-snifftests/src/eclipse/generate Tests.launch
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/eclipse/generate Tests.launch (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/eclipse/generate Tests.launch 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/exo.portal.selenium.snifftests/src/main/java/org/exoplatform/portal/selenium/SeleniumTestCaseGenerator.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.debug.ui.CONSIDER_INHERITED_MAIN" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.exoplatform.portal.selenium.SeleniumTestCaseGenerator"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="src/suite target/generated/test"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="exo.portal.selenium.snifftests"/>
+</launchConfiguration>
Property changes on: portal/trunk/testsuite/selenium-snifftests/src/eclipse/generate Tests.launch
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: portal/trunk/testsuite/selenium-snifftests/src/eclipse/start Selenium Server.launch
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/eclipse/start Selenium Server.launch (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/eclipse/start Selenium Server.launch 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/exo.portal.selenium.snifftests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.debug.ui.CONSIDER_INHERITED_MAIN" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.openqa.selenium.server.SeleniumServer"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-userExtensions ${project_loc}/src/suite/user-extensions.js"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="exo.portal.selenium.snifftests"/>
+</launchConfiguration>
Property changes on: portal/trunk/testsuite/selenium-snifftests/src/eclipse/start Selenium Server.launch
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: portal/trunk/testsuite/selenium-snifftests/src/main/java/org/exoplatform/portal/selenium/SeleniumTestCaseGenerator.java
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/main/java/org/exoplatform/portal/selenium/SeleniumTestCaseGenerator.java (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/main/java/org/exoplatform/portal/selenium/SeleniumTestCaseGenerator.java 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,491 @@
+package org.exoplatform.portal.selenium;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringEscapeUtils;
+
+/**
+ * Transforms the Selenium IDE recorded html to a corresponding JUnit class.
+ */
+public class SeleniumTestCaseGenerator {
+
+ private static final String TEST_PATTERN = "Test_";
+
+ private static int testsNumber = 0;
+ private static int testsSuitesNumber = 0;
+
+ private String basedir;
+ private String outputdir;
+
+ public static void main(String[] args) throws Exception {
+ SeleniumTestCaseGenerator seleneseToJavaBuilder = null;
+ if (args.length == 1) {
+ seleneseToJavaBuilder = new SeleniumTestCaseGenerator(args[0], args[0]);
+ } else if (args.length == 2) {
+ seleneseToJavaBuilder = new SeleniumTestCaseGenerator(args[0], args[1]);
+ } else {
+ throw new IllegalArgumentException("SeleneseToJavaBuilder suitePath [Target] [TestSpeed]");
+ }
+ seleneseToJavaBuilder.run();
+ System.out
+ .println("Done : " + testsNumber + " tests generated, " + testsSuitesNumber + " tests suites generated");
+ }
+
+ public SeleniumTestCaseGenerator(String basedir, String outputdir) throws Exception {
+ this.basedir = basedir;
+ this.outputdir = outputdir;
+ }
+
+ public void run() throws Exception {
+ generate(new File(basedir), "");
+ }
+
+ public void generate(File directoryFile, String path) throws Exception {
+ File[] files = directoryFile.listFiles();
+ String testPackagePath = path.replaceAll(replaceSeparatorPattern, ".");
+ for (int j = 0; j < files.length; j++) {
+ File file = files[j];
+ String filePath = path.length()>0 ? path + File.separator + file.getName() : file.getName();
+ if (file.isDirectory() && !file.getName().startsWith(".")) {
+ generate(new File(directoryFile, file.getName()), filePath);
+ } else if (file.getName().endsWith(".html") && file.getName().startsWith(TEST_PATTERN)) {
+ generateFile(filePath, testPackagePath);
+ }
+ }
+ }
+
+ public void generateFile(String seleniumFile, String testPackagePath) throws Exception {
+ seleniumFile = seleniumFile.replaceAll(replaceSeparatorPattern, "/");
+
+ int x = seleniumFile.lastIndexOf("/");
+ int y = seleniumFile.indexOf(".");
+ String testName = seleniumFile.substring(x + 1, y);
+ String testMethodName = "test" + testName.substring(5);
+ String testFileName = outputdir + "/" + seleniumFile.substring(0, y) + ".java";
+
+ // Write each Test in one file
+ StringBuffer sb = new StringBuffer();
+ sb.append("package " + testPackagePath + ";\n\n");
+ // sb.append("import org.exoplatform.util.selenium.BaseTestCase;\n");
+ sb.append("import com.thoughtworks.selenium.*;\n");
+ sb.append("public class " + testName + " extends SeleneseTestCase {\n");
+
+ // setSpeed & setUp
+ appendCommonMethods(sb);
+
+ // testMethod
+ appendTest(sb, seleniumFile, testName, testMethodName);
+ sb.append("}\n");
+
+ String content = sb.toString();
+ writeFile(testFileName, content);
+
+ testsNumber++;
+ }
+
+ private void appendCommonMethods(StringBuffer sb) {
+ sb.append("public String speed = \"100\";\n");
+ sb.append("public String browser = \"firefox\";\n");
+ sb.append("public void setSpeed() {\n selenium.setSpeed(speed);\n}\n\n");
+ sb.append("public void setUp() throws Exception {\n");
+ sb.append(" browser = System.getProperty(\"selenium.browser\", browser);\n");
+ sb.append(" super.setUp(\"http://localhost:8080/portal/\", \"*\" + browser);\n");
+ sb.append("}\n\n");
+ }
+
+ private void appendTest(StringBuffer sb, String scriptFile, String testName, String testMethodName) throws Exception {
+
+ String xml = FileUtils.readFileToString(new File(basedir + "/" + scriptFile), "UTF-8");
+
+ System.out.println("* " + basedir + "/" + scriptFile);
+
+ // Method
+ sb.append("public void " + testMethodName + "() throws Exception {\n");
+ sb.append(" setSpeed();\n");
+
+ if ((xml.indexOf("<title>" + testName + "</title>") == -1)
+ || (xml.indexOf("colspan=\"3\">" + testName + "</td>") == -1)) {
+ System.out.println("[WARN] The test name inside the file should be the file name.");
+ }
+
+ if (xml.indexOf(""") != -1) {
+ xml = replace(xml, """, "\"");
+ writeFile(outputdir + "/" + scriptFile, xml);
+ }
+
+ int x = xml.indexOf("<tbody>");
+ int y = xml.indexOf("</tbody>");
+
+ xml = xml.substring(x, y + 8);
+
+ x = 0;
+ y = 0;
+ int count = 0;
+
+ while (true) {
+ x = xml.indexOf("<tr>", x);
+ y = xml.indexOf("\n</tr>", x);
+ if ((x == -1) || (y == -1)) {
+ break;
+ }
+
+ x += 6;
+ y++;
+ count++;
+
+ String step = xml.substring(x, y);
+ String[] params = getParams(step);
+
+ String param1 = params[0];
+ String param2 = fixParam(params[1]);
+//variables management
+ param2 = param2.replaceAll("\\$\\{([a-z0-9A-Z]*)\\}", "\" + $1 + \"");
+ param2 = param2.replaceAll("storedVars\\['([a-z0-9A-Z]*)'\\]", "'\" + $1 + \"'");
+ String param3 = fixParam(params[2]);
+//variables management
+ param3 = param3.replaceAll("\\$\\{([a-z0-9A-Z]*)\\}", "\" + $1 + \"");
+ param3 = param3.replaceAll("storedVars\\['([a-z0-9A-Z]*)'\\]", "'\" + $1 + \"'");
+
+ sb.append("\n //" + count + ": " + param1 + " | " + param2 + " | " + param3 + "\n");
+ if (param1.equals("assertConfirmation")) {
+ param2 = replace(param2, "?", "[\\\\s\\\\S]");
+ sb.append("assertTrue(selenium.getConfirmation().matches(\"^");
+ sb.append(param2);
+ sb.append("$\"));\n");
+ } else if (param1.equals("assertElementPresent") || param1.equals("assertElementNotPresent")) {
+ if (param1.equals("assertElementPresent")) {
+ sb.append("assertTrue");
+ } else if (param1.equals("assertElementNotPresent")) {
+ sb.append("assertFalse");
+ }
+ sb.append("(selenium.isElementPresent(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("assertTextPresent") || param1.equals("assertTextNotPresent")) {
+ if (param1.equals("assertTextPresent")) {
+ sb.append("assertTrue");
+ } else if (param1.equals("assertTextNotPresent")) {
+ sb.append("assertFalse");
+ }
+ sb.append("(selenium.isTextPresent(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("click") || param1.equals("mouseDown") || param1.equals("mouseUp")
+ || param1.equals("open") || param1.equals("selectFrame") || param1.equals("selectWindow")) {
+ sb.append("selenium.");
+ sb.append(param1);
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\");\n");
+ } else if (param1.equals("clickAndWait")) {
+ sb.append("selenium.click(\"");
+ sb.append(param2);
+ sb.append("\");\n");
+ sb.append("selenium.waitForPageToLoad(\"30000\");\n");
+ } else if (param1.equals("clickAt")) {
+ sb.append("selenium.");
+ sb.append(param1);
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\", \"1,1\");\n");
+ } else if (param1.equals("clickAtAndWait")) {
+ sb.append("selenium.clickAt(\"");
+ sb.append(param2);
+ sb.append("\", \"1,1\");\n");
+ sb.append("selenium.waitForPageToLoad(\"30000\");\n");
+ } else if (param1.equals("close")) {
+ sb.append("selenium.");
+ sb.append(param1);
+ sb.append("();\n");
+ } else if (param1.equals("pause")) {
+ sb.append("Thread.sleep(");
+ sb.append(param2);
+ sb.append(");\n");
+ } else if (param1.equals("addSelection") || param1.equals("select") || param1.equals("type")
+ || param1.equals("typeKeys") || param1.equals("waitForPopUp")) {
+ sb.append("selenium.");
+ sb.append(param1);
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\", \"");
+ sb.append(param3);
+ sb.append("\");\n");
+ } else if (param1.equals("selectAndWait")) {
+ sb.append("selenium.select(\"");
+ sb.append(param2);
+ sb.append("\", \"");
+ sb.append(param3);
+ sb.append("\");\n");
+ sb.append("selenium.waitForPageToLoad(\"30000\");\n");
+ } else if (param1.equals("storeText")) {
+ sb.append("String ");
+ sb.append(param3);
+ sb.append(" = selenium.getText(\"");
+ sb.append(param2);
+ sb.append("\");\n");
+ sb.append("RuntimeVariables.setValue(\"");
+ sb.append(param3);
+ sb.append("\", ");
+ sb.append(param3);
+ sb.append(");\n");
+ } else if (param1.equals("verifyElementPresent") || param1.equals("verifyElementNotPresent")) {
+ if (param1.equals("verifyElementPresent")) {
+ sb.append("assertTrue");
+ } else if (param1.equals("verifyElementNotPresent")) {
+ sb.append("assertFalse");
+ }
+ sb.append("(selenium.isElementPresent(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("verifyTextPresent") || param1.equals("verifyTextNotPresent")) {
+ if (param1.equals("verifyTextPresent")) {
+ sb.append("assertTrue");
+ } else if (param1.equals("verifyTextNotPresent")) {
+ sb.append("assertFalse");
+ }
+ sb.append("(selenium.isTextPresent(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("verifyTitle")) {
+ sb.append("assertEquals(\"");
+ sb.append(param2);
+ sb.append("\", selenium.getTitle());\n");
+ } else if (param1.equals("waitForElementNotPresent") || param1.equals("waitForTextNotPresent")) {
+ sb.append("for (int second = 0;; second++) {\n");
+ sb.append("if (second >= 30) fail(\"timeout\");\n");
+ sb.append("try {\nif (!selenium.isElementPresent(\"");
+ sb.append(param2);
+ sb.append("\"))\n break;\n }\n catch (Exception e) {}\n");
+ sb.append("Thread.sleep(1000);\n");
+ sb.append("}\n");
+ } else if (param1.equals("waitForElementPresent")) {
+ sb.append("for (int second = 0;; second++) {\n");
+ sb.append("if (second >= 30) fail(\"timeout\");\n");
+ sb.append("try {\n if (selenium.isElementPresent(\"");
+ sb.append(param2);
+ sb.append("\")) \nbreak; }\n catch (Exception e) {}\n");
+ sb.append("Thread.sleep(1000);\n");
+ sb.append("}\n");
+ } else if (param1.equals("waitForTextPresent")) {
+ sb.append("for (int second = 0;; second++) {\n");
+ sb.append("if (second >= 30) fail(\"timeout\");\n");
+ sb.append("try {\n if (selenium.isTextPresent(\"");
+ sb.append(param2);
+ sb.append("\")) \nbreak; }\n catch (Exception e) {}\n");
+ sb.append("Thread.sleep(1000);\n");
+ sb.append("}\n");
+ } else if (param1.equals("waitForTable")) {
+ sb.append("for (int second = 0;; second++) {\n");
+ sb.append("if (second >= 30) fail(\"timeout\");\n");
+ sb.append("try {\n");
+ sb.append("if (StringPool.BLANK.equals(selenium.getTable(\"");
+ sb.append(param2);
+ sb.append("\"))) {\nbreak;\n}\n}\ncatch (Exception e) {\n}\n");
+ sb.append("Thread.sleep(1000);\n");
+ sb.append("}\n");
+ } else if (param1.equals("mouseDownAt") || param1.equals("mouseUpAt")) {
+ sb.append("selenium.");
+ sb.append(param1);
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\",\"");
+ sb.append(param3);
+ sb.append("\");\n");
+ } else if (param1.equals("verifyValue")) {
+ sb.append("assertEquals(\"");
+ sb.append(param3);
+ sb.append("\", selenium.getValue(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("waitForAlert")) {
+ sb.append("waitForAlert(\"");
+ sb.append(param2);
+ sb.append("\");\n");
+ } else if (param1.equals("waitForConfirmation")) {
+ sb.append("for (int second = 0;; second++) {\n");
+ sb.append("if (second >= 30) fail(\"timeout\");\n");
+ sb.append("try {\n");
+ sb.append("if (selenium.getConfirmation().equals(\"");
+ sb.append(param2);
+ sb.append("\")) {\nbreak;\n}\n}\ncatch (Exception e) {\n}\n");
+ sb.append("Thread.sleep(1000);\n");
+ sb.append("}\n");
+ } else if (param1.equals("verifyEval")) {
+ sb.append("assertEquals(\"");
+ sb.append(param3);
+ sb.append("\", selenium.getEval(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("mouseOver") || param1.equals("mouseOut")) {
+ sb.append("selenium.");
+ sb.append(param1);
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\");\n");
+ } else if (param1.equals("assertVisible")) {
+ sb.append("assertTrue(selenium.isVisible");
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("verifyChecked")) {
+ sb.append("verifyTrue(selenium.isChecked");
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("assertNotVisible")) {
+ sb.append("assertFalse(selenium.isVisible");
+ sb.append("(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("waitForNotSpeed")) {
+ sb.append("waitForNotSpeed();\n");
+ } else if (param1.equals("assertValue")) {
+ sb.append("assertEquals(\"");
+ sb.append(param3);
+ sb.append("\", selenium.getValue(\"");
+ sb.append(param2);
+ sb.append("\"));\n");
+ } else if (param1.equals("setSpeed")) {
+ sb.append("selenium.setSpeed(\"").append(param2).append("\");\n");
+ } else if (param1.equals("chooseOkOnNextConfirmation")) {
+ sb.append("selenium.chooseOkOnNextConfirmation();\n");
+ } else if (param1.equals("storeConfirmation")) {
+ sb.append("String ").append(param2).append(" = selenium.getConfirmation();\n");
+ } else if (param1.equals("keyPress")) {
+ sb.append("selenium.keyPress(\"").append(param2).append("\",\"").append(param3).append("\");\n");
+ } else if (param1.equals("check")) {
+ sb.append("selenium.check(\"").append(param2).append("\");\n");
+ } else if (param1.equals("uncheck")) {
+ sb.append("selenium.uncheck(\"").append(param2).append("\");\n");
+ } else if (param1.equals("verifyNotChecked")) {
+ sb.append("verifyFalse(selenium.isChecked(\"").append(param2).append("\"));\n");
+ } else if (param1.equals("deleteCookie")) {
+ sb.append("selenium.deleteCookie(\"").append(param2).append("\",\"").append(param3).append("\");\n");
+ } else if (param1.equals("waitForText")) {
+ sb.append("for (int second = 0;; second++) {\n");
+ sb.append("if (second >= 30) fail(\"timeout\");\n");
+ sb.append("try {\nif (selenium.isElementPresent(\"");
+ sb.append(param2);
+ sb.append("\"))\n break;\n }\n catch (Exception e) {}\n");
+ sb.append("Thread.sleep(1000);\n");
+ sb.append("}\n");
+ } else if (param1.equals("storeXpathCount")) {
+ sb.append("String ").append(param3).append(" = selenium.getXpathCount(\"").append(param2).append(
+ "\").toString();\n");
+ } else if (param1.equals("dragAndDropToObject")) {
+ sb.append("selenium.dragAndDropToObject(\"").append(param2).append("\",\"").append(param2).append("\");\n");
+ } else if (param1.equals("componentExoContextMenu")) {
+ sb.append("selenium.getEval(\"selenium.doComponentExoContextMenu(\\\"").append(param2)
+ .append("\\\")\");\n");
+ } else if (param1.equals("getExoExtensionVersion")) {
+ sb.append("selenium.getEval(\"selenium.doGetExoExtensionVersion(\\\"").append(param2).append("\\\")\");\n");
+ } else if (param1.equals("componentExoDoubleClick")) {
+ sb.append("selenium.getEval(\"selenium.doComponentExoDoubleClick(\\\"").append(param2).append("\\\")\");\n");
+ } else if (param1.equals("checkAndWait")) {
+ sb.append("selenium.check(\"");
+ sb.append(param2);
+ sb.append("\");\n");
+ sb.append("selenium.waitForPageToLoad(\"30000\");\n");
+ } else if (param1.equals("echo")) {
+ sb.append("System.out.println(\"" + param2 + "\");\n");
+ } else if (!param1.isEmpty()) {
+ String message = param1 + " was not translated \"" + param2 + "\"";
+ System.err.println("[ERROR] " + message);
+ sb.append("// NOT GENERATED " + message);
+ throw new RuntimeException("Selenium function not implemented : " + message);
+ }
+ }
+ sb.append("}\n\n");
+ }
+
+ public static void writeFile(String file, String content) throws IOException {
+ System.out.println("[INFO] Writing file : " + file);
+ FileUtils.writeStringToFile(new File(file), content);
+ }
+
+ private String[] getParams(String step) throws Exception {
+ String[] params = new String[3];
+
+ int x = 0;
+ int y = 0;
+
+ for (int i = 0; i < 3; i++) {
+ x = step.indexOf("<td>", x) + 4;
+ y = step.indexOf("\n", x);
+ y = step.lastIndexOf("</td>", y);
+ params[i] = StringEscapeUtils.unescapeHtml(step.substring(x, y));
+ }
+
+ return params;
+ }
+
+ private String replace(String s, String oldSub, String newSub) {
+ if ((s == null) || (oldSub == null) || (newSub == null)) {
+ return null;
+ }
+ int y = s.indexOf(oldSub);
+ if (y >= 0) {
+ StringBuffer sb = new StringBuffer(s.length() + 5 * newSub.length());
+ int length = oldSub.length();
+ int x = 0;
+ while (x <= y) {
+ sb.append(s.substring(x, y));
+ sb.append(newSub);
+ x = y + length;
+ y = s.indexOf(oldSub, x);
+ }
+ sb.append(s.substring(x));
+ return sb.toString();
+ } else {
+ return s;
+ }
+ }
+
+ private String fixParam(String param) {
+ StringBuffer sb = new StringBuffer();
+
+ char[] array = param.toCharArray();
+
+ for (int i = 0; i < array.length; ++i) {
+ char c = array[i];
+
+ if (c == '\\') {
+ sb.append("\\\\");
+ } else if (c == '"') {
+ sb.append("\\\"");
+ } else if (Character.isWhitespace(c)) {
+ sb.append(c);
+ } /*
+ * else if ((c < 0x0020) || (c > 0x007e)) { sb.append("\\u");
+ * sb.append(UnicodeFormatter.charToHex(c)); }
+ */else {
+ sb.append(c);
+ }
+ }
+ return replace(sb.toString(), _FIX_PARAM_OLD_SUBS, _FIX_PARAM_NEW_SUBS);
+ }
+
+ private String replace(String s, String[] oldSubs, String[] newSubs) {
+ if ((s == null) || (oldSubs == null) || (newSubs == null)) {
+ return null;
+ }
+
+ if (oldSubs.length != newSubs.length) {
+ return s;
+ }
+
+ for (int i = 0; i < oldSubs.length; i++) {
+ s = replace(s, oldSubs[i], newSubs[i]);
+ }
+
+ return s;
+ }
+
+ private static final String replaceSeparatorPattern = File.separator.equals("\\") ? "\\\\" : File.separator;
+ private static final String[] _FIX_PARAM_OLD_SUBS = new String[] { "\\\\n", "<br />" };
+ private static final String[] _FIX_PARAM_NEW_SUBS = new String[] { "\\n", "\\n" };
+ public static final String SLASH = "/";
+
+}
\ No newline at end of file
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestCleanUp.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestCleanUp.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestCleanUp.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>Clean</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Clean</td></tr>
+</thead><tbody>
+<tr>
+ <td>echo</td>
+ <td>-------------TEST CASE CLEAN-UP-------------</td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeEval</td>
+ <td>var dd = new Date(); var hh = dd.getHours(); var mm = dd.getMinutes(); var ss = dd.getSeconds(); var sTime = ("The time is now: " + hh + ":" + mm + ":" + ss); sTime;</td>
+ <td>sTime</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>+++----------------${sTime}---------------+++</td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeTitle</td>
+ <td>titleActual</td>
+ <td></td>
+</tr>
+<tr>
+ <td>store</td>
+ <td>Home</td>
+ <td>titleHome</td>
+</tr>
+<tr>
+ <td>storeTextPresent</td>
+ <td>The Best of eXo and JBoss PortalGateIn 3.0 Beta 5</td>
+ <td>greetingOK</td>
+</tr>
+<tr>
+ <td>gotoIf</td>
+ <td>storedVars['greetingOK'] == true</td>
+ <td>Home</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>The Best of eXo and JBoss PortalGateIn 3.0 Beta 5</td>
+ <td>greetingOK</td>
+</tr>
+<tr>
+ <td>storeTextPresent</td>
+ <td>The Best of eXo and JBoss PortalGateIn 3.0 Beta 5</td>
+ <td>greetingOK</td>
+</tr>
+<tr>
+ <td>gotoIf</td>
+ <td>storedVars['greetingOK'] == true</td>
+ <td>Home</td>
+</tr>
+<tr>
+ <td>gotoIf</td>
+ <td>storedVars['titleActual'] != storedVars['titleHome']</td>
+ <td>Out</td>
+</tr>
+<tr>
+ <td>label</td>
+ <td>Out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>gotolabel</td>
+ <td>Home</td>
+ <td></td>
+</tr>
+<tr>
+ <td>label</td>
+ <td>Home</td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeElementPresent</td>
+ <td>//a[contains(@href, "javascript:if(document.getElementById('UIMaskWorkspace')) ajaxGet(eXo.env.server.createPortalURL('UIPortal', 'AccountSettings', true));")]</td>
+ <td>logged</td>
+</tr>
+<tr>
+ <td>gotoIf</td>
+ <td>storedVars['logged'] == false</td>
+ <td>End</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>gotolabel</td>
+ <td>End</td>
+ <td></td>
+</tr>
+<tr>
+ <td>label</td>
+ <td>End</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTitle</td>
+ <td>Home</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>//a[contains(@href, "javascript:if(document.getElementById('UIMaskWorkspace')) ajaxGet(eXo.env.server.createPortalURL('UIPortal', 'AccountSettings', true));")]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>//a[contains(@href, "javascript:if(document.getElementById('UIMaskWorkspace')) ajaxGet(eXo.env.server.createPortalURL('UIPortal', 'AccountSettings', true));")]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>----------------------------------------------------</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+ <title>Test Suite</title>
+</head>
+<body>
+<table id="suiteTable" cellpadding="1" cellspacing="1" border="1" class="selenium"><tbody>
+<tr><td><b>Test Suite</b></td></tr>
+<tr><td><a href="Test_SNF_PRL_02.html">SNF_PRL_02</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_03.html">SNF_PRL_03</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_04.html">SNF_PRL_04</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_07.html">SNF_PRL_07</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_08.html">SNF_PRL_08</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_09.html">SNF_PRL_09</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_10.html">SNF_PRL_10</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_12.html">SNF_PRL_12</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_13.html">SNF_PRL_13</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_14.html">SNF_PRL_14</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_15.html">SNF_PRL_15</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_16.html">SNF_PRL_16</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_17.html">SNF_PRL_17</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_18.html">SNF_PRL_18</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_20.html">SNF_PRL_20</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_21.html">SNF_PRL_21</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_23.html">SNF_PRL_23</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_24.html">SNF_PRL_24</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_25.html">SNF_PRL_25</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_26.html">SNF_PRL_26</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_27.html">SNF_PRL_27</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_30.html">SNF_PRL_30</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_31.html">SNF_PRL_31</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_32.html">SNF_PRL_32</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_34.html">SNF_PRL_34</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_05.html">SNF_PRL_05</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_06.html">SNF_PRL_06</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_19.html">SNF_PRL_19</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_28.html">SNF_PRL_28</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_29.html">SNF_PRL_29</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_33.html">SNF_PRL_33</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_11.html">SNF_PRL_11</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_22.html">SNF_PRL_22</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_35.html">SNF_PRL_35</a></td></tr>
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL_with_clean.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL_with_clean.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/TestSuite_SNF_PRL_with_clean.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+ <title>Test Suite</title>
+</head>
+<body>
+<table id="suiteTable" cellpadding="1" cellspacing="1" border="1" class="selenium"><tbody>
+<tr><td><b>Test Suite</b></td></tr>
+<tr><td><a href="Test_SNF_PRL_02.html">SNF_PRL_02</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_03.html">SNF_PRL_03</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_04.html">SNF_PRL_04</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_05.html">SNF_PRL_05</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_06.html">SNF_PRL_06</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_07.html">SNF_PRL_07</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_08.html">SNF_PRL_08</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_09.html">SNF_PRL_09</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_10.html">SNF_PRL_10</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_11.html">SNF_PRL_11</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_12.html">SNF_PRL_12</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_13.html">SNF_PRL_13</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_14.html">SNF_PRL_14</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_15.html">SNF_PRL_15</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_16.html">SNF_PRL_16</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_17.html">SNF_PRL_17</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_18.html">SNF_PRL_18</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_19.html">SNF_PRL_19</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_20.html">SNF_PRL_20</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_21.html">SNF_PRL_21</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_22.html">SNF_PRL_22</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_23.html">SNF_PRL_23</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_24.html">SNF_PRL_24</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_25.html">SNF_PRL_25</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_26.html">SNF_PRL_26</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_27.html">SNF_PRL_27</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_28.html">SNF_PRL_28</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_29.html">SNF_PRL_29</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_30.html">SNF_PRL_30</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_31.html">SNF_PRL_31</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_32.html">SNF_PRL_32</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_33.html">SNF_PRL_33</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_34.html">SNF_PRL_34</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+<tr><td><a href="Test_SNF_PRL_35.html">SNF_PRL_35</a></td></tr>
+<tr><td><a href="TestCaseCleanUp.html">Clean</a></td></tr>
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_02.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_02.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_02.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8080/portal/private/classic/" />
+<title>SNF_PRL_02</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_02</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-New Account-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Register new account</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Register</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>User Name:</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>test_user_02</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>test_pwd_02</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>confirmPassword</td>
+ <td>test_pwd_02</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>firstName</td>
+ <td>test_name_first_02</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>lastName</td>
+ <td>test_name_last_02</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>emailAddress</td>
+ <td>test_user_02(a)yahoo.com</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Subscribe</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verification</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>test_user_02</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>test_pwd_02</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalLoginFormAction']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_name_first_02 test_name_last_02</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_name_first_02 test_name_last_02</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete new user</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalLoginFormAction']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIListUsers']//tbody/tr[5]//img[@class='DeleteUserIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIListUsers']//tbody/tr[5]//img[@class='DeleteUserIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete test_user_02 user?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_03.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_03</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_03</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-Change Language-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='Language']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Vietnamese</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Vietnamese</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Apply</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>link=Apply</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='Language']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='Language']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UITabContent']//div[2]/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UITabContent']//div[2]/a</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Áp dụng</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_04.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_04.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_04.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8080" />
+<title>SNF_PRL_04</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_04</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-SignInOut-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='UIPortalLoginFormAction']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_05.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_05.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_05.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_05</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_05</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-RememberMyLogin-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Check "remember my login"</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>rememberme</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalLoginFormAction']//div[@class='ButtonMiddle']/a</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Leave Portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Congratulations!</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Errase JSESSION Cookie to simulate leaving the browser</td>
+ <td></td>
+</tr>
+<tr>
+ <td>deleteCookie</td>
+ <td>JSESSIONID</td>
+ <td>recurse=true</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify Rememberme functionality works</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>link=Root Root</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_06.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_06.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_06.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8080/portal" />
+<title>SNF_PRL_06</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_06</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-UserManagement-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>User Name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Last Name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>First Name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Email</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit fields</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIListUsersGird']//tbody/tr[3]//td[5]//div//img</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>firstName</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>firstName</td>
+ <td>test_user_06</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=div#UIOrganizationPortlet div.ManagementTabContent > div.UIPopupWindow div.ActionButton</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=div#UIOrganizationPortlet div.ManagementTabContent > div.UIPopupWindow div.ActionButton</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIUserManagement']//div[@class='TabsContainer']/div[2]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIUserManagement']//div[@class='TabsContainer']/div[2]//div[@class='MiddleTab']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>user.name.given</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>user.name.given</td>
+ <td>test_name_given_06</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>user.name.family</td>
+ <td>test_name_family_06</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>user.name.nickName</td>
+ <td>test_name_nick_06</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=div#UIOrganizationPortlet div.ManagementTabContent > div.UIPopupWindow div.ActionButton</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>The user profile has been updated.</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>The user profile has been updated.</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=div#UIOrganizationPortlet div.ManagementTabContent > div.UIPopupWindow div.ActionButton</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Cancel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify changes</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>Known issue : https://jira.jboss.org/jira/browse/GTNPORTAL-270</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_user_06</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_07.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_07.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_07.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_07</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_07</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-GroupManagement-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select "Users and groups management" in menu</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIOrganizationPortlet']//div[@class='ManagementIconContainer']/a[@class='GroupButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIOrganizationPortlet']/div[2]/div[2]/div[1]/div[2]/div[1]/div[2]/div/div/div/div[3]/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select "Organization" group from group tree</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIOrganizationPortlet']//div[3]//div[@class='ExpandIcon']/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select "Management group" from group tree</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIOrganizationPortlet']//div[3]//div[@class='ExpandIcon']/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Add new group icon</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIOrganizationPortlet']//div[@class='TitleBar']/a[@class='TreeActionIcon AddGroupIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[2]/div[1]/div[1]/a[3]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>groupName</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>groupName</td>
+ <td>test_group_name_07</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>label</td>
+ <td>test_group_label_07</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>description</td>
+ <td>test_group_description_07</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click "Save" to complete adding new group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//form[@id='UIGroupForm']//div[@class='ActionButton LightBlueStyle']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_group_label_07</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_group_label_07</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click "Select User" icon</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//form[@id='UIGroupMembershipForm']//div[@class='HorizontalLayout']//table[@class='UIFormGrid']//td[@class='FieldComponent']/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//td[2]/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//form[@id='UIUserSelector']/div[2]/div[2]/table/tbody/tr/td/a[1]/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>john</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>mary</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>root</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click "Add" button</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//form[@id='UIUserSelector']//div[@class='UIAction']//a[@class='ActionButton LightBlueStyle']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//form[@id='UIUserSelector']//div[@class='UIAction']//a[@class='ActionButton LightBlueStyle']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//input[@value='root,john,mary']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIUserInGroup']//div[@title='john']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>john</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>john</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>mary</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>root</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_group_label_07</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='TreeActionIcon RemoveGroupIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this group?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_08.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_08.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_08.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_08</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_08</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-MembershipManagement-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select "Users and groups management" in menu</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Choose "Memebership Management" tab</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIOrganizationPortlet']//div[@class='ManagementIconContainer']/a[@class='MembershipButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Create new membership</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_name_08</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>description</td>
+ <td>test_description_08</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_name_08</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_name_08</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit membership</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//table[@class='UIGrid']//tbody/tr[2]/td[5]//img[@class='EditMembershipIcon']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//textarea['test_description_08']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>description</td>
+ <td>test_description_edit_08</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_description_edit_08</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_description_edit_08</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete membership</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//table[@class='UIGrid']//tbody/tr[2]/td[5]//img[@class='DeleteMembershipIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this membership?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_09.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8080/" />
+<title>SNF_PRL_09</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_09</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-AutoImport-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select "Application Registry"</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Application Registry</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Import Applications</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Auto Import</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>WSRP Admin Portlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIApplicationOrganizer']//div[@class='UIControlbar']//div[@class='IconControl ImportIcon']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>storeConfirmation</td>
+ <td>autoimport</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>WSRP Admin Portlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>WSRP Admin Portlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_10.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_10.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_10.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_10</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_10</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-CategoryManagement-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select "Application Registry"</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Application Registry</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add Category</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIApplicationOrganizer']//div[@class='UIControlbar']/div[1]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIApplicationOrganizer']//div[@class='UIControlbar']/div[1]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_name_category_10</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>displayName</td>
+ <td>test_displayname_category_10</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>description</td>
+ <td>test_description_category_10</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select permissions</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@class='WorkingArea']//div[@class='TabsContainer']/div[2]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=manager</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=manager</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIApplicationOrganizer']//a[@class='ControlIcon EditIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_displayname_category_10</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_displayname_category_10</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit Category</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIApplicationOrganizer']//a[@class='ControlIcon EditIcon']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>displayName</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>displayName</td>
+ <td>test_displayname_edit_10</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_displayname_edit_10</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_displayname_edit_10</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete Category</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='SelectedTab']//a[@class='ControlIcon DeleteIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure to delete this category and all applications on it?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextNotPresent</td>
+ <td>test_displayname_edit_10</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>test_displayname_edit_10</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_11.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_11</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_11</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-AddApplicationToCategory-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Application Registry</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add application to Administration Category</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='ListContent']//div[@class='SelectedTab']//a[@class='ControlIcon CreateNewIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='ListContent']//div[@class='SelectedTab']//a[@class='ControlIcon CreateNewIcon']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select first application in list</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//input[@id='displayName']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//input[@name='application' and @value='2']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>displayName</td>
+ <td>test_displayname_11</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=form#UIAddApplicationForm div.UIAction div.ActionButton</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='TabLabel' and @title='Administration']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit category permissions</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='TabLabel' and @title='Administration']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Permission</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='ListPermissionSelector']//a[@title='Organization']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='ListPermissionSelector']//a[@title='Organization']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=manager</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=manager</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_displayname_11</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_displayname_11</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='IconControl ImportIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>This action will automatically create categories and import all the gadgets and portlets on it.</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete application</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='ListContent']//div[@class='UIVTabContent']/div[8]//a[@class='ControlIcon DeletePortalIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='ListContent']//div[@class='UIVTabContent']/div[8]//a[@class='ControlIcon DeletePortalIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure to delete this application?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_12.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_12.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_12.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_12</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_12</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-ViewAllPortlets-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Application Registry</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify details of Administration>>Application Registry</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIVerticalSlideTabs']//div[@class='UIVTabContent']//div[1]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIVerticalSlideTabs']//div[@class='UIVTabContent']//div[1]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>ApplicationRegistryPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>ApplicationRegistryPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify details of Administration>>Organisation Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIVerticalSlideTabs']//div[@class='UIVTabContent']//div[2]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>OrganizationPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>OrganizationPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify details of Administration>>NewAccount</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIVerticalSlideTabs']//div[@class='UIVTabContent']//div[3]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>AccountPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>AccountPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify details of Dashboard>>Dashboard Portlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIVerticalSlideTabs']/div[2]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIVerticalSlideTabs']//div[@class='UIVTabContent']//div[1]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>DashboardPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>DashboardPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify details of Dashboard>>Gadget Wrapper Portlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIVerticalSlideTabs']//div[@class='UIVTabContent']//div[2]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>GadgetPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>GadgetPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--It is possible to verify all portlets.......</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_13.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_13.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_13.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_13</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_13</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-AddGadget-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Application Registry</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Gadget</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Gadget</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='IconControl AddNewIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='IconControl AddNewIcon']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>url</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>url</td>
+ <td>http://www.google.com/ig/modules/datetime.xml</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Gadget Details</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIGadgetInfo']//div[@class='UIBreadcumb']/div[@class='DownLoadIcon ControlIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='PopupIcon ErrorMessageIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>//div[@class='PopupIcon ErrorMessageIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>https://jira.jboss.org/jira/browse/GTNPORTAL-439</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Gadget Details</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='SelectedItem ItemContent']/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure to delete this gadget?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='SelectedItem ItemContent']/a[@title='Calculator']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>//a[@title='Date & Time']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_14.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_14.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_14.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_14</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_14</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-ImportApplicationIcon-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Application Registry</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='IconControl ImportIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@class='IconControl ImportIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Uncheck icon presence by editing the page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='EditPortletPropertiesIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='EditPortletPropertiesIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyChecked</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>uncheck</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Close</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Application Registry</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Application Registry</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>//div[@class='IconControl ImportIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit to bring back Icon</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='EditPortletPropertiesIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='EditPortletPropertiesIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyNotChecked</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>check</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Close</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Application Registry</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Application Registry</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@class='IconControl ImportIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_15.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_15.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_15.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_15</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_15</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-SiteMapAndLinkToPage-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/sitemap</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Expand the first submenu</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=div#UISiteMap div.ExpandIcon</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select the first link of submenu</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=div#UISiteMap div.ChildrenContainer a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>css=div#UISiteMap div.ChildrenContainer a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_16.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_16.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_16.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_16</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_16</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-ExpandAll-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/sitemap</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Expand All</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UISiteMap']//div[@class='ClearFix']/div[2]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Blog</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>New Staff</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Application Registry</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>//div[@class='ExpandIcon FloatLeft']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_17.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_17.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_17.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_17</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_17</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-CollapseAll-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/sitemap</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Expand SiteMap tree</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UISiteMap']//div[@class='ClearFix']/div[2]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Blog</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>New Staff</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Application Registry</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Collapse SiteMap Tree</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UISiteMap']//div[@class='ClearFix']/div[1]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextNotPresent</td>
+ <td>Blog</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>//div[@class='CollapseIcon FloatLeft']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_18.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_18.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_18.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_18</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_18</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-CreateNewPortal-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/portalnavigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UISiteManagement']//div[@class='UIAction']//div[@class='ActionButton BlueButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select portal settings</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIMaskWorkspace']//div[@class='TabsContainer']/div[2]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIMaskWorkspace']//div[@class='TabsContainer']/div[2]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_portal_18</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select permission settings</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIMaskWorkspace']//div[@class='TabsContainer']/div[4]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>publicMode</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Permission Setting</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='PermissionSelector']//a[@title='Administrators']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='PermissionSelector']//a[@title='Administrators']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='PermissionSelector']//a[@title='manager']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='PermissionSelector']//a[@title='manager']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextNotPresent</td>
+ <td>Permission Selector</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//form[@id='UIPortalForm']//div[@class='UIAction']//div[@class='ActionButton LightBlueStyle']//div[@class='ButtonMiddle']/a</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_portal_18</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify portal creation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>link=test_portal_18</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete new portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Portal Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UISiteManagement']/table[2]//a[@class='DeleteIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UISiteManagement']/table/tbody/tr/td[2]/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this portal?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Portal Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>test_portal_18</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_19.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_19.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_19.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_19</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_19</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-EditPortalNavigation-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit Portal layout, currently do not change anything</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='EditLayoutIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='EditLayoutIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>css=div#Administration/ApplicationRegistryPortlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>dragAndDropToObject</td>
+ <td>css=div#Administration/ApplicationRegistryPortlet</td>
+ <td>css=div#UIPortal div.UIRowContainer</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPortalComposer']//div[@class='OverflowContainer']/a[@class='EdittedSaveButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']//div[@class='OverflowContainer']/a[@class='CloseButton']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit nav: add node, actions ...</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Navigation</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Node</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_nodename_19</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>label</td>
+ <td>test_node_label_19</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=div#UISiteManagement > div.UIPopupWindow div.TabsContainer div.NormalTab div.MiddleTab</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Search and Select Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Search and Select Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select the first page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIRepeater']//table//tbody/tr/td[5]/div[@class='ActionContainer']/img</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='UIRepeater']//table//tbody/tr/td[5]/div[@class='ActionContainer']/img</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit Portal Properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Portal's Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Portal's Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIMaskWorkspace']//div[3]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIMaskWorkspace']//div[3]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Permission Setting</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Permission Setting</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Administrators</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Administrators</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='PermissionSelector']//div[2]/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//form[@id='UIPortalForm']//div[@class='UIAction']//div[@class='ActionButton LightBlueStyle']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select new node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_node_label_19</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@class='SelectedNavigationTab']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UINavigationManagement']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_node_label_19']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this node?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify Deletion</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Home</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Home</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Demo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>test_node_label_19</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_20.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_20.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_20.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_20</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_20</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-DeletePortal-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add New Portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add New Portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'PortalSetting');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=PortalSetting')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'PortalSetting');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=PortalSetting')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_portal_name_20</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'Properties');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=Properties')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>document.forms[0].elements[6]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'PermissionSetting');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=PermissionSetting')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>publicMode</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>publicMode</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Permission Setting</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=exact:*</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=exact:*</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>//div[@id='UIPermissionSelector']/div/div[2]/div[1]/div[3]/div[2]</td>
+ <td>exact:*</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UISiteManagement']/table[2]/tbody/tr/td[3]/a[4]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_portal_name_20</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UISiteManagement']/table[2]/tbody/tr/td[3]/a[4]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this portal?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextNotPresent</td>
+ <td>test_portal_name_20</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>test_portal_name_20</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_21.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_21.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_21.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_21</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_21</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-ChangePortal-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add New Portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add New Portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'PortalSetting');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=PortalSetting')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'PortalSetting');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=PortalSetting')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_portal_name_21</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'Properties');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=Properties')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'PermissionSetting');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=PermissionSetting')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>publicMode</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Permission Setting</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=exact:*</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=exact:*</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>//div[@id='UIPermissionSelector']/div/div[2]/div[1]/div[3]/div[2]</td>
+ <td>exact:*</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UISiteManagement']/table[2]/tbody/tr/td[3]/a[4]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_portal_name_21</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--View new portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_portal_name_21</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete new portal</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UISiteManagement']/table[2]//td[3]/a[4]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UISiteManagement']/table[2]//td[3]/a[4]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this portal?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextNotPresent</td>
+ <td>test_portal_name_21</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>test_portal_name_21</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_22.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_22.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_22.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8080/portal" />
+<title>SNF_PRL_22</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_22</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-EditPortalLayout-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Layout</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Portal Properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Portal Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>locale</td>
+ <td></td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>locale</td>
+ <td>label=French (France)</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='UIMaskWorkspace']//div[@class='TabsContainer']//div[3]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>publicMode</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Permission Setting</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Select Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Users</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Users</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=exact:*</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=exact:*</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>//div[@id='UIPermissionSelector']/div/div[2]/div[1]/div[3]/div[2]</td>
+ <td>exact:*</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']//a[@class='EdittedSaveButton']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=classic</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Layout</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Portal Properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Portal Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>locale</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>French (France)</td>
+ <td></td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>locale</td>
+ <td>label=French (France)</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='UIMaskWorkspace']//div[@class='TabsContainer']//div[3]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>publicMode</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']//a[@class='EdittedSaveButton']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=classic</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td>1,1</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_23.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_23.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_23.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_23</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_23</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-AddNavigation-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Navigation</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Cancel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Cancel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_grp_node_23</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>label</td>
+ <td>test_grp_label_23</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Choose "Page Selector" tab</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='CenterHorizontalTabs']//div[@class='NormalTab']//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Search and Select Page</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select the first page from pages list</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIRepeater']//img[@class='SelectPageIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//a[@title='test_grp_label_23']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete new group navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_23']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this node?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_24.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_24.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_24.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>Test_SNF_PRL_24</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test_SNF_PRL_24</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-EditDeleteNavigation-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Navigation</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Cancel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Cancel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForText</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_grp_node_24</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>label</td>
+ <td>test_grp_label_24</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Choose "Page Selector" tab</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='CenterHorizontalTabs']//div[@class='NormalTab']//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Search and Select Page</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select the first page from pages list</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIRepeater']//img[@class='SelectPageIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=test_grp_label_24</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_grp_label_24</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit navigation properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='PortalNavigationTopContainer']/div[2]/div/div/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIGroupNavigationGrid']/table[4]//td[@class='ActionBlock']//a[@class='EditProIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIGroupNavigationGrid']/table[4]//td[@class='ActionBlock']//a[@class='EditProIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>description</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>description</td>
+ <td>test_description_edit_24</td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>priority</td>
+ <td>10</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Description: test_description_edit_24</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@title='test_grp_label_24']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//a[@title='test_grp_label_24']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete new group navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_24']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this node?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_25.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_25.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_25.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8080/" />
+<title>SNF_PRL_25</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_25</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-EditNavActions_Rightclickmenu-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new group node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_grp_node_25</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>label</td>
+ <td>test_grp_label_25</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=div#UIGroupNavigationManagement div.UIPopupWindow div.TabsContainer div.NormalTab div.MiddleTab</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Search and Select Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Search and Select Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//img[@title='Select Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//img[@title='Select Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_grp_label_25</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit node's page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIPopupWindow UIDragObject' and contains(@style,'width: 400px; display: block; visibility: visible')]//a[@title='test_grp_label_25']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_25']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon EditPageNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon EditPageNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=View Page properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=View Page properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>check</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='EdittedSaveButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='EdittedSaveButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete new group navigation and page edit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIPopupWindow UIDragObject' and contains(@style,'width: 400px; display: block; visibility: visible')]//a[@title='test_grp_label_25']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_25']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon EditPageNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=View Page properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=View Page properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>uncheck</td>
+ <td>//input[@class='checkbox']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='EdittedSaveButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='EdittedSaveButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIPopupWindow UIDragObject' and contains(@style,'width: 400px; display: block; visibility: visible')]//a[@title='test_grp_label_25']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_25']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this node?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>link=test_grp_label_25</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>link=test_grp_label_25</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_26.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_26.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_26.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>Test_SNF_PRL_26_2</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test_SNF_PRL_26_2</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-MoveUp/DownNode-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Create node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Navigation</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>name</td>
+ <td>test_grp_node_26</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>label</td>
+ <td>test_grp_label_26</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=div#UIGroupNavigationManagement div.UIPopupWindow div.TabsContainer div.NormalTab div.MiddleTab</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Search and Select Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Search and Select Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//img[@title='Select Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//img[@title='Select Page']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_grp_label_26</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='PortalNavigationTopContainer']/div[2]/div/div/div/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit node's position</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Move node up</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//a[@title='test_grp_label_26']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeXpathCount</td>
+ <td>//div[@class='TreeContainer JSContainer']/div/div</td>
+ <td>nodeLvl</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>Node is at level ${nodeLvl}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_26']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon MoveUp16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon MoveUp16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>//div[@class='TreeContainer JSContainer']/div/div[${nodeLvl}]/div/a[@title='test_grp_label_26']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>Node is at level ${nodeLvl}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Move node down</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_26']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon MoveDown16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon MoveDown16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@class='TreeContainer JSContainer']/div/div[${nodeLvl}]/div/a[@title='test_grp_label_26']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>Node is at level ${nodeLvl}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@ID='UIGroupNavigationGrid']//table[4]//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//a[@title='test_grp_label_26']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_grp_label_26']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this node?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>link=test_grp_label_26</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>link=test_grp_label_26</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_27.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_27.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_27.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_27</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_27</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-AddEditGroupPageWizard-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPageBrowser']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Create new</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add New Page</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>pageName</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>pageName</td>
+ <td>test_page_27</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>pageDisplayName</td>
+ <td>test_page_name_27</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click "Next" to move to step2 to choose page layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Keep "Empty layout" and Click "Next" to move to step 3</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Open Page Editor pane</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='Administration/AccountPortlet']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=View Page properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select Permission Setting tab</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Show Max Window</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIMaskWorkspace']//div[3]//div[@class='MiddleTab']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Permission Setting</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Do not change anything in Page properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Cancel</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Save to complete adding new page by wizard with no content (no portlet)</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Show form to edit page by wizard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=View Page properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Select Permission Setting tab</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIMaskWorkspace']//div[3]//div[@class='MiddleTab']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIMaskWorkspace']//div[3]//div[@class='MiddleTab']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Permission</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Platform</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Administrators</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageFormPopupGroupMembershipSelector']//div[@class='MembershipSelector']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/private/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Layout</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Portal Properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Portal Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>locale</td>
+ <td>label=French (France)</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Layout</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Portal Properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Portal Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>French (France)</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Cancel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']/div[1]/div/div/div/a[1]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Group</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIComponentBlock']//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIComponentBlock']//a[@class='EditNavIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIGroupNavigationGrid']/table[4]/tbody/tr/td[3]/a[1]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIGroupNavigationGrid']/table[4]/tbody/tr/td[3]/a[1]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='TreeContainer JSContainer']/div/div[2]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='TreeContainer JSContainer']/div/div[2]//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='TreeContainer JSContainer']/div/div[2]//a[@title='Page Management']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='TreeContainer JSContainer']/div/div[2]//a[@title='Page Management']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//a[@title='test_page_name_27']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoContextMenu</td>
+ <td>//a[@title='test_page_name_27']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UINavigationNodeSelector']//div[@id='NavigationNodePopupMenu']//a[@class='ItemIcon DeleteNode16x16Icon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete this node?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementNotPresent</td>
+ <td>link=test_page_name_27</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementNotPresent</td>
+ <td>link=test_page_name_27</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_28.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_28.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_28.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_28</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_28</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-ActionsDashboardpage-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAtAndWait</td>
+ <td>link=Dashboard</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add gadgets into dashboard page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Gadgets</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Gadgets</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--By url</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>//input[@id='url']</td>
+ <td>http://www.google.com/ig/modules/datetime.xml</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//img[@class='AddNewNodeIcon']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIAddGadgetPopup']//div[@class='CloseButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='GadgetTitle']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@class='GadgetTitle']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@title='Delete Gadget']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@onclick='eXo.gadget.UIGadget.deleteGadget(this)']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure to delete this gadget?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add Gadgets</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add Gadgets</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--By drag and drop</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='GadgetTitle' and @title='Calculator']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='GadgetTitle' and @title='Calculator']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>dragAndDropToObject</td>
+ <td>//div[@class='GadgetTitle' and @title='Calculator']</td>
+ <td>//div[@class='UIDashboardContainer']</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='GadgetTitle' and @style='display: block;']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@class='GadgetTitle' and @style='display: block;']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='CloseGadget IconControl']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIAddGadgetPopup']//div[@class='CloseButton']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@onclick='eXo.gadget.UIGadget.deleteGadget(this)']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure to delete this gadget?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Drag your gadgets here.</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_29.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_29.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_29.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_29</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_29</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-AddEditPageEditLayoutDashboard-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Dashboard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new page in dashboard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Click & Type Page Name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add New Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add New Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Choose "root" node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>pageName</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>pageName</td>
+ <td>test_dashboardpage_29</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>pageDisplayName</td>
+ <td>test_dashboardpage_name_29</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Next to move to step 2</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Next to move to step 3, keep Empty layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Select a Page Layout Template</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Open Editor pane</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@onclick='eXo.portal.UIPortal.toggleComposer(this)']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick='eXo.portal.UIPortal.toggleComposer(this)']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Save to complete adding page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_dashboardpage_name_29</td>
+ <td></td>
+</tr>
+<!--tr>
+ <td>verifyTextPresent</td>
+ <td>test_dashboardpage_name_29</td>
+ <td></td>
+</tr-->
+<tr>
+ <td>echo</td>
+ <td>--Edit page in dashboard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='TabsContainer ClearFix']//div[@class='SelectedTab']//span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>componentExoDoubleClick</td>
+ <td>//div[@class='TabsContainer ClearFix']//div[@class='SelectedTab']//span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='TabsContainer ClearFix']//div[@class='SelectedTab']//input</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>//div[@class='TabsContainer ClearFix']//div[@class='SelectedTab']//input</td>
+ <td>test_dashboardpage_edit_29</td>
+</tr>
+<tr>
+ <td>keyPress</td>
+ <td>//div[@class='TabsContainer ClearFix']//div[@class='SelectedTab']//input</td>
+ <td>\13</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Site</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit Dashboard layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=test_dashboardpage_edit_29</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_dashboardpage_edit_29</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UITab GrayTabStyle']/div[@class='NormalTab']//span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Layout</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Portal Properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Portal Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>locale</td>
+ <td></td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>locale</td>
+ <td>label=English</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'Properties');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=Properties')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'Properties');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=Properties')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPortalComposer']//a[@class='EdittedSaveButton']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']//a[@class='EdittedSaveButton']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='SelectedTab']//img[@class='CloseIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='SelectedTab']//img[@class='CloseIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Really want to remove this dashboard?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextNotPresent</td>
+ <td>test_dashboardpage_edit_29</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>test_dashboardpage_edit_29</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_30.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_30.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_30.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_30</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_30</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-DashboardSiteManagement-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAtAndWait</td>
+ <td>link=Dashboard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Add new page in dashboard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UITabPaneDashboard']/div/div/div/div/div/div[1]/div/div/div/div/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add New Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Add New Page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Choose "root" node</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>pageName</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>pageName</td>
+ <td>test_dashboardpage_30</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>pageDisplayName</td>
+ <td>test_dashboardpage_name_30</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Next to move to step 2</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Next to move to step 3, keep Empty layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageCreationWizard']//div[@class='UIAction']//div[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Click Save to complete adding page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPageEditor']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UITabPaneDashboard']/div/div/div/div/div/div[2]/div/div/div/div/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--------To fast</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@id='UITabPaneDashboard']/div/div/div/div/div/div[2]/div/div/div/div/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_dashboardpage_name_30</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit page in dashboard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Page</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=View Page properties</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=View Page properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>title</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>title</td>
+ <td>test_dashboardpage_edit_30</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=form#UIPageForm div.ActionButton</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=a.EdittedSaveButton</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify page edit</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Page</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=View Page properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>title</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//input[@value='test_dashboardpage_edit_30']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Cancel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=a.CloseButton</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Page Management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit Dashboard layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_dashboardpage_name_30</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Edit Layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Layout</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Portal Properties</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>select</td>
+ <td>locale</td>
+ <td>label=English</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@onclick="eXo.webui.UIHorizontalTabs.changeTabForUIFormTabpane(this, 'UIPortalForm', 'Properties');javascript:eXo.webui.UIForm.submitEvent('UIPortalForm','SelectTab','&objectId=Properties')"]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPortalComposer']//a[@class='EdittedSaveButton']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']//a[@class='EdittedSaveButton']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete page</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='SelectedTab']//img[@class='CloseIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='SelectedTab']//img[@class='CloseIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Really want to remove this dashboard?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextNotPresent</td>
+ <td>test_dashboardpage_name_30</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_31.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_31.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_31.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_31</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_31</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-ChangeLanguagePrivateMode-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Change Language</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Change Language</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Change to French</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=French</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=French</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Apply</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Accueil</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Changer la langue</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Change back to English</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=anglais</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=anglais</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Appliquer</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>Home</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_32.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_32.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_32.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_32</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_32</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-ChangeDisplaySkin-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Change Skin</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Change Skin</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UITabContent']//div[@class='ItemListContainer']//div[@class='ItemList']//div[@class='SelectedItem Item']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UITabContent']//div[@class='ItemListContainer']//div[@class='ItemList']//div[@class='SelectedItem Item']</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>clickAtAndWait</td>
+ <td>//div[@id='UIMaskWorkspace']//div[@class='ActionButton LightBlueStyle']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>---------</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_33.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_33.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_33.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_33</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_33</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-AccountSetting-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Register new account</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Register</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>test_user_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>test_pwd_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>confirmPassword</td>
+ <td>test_pwd_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>firstName</td>
+ <td>test_name_first_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>lastName</td>
+ <td>test_name_last_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>emailAddress</td>
+ <td>test_user_33(a)yahoo.com</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Subscribe</td>
+ <td>1,1</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Sign in and modify</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>test_user_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>test_pwd_33</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalLoginFormAction']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_name_first_33 test_name_last_33</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=test_name_first_33 test_name_last_33</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Change Password</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Change Password</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>currentpass</td>
+ <td>test_pwd_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>newpass</td>
+ <td>test_edit_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>confirmnewpass</td>
+ <td>test_edit_33</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>css=form#UIAccountChangePass div.ActionButton</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Close</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Close</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify modifications</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>test_user_33</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>test_edit_33</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalLoginFormAction']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_name_first_33 test_name_last_33</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_name_first_33 test_name_last_33</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete new user</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalLoginFormAction']//a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIListUsers']//tbody/tr[5]//img[@class='DeleteUserIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIListUsers']//tbody/tr[5]//img[@class='DeleteUserIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete test_user_33 user?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_34.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_34.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_34.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_34</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_34</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-LogoPortletAccSetting-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAtAndWait</td>
+ <td>link=Dashboard</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Edit Logo Picture</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTitle</td>
+ <td>Click & Type Page Name</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Edit Layout</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//a[@class='EditPortletPropertiesIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//a[@class='EditPortletPropertiesIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>logoUrl</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>logoUrl</td>
+ <td>http://ocs.inrialpes.fr/userfiles/image/logo/Picture%203.png</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Close</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UIPortalComposer']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@id='UIPortalComposer']/div[1]/div/div/div/a[2]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@id='UILogoPortlet']/a/img[@src='http://ocs.inrialpes.fr/userfiles/image/logo/Picture%203.png']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyElementPresent</td>
+ <td>//div[@id='UILogoPortlet']/a/img[@src='http://ocs.inrialpes.fr/userfiles/image/logo/Picture%203.png']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_35.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_35.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_SNF_PRL_35.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>SNF_PRL_35</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">SNF_PRL_35</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/portal/public/classic/</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>-CreateNewAccountInPrivateMode-</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign in</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>root</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>gtn</td>
+</tr>
+<tr>
+ <td>clickAtAndWait</td>
+ <td>//div[@id='UIPortalLoginFormAction']/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=New Staff</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Create new user using "New Staff" portlet</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>username</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>username</td>
+ <td>test_user_35</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>password</td>
+ <td>test_pwd_35</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>Confirmpassword</td>
+ <td>test_pwd_35</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>firstName</td>
+ <td>test_name_first_35</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>lastName</td>
+ <td>test_name_last_35</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>email</td>
+ <td>test_user_35(a)yahoo.com</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIRowContainer']//div[@class='UIFormTabPane']//div[@class='TabsContainer']/div[2]/div/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>Given Name:</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>user.name.given</td>
+ <td>test_name_given_35</td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIRowContainer']//div[@class='UIFormTabPane']//div[@class='TabsContainer']/div/div/div/div/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Verify</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Users and groups management</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForTextPresent</td>
+ <td>test_user_35</td>
+ <td></td>
+</tr>
+<tr>
+ <td>verifyTextPresent</td>
+ <td>test_user_35</td>
+ <td></td>
+</tr>
+<tr>
+ <td>echo</td>
+ <td>--Delete</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>//div[@class='UIListUsers']//tbody/tr[5]//img[@class='DeleteUserIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>//div[@class='UIListUsers']//tbody/tr[5]//img[@class='DeleteUserIcon']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForConfirmation</td>
+ <td>Are you sure you want to delete test_user_35 user?</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAt</td>
+ <td>link=Sign out</td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_UserExtensions.html
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_UserExtensions.html (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/Test_UserExtensions.html 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>Test_UserScript</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test_UserScript</td></tr>
+</thead><tbody>
+<tr>
+ <td>getExoExtensionVersion</td>
+ <td></td>
+ <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/user-extensions.js.ori
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/user-extensions.js.ori (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/org/exoplatform/portal/selenium/user-extensions.js.ori 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,129 @@
+//
+// Default user extensions from: jar:file:/d:/java/exo-dependencies/repository/org/codehaus/mojo/selenium-maven-plugin/1.1-SNAPSHOT/selenium-maven-plugin-1.1-SNAPSHOT.jar!/org/codehaus/mojo/selenium/default-user-extensions.js
+//
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+//
+// $Id: default-user-extensions.js 4489 2007-07-01 23:49:34Z user57 $
+//
+
+//
+// Incorporated from: http://wiki.openqa.org/display/SEL/removeCookie
+//
+
+function createCookie(doc, name, value, path, days) {
+ if (!path) {
+ path = "/";
+ }
+
+ if (days) {
+ var date = new Date();
+ date.setTime(date.getTime()+(days*24*60*60*1000));
+ var expires = "; expires=" + date.toGMTString();
+ }
+ else {
+ var expires = "";
+ }
+
+ doc.cookie = name + "=" + value + expires + "; path=" + path;
+}
+
+/**
+ * Removes the cookie with the given name.
+ * text - the cookie name
+ * path - the cookie path
+ */
+Selenium.prototype.removeCookie = function(text, path) {
+ createCookie(this.page().currentDocument, text, "", path, -1);
+};
+
+//
+// Incorporated from user-extensions.js.sample from Selenium RC 0.8.1
+//
+
+// The following examples try to give an indication of how Selenium can be extended with javascript.
+
+/**
+ * All do* methods on the Selenium prototype are added as actions.
+ * Eg add a typeRepeated action to Selenium, which types the text twice into a text box.
+ * The typeTwiceAndWait command will be available automatically
+ */
+Selenium.prototype.doTypeRepeated = function(locator, text) {
+ // All locator-strategies are automatically handled by "findElement"
+ var element = this.page().findElement(locator);
+
+ // Create the text to type
+ var valueToType = text + text;
+
+ // Replace the element text with the new text
+ this.page().replaceText(element, valueToType);
+};
+
+/**
+ * All assert* methods on the Selenium prototype are added as checks.
+ * Eg add a assertValueRepeated check, that makes sure that the element value
+ * consists of the supplied text repeated.
+ * The verify version will be available automatically.
+ */
+Selenium.prototype.assertValueRepeated = function(locator, text) {
+ // All locator-strategies are automatically handled by "findElement"
+ var element = this.page().findElement(locator);
+
+ // Create the text to verify
+ var expectedValue = text + text;
+
+ // Get the actual element value
+ var actualValue = element.value;
+
+ // Make sure the actual value matches the expected
+ Assert.matches(expectedValue, actualValue);
+};
+
+/**
+ * All get* methods on the Selenium prototype result in
+ * store, assert, assertNot, verify, verifyNot, waitFor, and waitForNot commands.
+ * E.g. add a getTextLength method that returns the length of the text
+ * of a specified element.
+ * Will result in support for storeTextLength, assertTextLength, etc.
+ */
+Selenium.prototype.getTextLength = function(locator) {
+ return this.getText(locator).length;
+};
+
+/**
+ * All locateElementBy* methods are added as locator-strategies.
+ * Eg add a "valuerepeated=" locator, that finds the first element with the supplied value, repeated.
+ * The "inDocument" is a the document you are searching.
+ */
+PageBot.prototype.locateElementByValueRepeated = function(text, inDocument) {
+ // Create the text to search for
+ var expectedValue = text + text;
+
+ // Loop through all elements, looking for ones that have a value === our expected value
+ var allElements = inDocument.getElementsByTagName("*");
+ for (var i = 0; i < allElements.length; i++) {
+ var testElement = allElements[i];
+ if (testElement.value && testElement.value === expectedValue) {
+ return testElement;
+ }
+ }
+ return null;
+};
+
Added: portal/trunk/testsuite/selenium-snifftests/src/suite/user-extensions.js
===================================================================
--- portal/trunk/testsuite/selenium-snifftests/src/suite/user-extensions.js (rev 0)
+++ portal/trunk/testsuite/selenium-snifftests/src/suite/user-extensions.js 2010-02-12 02:43:19 UTC (rev 1651)
@@ -0,0 +1,76 @@
+/***************************************************************************************************************/
+/** Exo User Extensions ***/
+/***************************************************************************************************************/
+
+Selenium.prototype.doGetExoExtensionVersion = function(){
+ return "1.0";
+};
+
+/**
+ * This function allows to enter text in a FCK field
+ * Usage:
+ * - locator the locator that points to the parent iframe (the one that contains both the toolbar and the text area)
+ * - text the text to enter into the field
+ * Run selenium rc server from maven with the userExtension parameter.
+ *
+ * For more information see the following URL:
+ * - http://mojo.codehaus.org/selenium-maven-plugin/start-server-mojo.html#use...
+ *
+ * store in exo-int/qa/selenium
+ **/
+Selenium.prototype.doTypeFCKEditor = function(locator, text) {
+ // All locator-strategies are automatically handled by "findElement"
+ var editor = this.page().findElement(locator);
+
+ // TODO: use contentWindow instead of contentDocument for IE
+ var innerEditor = null;
+ if (editor.contentDocument)
+ innerEditor = editor.contentDocument.getElementsByTagName("iframe")[0];
+ else if (editor.contentWindow)
+ innerEditor = editor.contentWindow.document.getElementsByTagName("iframe")[0];
+
+ if (innerEditor)
+ innerEditor.contentDocument.body.innerHTML = text;
+ // Replace the element text with the new text
+ // this.page().replaceText(element, valueToType);
+};
+
+/**
+ * This function allows to use a specific Contextual menu
+ * Usage:
+ * - Locator : Element to rightclick on
+ *
+ * For more information see the following URL:
+ * - Manually Fire event : http://www.howtocreate.co.uk/tutorials/javascript/domevents#domevld1
+ * - initMouseEvent properties : http://www.quirksmode.org/js/events_properties.html
+ *
+ * store in exo-int/qa/selenium
+ **/
+Selenium.prototype.doComponentExoContextMenu = function(locator){
+
+ var fireOnThis = this.page().findElement(locator);
+ var evObj = document.createEvent('MouseEvents');
+ evObj.initMouseEvent( 'mousedown', true, true, window, 1, 12, 345, 7, 220, false, false, false, false, 2, null );
+ fireOnThis.dispatchEvent(evObj);
+
+};
+
+/**
+ * This function allows to use a specific Contextual menu
+ * Usage:
+ * - Locator : Element to doubleclick on
+
+ * For more information see the following URL:
+ * - Manually Fire event : http://www.howtocreate.co.uk/tutorials/javascript/domevents#domevld1
+ * - initMouseEvent properties : http://www.quirksmode.org/js/events_properties.html
+ *
+ * store in exo-int/qa/selenium
+ **/
+Selenium.prototype.doComponentExoDoubleClick = function(locator){
+
+ var fireOnThis = this.page().findElement(locator);
+ var evObj = document.createEvent('MouseEvents');
+ evObj.initMouseEvent( 'dblclick', true, true, window, 1, 12, 345, 7, 220, false, false, false, false,0, null );
+ fireOnThis.dispatchEvent(evObj);
+
+};
\ No newline at end of file
14 years, 11 months
gatein SVN: r1650 - in portal/trunk: component/scripting/src/main/java/org/exoplatform/commons/utils and 4 other directories.
by do-not-reply@jboss.org
Author: mwringe
Date: 2010-02-11 18:18:32 -0500 (Thu, 11 Feb 2010)
New Revision: 1650
Added:
portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/GrowingOutputStream.java
portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl
Modified:
portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/OutputStreamPrinter.java
portal/trunk/component/scripting/src/main/java/org/exoplatform/commons/utils/PortalPrinter.java
portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplicationLifecycle.java
Log:
Add support for portlet html markup headers. Requires changes to how the UIPortalApplication is configured to be rendered in order to render in the correct sequence.
Added: portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/GrowingOutputStream.java
===================================================================
--- portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/GrowingOutputStream.java (rev 0)
+++ portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/GrowingOutputStream.java 2010-02-11 23:18:32 UTC (rev 1650)
@@ -0,0 +1,81 @@
+package org.exoplatform.commons.utils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class GrowingOutputStream extends OutputStream{
+
+ private final OutputStream out;
+
+ private ByteArrayOutputStream buffer;
+
+ private boolean open;
+
+ public GrowingOutputStream(OutputStream out, int initialBufferSize) {
+ if (out == null)
+ {
+ throw new NullPointerException("No null output stream");
+ }
+ if (initialBufferSize < 0)
+ {
+ throw new IllegalArgumentException("No initial buffer size under 0");
+ }
+
+ this.out = out;
+ this.buffer = new ByteArrayOutputStream(initialBufferSize);
+ this.open = true;
+ }
+
+ @Override
+ public void write(int b) throws IOException
+ {
+ if (!open)
+ {
+ throw new IOException("closed");
+ }
+ buffer.write(b);
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException
+ {
+ if (!open)
+ {
+ throw new IOException("closed");
+ }
+ buffer.write(b, off, len);
+ }
+
+ @Override
+ public void flush() throws IOException
+ {
+ if (!open)
+ {
+ throw new IOException("closed");
+ }
+
+ //
+ out.write(buffer.toByteArray());
+
+ //
+ out.flush();
+ }
+
+ @Override
+ public void close() throws IOException
+ {
+ if (!open)
+ {
+ throw new IOException("closed");
+ }
+
+ //
+ out.write(buffer.toByteArray());
+
+ //
+ open = false;
+ out.close();
+ }
+
+}
Modified: portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/OutputStreamPrinter.java
===================================================================
--- portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/OutputStreamPrinter.java 2010-02-11 21:32:06 UTC (rev 1649)
+++ portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/OutputStreamPrinter.java 2010-02-11 23:18:32 UTC (rev 1650)
@@ -77,7 +77,7 @@
*/
public OutputStreamPrinter(TextEncoder encoder, OutputStream out, boolean flushOnClose) throws IllegalArgumentException
{
- this(encoder, out, IOFailureFlow.RETHROW, false, flushOnClose, 0);
+ this(encoder, out, IOFailureFlow.RETHROW, false, flushOnClose, 0, false);
}
/**
@@ -92,7 +92,7 @@
*/
public OutputStreamPrinter(TextEncoder encoder, OutputStream out, boolean flushOnClose, int bufferSize) throws IllegalArgumentException
{
- this(encoder, out, IOFailureFlow.RETHROW, false, flushOnClose, bufferSize);
+ this(encoder, out, IOFailureFlow.RETHROW, false, flushOnClose, bufferSize, false);
}
/**
@@ -101,11 +101,27 @@
*
* @param encoder the encoder
* @param out the output
+ * @param flushOnClose flush when stream is closed
+ * @param bufferSize the initial size of the buffer
+ * @param growing if the buffer should grow in size once full
* @throws IllegalArgumentException if any argument is null
*/
+ public OutputStreamPrinter(TextEncoder encoder, OutputStream out, boolean flushOnClose, int bufferSize, boolean growing) throws IllegalArgumentException
+ {
+ this(encoder, out, IOFailureFlow.RETHROW, false, flushOnClose, bufferSize, growing);
+ }
+
+ /**
+ * Builds an instance with the failureFlow being {@link IOFailureFlow#RETHROW} and
+ * a the ignoreOnFailure property set to false.
+ *
+ * @param encoder the encoder
+ * @param out the output
+ * @throws IllegalArgumentException if any argument is null
+ */
public OutputStreamPrinter(TextEncoder encoder, OutputStream out) throws IllegalArgumentException
{
- this(encoder, out, IOFailureFlow.RETHROW, false, false, 0);
+ this(encoder, out, IOFailureFlow.RETHROW, false, false, 0, false);
}
/**
@@ -120,12 +136,27 @@
* @throws IllegalArgumentException if any argument is null
*/
public OutputStreamPrinter(
+ TextEncoder encoder,
+ OutputStream out,
+ IOFailureFlow failureFlow,
+ boolean ignoreOnFailure,
+ boolean flushOnClose,
+ int bufferSize)
+ throws IllegalArgumentException
+ {
+ this(encoder, out, failureFlow, ignoreOnFailure, flushOnClose, bufferSize, false);
+ }
+
+
+ public OutputStreamPrinter(
TextEncoder encoder,
OutputStream out,
IOFailureFlow failureFlow,
boolean ignoreOnFailure,
boolean flushOnClose,
- int bufferSize)
+ int bufferSize,
+ boolean growing
+ )
throws IllegalArgumentException
{
if (encoder == null)
@@ -146,10 +177,14 @@
}
//
- if (bufferSize > 0)
+ if (bufferSize > 0 && !growing)
{
out = new BufferingOutputStream(out, bufferSize);
}
+ else if (growing)
+ {
+ out = new GrowingOutputStream(out, bufferSize);
+ }
//
this.encoder = encoder;
@@ -365,4 +400,13 @@
throw e;
}
}
+
+ /**
+ * Flush the output stream. This allows for the outputstream
+ * to be independently flushed regardless of the flushOnClose setting.
+ */
+ public void flushOutputStream() throws IOException
+ {
+ out.flush();
+ }
}
Modified: portal/trunk/component/scripting/src/main/java/org/exoplatform/commons/utils/PortalPrinter.java
===================================================================
--- portal/trunk/component/scripting/src/main/java/org/exoplatform/commons/utils/PortalPrinter.java 2010-02-11 21:32:06 UTC (rev 1649)
+++ portal/trunk/component/scripting/src/main/java/org/exoplatform/commons/utils/PortalPrinter.java 2010-02-11 23:18:32 UTC (rev 1650)
@@ -37,4 +37,9 @@
{
super(encoder, out, flushOnClose, bufferSize);
}
+
+ public PortalPrinter(OutputStream out, boolean flushOnClose, int bufferSize, boolean growing) throws IllegalArgumentException
+ {
+ super(encoder, out, flushOnClose, bufferSize, growing);
+ }
}
Modified: portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl
===================================================================
--- portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl 2010-02-11 21:32:06 UTC (rev 1649)
+++ portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplication.gtmpl 2010-02-11 23:18:32 UTC (rev 1650)
@@ -1,141 +1,144 @@
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<%
- import org.exoplatform.portal.application.PortalRequestContext ;
- import org.exoplatform.webui.core.UIComponent;
- import java.util.Iterator;
- import org.exoplatform.portal.webui.portal.UIPortal ;
- import org.exoplatform.portal.config.model.PortalProperties ;
-
- def rcontext = _ctx.getRequestContext() ;
- String docBase = rcontext.getRequestContextPath() ;
- String skin = uicomponent.getSkin();
- def portalSkins = uicomponent.getPortalSkins() ;
- def portletSkins = uicomponent.getPortletSkins() ;
- def scriptsPaths = uicomponent.getJavascriptURLs();
- def lang = uicomponent.getLocale().getLanguage();
- def title = rcontext.getTitle();
- def metaInformation = rcontext.getMetaInformation();
-%>
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="$lang" lang="$lang" dir="$dir">
- <head id="head">
- <title><%=title%></title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <%
- if(metaInformation!= null) {
- Iterator<String> keys = metaInformation.keySet().iterator();
- while(keys.hasNext()) {
- String metaName = keys.next();
- String metaContent = metaInformation.get(metaName);
- %>
- <meta name="<%=metaName%>" content="<%=metaContent%>" />
- <% } } %>
-
- <link rel="shortcut icon" type="image/x-icon" href="<%=docBase%>/favicon.ico" />
- <%for(skinConfig in portalSkins) {
- def url = skinConfig.createURL();
- url.setOrientation(orientation);
- %>
- <link id="${skinConfig.id}" rel="stylesheet" type="text/css" href="$url" />
- <%}%>
- <%for(portletSkin in portletSkins) {
- def url = portletSkin.createURL();
- url.setOrientation(orientation);
- %>
- <link id="${portletSkin.id}" rel="stylesheet" type="text/css" href= "$url" />
- <%}%>
- <script type="text/javascript">
- // This variable must be used only to initialize other variables otherwise
- // please use eXo.env.portal.context or eXo.env.portal.context instead
- // Those 2 last variables cannot be used to initialize variables because
- // we cannot be sure that they will be initialized before initializing your script
- var currentContext = '<%=docBase%>' ;
- </script>
- <%if(org.exoplatform.commons.utils.PropertyManager.isDevelopping()) {
- for(path in scriptsPaths) { %>
- <script type="text/javascript" src="<%=path%>"></script>
- <% }
- } else {
- %>
- <script type="text/javascript" src="<%=docBase%>/javascript/merged.js"></script>
- <%}%>
- <script type="text/javascript">
- eXo.env.portal.context = '<%=docBase%>' ;
- <%if(rcontext.getAccessPath() == 0) {%>
- eXo.env.portal.accessMode = 'public' ;
- <%} else {%>
- eXo.env.portal.accessMode = 'private' ;
- <%}%>
- eXo.env.portal.portalName = '<%=rcontext.getPortalOwner()%>' ;
- eXo.env.server.context = '<%=docBase%>' ;
- eXo.env.server.portalBaseURL = '<%=rcontext.getURLBuilder().getBaseURL()%>' ;
- eXo.env.client.skin = '$skin' ;
- <%
- UIPortal portal = uicomponent.findFirstComponentOfType(UIPortal.class);
- String sessionAliveLevel = (portal == null ? null : portal.sessionAlive) ;
- boolean canKeepState = sessionAliveLevel == null ? false : !sessionAliveLevel.equals(PortalProperties.SESSION_NEVER) ;
- %>
-
- eXo.portal.portalMode = <%= uicomponent.getModeState() %>;
-
- eXo.session.level = '$sessionAliveLevel';
- eXo.session.canKeepState = $canKeepState;
- eXo.session.isOpen = $uicomponent.isSessionOpen ;
- eXo.session.itvTime = ${((PortalRequestContext)rcontext).getRequest().getSession().getMaxInactiveInterval()} ;
- </script>
- <script type="text/javascript" src="/eXoResources/javascript/eXo/i18n/I18NMessage.js"></script>
- <script type="text/javascript" src="/eXoResources/javascript/eXo/i18n/MessageResource_<%=lang%>.js"></script>
- </head>
-
- <body style="height: 100%;">
- <%
- /*Hide All Popup Menu when click on document*/
- rcontext.getJavascriptManager().addOnLoadJavascript('eXo.core.DOMUtil.hideElements');
- //rcontext.getJavascriptManager().addOnResizeJavascript('eXo.core.UIMaskLayer.resizeMaskLayer');
- %>
-
- <div class="$uicomponent.skin" id="UIPortalApplication" style="!height: 100%;">
-
- <div class="AjaxLoadingMask" id="AjaxLoadingMask" style="display: none; margin: auto;">
- <div class="LoadingContainer">
- <div class="CenterLoadingContainer">
- <div class="LoadingText"><%=_ctx.appRes("UIPortalApplication.label.Loading")%></div>
- <div class="LoadingProgressBar"><span></span></div>
-
- <div class="UIAction">
- <table class="ActionContainer">
- <tr>
- <td>
- <div onclick="javascript:ajaxAbort();" class="ActionButton LightBlueStyle">
- <div class="ButtonLeft">
- <div class="ButtonRight">
- <div class="ButtonMiddle">
- <a href="javascript:void(0);"><%=_ctx.appRes("UIPortalApplication.label.Abort")%></a>
- </div>
- </div>
- </div>
- </div>
- </td>
- </tr>
- </table>
- </div>
-
- </div>
- </div>
- </div>
-
- <%uicomponent.renderChildren();%>
- </div>
-
-
-
- <script type="text/javascript">
- <%=rcontext.getJavascriptManager().getJavascript()%>
- eXo.core.Browser.onLoad();
- <%=rcontext.getJavascriptManager().getCustomizedOnLoadScript();%>
- <%if(canKeepState && uicomponent.isSessionOpen) {%> eXo.session.itvInit() ;<%}%>
- </script>
- </body>
-</html>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<%
+ import org.exoplatform.portal.application.PortalRequestContext ;
+ import org.exoplatform.webui.core.UIComponent;
+ import java.util.Iterator;
+ import org.exoplatform.portal.webui.portal.UIPortal ;
+ import org.exoplatform.portal.config.model.PortalProperties ;
+
+ def rcontext = _ctx.getRequestContext() ;
+ String docBase = rcontext.getRequestContextPath() ;
+ String skin = uicomponent.getSkin();
+ def portalSkins = uicomponent.getPortalSkins() ;
+ def portletSkins = uicomponent.getPortletSkins() ;
+ def scriptsPaths = uicomponent.getJavascriptURLs();
+ def lang = uicomponent.getLocale().getLanguage();
+ def title = rcontext.getTitle();
+ def metaInformation = rcontext.getMetaInformation();
+%>
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="$lang" lang="$lang" dir="$dir">
+ <head id="head">
+ <title><%=title%></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <%
+ if(metaInformation!= null) {
+ Iterator<String> keys = metaInformation.keySet().iterator();
+ while(keys.hasNext()) {
+ String metaName = keys.next();
+ String metaContent = metaInformation.get(metaName);
+ %>
+ <meta name="<%=metaName%>" content="<%=metaContent%>" />
+ <% } } %>
+
+ <link rel="shortcut icon" type="image/x-icon" href="<%=docBase%>/favicon.ico" />
+ <%for(skinConfig in portalSkins) {
+ def url = skinConfig.createURL();
+ url.setOrientation(orientation);
+ %>
+ <link id="${skinConfig.id}" rel="stylesheet" type="text/css" href="$url" />
+ <%}%>
+ <%for(portletSkin in portletSkins) {
+ def url = portletSkin.createURL();
+ url.setOrientation(orientation);
+ %>
+ <link id="${portletSkin.id}" rel="stylesheet" type="text/css" href= "$url" />
+ <%}%>
+ <script type="text/javascript">
+ // This variable must be used only to initialize other variables otherwise
+ // please use eXo.env.portal.context or eXo.env.portal.context instead
+ // Those 2 last variables cannot be used to initialize variables because
+ // we cannot be sure that they will be initialized before initializing your script
+ var currentContext = '<%=docBase%>' ;
+ </script>
+ <%if(org.exoplatform.commons.utils.PropertyManager.isDevelopping()) {
+ for(path in scriptsPaths) { %>
+ <script type="text/javascript" src="<%=path%>"></script>
+ <% }
+ } else {
+ %>
+ <script type="text/javascript" src="<%=docBase%>/javascript/merged.js"></script>
+ <%}%>
+ <script type="text/javascript">
+ eXo.env.portal.context = '<%=docBase%>' ;
+ <%if(rcontext.getAccessPath() == 0) {%>
+ eXo.env.portal.accessMode = 'public' ;
+ <%} else {%>
+ eXo.env.portal.accessMode = 'private' ;
+ <%}%>
+ eXo.env.portal.portalName = '<%=rcontext.getPortalOwner()%>' ;
+ eXo.env.server.context = '<%=docBase%>' ;
+ eXo.env.server.portalBaseURL = '<%=rcontext.getURLBuilder().getBaseURL()%>' ;
+ eXo.env.client.skin = '$skin' ;
+ <%
+ UIPortal portal = uicomponent.findFirstComponentOfType(UIPortal.class);
+ String sessionAliveLevel = (portal == null ? null : portal.sessionAlive) ;
+ boolean canKeepState = sessionAliveLevel == null ? false : !sessionAliveLevel.equals(PortalProperties.SESSION_NEVER) ;
+ %>
+
+ eXo.portal.portalMode = <%= uicomponent.getModeState() %>;
+
+ eXo.session.level = '$sessionAliveLevel';
+ eXo.session.canKeepState = $canKeepState;
+ eXo.session.isOpen = $uicomponent.isSessionOpen ;
+ eXo.session.itvTime = ${((PortalRequestContext)rcontext).getRequest().getSession().getMaxInactiveInterval()} ;
+ </script>
+ <script type="text/javascript" src="/eXoResources/javascript/eXo/i18n/I18NMessage.js"></script>
+ <script type="text/javascript" src="/eXoResources/javascript/eXo/i18n/MessageResource_<%=lang%>.js"></script>
+
+ <%
+ def headerElements = rcontext.getExtraMarkupHeaders();
+ if (headerElements != null)
+ {
+ for (element in headerElements)
+ { %>
+ <%=element%>
+ <% }
+ }
+ %>
+ </head>
+
+ <body style="height: 100%;">
+ <%
+ /*Hide All Popup Menu when click on document*/
+ rcontext.getJavascriptManager().addOnLoadJavascript('eXo.core.DOMUtil.hideElements');
+ //rcontext.getJavascriptManager().addOnResizeJavascript('eXo.core.UIMaskLayer.resizeMaskLayer');
+ %>
+ <script type="text/javascript">
+ <%=rcontext.getJavascriptManager().getJavascript()%>
+ eXo.core.Browser.onLoad();
+ <%=rcontext.getJavascriptManager().getCustomizedOnLoadScript();%>
+ <%if(canKeepState && uicomponent.isSessionOpen) {%> eXo.session.itvInit() ;<%}%>
+ </script>
+
+ <div class="$uicomponent.skin" id="UIPortalApplication" style="!height: 100%;">
+
+ <div class="AjaxLoadingMask" id="AjaxLoadingMask" style="display: none; margin: auto;">
+ <div class="LoadingContainer">
+ <div class="CenterLoadingContainer">
+ <div class="LoadingText"><%=_ctx.appRes("UIPortalApplication.label.Loading")%></div>
+ <div class="LoadingProgressBar"><span></span></div>
+
+ <div class="UIAction">
+ <table class="ActionContainer">
+ <tr>
+ <td>
+ <div onclick="javascript:ajaxAbort();" class="ActionButton LightBlueStyle">
+ <div class="ButtonLeft">
+ <div class="ButtonRight">
+ <div class="ButtonMiddle">
+ <a href="javascript:void(0);"><%=_ctx.appRes("UIPortalApplication.label.Abort")%></a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ </div>
+ </div>
+ </div>
Added: portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl
===================================================================
--- portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl 2010-02-11 23:18:32 UTC (rev 1650)
@@ -0,0 +1,4 @@
+ <%uicomponent.renderChildren();%>
+ </div>
+ </body>
+</html>
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.java 2010-02-11 21:32:06 UTC (rev 1649)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.java 2010-02-11 23:18:32 UTC (rev 1650)
@@ -38,6 +38,7 @@
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.core.lifecycle.HtmlValidator;
+import org.w3c.dom.Element;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -45,8 +46,10 @@
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.URLDecoder;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -99,6 +102,8 @@
protected JavascriptManager jsmanager_ = new JavascriptManager();
+ private List<Element> extraMarkupHeaders;
+
private final PortalURLBuilder urlBuilder;
public JavascriptManager getJavascriptManager()
@@ -301,6 +306,11 @@
}
return writer_;
}
+
+ final public void setWriter(Writer writer)
+ {
+ this.writer_ = writer;
+ }
final public boolean useAjax()
{
@@ -344,5 +354,28 @@
response_.setHeader(key, headers.get(key));
}
}
+
+ /**
+ * Get the extra markup headers to add to the head of the html.
+ * @return The markup to be added.
+ */
+ public List<Element> getExtraMarkupHeaders()
+ {
+ return this.extraMarkupHeaders;
+ }
+
+ /**
+ * Add an extra markup to the head of the html page.
+ * @param element The element to add
+ */
+ public void addExtraMarkupHeader(Element element)
+ {
+ if (this.extraMarkupHeaders == null)
+ {
+ this.extraMarkupHeaders = new ArrayList<Element>();
+ }
+ this.extraMarkupHeaders.add(element);
+ }
+
}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java 2010-02-11 21:32:06 UTC (rev 1649)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java 2010-02-11 23:18:32 UTC (rev 1650)
@@ -646,6 +646,7 @@
HashMap<String, String[]> allParams = new HashMap<String, String[]>();
allParams.putAll(servletRequest.getParameterMap());
allParams.putAll(this.getPublicParameters());
+ //allParams.remove(ExoPortletInvocationContext.NAVIGATIONAL_STATE_PARAM_NAME);
if (type.equals(ActionInvocation.class))
{
ActionInvocation actionInvocation = new ActionInvocation(pic);
@@ -758,7 +759,7 @@
invocation.setUserContext(new ExoUserContext(servletRequest, userProfile));
invocation.setWindowContext(new ExoWindowContext(storageName));
invocation.setPortalContext(new AbstractPortalContext(Collections.singletonMap(
- "javax.portlet.markup.head.element.support", "false")));
+ "javax.portlet.markup.head.element.support", "true")));
invocation.setSecurityContext(new AbstractSecurityContext(servletRequest));
//
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java 2010-02-11 21:32:06 UTC (rev 1649)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java 2010-02-11 23:18:32 UTC (rev 1650)
@@ -43,11 +43,14 @@
import org.gatein.pc.api.invocation.response.ErrorResponse;
import org.gatein.pc.api.invocation.response.FragmentResponse;
import org.gatein.pc.api.invocation.response.PortletInvocationResponse;
+import org.w3c.dom.Element;
import java.io.Serializable;
import java.nio.charset.Charset;
+import java.util.List;
import java.util.Map;
+import javax.portlet.MimeResponse;
import javax.portlet.PortletMode;
import javax.portlet.WindowState;
@@ -227,6 +230,30 @@
}
}
}
+
+ //setup markup headers
+ if (fragmentResponse.getProperties().getMarkupHeaders() != null)
+ {
+ MultiValuedPropertyMap<Element> markupHeaders =
+ fragmentResponse.getProperties().getMarkupHeaders();
+
+ List<Element> markupElements = markupHeaders.getValues(MimeResponse.MARKUP_HEAD_ELEMENT);
+ if (markupElements != null)
+ {
+ for (Element element : markupElements)
+ {
+ if ("title".equals(element.getNodeName().toLowerCase()) && element.getFirstChild() != null)
+ {
+ String title = element.getFirstChild().getTextContent();
+ prcontext.getRequest().setAttribute(PortalRequestContext.REQUEST_TITLE, title);
+ }
+ else
+ {
+ prcontext.addExtraMarkupHeader(element);
+ }
+ }
+ }
+ }
}
}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplicationLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplicationLifecycle.java 2010-02-11 21:32:06 UTC (rev 1649)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplicationLifecycle.java 2010-02-11 23:18:32 UTC (rev 1650)
@@ -19,9 +19,17 @@
package org.exoplatform.portal.webui.workspace;
+import java.io.CharArrayWriter;
+import java.io.OutputStream;
+import java.io.Writer;
+
+import org.exoplatform.commons.utils.PortalPrinter;
+import org.exoplatform.portal.application.PortalRequestContext;
+import org.exoplatform.resolver.ResourceResolver;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.core.lifecycle.Lifecycle;
+import org.exoplatform.webui.core.lifecycle.WebuiBindingContext;
/**
* Created by The eXo Platform SAS
@@ -65,5 +73,52 @@
super.processAction(uicomponent, context);
uiTarget.processAction(context);
}
+
+ public void processRender(UIPortalApplication uicomponent,
+ WebuiRequestContext context) throws Exception
+ {
+ /* We need to render the child elements of the portal first since portlets can set the markup headers
+ * during there render call.
+ * We cannot render the page in the order of the UIPortalApplication since this will create the headers
+ * before the portlets are rendered. To get around this we need to render the portlets and UIPortalApplication
+ * childrens to a separate writer first, then render the UIPortalApplication page as normal, outputting
+ * the contents of the separate writer where the child elements should be rendered.
+ * Its messy but required for portlet markup header setting.
+ */
+
+ PortalRequestContext prc = (PortalRequestContext) context;
+ OutputStream responseOutputStream = prc.getResponse().getOutputStream();
+
+ PortalPrinter parentWriter = new PortalPrinter(responseOutputStream, true, 5000);
+ PortalPrinter childWriter = new PortalPrinter(responseOutputStream, true, 25000, true);
+
+ context.setWriter(childWriter);
+ processRender(uicomponent, context, "system:/groovy/portal/webui/workspace/UIPortalApplicationChildren.gtmpl");
+ context.setWriter(parentWriter);
+ processRender(uicomponent, context, "system:/groovy/portal/webui/workspace/UIPortalApplication.gtmpl");
+
+ //flush the parent writer to the output stream so that we are really to accept the child content
+ parentWriter.flushOutputStream();
+ //now that the parent has been flushed, we can flush the contents of the child to the output
+ childWriter.flushOutputStream();
+ }
+
+ public void processRender(UIPortalApplication uicomponent, WebuiRequestContext context, String template) throws Exception
+ {
+ // Fail if we have no template
+ if (template == null)
+ {
+ throw new IllegalStateException("uicomponent " + uicomponent + " with class " + uicomponent.getClass().getName() +
+ " has no template for rendering");
+ }
+
+ //
+ ResourceResolver resolver = uicomponent.getTemplateResourceResolver(context, template);
+ WebuiBindingContext bcontext = new WebuiBindingContext(resolver, context.getWriter(), uicomponent, context);
+ bcontext.put(UIComponent.UICOMPONENT, uicomponent);
+ bcontext.put(uicomponent.getUIComponentName(), uicomponent);
+ renderTemplate(template, bcontext);
+ }
+
}
\ No newline at end of file
14 years, 11 months
gatein SVN: r1649 - portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-02-11 16:32:06 -0500 (Thu, 11 Feb 2010)
New Revision: 1649
Modified:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java
Log:
GTNPORTAL-635: When there is no portlet-skin for a given name, try to fallback to Default
"Default" is hardcoded here
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java 2010-02-11 20:32:33 UTC (rev 1648)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java 2010-02-11 21:32:06 UTC (rev 1649)
@@ -345,10 +345,10 @@
this.skin_ = skin;
}
- private SkinConfig getSkin(String module)
+ private SkinConfig getSkin(String module, String skin)
{
SkinService skinService = getApplicationComponent(SkinService.class);
- return skinService.getSkin(module, skin_);
+ return skinService.getSkin(module, skin);
}
/**
@@ -385,6 +385,10 @@
for (UIPortlet uiPortlet : uiportlets)
{
SkinConfig skinConfig = getPortletSkinConfig(uiPortlet);
+ if (skinConfig == null)
+ {
+ skinConfig = getDefaultPortletSkinConfig(uiPortlet);
+ }
if (skinConfig != null && !portletConfigs.contains(skinConfig))
{
skins.add(skinConfig);
@@ -395,12 +399,25 @@
return skins;
}
+ private SkinConfig getDefaultPortletSkinConfig(UIPortlet portlet)
+ {
+ String portletId = portlet.getSkinId();
+ if (portletId != null)
+ {
+ return getSkin(portletId, "Default");
+ }
+ else
+ {
+ return null;
+ }
+ }
+
private SkinConfig getPortletSkinConfig(UIPortlet portlet)
{
String portletId = portlet.getSkinId();
if (portletId != null)
{
- return getSkin(portletId);
+ return getSkin(portletId, skin_);
}
else
{
14 years, 11 months
gatein SVN: r1648 - portal/trunk/web/portal/src/main/webapp/groovy/webui/core.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-02-11 15:32:33 -0500 (Thu, 11 Feb 2010)
New Revision: 1648
Modified:
portal/trunk/web/portal/src/main/webapp/groovy/webui/core/UIItemSelector.gtmpl
Log:
GTNPORTAL-632: UIItemSelector defaults to 'label' when trying to display something that hasn't been localized
Modified: portal/trunk/web/portal/src/main/webapp/groovy/webui/core/UIItemSelector.gtmpl
===================================================================
--- portal/trunk/web/portal/src/main/webapp/groovy/webui/core/UIItemSelector.gtmpl 2010-02-11 20:14:24 UTC (rev 1647)
+++ portal/trunk/web/portal/src/main/webapp/groovy/webui/core/UIItemSelector.gtmpl 2010-02-11 20:32:33 UTC (rev 1648)
@@ -26,7 +26,19 @@
<div class="$itemSelected" onmouseover="$onMouseOver" onmouseout="$onMouseOut" onclick="$onClick">
<div class="LeftItem">
<div class="RightItem">
- <div class="ItemTitle"><%=_ctx.appRes(uicontainer.getName() + "." + category.getName() + ".label")%></div>
+ <%
+ String label = null;
+ try
+ {
+ ResourceBundle res = _ctx.getRequestContext().getApplicationResourceBundle();
+ label = res.getString(uicontainer.getName() + "." + category.getName() + ".label");
+ }
+ catch (MissingResourceException ex)
+ {
+ label = category.getName();
+ }
+ %>
+ <div class="ItemTitle"><%=label%></div>
</div>
</div>
</div>
14 years, 11 months
gatein SVN: r1647 - in portal/trunk: component/portal/src/test/java/org/exoplatform/portal/config and 2 other directories.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-02-11 15:14:24 -0500 (Thu, 11 Feb 2010)
New Revision: 1647
Modified:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/GroupPortalConfigListener.java
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java
portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestUserPortalConfigService.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UIAddGroupNavigation.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageForm.java
Log:
GTNPORTAL-631: Create group site when adding group navigation when the group site does not exist
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/GroupPortalConfigListener.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/GroupPortalConfigListener.java 2010-02-11 20:04:22 UTC (rev 1646)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/GroupPortalConfigListener.java 2010-02-11 20:14:24 UTC (rev 1647)
@@ -142,18 +142,7 @@
}
// Create the portal from the template
- portalConfigService.createUserPortalConfig(PortalConfig.GROUP_TYPE, groupId, "group");
-
- // Need to insert the corresponding group site
- PortalConfig cfg = dataStorage.getPortalConfig(PortalConfig.GROUP_TYPE, groupId);
- if (cfg == null)
- {
- cfg = new PortalConfig(PortalConfig.GROUP_TYPE);
- cfg.setPortalLayout(new Container());
- cfg.setName(groupId);
- dataStorage.create(cfg);
- }
-
+ portalConfigService.createGroupSite(groupId);
}
finally
{
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java 2010-02-11 20:04:22 UTC (rev 1646)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java 2010-02-11 20:14:24 UTC (rev 1647)
@@ -172,10 +172,11 @@
* membership is configured from the value returned by {@link org.exoplatform.portal.config.UserACL#getMakableMT()}
*
* @param remoteUser the user to get the makable navigations
+ * @param withSite true if a site must exist
* @return the list of groups
* @throws Exception any exception
*/
- public List<String> getMakableNavigations(String remoteUser) throws Exception
+ public List<String> getMakableNavigations(String remoteUser, boolean withSite) throws Exception
{
Collection<Group> groups;
if (remoteUser.equals(userACL_.getSuperUser()))
@@ -191,19 +192,23 @@
List<String> list = new ArrayList<String>();
if (groups != null)
{
- Query<PortalConfig> q = new Query<PortalConfig>("group", null, PortalConfig.class);
- LazyPageList<PortalConfig> lpl = storage_.find(q);
- Set<String> existingNames = new HashSet<String>();
- for (PortalConfig groupSite : lpl.getAll())
+ Set<String> existingNames = null;
+ if (withSite)
{
- existingNames.add(groupSite.getName());
+ existingNames = new HashSet<String>();
+ Query<PortalConfig> q = new Query<PortalConfig>("group", null, PortalConfig.class);
+ LazyPageList<PortalConfig> lpl = storage_.find(q);
+ for (PortalConfig groupSite : lpl.getAll())
+ {
+ existingNames.add(groupSite.getName());
+ }
}
//
for (Group group : groups)
{
String groupId = group.getId().trim();
- if (existingNames.contains(groupId))
+ if (existingNames == null || existingNames.contains(groupId))
{
list.add(groupId);
}
@@ -223,8 +228,8 @@
* <li>if not navigation exists for the user site then it creates an empty navigation</li>
* </ul>
*
- * @param userName
- * @throws Exception
+ * @param userName the user name
+ * @throws Exception a nasty exception
*/
public void createUserSite(String userName) throws Exception
{
@@ -255,6 +260,33 @@
}
/**
+ * Create a group site for the specified group. It will perform the following:
+ * <ul>
+ * <li>create the group site by calling {@link #createUserPortalConfig(String, String, String)} which may create
+ * a site or not according to the default configuration</li>
+ * <li>if not site exists then it creates a site then it creates an empty site</li>
+ * </ul>
+ *
+ * @param groupId the group id
+ * @throws Exception a nasty exception
+ */
+ public void createGroupSite(String groupId) throws Exception
+ {
+ // Create the portal from the template
+ createUserPortalConfig(PortalConfig.GROUP_TYPE, groupId, "group");
+
+ // Need to insert the corresponding group site
+ PortalConfig cfg = storage_.getPortalConfig(PortalConfig.GROUP_TYPE, groupId);
+ if (cfg == null)
+ {
+ cfg = new PortalConfig(PortalConfig.GROUP_TYPE);
+ cfg.setPortalLayout(new Container());
+ cfg.setName(groupId);
+ storage_.create(cfg);
+ }
+ }
+
+ /**
* This method should create a the portal config, pages and navigation according to the template name.
*
* @param siteType the site type
Modified: portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestUserPortalConfigService.java
===================================================================
--- portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestUserPortalConfigService.java 2010-02-11 20:04:22 UTC (rev 1646)
+++ portal/trunk/component/portal/src/test/java/org/exoplatform/portal/config/TestUserPortalConfigService.java 2010-02-11 20:14:24 UTC (rev 1647)
@@ -347,7 +347,7 @@
{
public void execute() throws Exception
{
- Set<String> navigations = new HashSet<String>(userPortalConfigSer_.getMakableNavigations("root"));
+ Set<String> navigations = new HashSet<String>(userPortalConfigSer_.getMakableNavigations("root", false));
Set<String> expectedNavigations =
new HashSet<String>(Arrays.asList("/platform/users", "/organization/management/human-resources",
"/partners", "/customers", "/organization/communication", "/organization/management/executive-board",
@@ -366,7 +366,7 @@
{
public void execute() throws Exception
{
- Set<String> navigations = new HashSet<String>(userPortalConfigSer_.getMakableNavigations("john"));
+ Set<String> navigations = new HashSet<String>(userPortalConfigSer_.getMakableNavigations("john", false));
Set<String> expectedNavigations = Collections.singleton("/organization/management/executive-board");
assertEquals(expectedNavigations, navigations);
}
@@ -379,7 +379,7 @@
{
public void execute() throws Exception
{
- Set<String> navigations = new HashSet<String>(userPortalConfigSer_.getMakableNavigations("mary"));
+ Set<String> navigations = new HashSet<String>(userPortalConfigSer_.getMakableNavigations("mary", false));
Set<String> expectedNavigations = Collections.emptySet();
assertEquals(expectedNavigations, navigations);
}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UIAddGroupNavigation.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UIAddGroupNavigation.java 2010-02-11 20:04:22 UTC (rev 1646)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/navigation/UIAddGroupNavigation.java 2010-02-11 20:14:24 UTC (rev 1647)
@@ -99,7 +99,7 @@
}
else
{
- listGroup = dataService.getMakableNavigations(pContext.getRemoteUser());
+ listGroup = dataService.getMakableNavigations(pContext.getRemoteUser(), false);
}
if (listGroup == null)
@@ -146,6 +146,13 @@
return;
}
+ // Create group when it does not exist
+ if (dataService.getPortalConfig("group", ownerId) == null)
+ {
+ UserPortalConfigService configService = uicomp.getApplicationComponent(UserPortalConfigService.class);
+ configService.createGroupSite(ownerId);
+ }
+
// create navigation for group
dataService.create(pageNav);
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageForm.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageForm.java 2010-02-11 20:04:22 UTC (rev 1646)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageForm.java 2010-02-11 20:14:24 UTC (rev 1647)
@@ -153,7 +153,7 @@
//TODO: This following line is fixed for bug PORTAL-2127
uiListPermissionSelector.getChild(UIFormPopupWindow.class).setId("UIPageFormPopupGroupMembershipSelector");
- List<String> groups = configService.getMakableNavigations(pcontext.getRemoteUser());
+ List<String> groups = configService.getMakableNavigations(pcontext.getRemoteUser(), true);
if (groups.size() > 0)
{
ownerTypes.add(new SelectItemOption<String>(PortalConfig.GROUP_TYPE));
14 years, 11 months
gatein SVN: r1646 - portal/trunk/docs/reference-guide/en/modules.
by do-not-reply@jboss.org
Author: sohil.shah(a)jboss.com
Date: 2010-02-11 15:04:22 -0500 (Thu, 11 Feb 2010)
New Revision: 1646
Modified:
portal/trunk/docs/reference-guide/en/modules/SSO.xml
Log:
adding opensso documentation
Modified: portal/trunk/docs/reference-guide/en/modules/SSO.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/SSO.xml 2010-02-11 16:42:31 UTC (rev 1645)
+++ portal/trunk/docs/reference-guide/en/modules/SSO.xml 2010-02-11 20:04:22 UTC (rev 1646)
@@ -5,93 +5,127 @@
%BOOK_ENTITIES;
]>
<chapter>
- <title>Single Sign On</title>
+ <title>Single Sign On</title>
- <section>
- <title>Overview of SSO</title>
+ <section>
+ <title>Overview of SSO</title>
- <para>Portal as an integration and aggregation platform provides some form
- of SSO by itself. When you log into the portal you gain access to many
- systems through portlets using a single identity. Still in many cases you
- need to integrate the portal infrastructure with other SSO enabled
- systems. There are many different Identity Management solutions on the
- market. In most cases each SSO framework provides its own way to plug into
- Java EE application.</para>
+ <para>Portal as an integration and aggregation platform provides
+ some form
+ of SSO by itself. When you log into the portal you gain
+ access to many
+ systems through portlets using a single identity. Still
+ in many cases
+ you
+ need to integrate the portal infrastructure with
+ other SSO enabled
+ systems. There are many different Identity
+ Management solutions on
+ the
+ market. In most cases each SSO framework
+ provides its own way to plug into
+ Java EE application.</para>
- <section>
- <title>Prerequisite</title>
+ <section>
+ <title>Prerequisite</title>
- <para>In this tutorial, the SSO server is installed in a Tomcat
- installation, you can obtain Tomcat from:
- http://tomcat.apache.org</para>
+ <para>In this tutorial, the SSO server is installed in a Tomcat
+ installation, you can obtain Tomcat from:
+ http://tomcat.apache.org
+ </para>
- <para>Various files are required to setup the integration, all the
- packages can be found in a zip file located at:
- http://repository.jboss.org/maven2/org/gatein/sso/sso-packaging</para>
+ <para>Various files are required to setup the integration, all
+ the
+ packages can be found in a zip file located at:
+ http://repository.jboss.org/maven2/org/gatein/sso/sso-packaging
+ </para>
- <para>As we are manipulating gatein.ear directly it's better to not run
- any portal extension that could override some of the data, make sure you
- remove $JBOSS_HOME/server/default/deploy/gatein-sample-extension.ear and
- $JBOSS_HOME/server/default/deploy/gatein-sample-portal.ear as they ship
- by default with GateIn.</para>
- </section>
- </section>
+ <para>As we are manipulating gatein.ear directly it's better to not
+ run
+ any portal extension that could override some of the data, make
+ sure
+ you
+ remove
+ $JBOSS_HOME/server/default/deploy/gatein-sample-extension.ear and
+ $JBOSS_HOME/server/default/deploy/gatein-sample-portal.ear as they
+ ship
+ by default with GateIn.</para>
+ </section>
+ </section>
- <section>
- <title>CAS - Central Authentication Service</title>
+ <section>
+ <title>CAS - Central Authentication Service</title>
- <para>This Single Sign On plugin enables seamless integration between
- GateIn Portal and the CAS Single Sign On Framework. Details about CAS can
- be found <ulink
- url="http://www.ja-sig.org/products/cas/">here.</ulink></para>
+ <para>
+ This Single Sign On plugin enables seamless integration between
+ GateIn Portal and the CAS Single Sign On Framework. Details about CAS
+ can
+ be found
+ <ulink url="http://www.ja-sig.org/products/cas/">here.</ulink>
+ </para>
- <para>The integration consitsts in two parts, the first part consists of
- installing or configuring a CAS server, the second part consists of
- setting up the portal to use the CAS server.</para>
+ <para>The integration consitsts in two parts, the first part
+ consists of
+ installing or configuring a CAS server, the second part
+ consists of
+ setting up the portal to use the CAS server.</para>
- <section>
- <title>CAS server</title>
+ <section>
+ <title>CAS server</title>
- <para>First we will set up the server to authenticate against the portal
- login module. You can find more information about setting up the server
- by reading the official CAS documentation, here we will install the CAS
- server on Tomcat</para>
+ <para>First we will set up the server to authenticate against
+ the portal
+ login module. You can find more information about setting
+ up the server
+ by reading the official CAS documentation, here we will
+ install the
+ CAS
+ server on Tomcat</para>
- <section>
- <title>Obtaining CAS</title>
+ <section>
+ <title>Obtaining CAS</title>
- <para>You can download CAS from
- http://www.jasig.org/cas/download.</para>
+ <para>You can download CAS from
+ http://www.jasig.org/cas/download.</para>
- <para>Once downloaded extract it in what we will call $CAS_HOME from
- now.</para>
- </section>
+ <para>Once downloaded extract it in what we will call $CAS_HOME
+ from
+ now.</para>
+ </section>
- <section>
- <title>Modifying CAS server</title>
+ <section>
+ <title>Modifying CAS server</title>
- <para>To simplify we will directly modify the sources so that the
- produced web archive is configured the way we want.</para>
+ <para>To simplify we will directly modify the sources so that the
+ produced web archive is configured the way we want.</para>
- <para>First we will want to change the authenticaton handler to use
- the portal authentication handler:</para>
+ <para>First we will want to change the authenticaton handler to
+ use
+ the portal authentication handler:</para>
- <para>The CAS Server Plugin makes secure authentication callbacks to a
- RESTful service installed on the remote GateIn server in order to
- authenticate a user. In order for the plugin to function correctly, it
- needs to be properly configured to connect to this service. This
- configuration is done via the
- <emphasis>cas.war/WEB-INF/deployerConfigContext.xml</emphasis>
- file.</para>
+ <para>
+ The CAS Server Plugin makes secure authentication callbacks to a
+ RESTful service installed on the remote GateIn server in order to
+ authenticate a user. In order for the plugin to function correctly,
+ it
+ needs to be properly configured to connect to this service. This
+ configuration is done via the
+ <emphasis>cas.war/WEB-INF/deployerConfigContext.xml
+ </emphasis>
+ file.
+ </para>
- <orderedlist>
- <listitem>
- <para>Open
- $CAS_HOME/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml</para>
- </listitem>
+ <orderedlist>
+ <listitem>
+ <para>Open
+ $CAS_HOME/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml
+ </para>
+ </listitem>
- <listitem>
- <para>Replace: <programlisting> <!--
+ <listitem>
+ <para>
+ Replace:
+ <programlisting> <!--
| Whereas CredentialsToPrincipalResolvers identify who it is some Credentials might authenticate,
| AuthenticationHandlers actually authenticate credentials. Here e declare the AuthenticationHandlers that
| authenticate the Principals that the CredentialsToPrincipalResolvers identified. CAS will try these handlers in turn
@@ -478,5 +512,229 @@
<para>From now on, all links redirecting to the user authentication
pages will redirect to the JOSSO centralized authentication form.</para>
</section>
+ </section>
+
+ <section>
+ <title>OpenSSO - The Open Web SSO project</title>
+
+ <para>This Single Sign On plugin enables seamless integration between
+ GateIn Portal and the OpenSSO Single Sign On Framework. Details about OpenSSO can
+ be found <ulink
+ url="https://opensso.dev.java.net/">here.</ulink></para>
+
+ <para>The integration consitsts in two parts, the first part consists of
+ installing or configuring an OpenSSO server, the second part consists of
+ setting up the portal to use the OpenSSO server.</para>
+
+ <section>
+ <title>OpenSSO server</title>
+
+ <para>First we will set up the server to authenticate against the portal
+ login module. You can find more information about setting up the server
+ by reading the official OpenSSO documentation, here we will install the OpenSSO
+ server on Tomcat</para>
+
+ <section>
+ <title>Obtaining OpenSSO</title>
+
+ <para>You can download OpenSSO from
+ https://opensso.dev.java.net/public/use/index.html.</para>
+
+ <para>Once downloaded extract it in what we will call $OPENSSO_HOME from
+ now.</para>
+ </section>
+
+ <section>
+ <title>Modifying OpenSSO server</title>
+
+ <para>To simplify we will directly modify the sources so that the
+ produced web archive is configured the way we want.</para>
+
+ <para>First we will want to add the GateIn Authentication Plugin:</para>
+
+ <para>The plugin makes secure authentication callbacks to a
+ RESTful service installed on the remote GateIn server in order to
+ authenticate a user. In order for the plugin to function correctly, it
+ needs to be properly configured to connect to this service. This
+ configuration is done via the
+ <emphasis>opensso.war/config/auth/default/AuthenticationPlugin.xml</emphasis>
+ file.</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Get an installation of Tomcat and extract it in what we will
+ call $TOMCAT_HOME. Change the default port to avoid a conflict
+ with the default GateIn (for testing purposes). Edit
+ $TOMCAT_HOME/conf/server.xml and replace the 8080 port to
+ 8888.<note>
+ <para>If you are running GateIn with Tomcat on the same
+ machine you will also need to change the port 8005 to
+ something else to avoid port conflicts.</para>
+ </note></para>
+ </listitem>
+
+ <listitem>
+ <para>This is what the $TOMCAT_HOME/webapps/opensso/config/auth/default/AuthenticationPlugin.xml file should look like:
+ <programlisting><![CDATA[
+<?xml version='1.0' encoding="UTF-8"?>
+
+<!DOCTYPE ModuleProperties PUBLIC "=//iPlanet//Authentication Module Properties XML Interface 1.0 DTD//EN"
+ "jar://com/sun/identity/authentication/Auth_Module_Properties.dtd">
+
+<ModuleProperties moduleName="AuthenticationPlugin" version="1.0" >
+ <Callbacks length="2" order="1" timeout="60"
+ header="GateIn OpenSSO Login" >
+ <NameCallback>
+ <Prompt>
+ Username
+ </Prompt>
+ </NameCallback>
+ <PasswordCallback echoPassword="false" >
+ <Prompt>
+ Password
+ </Prompt>
+ </PasswordCallback>
+ </Callbacks>
+</ModuleProperties>
+ ]]></programlisting>
+ </para>
+ </listitem>
+
+
+
+ <listitem>
+ <para>Copy
+ $GATEIN_SSO/opensso/plugin/WEB-INF/lib/sso-opensso-plugin-<VERSION>.jar
+ ,
+ $GATEIN_SSO/opensso/plugin/WEB-INF/lib/commons-httpclient-<VERSION>.jar, and
+ $GATEIN_SSO/opensso/plugin/WEB-INF/lib/commons-logging-<VERSION>.jar
+ into the Tomcat Installation at:
+ $TOMCAT_HOME/webapps/opensso/WEB-INF/lib</para>
+ </listitem>
+
+ <listitem>
+ <para>Copy
+ $GATEIN_SSO/opensso/plugin/WEB-INF/classes/gatein.properties
+ into the Tomcat Installation at:
+ $TOMCAT_HOME/webapps/opensso/WEB-INF/classes</para>
+ </listitem>
+
+ <listitem>
+ <para>Now you should be able to start Tomcat and access
+ http://localhost:8888/opensso/UI/Login?realm=gatein but at this stage you won't be able to
+ login.</para>
+
+ <mediaobject>
+ <imageobject>
+
+ <imagedata fileref="images/opensso-shot.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </orderedlist>
+ </section>
+ </section>
+
+ <section>
+ <title>Setup the OpenSSO client</title>
+
+ <orderedlist>
+ <listitem>
+ <para>Copy all libraries from $GATEIN_SSO/opensso/gatein.ear/lib into
+ $JBOSS_HOME/server/default/deploy/gatein.ear/lib (Or if you are
+ running GateIn in Tomcat, in $GATEIN_HOME/lib)</para>
+ </listitem>
+
+ <listitem>
+ <para>In JBoss AS, edit gatein.ear/META-INF/gatein-jboss-beans.xml
+ and uncomment this section</para>
+
+ <para><programlisting><authentication>
+ <login-module code="org.gatein.sso.agent.login.SSOLoginModule" flag="required">
+ </login-module>
+ <login-module code="org.exoplatform.services.security.j2ee.JbossLoginModule" flag="required">
+ <module-option name="portalContainerName">portal</module-option>
+ <module-option name="realmName">gatein-domain</module-option>
+ </login-module>
+</authentication></programlisting></para>
+
+ <para>If you are running GateIn in Tomcat, edit
+ $GATEIN_HOME/conf/jaas.conf and uncomment this section</para>
+
+ <para><programlisting>org.gatein.sso.agent.login.SSOLoginModule required
+org.exoplatform.services.security.j2ee.JbossLoginModule required
+portalContainerName=portal
+realmName=gatein-domain</programlisting>At this point, you can test the
+ installation, start GateIn (assuming that the OpenSSO server using
+ Tomcat is still running) by going to http://localhost:8888/opensso/UI/Login?realm=gatein you
+ should be able to login with username 'root' and password 'gtn' or
+ any account created through the portal.</para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section>
+ <title>Setup the portal to redirect to OpenSSO</title>
+
+ <para>Now we want to tell GateIn to redirect all user authentication to
+ the OpenSSO server.</para>
+
+ <para>The OpenSSO server can be located anywhere on the Internet, and this
+ information must be properly configured within the GateIn instance. This
+ configuration needs to be done in 3 files <itemizedlist>
+ <listitem>
+ <emphasis>In
+ gatein.ear/02portal.war/groovy/portal/webui/UILoginForm.gtmpl
+ replace the javascript at the bottom by:</emphasis>
+
+ <para>
+ <programlisting><script>
+<%=uicomponent.event("Close");%>
+ window.location = 'http://localhost:8888/opensso/UI/Login?realm=gatein&goto=http://local...';
+</script></programlisting>
+ </para>
+ </listitem>
+
+ <listitem>
+ <emphasis>In gatein.ear/02portal.war/login/jsp/login.jsp replace
+ everything by:</emphasis>
+
+ <para>
+ <programlisting><html>
+ <head>
+ <script type="text/javascript">
+ window.location = 'http://localhost:8888/opensso/UI/Login?realm=gatein&goto=http://local...';
+ </script>
+ </head>
+ <body>
+ </body>
+</html></programlisting>
+ </para>
+ </listitem>
+
+ <listitem>
+ <emphasis>In gatein.ear/02portal.war/WEB-INF/web.xml replace the
+ InitiateLoginServlet declaration by:</emphasis>
+
+ <para>
+ <programlisting><servlet>
+ <servlet-name>InitiateLoginServlet</servlet-name>
+ <servlet-class>org.gatein.sso.agent.GenericSSOAgent</servlet-class>
+ <init-param>
+ <param-name>ssoServerUrl</param-name>
+ <param-value>http://localhost:8888/opensso</param-value>
+ </init-param>
+ <init-param>
+ <param-name>ssoCookieName</param-name>
+ <param-value>iPlanetDirectoryPro</param-value>
+ </init-param>
+</servlet></programlisting>
+ </para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>From now on, all links redirecting to the user authentication
+ pages will redirect to the OpenSSO centralized authentication form.</para>
+ </section>
</section>
</chapter>
14 years, 11 months
gatein SVN: r1645 - portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-02-11 11:42:31 -0500 (Thu, 11 Feb 2010)
New Revision: 1645
Removed:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigDeployer.java
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigRemoval.java
Log:
Forgot to create JIRA, missed the deleted files (file renaming).
Should avoid impulsive commits...
Deleted: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigDeployer.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigDeployer.java 2010-02-11 16:38:15 UTC (rev 1644)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigDeployer.java 2010-02-11 16:42:31 UTC (rev 1645)
@@ -1,134 +0,0 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.exoplatform.portal.resource;
-
-import org.exoplatform.container.PortalContainer;
-import org.exoplatform.container.RootContainer.PortalContainerPostInitTask;
-import org.exoplatform.portal.resource.config.xml.SkinConfigParser;
-import org.exoplatform.services.log.ExoLogger;
-import org.exoplatform.services.log.Log;
-import org.gatein.wci.WebAppEvent;
-import org.gatein.wci.WebAppLifeCycleEvent;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.servlet.ServletContext;
-
-/**
- *
- * Created by eXoPlatform SAS
- *
- * Author: Minh Hoang TO - hoang281283(a)gmail.com
- *
- * Sep 16, 2009
- */
-public class GateinSkinConfigDeployer extends AbstractResourceHandler
-{
-
- private final SkinService skinService;
-
- private static final String GATEIN_CONFIG_RESOURCE = "/WEB-INF/gatein-resources.xml";
-
- private static Log LOG = ExoLogger.getExoLogger(GateinSkinConfigDeployer.class);
-
- /**
- * The name of the portal container
- */
- private final String portalContainerName;
-
- public GateinSkinConfigDeployer(String portalContainerName, SkinService _skinService)
- {
- this.skinService = _skinService;
- this.portalContainerName = portalContainerName;
- }
-
- @Override
- public void onEvent(WebAppEvent event)
- {
- if (event instanceof WebAppLifeCycleEvent)
- {
- WebAppLifeCycleEvent waEvent = (WebAppLifeCycleEvent)event;
- if (waEvent.getType() == WebAppLifeCycleEvent.ADDED)
- {
- ServletContext scontext = null;
- try
- {
- scontext = event.getWebApp().getServletContext();
- InputStream is = scontext.getResourceAsStream(GATEIN_CONFIG_RESOURCE);
- if (is == null)
- return;
- try
- {
- is.close();
- }
- catch (Exception ex)
- {
- // ignore me
- }
- final PortalContainerPostInitTask task = new PortalContainerPostInitTask()
- {
-
- public void execute(ServletContext scontext, PortalContainer portalContainer)
- {
- register(scontext, portalContainer);
- skinService.registerContext(scontext);
- }
- };
- PortalContainer.addInitTask(scontext, task, portalContainerName);
- }
- catch (Exception ex)
- {
- LOG.error("An error occurs while registering '" + GATEIN_CONFIG_RESOURCE + "' from the context '"
- + (scontext == null ? "unknown" : scontext.getServletContextName()) + "'", ex);
- }
- }
- }
- }
-
- private void register(ServletContext scontext, PortalContainer container)
- {
- InputStream is = null;
- try
- {
- is = scontext.getResourceAsStream(GATEIN_CONFIG_RESOURCE);
- SkinConfigParser.processConfigResource(is, skinService, scontext);
- }
- catch (Exception ex)
- {
- LOG.error("An error occurs while registering '" + GATEIN_CONFIG_RESOURCE + "' from the context '"
- + (scontext == null ? "unknown" : scontext.getServletContextName()) + "'", ex);
- }
- finally
- {
- if (is != null)
- {
- try
- {
- is.close();
- }
- catch (IOException e)
- {
- // ignore me
- }
- }
- }
- }
-}
Deleted: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigRemoval.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigRemoval.java 2010-02-11 16:38:15 UTC (rev 1644)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigRemoval.java 2010-02-11 16:42:31 UTC (rev 1645)
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.exoplatform.portal.resource;
-
-import java.util.List;
-import java.util.Set;
-
-import org.gatein.wci.WebAppEvent;
-import org.gatein.wci.WebAppLifeCycleEvent;
-
-/**
- * @author <a href="mailto:hoang281283@gmail.com">Minh Hoang TO</a>
- * @version $Id$
- *
- */
-public class GateinSkinConfigRemoval extends AbstractResourceHandler
-{
-
- private SkinService service;
-
- private String portalContainerName;
-
- public GateinSkinConfigRemoval(String _portalContainerName, SkinService _service)
- {
- this.portalContainerName = _portalContainerName;
- this.service = _service;
- }
-
- /**
- * @see org.exoplatform.portal.resource.AbstractResourceHandler#onEvent(org.gatein.wci.WebAppEvent)
- */
- @Override
- public void onEvent(WebAppEvent event)
- {
- // TODO Auto-generated method stub
- if (event instanceof WebAppLifeCycleEvent)
- {
- WebAppLifeCycleEvent waEvent = (WebAppLifeCycleEvent)event;
- if (waEvent.getType() == WebAppLifeCycleEvent.REMOVED)
- {
- String webApp = event.getWebApp().getServletContext().getContextPath();
- removeWebAppSkin(webApp);
- }
- }
- }
-
- private void removeWebAppSkin(String webApp)
- {
- try
- {
- removePortalSkins(webApp);
- removePortletSkins(webApp);
- removeSkinName(webApp);
-
- // Update the 'skinDependentManager'
- SkinDependentManager.clearAssociatedSkins(webApp);
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- private void removePortalSkins(String webApp) throws Exception
- {
- List<SkinKey> portalSkins = SkinDependentManager.getPortalSkins(webApp);
- service.remove(portalSkins);
- }
-
- private void removePortletSkins(String webApp) throws Exception
- {
- List<SkinKey> portletSkins = SkinDependentManager.getPortletSkins(webApp);
- service.remove(portletSkins);
- }
-
- /**
- * Remove skinName defined by the webApp, if no other webApps supports the
- * skinName
- */
- private void removeSkinName(String webApp) throws Exception
- {
- Set<String> supportedSkins = SkinDependentManager.getSkinNames(webApp);
- if (supportedSkins != null)
- {
- for (String skin : supportedSkins)
- {
- if (SkinDependentManager.skinNameIsRemovable(skin, webApp))
- {
- service.removeSupportedSkin(skin);
- }
- }
- }
- }
-
-}
14 years, 11 months
gatein SVN: r1644 - portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-02-11 11:38:15 -0500 (Thu, 11 Feb 2010)
New Revision: 1644
Modified:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java
Log:
GTNPORTAL-628 : Filter "makable" navigation with the existing group sites as some group may not have an associated site or navigation
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java 2010-02-11 16:37:02 UTC (rev 1643)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/UserPortalConfigService.java 2010-02-11 16:38:15 UTC (rev 1644)
@@ -19,6 +19,7 @@
package org.exoplatform.portal.config;
+import org.exoplatform.commons.utils.LazyPageList;
import org.exoplatform.commons.utils.PageList;
import org.exoplatform.container.PortalContainer;
import org.exoplatform.container.component.ComponentPlugin;
@@ -176,8 +177,7 @@
*/
public List<String> getMakableNavigations(String remoteUser) throws Exception
{
- List<String> list = new ArrayList<String>();
- Collection<?> groups = null;
+ Collection<Group> groups;
if (remoteUser.equals(userACL_.getSuperUser()))
{
groups = orgService_.getGroupHandler().getAllGroups();
@@ -186,15 +186,31 @@
{
groups = orgService_.getGroupHandler().findGroupByMembership(remoteUser, userACL_.getMakableMT());
}
+
+ //
+ List<String> list = new ArrayList<String>();
if (groups != null)
{
- for (Object group : groups)
+ Query<PortalConfig> q = new Query<PortalConfig>("group", null, PortalConfig.class);
+ LazyPageList<PortalConfig> lpl = storage_.find(q);
+ Set<String> existingNames = new HashSet<String>();
+ for (PortalConfig groupSite : lpl.getAll())
{
- Group m = (Group)group;
- String groupId = m.getId().trim();
- list.add(groupId);
+ existingNames.add(groupSite.getName());
}
+
+ //
+ for (Group group : groups)
+ {
+ String groupId = group.getId().trim();
+ if (existingNames.contains(groupId))
+ {
+ list.add(groupId);
+ }
+ }
}
+
+ //
return list;
}
14 years, 11 months
gatein SVN: r1643 - portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-02-11 11:37:02 -0500 (Thu, 11 Feb 2010)
New Revision: 1643
Added:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigDeployer.java
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigRemoval.java
Modified:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/SkinService.java
Log:
Proper spelling
Copied: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigDeployer.java (from rev 1637, portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigDeployer.java)
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigDeployer.java (rev 0)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigDeployer.java 2010-02-11 16:37:02 UTC (rev 1643)
@@ -0,0 +1,134 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.portal.resource;
+
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.container.RootContainer.PortalContainerPostInitTask;
+import org.exoplatform.portal.resource.config.xml.SkinConfigParser;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+import org.gatein.wci.WebAppEvent;
+import org.gatein.wci.WebAppLifeCycleEvent;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.servlet.ServletContext;
+
+/**
+ *
+ * Created by eXoPlatform SAS
+ *
+ * Author: Minh Hoang TO - hoang281283(a)gmail.com
+ *
+ * Sep 16, 2009
+ */
+public class GateInSkinConfigDeployer extends AbstractResourceHandler
+{
+
+ private final SkinService skinService;
+
+ private static final String GATEIN_CONFIG_RESOURCE = "/WEB-INF/gatein-resources.xml";
+
+ private static Log LOG = ExoLogger.getExoLogger(GateInSkinConfigDeployer.class);
+
+ /**
+ * The name of the portal container
+ */
+ private final String portalContainerName;
+
+ public GateInSkinConfigDeployer(String portalContainerName, SkinService _skinService)
+ {
+ this.skinService = _skinService;
+ this.portalContainerName = portalContainerName;
+ }
+
+ @Override
+ public void onEvent(WebAppEvent event)
+ {
+ if (event instanceof WebAppLifeCycleEvent)
+ {
+ WebAppLifeCycleEvent waEvent = (WebAppLifeCycleEvent)event;
+ if (waEvent.getType() == WebAppLifeCycleEvent.ADDED)
+ {
+ ServletContext scontext = null;
+ try
+ {
+ scontext = event.getWebApp().getServletContext();
+ InputStream is = scontext.getResourceAsStream(GATEIN_CONFIG_RESOURCE);
+ if (is == null)
+ return;
+ try
+ {
+ is.close();
+ }
+ catch (Exception ex)
+ {
+ // ignore me
+ }
+ final PortalContainerPostInitTask task = new PortalContainerPostInitTask()
+ {
+
+ public void execute(ServletContext scontext, PortalContainer portalContainer)
+ {
+ register(scontext, portalContainer);
+ skinService.registerContext(scontext);
+ }
+ };
+ PortalContainer.addInitTask(scontext, task, portalContainerName);
+ }
+ catch (Exception ex)
+ {
+ LOG.error("An error occurs while registering '" + GATEIN_CONFIG_RESOURCE + "' from the context '"
+ + (scontext == null ? "unknown" : scontext.getServletContextName()) + "'", ex);
+ }
+ }
+ }
+ }
+
+ private void register(ServletContext scontext, PortalContainer container)
+ {
+ InputStream is = null;
+ try
+ {
+ is = scontext.getResourceAsStream(GATEIN_CONFIG_RESOURCE);
+ SkinConfigParser.processConfigResource(is, skinService, scontext);
+ }
+ catch (Exception ex)
+ {
+ LOG.error("An error occurs while registering '" + GATEIN_CONFIG_RESOURCE + "' from the context '"
+ + (scontext == null ? "unknown" : scontext.getServletContextName()) + "'", ex);
+ }
+ finally
+ {
+ if (is != null)
+ {
+ try
+ {
+ is.close();
+ }
+ catch (IOException e)
+ {
+ // ignore me
+ }
+ }
+ }
+ }
+}
Copied: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigRemoval.java (from rev 1637, portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateinSkinConfigRemoval.java)
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigRemoval.java (rev 0)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/GateInSkinConfigRemoval.java 2010-02-11 16:37:02 UTC (rev 1643)
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.resource;
+
+import java.util.List;
+import java.util.Set;
+
+import org.gatein.wci.WebAppEvent;
+import org.gatein.wci.WebAppLifeCycleEvent;
+
+/**
+ * @author <a href="mailto:hoang281283@gmail.com">Minh Hoang TO</a>
+ * @version $Id$
+ *
+ */
+public class GateInSkinConfigRemoval extends AbstractResourceHandler
+{
+
+ private SkinService service;
+
+ private String portalContainerName;
+
+ public GateInSkinConfigRemoval(String _portalContainerName, SkinService _service)
+ {
+ this.portalContainerName = _portalContainerName;
+ this.service = _service;
+ }
+
+ /**
+ * @see org.exoplatform.portal.resource.AbstractResourceHandler#onEvent(org.gatein.wci.WebAppEvent)
+ */
+ @Override
+ public void onEvent(WebAppEvent event)
+ {
+ // TODO Auto-generated method stub
+ if (event instanceof WebAppLifeCycleEvent)
+ {
+ WebAppLifeCycleEvent waEvent = (WebAppLifeCycleEvent)event;
+ if (waEvent.getType() == WebAppLifeCycleEvent.REMOVED)
+ {
+ String webApp = event.getWebApp().getServletContext().getContextPath();
+ removeWebAppSkin(webApp);
+ }
+ }
+ }
+
+ private void removeWebAppSkin(String webApp)
+ {
+ try
+ {
+ removePortalSkins(webApp);
+ removePortletSkins(webApp);
+ removeSkinName(webApp);
+
+ // Update the 'skinDependentManager'
+ SkinDependentManager.clearAssociatedSkins(webApp);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ private void removePortalSkins(String webApp) throws Exception
+ {
+ List<SkinKey> portalSkins = SkinDependentManager.getPortalSkins(webApp);
+ service.remove(portalSkins);
+ }
+
+ private void removePortletSkins(String webApp) throws Exception
+ {
+ List<SkinKey> portletSkins = SkinDependentManager.getPortletSkins(webApp);
+ service.remove(portletSkins);
+ }
+
+ /**
+ * Remove skinName defined by the webApp, if no other webApps supports the
+ * skinName
+ */
+ private void removeSkinName(String webApp) throws Exception
+ {
+ Set<String> supportedSkins = SkinDependentManager.getSkinNames(webApp);
+ if (supportedSkins != null)
+ {
+ for (String skin : supportedSkins)
+ {
+ if (SkinDependentManager.skinNameIsRemovable(skin, webApp))
+ {
+ service.removeSupportedSkin(skin);
+ }
+ }
+ }
+ }
+
+}
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/SkinService.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/SkinService.java 2010-02-11 15:42:32 UTC (rev 1642)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/resource/SkinService.java 2010-02-11 16:37:02 UTC (rev 1643)
@@ -141,8 +141,8 @@
portletThemes_ = new HashMap<String, Set<String>>();
portalContainerName = context.getPortalContainerName();
mainResolver = new MainResourceResolver(portalContainerName, skinConfigs_);
- deployer = new GateinSkinConfigDeployer(portalContainerName, this);
- removal = new GateinSkinConfigRemoval(portalContainerName, this);
+ deployer = new GateInSkinConfigDeployer(portalContainerName, this);
+ removal = new GateInSkinConfigRemoval(portalContainerName, this);
}
public void addCategoryTheme(String categoryName)
14 years, 11 months