vmassol (SVN) wrote: > Author: vmassol > Date: 2010-06-28 15:36:43 +0200 (Mon, 28 Jun 2010) > New Revision: 29788 > > Added: > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditObjectsTest.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ClassEditPage.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/DatabaseListClassEditElement.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ObjectEditPage.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/PreviewableEditPage.java > Removed: > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditObjectsPage.java > Modified: > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditWikiTest.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/BasePage.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditPage.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/FormElement.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ViewPage.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WYSIWYGEditPage.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WikiEditPage.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/invitation/InvitationTest.java > Log: > Start porting the XObjectsTest class to the XWiki selenium2 framework > > Added: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditObjectsTest.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditObjectsTest.java > (rev 0) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditObjectsTest.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -0,0 +1,91 @@ > +/* > + * See the NOTICE file distributed with this work for additional > + * information regarding copyright ownership. > + * > + * 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.xwiki.it.ui; > + > +import org.junit.Assert; > +import org.junit.Before; > +import org.junit.Test; > +import org.openqa.selenium.By; > +import org.xwiki.it.ui.framework.AbstractAdminAuthenticatedTest; > +import org.xwiki.it.ui.framework.elements.ClassEditPage; > +import org.xwiki.it.ui.framework.elements.FormElement; > +import org.xwiki.it.ui.framework.elements.ObjectEditPage; > +import org.xwiki.it.ui.framework.elements.ViewPage; > +import org.xwiki.it.ui.framework.elements.WikiEditPage; > + > +/** > + * Test XObject editing. > + * > + * @version $Id$ > + * @since 2.4M2 > + */ > +public class EditObjectsTest extends AbstractAdminAuthenticatedTest > +{ > + @Before > + @Override > + public void setUp() > + { > + super.setUp(); > + getUtil().deletePage("Test", "EditObjectsTestClass"); > + getUtil().deletePage("Test", "EditObjectsTestObject"); > + } > + > + /** > + * Tests that XWIKI-1621 remains fixed. > + */ > + @Test > + public void testChangeMultiselectProperty() > + { > + // Create a class with a database list property set to return all > documents > + ClassEditPage cep = new ClassEditPage(); > + cep.switchToEdit("Test", "EditObjectsTestClass"); > + cep.addProperty("prop", "com.xpn.xwiki.objects.classes.DBListClass"); > + cep.getDatabaseListClassEditElement("prop").setHibernateQuery( > + "select doc.fullName from XWikiDocument doc where doc.space = > 'Test'"); > + ViewPage vp = cep.clickSaveAndView(); > + > + // Create a second page to hold the Object and set its content > + WikiEditPage wep = new WikiEditPage(); > + wep.switchToEdit("Test", "EditObjectsTestObject"); > + wep.setContent("this is the content"); > + vp = wep.clickSaveAndView(); > + > + // Add an object of the class created and set the value to be the > test page > + ObjectEditPage oep = vp.clickEditObjects(); > + FormElement objectForm = oep.addObject("Test.EditObjectsTestClass"); > + objectForm.setFieldValue(By.id("Test.EditObjectsTestClass_0_prop"), > "Test.EditObjectsTestClass"); > + vp = oep.clickSaveAndView(); > + > + // Set multiselect to true > + cep = new ClassEditPage(); > + cep.switchToEdit("Test", "EditObjectsTestClass"); > + cep.getDatabaseListClassEditElement("prop").isMultiSelect(true); > + vp = cep.clickSaveAndView(); > + > + // Select a second document in the DB list select field. > + oep = new ObjectEditPage(); > + oep.switchToEdit("Test", "EditObjectsTestObject"); > + > oep.getObjectsOfClass("Test.EditObjectsTestClass").get(0).setFieldValue( > + By.id("Test.EditObjectsTestClass_0_prop"), > "Test.EditObjectsTestObject"); > + vp = oep.clickSaveAndView(); > + > + Assert.assertEquals("this is the content", vp.getContent()); > + } > +} > > > Property changes on: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditObjectsTest.java > ___________________________________________________________________ > Name: svn:keywords > + Author Id Revision HeadURL > Name: svn:eol-style > + native > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditWikiTest.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditWikiTest.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/EditWikiTest.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -35,7 +35,7 @@ > */ > public class EditWikiTest extends AbstractAdminAuthenticatedTest > { > - /** Page used for testing: Main.EditWikiTest */ > + /** Page used for testing: Test.EditWikiTest */ > private WikiEditPage editPage; > > @Before > @@ -47,12 +47,6 @@ > getUtil().deletePage("Test", "EditWikiTest"); > } > > - @After > - public void cleanUp() > - { > - getUtil().deletePage("Test", "EditWikiTest"); > - } > - > /** Test that save and continue saves as a minor version. */ > @Test > public void testSaveAndContinueSavesAsMinorEdit() > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/BasePage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/BasePage.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/BasePage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -179,16 +179,18 @@ > /** > * Performs a click on the "edit objects" entry of the content menu. > */ > - public void clickEditObjects() > + public ObjectEditPage clickEditObjects() > { > - clickContentMenuEditSubMenuEntry("tmEditObjects"); > + clickContentMenuEditSubMenuEntry("tmEditObject"); > + return new ObjectEditPage(); > } > > /** > * Performs a click on the "edit class" entry of the content menu. > */ > - public void clickEditClass() > + public ClassEditPage clickEditClass() > { > clickContentMenuEditSubMenuEntry("tmEditClass"); > + return new ClassEditPage(); > } > } > > Added: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ClassEditPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ClassEditPage.java > (rev 0) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ClassEditPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -0,0 +1,112 @@ > +/* > + * See the NOTICE file distributed with this work for additional > + * information regarding copyright ownership. > + * > + * 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.xwiki.it.ui.framework.elements; > + > +import org.openqa.selenium.By; > +import org.openqa.selenium.WebElement; > +import org.openqa.selenium.support.FindBy; > + > +/** > + * Represents the common actions possible on all Pages when using the "edit" > action with the "class" editor. > + * > + * @version $Id$ > + * @since 2.4M2 > + */ > +// TODO: Fix the fact that this class should extend EditPage but the id of > the save action is incorrectly different... > +public class ClassEditPage extends BasePage > +{ > + @FindBy(name = "action_saveandcontinue") > + private WebElement saveandcontinue; > + > + @FindBy(name = "action_propupdate") > + private WebElement saveandview; > + > + @FindBy(name = "action_cancel") > + private WebElement cancel; > + > + @FindBy(id ="propupdate") > + private WebElement propertyForm; > + > + @FindBy(id = "propname") > + private WebElement propertyNameField; > + > + @FindBy(id = "proptype") > + private WebElement propertyTypeField; > + > + @FindBy(name = "action_propadd") > + private WebElement propertySubmit; > + > + private FormElement form; > + > + public void addProperty(String propertyName, String propertyType) > + { > + getForm().setFieldValue(this.propertyNameField, propertyName); > + getForm().setFieldValue(this.propertyTypeField, propertyType); > + this.propertySubmit.click(); > + } > + > + private FormElement getForm() > + { > + if (this.form == null) { > + this.form = new FormElement(this.propertyForm); > + } > + return this.form; > + } > + > + /** > + * Start editing the page using the Class editor. > + * > + * @param space > + * @param page > + */ > + public void switchToEdit(String space, String page) > + { > + getUtil().gotoPage(space, page, "edit", "editor=class"); > + } > + > + public DatabaseListClassEditElement > getDatabaseListClassEditElement(String propertyName) > + { > + // Make the element visible before returning it > + By locator = By.id("xproperty_" + propertyName + "_title"); > + waitUntilElementIsVisible(locator); > + getDriver().findElement(locator).click(); > + return new DatabaseListClassEditElement(getForm(), propertyName); > + } > + > + public void clickSaveAndContinue() > + { > + this.saveandcontinue.click(); > + > + // Wait until the page is really saved > + > waitUntilElementIsVisible(By.xpath("//div[contains(@class,'xnotification-done') > and text()='Saved']")); > + } > + > + public ViewPage clickSaveAndView() > + { > + this.saveandview.click(); > + return new ViewPage(); > + } > + > + public ViewPage clickCancel() > + { > + this.cancel.click(); > + return new ViewPage(); > + } > +} > > > Property changes on: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ClassEditPage.java > ___________________________________________________________________ > Name: svn:keywords > + Author Id Revision HeadURL > Name: svn:eol-style > + native > > Added: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/DatabaseListClassEditElement.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/DatabaseListClassEditElement.java > (rev 0) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/DatabaseListClassEditElement.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -0,0 +1,51 @@ > +/* > + * See the NOTICE file distributed with this work for additional > + * information regarding copyright ownership. > + * > + * 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.xwiki.it.ui.framework.elements; > + > +import org.openqa.selenium.By; > + > +/** > + * Represents a DatabaseListClass property form. > + * > + * @version $Id$ > + * @since 2.4M2 > + */ > +public class DatabaseListClassEditElement extends BaseElement > +{ > + private String propertyName; > + > + private FormElement form; > + > + public DatabaseListClassEditElement(FormElement form, String > propertyName) > + { > + this.form = form; > + this.propertyName = propertyName; > + } > + > + public void setHibernateQuery(String value) > + { > + this.form.setFieldValue(By.id(this.propertyName + "_sql"), value); > + } > + > + public void isMultiSelect(boolean isMultiSelect) > + { > + this.form.setFieldValue(By.id(this.propertyName + "_multiSelect"), > isMultiSelect ? "true" : "false"); > + } > +} > > > Property changes on: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/DatabaseListClassEditElement.java > ___________________________________________________________________ > Name: svn:keywords > + Author Id Revision HeadURL > Name: svn:eol-style > + native > > Deleted: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditObjectsPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditObjectsPage.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditObjectsPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -1,117 +0,0 @@ > -/* > - * See the NOTICE file distributed with this work for additional > - * information regarding copyright ownership. > - * > - * 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.xwiki.it.ui.framework.elements; > - > -import java.util.Set; > -import java.util.List; > -import java.util.ArrayList; > - > -import org.openqa.selenium.RenderedWebElement; > -import org.openqa.selenium.WebElement; > -import org.openqa.selenium.WebDriverException; > -import org.openqa.selenium.By; > - > -/** > - * Represents the common actions possible editing objects on a page. > - * > - * @version $Id$ > - * @since 2.4M2 > - */ > -public class EditObjectsPage extends EditPage > -{ > - public String getURL(String space, String page) > - { > - return getUtil().getURL(space, page, "edit", "editor=object"); > - } > - > - public void clickPreview() > - { > - throw new WebDriverException("Preview not available in object > editor"); > - } > - > - /** className will look something like "XWiki.XWikiRights" */ > - public List<FormElement> getObjectsOfClass(String className) > - { > - List<WebElement> titles = getDriver().findElement(By.id("xclass_" + > className)) > - > .findElements(By.className("xobject-title")); > - List<WebElement> elements = getDriver().findElement(By.id("xclass_" > + className)) > - > .findElements(By.className("xobject-content")); > - List<FormElement> forms = new > ArrayList<FormElement>(elements.size()); > - for (int i = 0; i < elements.size(); i++) { > - WebElement element = elements.get(i); > - // Make sure all forms are displayed otherwise we can't interact > with them. > - if (element instanceof RenderedWebElement && > !((RenderedWebElement) element).isDisplayed()) { > - titles.get(i).click(); > - } > - forms.add(new FormElement(element)); > - } > - return forms; > - } > - > - /** > - * Adding an object is easy, you simply say: > - * page.getAddPanel().selectClass("XWiki.XWikiRights").clickAdd(); > - */ > - public AddObjectPanel getAddPanel() > - { > - return this.new AddObjectPanel(); > - } > - > - public class AddObjectPanel > - { > - private WebElement form; > - > - private FormElement.SelectElement classSelector; > - > - private WebElement getForm() > - { > - if (form == null) { > - form = getDriver().findElement(By.id("objectadd")); > - } > - return form; > - } > - > - private FormElement.SelectElement getClassSelector() > - { > - if (classSelector == null) { > - classSelector = new > FormElement(getForm()).getSelectElement(By.name("classname")); > - } > - return classSelector; > - } > - > - public AddObjectPanel selectClass(String name) > - { > - getClassSelector().select(name); > - return this; > - } > - > - public Set<String> getOptions() > - { > - return getClassSelector().getOptions(); > - } > - > - public void clickAdd() > - { > - getForm().findElement(By.className("button")).click(); > - } > - } > - > - > -} > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditPage.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/EditPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -31,9 +31,6 @@ > */ > public class EditPage extends BasePage > { > - @FindBy(name = "action_preview") > - private WebElement preview; > - > @FindBy(name = "action_saveandcontinue") > private WebElement saveandcontinue; > > @@ -43,11 +40,6 @@ > @FindBy(name = "action_cancel") > private WebElement cancel; > > - public void clickPreview() > - { > - preview.click(); > - } > - > public void clickSaveAndContinue() > { > saveandcontinue.click(); > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/FormElement.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/FormElement.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/FormElement.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -28,7 +28,6 @@ > import org.openqa.selenium.By; > import org.openqa.selenium.WebDriverException; > import org.openqa.selenium.WebElement; > -import org.xwiki.it.ui.framework.elements.BaseElement; > > /** > * Represents a Form. > @@ -75,11 +74,18 @@ > > public void setFieldValue(WebElement fieldElement, String value) > { > - if (!fieldElement.getTagName().equals("input") && > !fieldElement.getTagName().equals("textarea")) { > - throw new WebDriverException("You can only fill in input and > textarea elements."); > - } > if ("checkbox".equals(fieldElement.getAttribute("type"))) { > setCheckBox(fieldElement, value.equals("true")); > + } else if ("select".equals(fieldElement.getTagName())) { > + // TODO: Should we do this? (don't seem to work) > + //SelectElement select = new SelectElement(fieldElement); > + //select.select(value);
Are you referring to this? http://code.google.com/p/selenium/source/browse/trunk/support/src/java/org/openqa/selenium/support/ui/Select.java I didn't know the selenium people were using the same pattern that I was. > + List<WebElement> allOptions = > fieldElement.findElements(By.tagName("option")); > + for (WebElement option : allOptions) { > + if (value.equals(option.getValue())) { > + option.setSelected(); > + } > + } > } else { > fieldElement.clear(); > fieldElement.sendKeys(value); > > Added: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ObjectEditPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ObjectEditPage.java > (rev 0) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ObjectEditPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -0,0 +1,97 @@ > +/* > + * See the NOTICE file distributed with this work for additional > + * information regarding copyright ownership. > + * > + * 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.xwiki.it.ui.framework.elements; > + > +import java.util.ArrayList; > +import java.util.List; > + > +import org.openqa.selenium.By; > +import org.openqa.selenium.RenderedWebElement; > +import org.openqa.selenium.WebElement; > +import org.openqa.selenium.support.FindBy; > + > +/** > + * Represents the common actions possible on all Pages when using the "edit" > action with the "object" editor. > + * > + * @version $Id$ > + * @since 2.4M2 > + */ > +public class ObjectEditPage extends EditPage > +{ > + @FindBy(id ="update") > + private WebElement objectForm; > + > + @FindBy(id = "classname") > + private WebElement classNameField; > + > + @FindBy(name = "action_objectadd") > + private WebElement classNameSubmit; > + > + private FormElement form; > + > + public FormElement addObject(String className) > + { > + getForm().setFieldValue(this.classNameField, className); > + this.classNameSubmit.click(); > + > + // Make sure we wait for the element to appear since there's no page > refresh. > + waitUntilElementIsVisible(By.id("xclass_" + className)); > + > + List<FormElement> objects = getObjectsOfClass(className); > + return objects.get(objects.size() - 1); > + } > + > + private FormElement getForm() > + { > + if (this.form == null) { > + this.form = new FormElement(this.objectForm); > + } > + return this.form; > + } > + > + public String getURL(String space, String page) > + { > + return getUtil().getURL(space, page, "edit", "editor=object"); > + } > + > + /** className will look something like "XWiki.XWikiRights" */ > + public List<FormElement> getObjectsOfClass(String className) > + { > + List<WebElement> titles = getDriver().findElement(By.id("xclass_" + > className)) > + > .findElements(By.className("xobject-title")); > + List<WebElement> elements = getDriver().findElement(By.id("xclass_" > + className)) > + > .findElements(By.className("xobject-content")); > + List<FormElement> forms = new > ArrayList<FormElement>(elements.size()); > + for (int i = 0; i < elements.size(); i++) { > + WebElement element = elements.get(i); > + // Make sure all forms are displayed otherwise we can't interact > with them. > + if (element instanceof RenderedWebElement && > !((RenderedWebElement) element).isDisplayed()) { > + titles.get(i).click(); > + } > + forms.add(new FormElement(element)); > + } > + return forms; > + } > + > + public void switchToEdit(String space, String page) > + { > + getUtil().gotoPage(space, page, "edit", "editor=object"); Maybe use getDriver().get(getURL()); ? I have used this pattern elsewhere. > + } > +} > > > Property changes on: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ObjectEditPage.java > ___________________________________________________________________ > Name: svn:keywords > + Author Id Revision HeadURL > Name: svn:eol-style > + native > > Added: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/PreviewableEditPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/PreviewableEditPage.java > (rev 0) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/PreviewableEditPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -0,0 +1,40 @@ > +/* > + * See the NOTICE file distributed with this work for additional > + * information regarding copyright ownership. > + * > + * 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.xwiki.it.ui.framework.elements; > + > +import org.openqa.selenium.WebElement; > +import org.openqa.selenium.support.FindBy; > + > +/** > + * Edit page with a preview button. > + * > + * @version $Id$ > + * @since 2.4M2 > + */ > +public class PreviewableEditPage extends EditPage > +{ > + @FindBy(name = "action_preview") > + private WebElement preview; > + > + public void clickPreview() > + { > + preview.click(); > + } > +} > > > Property changes on: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/PreviewableEditPage.java > ___________________________________________________________________ > Name: svn:keywords > + Author Id Revision HeadURL > Name: svn:eol-style > + native > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ViewPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ViewPage.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/ViewPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -57,6 +57,9 @@ > @FindBy(id = "tmAdminWiki") > private WebElement administerWikiMenuLink; > > + @FindBy(id = "xwikicontent") > + private WebElement content; > + > /** > * Logs in the Admin user (move to the home page if the current page has > no log in link). > */ > @@ -159,4 +162,13 @@ > } > return true; > } > + > + /** > + * @return the page's main content > + * @since 2.4M2 > + */ > + public String getContent() > + { > + return this.content.getText(); > + } I don't know what getText() will do in this instance, the content inside of xwikicontent is HTML so IMO it should return the WebElement. > } > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WYSIWYGEditPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WYSIWYGEditPage.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WYSIWYGEditPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -28,7 +28,7 @@ > * @version $Id$ > * @since 2.3M1 > */ > -public class WYSIWYGEditPage extends EditPage > +public class WYSIWYGEditPage extends PreviewableEditPage > { > @FindBy(id = "xwikidoctitleinput") > private WebElement titleField; > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WikiEditPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WikiEditPage.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/framework/elements/WikiEditPage.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -28,7 +28,7 @@ > * @version $Id$ > * @since 2.4M1 > */ > -public class WikiEditPage extends EditPage > +public class WikiEditPage extends PreviewableEditPage > { > @FindBy(id = "xwikidoctitleinput") > private WebElement titleInput; > > Modified: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/invitation/InvitationTest.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/invitation/InvitationTest.java > 2010-06-28 13:29:41 UTC (rev 29787) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/invitation/InvitationTest.java > 2010-06-28 13:36:43 UTC (rev 29788) > @@ -37,6 +37,7 @@ > import org.openqa.selenium.By; > import org.openqa.selenium.WebElement; > import org.xwiki.it.ui.administration.elements.AdminSectionPage; > +import org.xwiki.it.ui.framework.elements.ObjectEditPage; > import org.xwiki.it.ui.invitation.elements.InvitationSenderPage; > import org.xwiki.it.ui.invitation.elements.InvitationMessageDisplayElement; > import org.xwiki.it.ui.framework.elements.TableElement; > @@ -44,7 +45,6 @@ > import > org.xwiki.it.ui.invitation.elements.InvitationActionConfirmationElement; > import org.xwiki.it.ui.invitation.elements.InvitationGuestActionsPage; > import org.xwiki.it.ui.framework.elements.RegisterPage; > -import org.xwiki.it.ui.framework.elements.EditObjectsPage; > import org.xwiki.it.ui.framework.AbstractTest; > import org.xwiki.it.ui.framework.TestUtils; > > @@ -508,13 +508,13 @@ > TestUtils.Session admin = getUtil().getSession(); > try { > // First we ban anon from registering. > - EditObjectsPage eop = new EditObjectsPage(); > - getDriver().get(eop.getURL("XWiki", "XWikiPreferences")); > + ObjectEditPage oep = new ObjectEditPage(); > + getDriver().get(oep.getURL("XWiki", "XWikiPreferences")); > > - eop.getObjectsOfClass("XWiki.XWikiGlobalRights").get(2) > + oep.getObjectsOfClass("XWiki.XWikiGlobalRights").get(2) > > .getSelectElement(By.name("XWiki.XWikiGlobalRights_2_levels")).unSelect("register"); > > - eop.clickSaveAndContinue(); > + oep.clickSaveAndContinue(); > // now prove anon cannot register > getUtil().setSession(null); > new RegisterPage().gotoPage(); > @@ -554,13 +554,13 @@ > getUtil().setSession(admin); > > // Better open the wiki back up again. > - EditObjectsPage eop = new EditObjectsPage(); > - getDriver().get(eop.getURL("XWiki", "XWikiPreferences")); > + ObjectEditPage oep = new ObjectEditPage(); > + getDriver().get(oep.getURL("XWiki", "XWikiPreferences")); > > - eop.getObjectsOfClass("XWiki.XWikiGlobalRights").get(2) > + oep.getObjectsOfClass("XWiki.XWikiGlobalRights").get(2) > > .getSelectElement(By.name("XWiki.XWikiGlobalRights_2_levels")).select("register"); > > - eop.clickSaveAndContinue(); > + oep.clickSaveAndContinue(); > } > } > > > _______________________________________________ > notifications mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/notifications > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

