Skip to content
Snippets Groups Projects
Commit 1c3f601b authored by anttil's avatar anttil
Browse files

SWE-2 / SP-263: A new layer created for GWT specific parts.

SVN: 26668
parent bc74fa85
No related branches found
No related tags found
No related merge requests found
Showing
with 331 additions and 371 deletions
......@@ -128,6 +128,7 @@ public abstract class AbstractRegistrationForm extends ContentPanel implements
add(infoBox = createInfoBox());
add(loadingInfo = createLoadingInfo());
add(WidgetUtils.inRow(formPanel = createFormPanel(), rightPanel = createAdditionalPanel()));
formPanel.setId("registration-panel-" + id);
add(unsavedChangesInfo = createUnsavedChangesInfo());
}
......
......@@ -20,6 +20,24 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.google.gwt.user.client.Element;
import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
......@@ -52,24 +70,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewETPTAssignment;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptType;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
import com.google.gwt.user.client.Element;
/**
* The property type assignment panel.
*
......@@ -591,8 +591,7 @@ public final class PropertyTypeAssignmentForm extends LayoutContainer implements
if (propertyType != null)
{
String fieldId =
createChildId(DEFAULT_VALUE_ID_PART
+ GWTUtils.escapeToFormId(propertyType.getSimpleCode()));
createChildId(DEFAULT_VALUE_ID_PART);
DatabaseModificationAwareField<?> fieldHolder =
PropertyFieldFactory.createField(propertyType, false,
viewContext.getMessage(Dict.DEFAULT_VALUE), fieldId, null, viewContext);
......
......@@ -81,6 +81,7 @@ public abstract class AbstractDataListDeletionConfirmationDialog<T> extends
formPanel.setFieldWidth(FIELD_WIDTH);
reason = new ReasonField(messageProvider, true);
reason.setId("deletion-reason");
reason.focus();
reason.addKeyListener(keyListener);
if (withRadio)
......
......@@ -40,7 +40,7 @@ import ch.systemsx.cisd.openbis.uitest.type.Vocabulary;
public class ManualTest extends SeleniumTest
{
@Test
@Test(enabled = false)
public void basic()
{
// 0) Cleanup
......
......@@ -261,11 +261,6 @@ public class ApplicationRunner
return getMenus().newMenu().project();
}
public void closeAllTabs()
{
getMenus().closeTabs();
}
private NavigationPage getMenus()
{
return proxy.get(NavigationPage.class);
......
/*
* Copyright 2012 ETH Zuerich, CISD
*
* Licensed 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.
*/
package ch.systemsx.cisd.openbis.uitest.infra;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Locate
{
public abstract String value();
}
......@@ -19,17 +19,17 @@ package ch.systemsx.cisd.openbis.uitest.infra;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.lang.reflect.Modifier;
import javassist.util.proxy.MethodHandler;
import javassist.util.proxy.ProxyFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.widget.Widget;
/**
* @author anttil
......@@ -44,7 +44,7 @@ public class PageProxy
}
@SuppressWarnings("unchecked")
public <T extends Page> T get(Class<T> clazz)
public <T extends Page> T get(final Class<T> clazz)
{
ProxyFactory factory = new ProxyFactory();
......@@ -63,7 +63,7 @@ public class PageProxy
{
if (e.getTargetException() instanceof StaleElementReferenceException)
{
PageFactory.initElements(new ScreenShotDecorator(shotter), self);
initLocateFields(clazz, (T) self);
return proceed.invoke(self, args);
} else
{
......@@ -94,44 +94,69 @@ public class PageProxy
throw new RuntimeException(ex1);
}
PageFactory.initElements(new ScreenShotDecorator(shotter), t);
t.setPageProxy(this);
t.setScreenShotter(shotter);
initLocateFields(clazz, t);
return t;
}
private <T> void initLocateFields(Class<T> clazz, T t)
{
Class<T> pageClass = clazz;
while (pageClass != null)
{
for (Field field : pageClass.getDeclaredFields())
{
if ((field.getAnnotation(FindBy.class) != null)
&& (field.getAnnotation(NotAlwaysPresent.class) == null))
Locate locate = field.getAnnotation(Locate.class);
if (locate != null)
{
WebElement element = null;
try
{
field.setAccessible(true);
Object potentialWebElement = field.get(t);
if (potentialWebElement instanceof Collection)
Class<?> type = field.getType();
Widget widget;
if (Modifier.isAbstract(type.getModifiers()))
{
continue;
widget = new Widget()
{
};
} else
{
widget = (Widget) type.newInstance();
}
element = (WebElement) potentialWebElement;
WebElement element;
if (field.getAnnotation(NotAlwaysPresent.class) != null)
{
element = (WebElement) WebElementProxy.newInstance(locate.value());
} else
{
element = SeleniumTest.driver.findElement(By.id(locate.value()));
}
widget.setContext((WebElement) ScreenShotProxy
.newInstance(element, shotter));
field.set(t, widget);
} catch (IllegalArgumentException ex)
{
// TODO Auto-generated catch block
ex.printStackTrace();
throw ex;
} catch (IllegalAccessException ex)
{
ex.printStackTrace();
throw new RuntimeException(ex);
} catch (InstantiationException ex)
{
// TODO Auto-generated catch block
ex.printStackTrace();
throw new RuntimeException(ex);
}
// Force wait for the element.
// This makes sure that page object is returned only when all the
// expected elements are present.
element.getTagName();
}
}
pageClass = (Class<T>) pageClass.getSuperclass();
}
return t;
}
}
/*
* Copyright 2012 ETH Zuerich, CISD
*
* Licensed 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.
*/
package ch.systemsx.cisd.openbis.uitest.infra;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
public class WebElementProxy implements InvocationHandler
{
private String id;
public static Object newInstance(String id)
{
return java.lang.reflect.Proxy.newProxyInstance(
WebElement.class.getClassLoader(),
new Class<?>[]
{ WebElement.class },
new WebElementProxy(id));
}
private WebElementProxy(String id)
{
this.id = id;
}
@Override
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
{
try
{
WebElement e = SeleniumTest.driver.findElement(By.id(id));
return m.invoke(e, args);
} catch (InvocationTargetException e)
{
throw e.getTargetException();
} catch (Exception e)
{
throw new RuntimeException("unexpected invocation exception: " +
e.getMessage());
}
}
}
......@@ -16,19 +16,12 @@
package ch.systemsx.cisd.openbis.uitest.page;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.NotAlwaysPresent;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.widget.Text;
public class HomePage extends NavigationPage
{
@NotAlwaysPresent
@FindBy(id = "just_something_that_is_not_there")
private WebElement nonExistent;
@FindBy(id = "openbis_search-widget_text-field-input")
private WebElement searchTextBox;
@Locate("openbis_search-widget_text-field-input")
private Text searchTextBox;
}
......@@ -16,28 +16,26 @@
package ch.systemsx.cisd.openbis.uitest.page;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.widget.Button;
import ch.systemsx.cisd.openbis.uitest.widget.Text;
public class LoginPage extends Page
{
@FindBy(id = "openbis_login_username")
private WebElement username;
@Locate("openbis_login_username")
private Text username;
@FindBy(id = "openbis_login_password")
private WebElement password;
@Locate("openbis_login_password")
private Text password;
@FindBy(id = "openbis_login_submit")
private WebElement button;
@Locate("openbis_login_submit")
private Button button;
public void loginAs(String user, String pwd)
{
username.clear();
password.clear();
username.sendKeys(user);
password.sendKeys(pwd);
username.write(user);
password.write(pwd);
button.click();
}
......
......@@ -16,55 +16,49 @@
package ch.systemsx.cisd.openbis.uitest.page;
import java.util.List;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.menu.AdminMenu;
import ch.systemsx.cisd.openbis.uitest.page.menu.BrowseMenu;
import ch.systemsx.cisd.openbis.uitest.page.menu.NewMenu;
import ch.systemsx.cisd.openbis.uitest.page.menu.UserMenu;
import ch.systemsx.cisd.openbis.uitest.page.tab.Trash;
import ch.systemsx.cisd.openbis.uitest.widget.Button;
/**
* @author anttil
*/
public abstract class NavigationPage extends Page
{
@FindBy(id = "admin_menu")
private WebElement adminMenuButton;
@FindBy(id = "user_menu")
private WebElement userMenuButton;
@Locate("admin_menu")
private Button adminMenu;
@FindBy(id = "browse_menu")
private WebElement browseMenuButton;
@Locate("user_menu")
private Button userMenu;
@FindBy(id = "new_menu")
private WebElement newMenuButton;
@Locate("browse_menu")
private Button browseMenu;
@FindBy(id = "trash-button")
private WebElement trash;
@Locate("new_menu")
private Button newMenu;
@FindBy(className = "x-tab-strip-close")
private List<WebElement> tabCloseButtons;
@Locate("trash-button")
private Button trash;
public AdminMenu admin()
{
adminMenuButton.click();
adminMenu.click();
return get(AdminMenu.class);
}
public UserMenu user()
{
userMenuButton.click();
userMenu.click();
return get(UserMenu.class);
}
public BrowseMenu browse()
{
browseMenuButton.click();
browseMenu.click();
return get(BrowseMenu.class);
}
......@@ -76,19 +70,8 @@ public abstract class NavigationPage extends Page
public NewMenu newMenu()
{
newMenuButton.click();
newMenu.click();
return get(NewMenu.class);
}
public void closeTabs()
{
for (WebElement e : tabCloseButtons)
{
if (e.isDisplayed())
{
e.click();
}
}
}
}
......@@ -16,20 +16,14 @@
package ch.systemsx.cisd.openbis.uitest.page;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
......@@ -62,22 +56,6 @@ public abstract class Page
return this.pageProxy.get(clazz);
}
public WebElement findElementWithText(String text, By by)
{
WebElement element = null;
for (WebElement e : SeleniumTest.driver.findElements(by))
{
if (e.getText().equals(text))
{
element = e;
break;
}
}
assertThat(element, is(notNullValue()));
return (WebElement) ScreenShotProxy.newInstance(element, shotter);
}
public WebElement findElement(WebElement element, String xpath)
{
return (WebElement) ScreenShotProxy.newInstance(element.findElement(By.xpath(xpath)),
......@@ -131,28 +109,4 @@ public abstract class Page
});
}
protected void select(Collection<? extends WebElement> choices, String text)
{
Collection<String> found = new HashSet<String>();
for (WebElement choice : choices)
{
if (choice.getText().equalsIgnoreCase(text))
{
Actions builder = new Actions(SeleniumTest.driver);
builder.moveToElement(choice).click(choice).build().perform();
return;
}
found.add(choice.getText());
}
throw new IllegalArgumentException("Selection " + text + " not found, got " + found);
}
protected void checkbox(WebElement box, boolean check)
{
if (box.getAttribute("checked") != null ^ check)
{
box.click();
}
}
}
......@@ -16,44 +16,45 @@
package ch.systemsx.cisd.openbis.uitest.page.dialog;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.page.tab.ExperimentTypeBrowser;
import ch.systemsx.cisd.openbis.uitest.type.ExperimentType;
import ch.systemsx.cisd.openbis.uitest.widget.Button;
import ch.systemsx.cisd.openbis.uitest.widget.Text;
import ch.systemsx.cisd.openbis.uitest.widget.TextArea;
public class AddExperimentTypeDialog extends Page
{
@FindBy(id = "openbis_dialog-code-field-input")
private WebElement code;
@Locate("openbis_dialog-code-field")
private Text code;
@FindBy(id = "openbis_add-type-dialog-description-field-input")
private WebElement description;
@Locate("openbis_add-type-dialog-description-field")
private TextArea description;
@FindBy(id = "openbis_dialog-save-button")
private WebElement saveButton;
@Locate("openbis_dialog-save-button")
private Button save;
@FindBy(id = "openbis_dialog-cancel-button")
private WebElement cancelButton;
@Locate("openbis_dialog-cancel-button")
private Button cancel;
public ExperimentTypeBrowser save()
{
saveButton.click();
save.click();
return get(ExperimentTypeBrowser.class);
}
public ExperimentTypeBrowser cancel()
{
cancelButton.click();
cancel.click();
return get(ExperimentTypeBrowser.class);
}
public void fillWith(ExperimentType experimentType)
{
this.code.sendKeys(experimentType.getCode());
this.description.sendKeys(experimentType.getDescription());
code.write(experimentType.getCode());
description.write(experimentType.getDescription());
}
}
......@@ -16,104 +16,83 @@
package ch.systemsx.cisd.openbis.uitest.page.dialog;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.FindBys;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.page.tab.SampleTypeBrowser;
import ch.systemsx.cisd.openbis.uitest.type.SampleType;
import ch.systemsx.cisd.openbis.uitest.widget.Button;
import ch.systemsx.cisd.openbis.uitest.widget.Checkbox;
import ch.systemsx.cisd.openbis.uitest.widget.Text;
public class AddSampleTypeDialog extends Page
{
@FindBy(id = "openbis_dialog-code-field-input")
private WebElement code;
@FindBy(id = "openbis_add-type-dialog-description-field-input")
private WebElement description;
@Locate("openbis_dialog-code-field")
private Text code;
// @FindBy(id = "")
private WebElement validationScript;
@Locate("openbis_add-type-dialog-description-field")
private Text description;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-listable"),
@FindBy(xpath = "input") })
private WebElement listable;
@Locate("openbis_add-type-dialog-listable")
private Checkbox listable;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-show-container"),
@FindBy(xpath = "input") })
private WebElement showContainer;
@Locate("openbis_add-type-dialog-show-container")
private Checkbox showContainer;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-show-parents"),
@FindBy(xpath = "input") })
private WebElement showParents;
@Locate("openbis_add-type-dialog-show-parents")
private Checkbox showParents;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-subcode-unique"),
@FindBy(xpath = "input") })
private WebElement uniqueSubcodes;
@Locate("openbis_add-type-dialog-subcode-unique")
private Checkbox uniqueSubcodes;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-autogenerated-code"),
@FindBy(xpath = "input") })
private WebElement generateCodesAutomatically;
@Locate("openbis_add-type-dialog-autogenerated-code")
private Checkbox generateCodesAutomatically;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-show-parent-metadata"),
@FindBy(xpath = "input") })
private WebElement showParentMetadata;
@Locate("openbis_add-type-dialog-show-parent-metadata")
private Checkbox showParentMetadata;
@FindBy(id = "openbis_add-type-dialog-generated-code-prefix")
private WebElement generatedCodePrefix;
@Locate("openbis_add-type-dialog-generated-code-prefix")
private Text generatedCodePrefix;
@FindBy(id = "openbis_dialog-save-button")
private WebElement saveButton;
@Locate("openbis_dialog-save-button")
private Button save;
@FindBy(id = "openbis_dialog-cancel-button")
private WebElement cancelButton;
@Locate("openbis_dialog-cancel-button")
private Button cancel;
public SampleTypeBrowser save()
{
saveButton.click();
save.click();
return get(SampleTypeBrowser.class);
}
public SampleTypeBrowser cancel()
{
cancelButton.click();
cancel.click();
return get(SampleTypeBrowser.class);
}
public AddSampleTypeDialog setCode(String code)
{
this.code.sendKeys(code);
this.code.write(code);
return this;
}
public AddSampleTypeDialog setListable(boolean checked)
{
checkbox(this.listable, checked);
listable.set(checked);
return this;
}
public AddSampleTypeDialog setShowContainer(boolean checked)
{
checkbox(this.showContainer, checked);
showContainer.set(checked);
return this;
}
public AddSampleTypeDialog setShowParents(boolean checked)
{
checkbox(this.showParents, checked);
showParents.set(checked);
return this;
}
......
......@@ -16,21 +16,21 @@
package ch.systemsx.cisd.openbis.uitest.page.dialog;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.page.tab.SpaceBrowser;
import ch.systemsx.cisd.openbis.uitest.type.Space;
import ch.systemsx.cisd.openbis.uitest.widget.Button;
import ch.systemsx.cisd.openbis.uitest.widget.Text;
public class AddSpaceDialog extends Page
{
@FindBy(id = "openbis_dialog-code-field-input")
private WebElement code;
@Locate("openbis_dialog-code-field")
private Text code;
@FindBy(id = "openbis_dialog-save-button")
private WebElement saveButton;
@Locate("openbis_dialog-save-button")
private Button save;
/* this is not deleted as this is an example of WAIT
public SpaceBrowser addSpace(String name, String description)
......@@ -43,12 +43,12 @@ public class AddSpaceDialog extends Page
*/
public void fillWith(Space space)
{
this.code.sendKeys(space.getCode());
code.write(space.getCode());
}
public SpaceBrowser save()
{
this.saveButton.click();
save.click();
return get(SpaceBrowser.class);
}
}
......@@ -16,48 +16,49 @@
package ch.systemsx.cisd.openbis.uitest.page.dialog;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.page.tab.VocabularyBrowser;
import ch.systemsx.cisd.openbis.uitest.type.Vocabulary;
import ch.systemsx.cisd.openbis.uitest.widget.Button;
import ch.systemsx.cisd.openbis.uitest.widget.Text;
import ch.systemsx.cisd.openbis.uitest.widget.TextArea;
public class AddVocabularyDialog extends Page
{
@FindBy(id = "openbis_vocabulary-registration_formvocabulary_registration_field_set_code-input")
private WebElement code;
@Locate("openbis_vocabulary-registration_formvocabulary_registration_field_set_code")
private Text code;
@FindBy(id = "openbis_vocabulary-registration_formvocabulary_registration_field_set_description-input")
private WebElement description;
@Locate("openbis_vocabulary-registration_formvocabulary_registration_field_set_description")
private TextArea description;
@FindBy(id = "openbis_vocabulary-registration_formvocabulary_registration_field_set_terms-input")
private WebElement terms;
@Locate("openbis_vocabulary-registration_formvocabulary_registration_field_set_terms")
private TextArea terms;
@FindBy(id = "vocabulary_registration_field_set-url-input")
private WebElement url;
@Locate("vocabulary_registration_field_set-url")
private Text url;
@FindBy(id = "openbis_vocabulary-registration_formsave-button")
private WebElement saveButton;
@Locate("openbis_vocabulary-registration_formsave-button")
private Button save;
public void fillWith(Vocabulary vocabulary)
{
this.code.sendKeys(vocabulary.getCode());
this.description.sendKeys(vocabulary.getDescription());
code.write(vocabulary.getCode());
description.write(vocabulary.getDescription());
this.terms.clear();
terms.clear();
for (String term : vocabulary.getTerms())
{
this.terms.sendKeys(term + ", ");
terms.append(term + ", ");
}
this.url.clear();
this.url.sendKeys(vocabulary.getUrl());
url.write(vocabulary.getUrl());
}
public VocabularyBrowser save()
{
this.saveButton.click();
save.click();
return get(VocabularyBrowser.class);
}
}
......@@ -16,106 +16,77 @@
package ch.systemsx.cisd.openbis.uitest.page.dialog;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.FindBys;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.page.tab.SampleTypeBrowser;
import ch.systemsx.cisd.openbis.uitest.type.SampleType;
import ch.systemsx.cisd.openbis.uitest.widget.Button;
import ch.systemsx.cisd.openbis.uitest.widget.Checkbox;
import ch.systemsx.cisd.openbis.uitest.widget.Text;
public class EditSampleTypeDialog extends Page
{
@FindBy(id = "openbis_edit-type-dialog-description-input")
private WebElement description;
// @FindBy(id = "")
private WebElement validationScript;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-listable"),
@FindBy(xpath = "input") })
private WebElement listable;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-show-container"),
@FindBy(xpath = "input") })
private WebElement showContainer;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-show-parents"),
@FindBy(xpath = "input") })
private WebElement showParents;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-subcode-unique"),
@FindBy(xpath = "input") })
private WebElement uniqueSubcodes;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-autogenerated-code"),
@FindBy(xpath = "input") })
private WebElement generateCodesAutomatically;
@FindBys(
{
@FindBy(id = "openbis_add-type-dialog-show-parent-metadata"),
@FindBy(xpath = "input") })
private WebElement showParentMetadata;
@FindBy(id = "openbis_add-type-dialog-generated-code-prefix")
private WebElement generatedCodePrefix;
@FindBy(id = "openbis_dialog-save-button")
private WebElement saveButton;
@FindBy(id = "openbis_dialog-cancel-button")
private WebElement cancelButton;
@Locate("openbis_edit-type-dialog-description")
private Text description;
@Locate("openbis_add-type-dialog-listable")
private Checkbox listable;
@Locate("openbis_add-type-dialog-show-container")
private Checkbox showContainer;
@Locate("openbis_add-type-dialog-show-parents")
private Checkbox showParents;
@Locate("openbis_add-type-dialog-subcode-unique")
private Checkbox uniqueSubcodes;
@Locate("openbis_add-type-dialog-autogenerated-code")
private Checkbox generateCodesAutomatically;
@Locate("openbis_add-type-dialog-show-parent-metadata")
private Checkbox showParentMetadata;
@Locate("openbis_add-type-dialog-generated-code-prefix")
private Text generatedCodePrefix;
@Locate("openbis_dialog-save-button")
private Button save;
@Locate("openbis_dialog-cancel-button")
private Button cancel;
public SampleTypeBrowser save()
{
saveButton.click();
save.click();
return get(SampleTypeBrowser.class);
}
public SampleTypeBrowser cancel()
{
cancelButton.click();
cancel.click();
return get(SampleTypeBrowser.class);
}
public EditSampleTypeDialog setListable(boolean checked)
{
setCheckBox(this.listable, checked);
listable.set(checked);
return this;
}
public EditSampleTypeDialog setShowContainer(boolean checked)
{
setCheckBox(this.showContainer, checked);
showContainer.set(checked);
return this;
}
public EditSampleTypeDialog setShowParents(boolean checked)
{
setCheckBox(this.showParents, checked);
showParents.set(checked);
return this;
}
private void setCheckBox(WebElement element, boolean checked)
{
if (element.getAttribute("checked") != null ^ checked)
{
element.click();
}
}
public void fillWith(SampleType sampleType)
{
setListable(sampleType.isListable());
......
......@@ -16,21 +16,20 @@
package ch.systemsx.cisd.openbis.uitest.page.dialog;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.LoginPage;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.widget.AlertMessageBox;
public class InvalidPasswordDialog extends Page
{
@FindBy(id = "login_failed_dialog")
private WebElement errorDialog;
@Locate("login_failed_dialog")
private AlertMessageBox errorDialog;
public LoginPage dismiss()
{
findElement(errorDialog, "//button[text()=\"OK\"]").click();
errorDialog.dismiss();
return get(LoginPage.class);
}
}
......@@ -16,43 +16,29 @@
package ch.systemsx.cisd.openbis.uitest.page.menu;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.NotAlwaysPresent;
import ch.systemsx.cisd.openbis.uitest.infra.SeleniumTest;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.page.tab.ExperimentTypeBrowser;
import ch.systemsx.cisd.openbis.uitest.page.tab.SampleTypeBrowser;
import ch.systemsx.cisd.openbis.uitest.page.tab.SpaceBrowser;
import ch.systemsx.cisd.openbis.uitest.page.tab.VocabularyBrowser;
import ch.systemsx.cisd.openbis.uitest.widget.Link;
public class AdminMenu extends Page
{
@FindBy(id = "openbis_top-menu_ADMINISTRATION_MENU_MANAGE_GROUPS")
private WebElement spaces;
@FindBy(id = "openbis_top-menu_VOCABULARY_MENU_BROWSE")
private WebElement vocabularies;
@FindBy(id = "ADMINISTRATION_MENU_MANAGE_TYPES")
private WebElement types;
@Locate("openbis_top-menu_ADMINISTRATION_MENU_MANAGE_GROUPS")
private Link spaces;
@FindBy(id = "ADMINISTRATION_MENU_MANAGE_PROPERTY_TYPES")
private WebElement metadata;
@Locate("openbis_top-menu_VOCABULARY_MENU_BROWSE")
private Link vocabularies;
@NotAlwaysPresent
@FindBy(id = "openbis_top-menu_SAMPLE_MENU_TYPES")
private WebElement sampleTypes;
@Locate("ADMINISTRATION_MENU_MANAGE_TYPES")
private Link types;
@NotAlwaysPresent
@FindBy(id = "openbis_top-menu_EXPERIMENT_MENU_TYPES")
private WebElement experimentTypes;
@Locate("ADMINISTRATION_MENU_MANAGE_PROPERTY_TYPES")
private Link metadata;
@FindBy(id = "ADMINISTRATION_MENU_MANAGE_AUTHORIZATION")
private WebElement authorization;
@Locate("ADMINISTRATION_MENU_MANAGE_AUTHORIZATION")
private Link authorization;
public SpaceBrowser spaces()
{
......@@ -66,36 +52,21 @@ public class AdminMenu extends Page
return get(VocabularyBrowser.class);
}
public AdminMenu types()
public TypesMenu types()
{
Actions builder = new Actions(SeleniumTest.driver);
builder.moveToElement(types).build().perform();
return get(AdminMenu.class);
types.highlight();
return get(TypesMenu.class);
}
public MetadataMenu metadata()
{
Actions builder = new Actions(SeleniumTest.driver);
builder.moveToElement(metadata).build().perform();
metadata.highlight();
return get(MetadataMenu.class);
}
public SampleTypeBrowser sampleTypes()
{
sampleTypes.click();
return get(SampleTypeBrowser.class);
}
public ExperimentTypeBrowser experimentTypes()
{
experimentTypes.click();
return get(ExperimentTypeBrowser.class);
}
public AuthorizationMenu authorization()
{
Actions builder = new Actions(SeleniumTest.driver);
builder.moveToElement(authorization).build().perform();
authorization.highlight();
return get(AuthorizationMenu.class);
}
}
......@@ -16,17 +16,16 @@
package ch.systemsx.cisd.openbis.uitest.page.menu;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import ch.systemsx.cisd.openbis.uitest.infra.Locate;
import ch.systemsx.cisd.openbis.uitest.page.Page;
import ch.systemsx.cisd.openbis.uitest.page.tab.RoleAssignmentBrowser;
import ch.systemsx.cisd.openbis.uitest.widget.Link;
public class AuthorizationMenu extends Page
{
@FindBy(id = "openbis_top-menu_AUTHORIZATION_MENU_ROLES")
private WebElement roles;
@Locate("openbis_top-menu_AUTHORIZATION_MENU_ROLES")
private Link roles;
public RoleAssignmentBrowser roles()
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment