Skip to content
Snippets Groups Projects
Commit f65f727d authored by srosse's avatar srosse
Browse files

no-jira: wording, selenium test for CP editor and player

parent fd91e9d4
No related branches found
No related tags found
No related merge requests found
Showing
with 403 additions and 17 deletions
...@@ -108,12 +108,14 @@ public class CPContentController extends BasicController { ...@@ -108,12 +108,14 @@ public class CPContentController extends BasicController {
editMetadataLink = LinkFactory.createToolLink("contentcontroller.editlink", "contentcontroller.editlink", editMetadataLink = LinkFactory.createToolLink("contentcontroller.editlink", "contentcontroller.editlink",
translate("contentcontroller.editlink_title"), this); translate("contentcontroller.editlink_title"), this);
editMetadataLink.setIconLeftCSS("o_icon o_icon-lg o_icon_edit"); editMetadataLink.setIconLeftCSS("o_icon o_icon-lg o_icon_edit");
editMetadataLink.setElementCssClass("o_sel_cp_edit_metadata");
editMetadataLink.setTooltip(translate("contentcontroller.editlink_title")); editMetadataLink.setTooltip(translate("contentcontroller.editlink_title"));
toolbar.addTool(editMetadataLink, Align.right); toolbar.addTool(editMetadataLink, Align.right);
previewLink = LinkFactory.createToolLink("contentcontroller.previewlink", "contentcontroller.previewlink", previewLink = LinkFactory.createToolLink("contentcontroller.previewlink", "contentcontroller.previewlink",
translate("contentcontroller.previewlink_title"), this); translate("contentcontroller.previewlink_title"), this);
previewLink.setIconLeftCSS("o_icon o_icon-lg o_icon_preview"); previewLink.setIconLeftCSS("o_icon o_icon-lg o_icon_preview");
previewLink.setElementCssClass("o_sel_cp_preview");
previewLink.setTooltip(translate("contentcontroller.previewlink_title")); previewLink.setTooltip(translate("contentcontroller.previewlink_title"));
toolbar.addTool(previewLink, Align.right); toolbar.addTool(previewLink, Align.right);
......
...@@ -111,7 +111,7 @@ public class CPFileImportController extends FormBasicController { ...@@ -111,7 +111,7 @@ public class CPFileImportController extends FormBasicController {
*/ */
@Override @Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
setFormTitle("cpfileuploadcontroller.form.title"); formLayout.setElementCssClass("o_sel_cp_import");
setFormDescription("cpfileuploadcontroller.form.description"); setFormDescription("cpfileuploadcontroller.form.description");
file = uifactory.addFileElement(getWindowControl(), "file", flc); file = uifactory.addFileElement(getWindowControl(), "file", flc);
......
...@@ -66,9 +66,11 @@ public class CPMetadataEditController extends FormBasicController { ...@@ -66,9 +66,11 @@ public class CPMetadataEditController extends FormBasicController {
@Override @Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
formLayout.setElementCssClass("o_sel_cp_metadata");
// title-field // title-field
String titleString = page.getTitle(); String titleString = page.getTitle();
title = uifactory.addTextElement("title", "cpmd.flexi.title", 256, titleString, formLayout); title = uifactory.addTextElement("title", "cpmd.flexi.title", 256, titleString, formLayout);
title.setElementCssClass("o_sel_cp_title");
title.setDisplaySize(32); title.setDisplaySize(32);
title.setMandatory(true); title.setMandatory(true);
title.setNotEmptyCheck("cpmd.flexi.mustbefilled"); title.setNotEmptyCheck("cpmd.flexi.mustbefilled");
......
...@@ -33,7 +33,6 @@ import org.dom4j.Element; ...@@ -33,7 +33,6 @@ import org.dom4j.Element;
import org.dom4j.tree.DefaultElement; import org.dom4j.tree.DefaultElement;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component; import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.link.LinkFactory; import org.olat.core.gui.components.link.LinkFactory;
import org.olat.core.gui.components.stack.TooledStackedPanel; import org.olat.core.gui.components.stack.TooledStackedPanel;
...@@ -112,24 +111,28 @@ public class CPTreeController extends BasicController { ...@@ -112,24 +111,28 @@ public class CPTreeController extends BasicController {
importLink = LinkFactory.createToolLink("cptreecontroller.importlink", "cptreecontroller.importlink", importLink = LinkFactory.createToolLink("cptreecontroller.importlink", "cptreecontroller.importlink",
translate("cptreecontroller.importlink_title"), this); translate("cptreecontroller.importlink_title"), this);
importLink.setTooltip(translate("cptreecontroller.importlink_title")); importLink.setTooltip(translate("cptreecontroller.importlink_title"));
importLink.setElementCssClass("o_sel_cp_import_link");
importLink.setIconLeftCSS("o_icon o_icon-lg o_icon_import"); importLink.setIconLeftCSS("o_icon o_icon-lg o_icon_import");
toolbar.addTool(importLink, Align.left); toolbar.addTool(importLink, Align.left);
newLink = LinkFactory.createToolLink("cptreecontroller.newlink", "cptreecontroller.newlink", newLink = LinkFactory.createToolLink("cptreecontroller.newlink", "cptreecontroller.newlink",
translate("cptreecontroller.newlink_title"), this); translate("cptreecontroller.newlink_title"), this);
newLink.setTooltip(translate("cptreecontroller.newlink_title")); newLink.setTooltip(translate("cptreecontroller.newlink_title"));
newLink.setElementCssClass("o_sel_cp_new_link");
newLink.setIconLeftCSS("o_icon o_icon-lg o_icon_add"); newLink.setIconLeftCSS("o_icon o_icon-lg o_icon_add");
toolbar.addTool(newLink, Align.left); toolbar.addTool(newLink, Align.left);
copyLink = LinkFactory.createToolLink("cptreecontroller.copylink", "cptreecontroller.copylink", copyLink = LinkFactory.createToolLink("cptreecontroller.copylink", "cptreecontroller.copylink",
translate("cptreecontroller.copylink_title"), this); translate("cptreecontroller.copylink_title"), this);
copyLink.setTooltip(translate("cptreecontroller.copylink_title")); copyLink.setTooltip(translate("cptreecontroller.copylink_title"));
copyLink.setElementCssClass("o_sel_cp_copy_link");
copyLink.setIconLeftCSS("o_icon o_icon-lg o_icon_copy"); copyLink.setIconLeftCSS("o_icon o_icon-lg o_icon_copy");
toolbar.addTool(copyLink, Align.left); toolbar.addTool(copyLink, Align.left);
deleteLink = LinkFactory.createToolLink("cptreecontroller.deletelink", "cptreecontroller.deletelink", deleteLink = LinkFactory.createToolLink("cptreecontroller.deletelink", "cptreecontroller.deletelink",
translate("cptreecontroller.deletelink_title"), this); translate("cptreecontroller.deletelink_title"), this);
deleteLink.setTooltip(translate("cptreecontroller.deletelink_title")); deleteLink.setTooltip(translate("cptreecontroller.deletelink_title"));
deleteLink.setElementCssClass("o_sel_cp_delete_link");
deleteLink.setIconLeftCSS("o_icon o_icon-lg o_icon_delete_item"); deleteLink.setIconLeftCSS("o_icon o_icon-lg o_icon_delete_item");
toolbar.addTool(deleteLink, Align.left); toolbar.addTool(deleteLink, Align.left);
} }
...@@ -319,8 +322,12 @@ public class CPTreeController extends BasicController { ...@@ -319,8 +322,12 @@ public class CPTreeController extends BasicController {
protected void event(UserRequest ureq, Component source, Event event) { protected void event(UserRequest ureq, Component source, Event event) {
if (source == importLink) { if (source == importLink) {
uploadCtr = new CPFileImportController(ureq, getWindowControl(), cp, currentPage); uploadCtr = new CPFileImportController(ureq, getWindowControl(), cp, currentPage);
activateModalDialog(uploadCtr); listenTo(uploadCtr);
String title = translate("cpfileuploadcontroller.form.title");
cmc = new CloseableModalController(getWindowControl(), translate("close"),
uploadCtr.getInitialComponent(), true, title);
listenTo(cmc);
cmc.activate();
} else if (source == newLink) { } else if (source == newLink) {
fireEvent(ureq, new Event("New Page")); fireEvent(ureq, new Event("New Page"));
...@@ -477,15 +484,4 @@ public class CPTreeController extends BasicController { ...@@ -477,15 +484,4 @@ public class CPTreeController extends BasicController {
protected void doDispose() { protected void doDispose() {
contentVC = null; contentVC = null;
} }
/**
* @param controller The <code>FormBasicController</code> to be displayed in
* the modal dialog.
*/
private void activateModalDialog(FormBasicController controller) {
listenTo(controller);
cmc = new CloseableModalController(getWindowControl(), translate("close"), controller.getInitialComponent());
listenTo(cmc);
cmc.activate();
}
} }
...@@ -119,7 +119,8 @@ table.user.lastname=Name ...@@ -119,7 +119,8 @@ table.user.lastname=Name
table.user.replies=Replies table.user.replies=Replies
table.user.threads=Threads table.user.threads=Threads
table.userfriendlyname=Author table.userfriendlyname=Author
use.pseudonym.label=Use a pseudonym use.pseudonym=Posted as
use.pseudonym.label=Use alias
viewswitch.flatview=all (flat) viewswitch.flatview=all (flat)
viewswitch.marked=marked viewswitch.marked=marked
viewswitch.messageview=one viewswitch.messageview=one
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
*/ */
package org.olat.selenium; package org.olat.selenium;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.net.URL; import java.net.URL;
...@@ -60,12 +61,14 @@ import org.olat.selenium.page.course.PublisherPageFragment.Access; ...@@ -60,12 +61,14 @@ import org.olat.selenium.page.course.PublisherPageFragment.Access;
import org.olat.selenium.page.forum.ForumPage; import org.olat.selenium.page.forum.ForumPage;
import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.graphene.OOGraphene;
import org.olat.selenium.page.repository.AuthoringEnvPage; import org.olat.selenium.page.repository.AuthoringEnvPage;
import org.olat.selenium.page.repository.CPPage;
import org.olat.selenium.page.repository.FeedPage; import org.olat.selenium.page.repository.FeedPage;
import org.olat.selenium.page.repository.RepositoryAccessPage; import org.olat.selenium.page.repository.RepositoryAccessPage;
import org.olat.selenium.page.repository.AuthoringEnvPage.ResourceType; import org.olat.selenium.page.repository.AuthoringEnvPage.ResourceType;
import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess; import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess;
import org.olat.selenium.page.repository.RepositoryEditDescriptionPage; import org.olat.selenium.page.repository.RepositoryEditDescriptionPage;
import org.olat.test.ArquillianDeployments; import org.olat.test.ArquillianDeployments;
import org.olat.test.JunitTestHelper;
import org.olat.test.rest.UserRestClient; import org.olat.test.rest.UserRestClient;
import org.olat.user.restapi.UserVO; import org.olat.user.restapi.UserVO;
import org.openqa.selenium.By; import org.openqa.selenium.By;
...@@ -1515,4 +1518,92 @@ public class CourseTest { ...@@ -1515,4 +1518,92 @@ public class CourseTest {
.assertWithTitle(foTitle.substring(0, 20)) .assertWithTitle(foTitle.substring(0, 20))
.assertWithTitle(infoTitle.substring(0, 20)); .assertWithTitle(infoTitle.substring(0, 20));
} }
/**
* An author creates a CP, changes the name of a page, import
* an other page, create two pages and delete one, import an
* image...<br>
* A user come to see the CP, check that the deleted page is
* really deleted and that the "Small HTML page" exists and
* can be read.
*
* @param loginPage
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void createContentPackage(@InitialPage LoginPage loginPage,
@Drone @User WebDriver ryomouBrowser)
throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou");
loginPage.loginAs(author.getLogin(), author.getPassword());
//create a CP
String cpTitle = "CP " + UUID.randomUUID();
navBar
.openAuthoringEnvironment()
.createCP(cpTitle)
.clickToolbarBack();
String firstPage = "Page 1 " + UUID.randomUUID();
String secondPage = "Seite 2 " + UUID.randomUUID();
String thirdPage = "Feuillet 3 " + UUID.randomUUID();
String deletedPage = "To delete 4 " + UUID.randomUUID();
URL pageUrl = JunitTestHelper.class.getResource("file_resources/page.html");
File pageFile = new File(pageUrl.toURI());
URL imageUrl = JunitTestHelper.class.getResource("file_resources/IMG_1482.JPG");
File imageFile = new File(imageUrl.toURI());
CPPage cpPage = new CPPage(browser);
cpPage
.openEditor()
//rename page
.editMetadata(firstPage)
.clickRoot()
.newPage(secondPage)
.clickRoot()
.newPage(deletedPage)
.clickRoot()
//import a page and change the title
.importPage(pageFile)
.fillMetadataForm(thirdPage)
//import an image without changing the title
.importPage(imageFile)
.closeMetadataForm()
//delete page
.selectPage(deletedPage)
.deletePage()
//close the editor
.clickToolbarBack();
//set access to registered members
cpPage
.accessConfiguration()
.setUserAccess(UserAccess.registred)
.clickToolbarBack();
//a user search the content package
LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl);
ryomouLoginPage
.loginAs(ryomou.getLogin(), ryomou.getPassword())
.resume();
NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser);
ryomouNavBar
.openMyCourses()
.openSearch()
.extendedSearch(cpTitle)
.select(cpTitle)
.start();
CPPage ryomouPage = new CPPage(ryomouBrowser);
ryomouPage
.assertPageDeleted(deletedPage)
.assertInIFrame(By.xpath("//h1[text()[contains(.,'Small HTML page')]]"))
.selectPage(secondPage)
.selectPage(firstPage)
.assertInIFrame(By.xpath("//h2[text()[contains(.,'Lorem Ipsum')]]"));
}
} }
...@@ -36,6 +36,8 @@ import org.openqa.selenium.WebElement; ...@@ -36,6 +36,8 @@ import org.openqa.selenium.WebElement;
*/ */
public class CalendarPage { public class CalendarPage {
public static final By calendarToolbatBy = By.className("o_cal_toptoolbar");
@Drone @Drone
private WebDriver browser; private WebDriver browser;
...@@ -47,8 +49,13 @@ public class CalendarPage { ...@@ -47,8 +49,13 @@ public class CalendarPage {
this.browser = browser; this.browser = browser;
} }
/**
* Don't forget that the calendar is a javascript application. You need
* to wait until scripts, css and data are loaded before asserting.
*
* @return The calendar page
*/
public CalendarPage assertOnCalendar() { public CalendarPage assertOnCalendar() {
By calendarToolbatBy = By.className("o_cal_toptoolbar");
List<WebElement> calendarToolbarsEl = browser.findElements(calendarToolbatBy); List<WebElement> calendarToolbarsEl = browser.findElements(calendarToolbatBy);
Assert.assertFalse(calendarToolbarsEl.isEmpty()); Assert.assertFalse(calendarToolbarsEl.isEmpty());
return this; return this;
......
...@@ -128,6 +128,7 @@ public class GroupPage { ...@@ -128,6 +128,7 @@ public class GroupPage {
public CalendarPage openCalendar() { public CalendarPage openCalendar() {
openMenuItem(calendarTool); openMenuItem(calendarTool);
OOGraphene.waitElement(CalendarPage.calendarToolbatBy, 2, browser);
return new CalendarPage(browser); return new CalendarPage(browser);
} }
......
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.selenium.page.repository;
import java.io.File;
import org.junit.Assert;
import org.olat.selenium.page.NavigationPage;
import org.olat.selenium.page.graphene.OOGraphene;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
/**
*
* Initial date: 04.12.2015<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
public class CPEditorPage {
private WebDriver browser;
public CPEditorPage(WebDriver browser) {
this.browser = browser;
}
public CPEditorPage clickRoot() {
By rootBy = By.cssSelector("ul.o_tree_l0 span.o_tree_link.o_tree_l0 a");
browser.findElement(rootBy).click();
OOGraphene.waitBusy(browser);
return this;
}
public CPEditorPage selectPage(String title) {
By pageBy = By.xpath("//a[span[text()[contains(.,'" + title + "')]]]");
browser.findElement(pageBy).click();
OOGraphene.waitBusy(browser);
return this;
}
public CPEditorPage deletePage() {
By deleteBy = By.cssSelector("a.o_sel_cp_delete_link");
browser.findElement(deleteBy).click();
OOGraphene.waitBusy(browser);
//confirm
By popup = By.cssSelector("div.modal-dialog");
OOGraphene.waitElement(popup, 2, browser);
By deleteMenuAndFileBy = By.xpath("//div[contains(@class,'modal-dialog')]//a[contains(@href,'link_0')]");
browser.findElement(deleteMenuAndFileBy).click();
OOGraphene.waitBusy(browser);
return this;
}
public CPEditorPage newPage(String title) {
By newBy = By.cssSelector("a.o_sel_cp_new_link");
browser.findElement(newBy).click();
OOGraphene.waitBusy(browser);
return fillMetadataForm(title);
}
public CPEditorPage editMetadata(String title) {
By metadataBy = By.cssSelector("a.o_sel_cp_edit_metadata");
browser.findElement(metadataBy).click();
OOGraphene.waitBusy(browser);
return fillMetadataForm(title);
}
public CPEditorPage importPage(File page) {
By metadataBy = By.cssSelector("a.o_sel_cp_import_link");
browser.findElement(metadataBy).click();
OOGraphene.waitBusy(browser);
//wait popup
By metadataPopupBy = By.cssSelector("fieldset.o_sel_cp_import");
OOGraphene.waitElement(metadataPopupBy, 2, browser);
By inputBy = By.cssSelector("fieldset.o_sel_cp_import .o_fileinput input[type='file']");
OOGraphene.uploadFile(inputBy, page, browser);
OOGraphene.waitingALittleLonger();//wait event
//ok save
By saveBy = By.cssSelector("fieldset.o_sel_cp_import button.btn-primary");
browser.findElement(saveBy).click();
OOGraphene.waitBusy(browser);
return this;
}
public CPEditorPage closeMetadataForm() {
//wait popup
By metadataPopupBy = By.cssSelector("fieldset.o_sel_cp_metadata");
OOGraphene.waitElement(metadataPopupBy, 2, browser);
//ok save
By saveBy = By.cssSelector("fieldset.o_sel_cp_metadata button.btn-primary");
browser.findElement(saveBy).click();
OOGraphene.waitBusy(browser);
return this;
}
public CPEditorPage fillMetadataForm(String title) {
//wait popup
By metadataPopupBy = By.cssSelector("fieldset.o_sel_cp_metadata");
OOGraphene.waitElement(metadataPopupBy, 2, browser);
//write title
By titleBy = By.cssSelector(".o_sel_cp_title input[type='text']");
WebElement titleEl = browser.findElement(titleBy);
titleEl.clear();
titleEl.sendKeys(title);
//ok save
By saveBy = By.cssSelector("fieldset.o_sel_cp_metadata button.btn-primary");
browser.findElement(saveBy).click();
OOGraphene.waitBusy(browser);
return this;
}
public CPPage clickToolbarBack() {
OOGraphene.closeBlueMessageWindow(browser);
browser.findElement(NavigationPage.toolbarBackBy).click();
OOGraphene.waitBusy(browser);
WebElement main = browser.findElement(By.id("o_main_wrapper"));
Assert.assertTrue(main.isDisplayed());
return new CPPage(browser);
}
}
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.selenium.page.repository;
import java.util.List;
import org.jboss.arquillian.graphene.Graphene;
import org.junit.Assert;
import org.olat.selenium.page.graphene.OOGraphene;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
/**
*
* Initial date: 04.12.2015<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
public class CPPage {
private final By toolsMenu = By.cssSelector("ul.o_sel_repository_tools");
private static final By settingsMenu = By.cssSelector("ul.o_sel_course_settings");
private WebDriver browser;
public CPPage(WebDriver browser) {
this.browser = browser;
}
public CPPage assertInIFrame(By by) {
By iframeBy = By.xpath("//iframe");
List<WebElement> iframes = browser.findElements(iframeBy);
browser = browser.switchTo().frame(iframes.get(0));
List<WebElement> elements = browser.findElements(by);
Assert.assertFalse(elements.isEmpty());
browser = browser.switchTo().defaultContent();
return this;
}
public CPPage assertPageDeleted(String title) {
By pageBy = By.xpath("//a[@title='" + title + "']");
List<WebElement> pageEls = browser.findElements(pageBy);
Assert.assertTrue(pageEls.isEmpty());
return this;
}
public CPPage selectPage(String title) {
By pageBy = By.xpath("//a[@title='" + title + "']");
browser.findElement(pageBy).click();
OOGraphene.waitBusy(browser);
return this;
}
public CPEditorPage openEditor() {
if(!browser.findElement(toolsMenu).isDisplayed()) {
openToolsMenu();
}
By editBy = By.xpath("//ul[contains(@class,'o_sel_repository_tools')]//a[contains(@onclick,'edit.cmd')]");
browser.findElement(editBy).click();
OOGraphene.waitBusy(browser);
return new CPEditorPage(browser);
}
/**
* Open the access configuration
*
* @return
*/
public RepositoryAccessPage accessConfiguration() {
if(!browser.findElement(settingsMenu).isDisplayed()) {
openSettingsMenu();
}
By accessConfigBy = By.cssSelector("a.o_sel_course_access");
browser.findElement(accessConfigBy).click();
OOGraphene.waitBusy(browser);
WebElement main = browser.findElement(By.id("o_main_container"));
return Graphene.createPageFragment(RepositoryAccessPage.class, main);
}
/**
* Open the tools menu
* @return
*/
public CPPage openToolsMenu() {
By toolsMenuCaret = By.cssSelector("a.o_sel_repository_tools");
browser.findElement(toolsMenuCaret).click();
OOGraphene.waitElement(toolsMenu, browser);
return this;
}
/**
* Open the settings menu.
* @return
*/
public CPPage openSettingsMenu() {
By toolsMenuCaret = By.cssSelector("a.o_sel_course_settings");
browser.findElement(toolsMenuCaret).click();
OOGraphene.waitElement(settingsMenu, browser);
return this;
}
}
...@@ -131,6 +131,10 @@ public class FeedPage { ...@@ -131,6 +131,10 @@ public class FeedPage {
} }
public FeedPage fillPostForm(String title, String summary, String content) { public FeedPage fillPostForm(String title, String summary, String content) {
//wait that the popup is available
By postFormBy = By.cssSelector("fieldset.o_sel_blog_form");
OOGraphene.waitElement(postFormBy, 2, browser);
By titleBy = By.cssSelector("div.o_sel_blog_title input[type='text']"); By titleBy = By.cssSelector("div.o_sel_blog_title input[type='text']");
browser.findElement(titleBy).sendKeys(title); browser.findElement(titleBy).sendKeys(title);
......
src/test/java/org/olat/test/file_resources/IMG_1482.JPG

6.7 KiB

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Small HTML page</title>
</head>
<body>
<h1>Small HTML page</h1>
<p>This is a small HTML page for the selenium tests.</p>
</body>
</html>
\ No newline at end of file
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