diff --git a/src/main/java/org/olat/ims/cp/ui/CPContentController.java b/src/main/java/org/olat/ims/cp/ui/CPContentController.java index 582db030a935a0ebc3bffd9252e560ec5acca11f..777fa4dfa26e1ffe8ff64d11201bc8d02997ebe5 100644 --- a/src/main/java/org/olat/ims/cp/ui/CPContentController.java +++ b/src/main/java/org/olat/ims/cp/ui/CPContentController.java @@ -108,12 +108,14 @@ public class CPContentController extends BasicController { editMetadataLink = LinkFactory.createToolLink("contentcontroller.editlink", "contentcontroller.editlink", translate("contentcontroller.editlink_title"), this); editMetadataLink.setIconLeftCSS("o_icon o_icon-lg o_icon_edit"); + editMetadataLink.setElementCssClass("o_sel_cp_edit_metadata"); editMetadataLink.setTooltip(translate("contentcontroller.editlink_title")); toolbar.addTool(editMetadataLink, Align.right); previewLink = LinkFactory.createToolLink("contentcontroller.previewlink", "contentcontroller.previewlink", translate("contentcontroller.previewlink_title"), this); previewLink.setIconLeftCSS("o_icon o_icon-lg o_icon_preview"); + previewLink.setElementCssClass("o_sel_cp_preview"); previewLink.setTooltip(translate("contentcontroller.previewlink_title")); toolbar.addTool(previewLink, Align.right); diff --git a/src/main/java/org/olat/ims/cp/ui/CPFileImportController.java b/src/main/java/org/olat/ims/cp/ui/CPFileImportController.java index edc3bdbbce65a560b7fe325e5ce51d69d616a46e..bbab7ac0d017522104b6eac0b5cc06c52121ffc5 100644 --- a/src/main/java/org/olat/ims/cp/ui/CPFileImportController.java +++ b/src/main/java/org/olat/ims/cp/ui/CPFileImportController.java @@ -111,7 +111,7 @@ public class CPFileImportController extends FormBasicController { */ @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - setFormTitle("cpfileuploadcontroller.form.title"); + formLayout.setElementCssClass("o_sel_cp_import"); setFormDescription("cpfileuploadcontroller.form.description"); file = uifactory.addFileElement(getWindowControl(), "file", flc); diff --git a/src/main/java/org/olat/ims/cp/ui/CPMetadataEditController.java b/src/main/java/org/olat/ims/cp/ui/CPMetadataEditController.java index a0b0cdc1076084270c6ba28ce99e4e849a4f14a2..5973d6a810a56175fe88687a82888f909860d748 100644 --- a/src/main/java/org/olat/ims/cp/ui/CPMetadataEditController.java +++ b/src/main/java/org/olat/ims/cp/ui/CPMetadataEditController.java @@ -66,9 +66,11 @@ public class CPMetadataEditController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + formLayout.setElementCssClass("o_sel_cp_metadata"); // title-field String titleString = page.getTitle(); title = uifactory.addTextElement("title", "cpmd.flexi.title", 256, titleString, formLayout); + title.setElementCssClass("o_sel_cp_title"); title.setDisplaySize(32); title.setMandatory(true); title.setNotEmptyCheck("cpmd.flexi.mustbefilled"); diff --git a/src/main/java/org/olat/ims/cp/ui/CPTreeController.java b/src/main/java/org/olat/ims/cp/ui/CPTreeController.java index 06896ab7e0aded4e5aa1fcd298fd5052549807a1..301f20b25c525cf372d9225b12c24db8739cecdc 100644 --- a/src/main/java/org/olat/ims/cp/ui/CPTreeController.java +++ b/src/main/java/org/olat/ims/cp/ui/CPTreeController.java @@ -33,7 +33,6 @@ import org.dom4j.Element; import org.dom4j.tree.DefaultElement; import org.olat.core.gui.UserRequest; 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.LinkFactory; import org.olat.core.gui.components.stack.TooledStackedPanel; @@ -112,24 +111,28 @@ public class CPTreeController extends BasicController { importLink = LinkFactory.createToolLink("cptreecontroller.importlink", "cptreecontroller.importlink", translate("cptreecontroller.importlink_title"), this); importLink.setTooltip(translate("cptreecontroller.importlink_title")); + importLink.setElementCssClass("o_sel_cp_import_link"); importLink.setIconLeftCSS("o_icon o_icon-lg o_icon_import"); toolbar.addTool(importLink, Align.left); newLink = LinkFactory.createToolLink("cptreecontroller.newlink", "cptreecontroller.newlink", translate("cptreecontroller.newlink_title"), this); newLink.setTooltip(translate("cptreecontroller.newlink_title")); + newLink.setElementCssClass("o_sel_cp_new_link"); newLink.setIconLeftCSS("o_icon o_icon-lg o_icon_add"); toolbar.addTool(newLink, Align.left); copyLink = LinkFactory.createToolLink("cptreecontroller.copylink", "cptreecontroller.copylink", translate("cptreecontroller.copylink_title"), this); copyLink.setTooltip(translate("cptreecontroller.copylink_title")); + copyLink.setElementCssClass("o_sel_cp_copy_link"); copyLink.setIconLeftCSS("o_icon o_icon-lg o_icon_copy"); toolbar.addTool(copyLink, Align.left); deleteLink = LinkFactory.createToolLink("cptreecontroller.deletelink", "cptreecontroller.deletelink", translate("cptreecontroller.deletelink_title"), this); deleteLink.setTooltip(translate("cptreecontroller.deletelink_title")); + deleteLink.setElementCssClass("o_sel_cp_delete_link"); deleteLink.setIconLeftCSS("o_icon o_icon-lg o_icon_delete_item"); toolbar.addTool(deleteLink, Align.left); } @@ -319,8 +322,12 @@ public class CPTreeController extends BasicController { protected void event(UserRequest ureq, Component source, Event event) { if (source == importLink) { 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) { fireEvent(ureq, new Event("New Page")); @@ -477,15 +484,4 @@ public class CPTreeController extends BasicController { protected void doDispose() { 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(); - } } diff --git a/src/main/java/org/olat/modules/fo/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/fo/_i18n/LocalStrings_en.properties index 0f5f5d943e2790d71acb0c00d8faad3753708d6d..0f2fe39bc5a3e4e8265fcb48e6a57311d05a6bb4 100644 --- a/src/main/java/org/olat/modules/fo/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/fo/_i18n/LocalStrings_en.properties @@ -119,7 +119,8 @@ table.user.lastname=Name table.user.replies=Replies table.user.threads=Threads table.userfriendlyname=Author -use.pseudonym.label=Use a pseudonym +use.pseudonym=Posted as +use.pseudonym.label=Use alias viewswitch.flatview=all (flat) viewswitch.marked=marked viewswitch.messageview=one diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java index 06567945c8b3f0136f94eea845707f2d60e6e9f4..7df3bc831b3861c7bc9d691c0aa857c55f6cc76f 100644 --- a/src/test/java/org/olat/selenium/CourseTest.java +++ b/src/test/java/org/olat/selenium/CourseTest.java @@ -19,6 +19,7 @@ */ package org.olat.selenium; +import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; @@ -60,12 +61,14 @@ import org.olat.selenium.page.course.PublisherPageFragment.Access; import org.olat.selenium.page.forum.ForumPage; import org.olat.selenium.page.graphene.OOGraphene; 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.RepositoryAccessPage; import org.olat.selenium.page.repository.AuthoringEnvPage.ResourceType; import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess; import org.olat.selenium.page.repository.RepositoryEditDescriptionPage; import org.olat.test.ArquillianDeployments; +import org.olat.test.JunitTestHelper; import org.olat.test.rest.UserRestClient; import org.olat.user.restapi.UserVO; import org.openqa.selenium.By; @@ -1515,4 +1518,92 @@ public class CourseTest { .assertWithTitle(foTitle.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')]]")); + } } diff --git a/src/test/java/org/olat/selenium/page/core/CalendarPage.java b/src/test/java/org/olat/selenium/page/core/CalendarPage.java index 247c8fe1d3955dbd355861cb5c1558023d4c3366..d328e96c82ed4cb4f7535d1a5105013d3a3f55bf 100644 --- a/src/test/java/org/olat/selenium/page/core/CalendarPage.java +++ b/src/test/java/org/olat/selenium/page/core/CalendarPage.java @@ -36,6 +36,8 @@ import org.openqa.selenium.WebElement; */ public class CalendarPage { + public static final By calendarToolbatBy = By.className("o_cal_toptoolbar"); + @Drone private WebDriver browser; @@ -47,8 +49,13 @@ public class CalendarPage { 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() { - By calendarToolbatBy = By.className("o_cal_toptoolbar"); List<WebElement> calendarToolbarsEl = browser.findElements(calendarToolbatBy); Assert.assertFalse(calendarToolbarsEl.isEmpty()); return this; diff --git a/src/test/java/org/olat/selenium/page/group/GroupPage.java b/src/test/java/org/olat/selenium/page/group/GroupPage.java index 8416c84687bf3d8729e34080dfab358ddb5c8247..3f170291be11368987f1a6ba2d94372ceec3c7a2 100644 --- a/src/test/java/org/olat/selenium/page/group/GroupPage.java +++ b/src/test/java/org/olat/selenium/page/group/GroupPage.java @@ -128,6 +128,7 @@ public class GroupPage { public CalendarPage openCalendar() { openMenuItem(calendarTool); + OOGraphene.waitElement(CalendarPage.calendarToolbatBy, 2, browser); return new CalendarPage(browser); } diff --git a/src/test/java/org/olat/selenium/page/repository/CPEditorPage.java b/src/test/java/org/olat/selenium/page/repository/CPEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..e887884547b8d0a4a19334c7ed07897006e538b2 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/repository/CPEditorPage.java @@ -0,0 +1,147 @@ +/** + * <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); + } + +} diff --git a/src/test/java/org/olat/selenium/page/repository/CPPage.java b/src/test/java/org/olat/selenium/page/repository/CPPage.java new file mode 100644 index 0000000000000000000000000000000000000000..42b7269ff2c48cda0ad83d2fd90363b256996816 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/repository/CPPage.java @@ -0,0 +1,124 @@ +/** + * <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; + } + +} diff --git a/src/test/java/org/olat/selenium/page/repository/FeedPage.java b/src/test/java/org/olat/selenium/page/repository/FeedPage.java index c45504f3837bc2c992a1540f6e3b2454d77bc12a..d65d20ea0876caca9e11aab7c72343b96cb8d0bf 100644 --- a/src/test/java/org/olat/selenium/page/repository/FeedPage.java +++ b/src/test/java/org/olat/selenium/page/repository/FeedPage.java @@ -131,6 +131,10 @@ public class FeedPage { } 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']"); browser.findElement(titleBy).sendKeys(title); diff --git a/src/test/java/org/olat/test/file_resources/IMG_1482.JPG b/src/test/java/org/olat/test/file_resources/IMG_1482.JPG new file mode 100644 index 0000000000000000000000000000000000000000..47cf8ec15fcae0950cff7675f167bcfcdd940e3e Binary files /dev/null and b/src/test/java/org/olat/test/file_resources/IMG_1482.JPG differ diff --git a/src/test/java/org/olat/test/file_resources/page.html b/src/test/java/org/olat/test/file_resources/page.html new file mode 100644 index 0000000000000000000000000000000000000000..21973506f205e405fa60f0fbc91f221f341e4fee --- /dev/null +++ b/src/test/java/org/olat/test/file_resources/page.html @@ -0,0 +1,11 @@ +<!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