/*
* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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.jboss.seam.example.seamspace.test.selenium;
import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
import org.testng.annotations.BeforeMethod;
import static org.testng.AssertJUnit.fail;
/**
*
* @author Jozef Hartinger
*
*/
public abstract class SeleniumSeamSpaceTest extends SeamSeleniumTest
{
public static final String LOGIN = "id=login";
public static final String LOGOUT = "id=logout";
public static final String LOGIN_USERNAME = "id=loginForm:name";
public static final String LOGIN_PASSWORD = "id=loginForm:password";
public static final String LOGIN_LOGIN = "id=loginForm:login";
public static final String HOME_URL = "/home.seam";
public static final String SECURITY = "id=security";
public static final String MANAGE_USERS = "id=manageUsers";
public static final String CREATE_USER_BUTTON = "id=newUser";
public static final String USER_FIRSTNAME = "id=user:firstname";
public static final String USER_LASTNAME = "id=user:lastname";
public static final String USER_NAME = "id=user:username";
public static final String USER_PASSWORD = "id=user:password";
public static final String USER_CONFIRM = "id=user:confirm";
public static final String USER_ROLES = "id=user:roles";
public static final String USER_ROLE_BY_NAME_CHECKBOX = "xpath=//input[contains(@id, \"user:roles:\")][normalize-space(../label/text()) = \"{0}\"]";
public static final String USER_ENABLED = "id=user:enabled";
public static final String USER_SAVE = "id=user:save";
public static final String USER_CANCEL = "id=user:cancel";
public static final String USER_TABLE_ROW_BY_NAME = "xpath=//table[@id=\"threads\"]/tbody/tr[normalize-space(./td[1]/text()) = \"{0}\"]";
// these locators can only be used catenated with USER_TABLE_ROW_BY_NAME
public static final String USER_TABLE_ROLES = "/td[2]";
public static final String USER_TABLE_CHECKBOX_CHECKED = "/td[3]/div[@class=\"checkmark\"]";
public static final String USER_TABLE_CHECKBOX_UNCHECKED = "/td[3]/div[@class=\"cross\"]";
public static final String USER_TABLE_DELETE = "//a[contains(@id, \"delete\")]";
public static final String USER_TABLE_EDIT = "//a[contains(@id, \"edit\")]";
public static final String MANAGE_ROLES = "id=manageRoles";
public static final String CREATE_ROLE_BUTTON = "id=newRole";
public static final String ROLE_NAME = "id=role:name";
public static final String ROLE_ROLES = "id=role:roles";
public static final String ROLE_MEMBER_OF_BY_NAME_CHECKBOX = "xpath=//input[contains(@id, \"role:roles:\")][normalize-space(../label/text()) = \"{0}\"]";
public static final String ROLE_SAVE = "id=role:save";
public static final String ROLE_CANCEL = "id=role:cancel";
public static final String ROLE_TABLE_ROW_BY_NAME = "xpath=//table[@id=\"threads\"]/tbody/tr[normalize-space(./td[1]/text()) = \"{0}\"]";
// these locators can only be used catenated with ROLE_TABLE_ROW_BY_NAME
public static final String ROLE_TABLE_ROLES = "/td[2]";
public static final String ROLE_TABLE_DELETE = "//a[contains(@id, \"delete\")]";
public static final String ROLE_TABLE_EDIT = "//a[contains(@id, \"edit\")]";
public static final String DEFAULT_USERNAME = "demo";
public static final String DEFAULT_PASSWORD = "demo";
@Override
@BeforeMethod
public void setUp() {
super.setUp();
browser.open(CONTEXT_PATH + HOME_URL);
login();
}
public void login() {
login(DEFAULT_USERNAME, DEFAULT_PASSWORD);
}
public void login(String username, String password) {
if (isLoggedIn()) {
fail("User already logged in.");
}
browser.clickAndWait(LOGIN);
browser.type(LOGIN_USERNAME, username);
browser.type(LOGIN_PASSWORD, password);
browser.clickAndWait(LOGIN_LOGIN);
}
protected boolean isLoggedIn()
{
return !browser.isElementPresent(LOGIN) && browser.isElementPresent(LOGOUT);
}
}