From 8d16c56e05bc5aeaee689ed0a839e6bf0d115eca Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Mon, 9 Mar 2020 21:26:29 +0100 Subject: [PATCH] no-jira: update selenium test --- ...CourseNodeDisplayConfigFormController.java | 28 ++------ .../org/olat/selenium/AssessmentTest.java | 10 +-- .../org/olat/selenium/CourseElementTest.java | 11 ++++ .../java/org/olat/selenium/CourseTest.java | 40 +++++++++--- .../page/course/CoursePageFragment.java | 4 -- .../page/course/STConfigurationPage.java | 64 +++++++++++++++++++ 6 files changed, 119 insertions(+), 38 deletions(-) create mode 100644 src/test/java/org/olat/selenium/page/course/STConfigurationPage.java diff --git a/src/main/java/org/olat/course/nodes/st/STCourseNodeDisplayConfigFormController.java b/src/main/java/org/olat/course/nodes/st/STCourseNodeDisplayConfigFormController.java index e5aea5b08b9..16502c0c6a9 100644 --- a/src/main/java/org/olat/course/nodes/st/STCourseNodeDisplayConfigFormController.java +++ b/src/main/java/org/olat/course/nodes/st/STCourseNodeDisplayConfigFormController.java @@ -22,7 +22,6 @@ package org.olat.course.nodes.st; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; -import org.olat.core.gui.components.form.flexible.FormUIFactory; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.SpacerElement; @@ -104,37 +103,29 @@ public class STCourseNodeDisplayConfigFormController extends FormBasicController updateUI(); } - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose() - */ @Override protected void doDispose() { // nothing to dispose } - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest) - */ @Override protected void formOK(UserRequest ureq) { // No explicit submit button. Form is submitted every time when a radio or // checkbox is clicked (OLAT-5610) } - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer, - * org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest) - */ @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormTitle("config.fieldset.view"); setFormContextHelp("Knowledge Transfer#_struktur"); - FormUIFactory formFact = FormUIFactory.getInstance(); + formLayout.setElementCssClass("o_sel_st_overview_settings"); + // Display type String[] displayTypeValues = new String[] { translate("form.system"), translate("form.peekview"), translate("form.self"), translate("form.delegate") }; - displayTypeRadios = formFact.addRadiosVertical("selforsystemoverview", formLayout, displayTypeKeys, displayTypeValues); + displayTypeRadios = uifactory.addRadiosVertical("selforsystemoverview", formLayout, displayTypeKeys, displayTypeValues); displayTypeRadios.addActionListener(FormEvent.ONCLICK); + displayTypeRadios.setElementCssClass("o_sel_st_display_type"); if (displayConfig.equals(STCourseNodeEditController.CONFIG_VALUE_DISPLAY_FILE)) { displayTypeRadios.select("file", true); } else if (displayConfig.equals(STCourseNodeEditController.CONFIG_VALUE_DISPLAY_PEEKVIEW)) { @@ -147,7 +138,7 @@ public class STCourseNodeDisplayConfigFormController extends FormBasicController // Peekview details configuration - allow only MAX_PEEKVIEW_CHILD_NODES // peekviews to be selected if (selectedPeekviewChildKeys.length > 0) { - selectedPeekviewChildren = formFact.addCheckboxesVertical("selectedPeekviewChildren", formLayout, + selectedPeekviewChildren = uifactory.addCheckboxesVertical("selectedPeekviewChildren", formLayout, selectedPeekviewChildKeys, selectedPeekviewChildValues, selectedPeekviewChildCssClasses, 1); selectedPeekviewChildren.setLabel("selectedPeekviewChildren", new String[] { STCourseNodeConfiguration.MAX_PEEKVIEW_CHILD_NODES + "" }); @@ -160,8 +151,8 @@ public class STCourseNodeDisplayConfigFormController extends FormBasicController } // Number of rows (only available in system or peekview type) - spacerCols = formFact.addSpacerElement("spacerCols", formLayout, true); - displayTwoColumns = formFact.addCheckboxesHorizontal("displayTwoColumns", formLayout, new String[] { "on" }, new String[] { "" }); + spacerCols = uifactory.addSpacerElement("spacerCols", formLayout, true); + displayTwoColumns = uifactory.addCheckboxesHorizontal("displayTwoColumns", formLayout, new String[] { "on" }, new String[] { "" }); displayTwoColumns.setLabel("displayTwoColumns", null); displayTwoColumns.addActionListener(FormEvent.ONCLICK); } @@ -178,11 +169,6 @@ public class STCourseNodeDisplayConfigFormController extends FormBasicController } } - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formInnerEvent(org.olat.core.gui.UserRequest, - * org.olat.core.gui.components.form.flexible.FormItem, - * org.olat.core.gui.components.form.flexible.impl.FormEvent) - */ @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { super.formInnerEvent(ureq, source, event); diff --git a/src/test/java/org/olat/selenium/AssessmentTest.java b/src/test/java/org/olat/selenium/AssessmentTest.java index 25440e41db1..b5e133c951f 100644 --- a/src/test/java/org/olat/selenium/AssessmentTest.java +++ b/src/test/java/org/olat/selenium/AssessmentTest.java @@ -1727,11 +1727,11 @@ public class AssessmentTest extends Deployments { public void taskOptionalWithIndividualScore(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { - UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO author = new UserRestClient(deploymentUrl).createRandomAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); - LoginPage authorLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course @@ -1746,6 +1746,7 @@ public class AssessmentTest extends Deployments { String gtaNodeTitle = "Individual task 1"; CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); + // default on root node -> select first child courseEditor .createNode("ita") .nodeTitle(gtaNodeTitle); @@ -1814,11 +1815,10 @@ public class AssessmentTest extends Deployments { .openMyCourses() .select(courseTitle); - //go to the group task + //go to the group task with auto select first node CoursePageFragment ryomouTestCourse = new CoursePageFragment(ryomouBrowser); ryomouTestCourse - .clickTree() - .selectWithTitle(gtaNodeTitle); + .clickTree(); GroupTaskPage ryomouTask = new GroupTaskPage(ryomouBrowser); ryomouTask diff --git a/src/test/java/org/olat/selenium/CourseElementTest.java b/src/test/java/org/olat/selenium/CourseElementTest.java index 83d20f9af53..d724d235942 100644 --- a/src/test/java/org/olat/selenium/CourseElementTest.java +++ b/src/test/java/org/olat/selenium/CourseElementTest.java @@ -56,8 +56,10 @@ import org.olat.selenium.page.course.MemberListConfigurationPage; import org.olat.selenium.page.course.MemberListPage; import org.olat.selenium.page.course.MembersPage; import org.olat.selenium.page.course.ParticipantFolderPage; +import org.olat.selenium.page.course.STConfigurationPage; import org.olat.selenium.page.course.SinglePage; import org.olat.selenium.page.course.SinglePageConfigurationPage; +import org.olat.selenium.page.course.STConfigurationPage.DisplayType; import org.olat.selenium.page.forum.ForumPage; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.repository.AuthoringEnvPage; @@ -1086,6 +1088,15 @@ public class CourseElementTest extends Deployments { String nodeTitle = "Members 2"; CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); + + courseEditor + .selectRoot(); + + STConfigurationPage stConfig = new STConfigurationPage(browser); + stConfig + .selectOverview() + .setDisplay(DisplayType.peekview); + courseEditor .createNode("cmembers") .nodeTitle(nodeTitle); diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java index f33f377c7dc..7a1ee9ecece 100644 --- a/src/test/java/org/olat/selenium/CourseTest.java +++ b/src/test/java/org/olat/selenium/CourseTest.java @@ -57,6 +57,8 @@ import org.olat.selenium.page.course.CourseWizardPage; import org.olat.selenium.page.course.MembersPage; import org.olat.selenium.page.course.PublisherPageFragment; import org.olat.selenium.page.course.RemindersPage; +import org.olat.selenium.page.course.STConfigurationPage; +import org.olat.selenium.page.course.STConfigurationPage.DisplayType; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.repository.AuthoringEnvPage; import org.olat.selenium.page.repository.AuthoringEnvPage.ResourceType; @@ -258,8 +260,7 @@ public class CourseTest extends Deployments { //open course editor CoursePageFragment course = CoursePageFragment.getCourse(browser); course - .assertOnCoursePage() - .assertOnTitle(title); + .assertOnCoursePage(); //assert the 5 nodes are there and click them By nodeBy = By.cssSelector("span.o_tree_link.o_tree_l1.o_tree_level_label_leaf>a"); @@ -477,6 +478,7 @@ public class CourseTest extends Deployments { .assertOnTitle(changedNodeTitlev3); } + /** * Test that renaming the root node is reflected after * publishing. @@ -508,12 +510,22 @@ public class CourseTest extends Deployments { .assertOnCoursePage() .assertOnTitle(courseTitle) .openToolsMenu() - .edit(); + .edit() + .assertOnEditor() + .selectRoot(); + + // configure the simplest overview + STConfigurationPage stConfig = new STConfigurationPage(browser); + stConfig + .selectOverview() + .setDisplay(DisplayType.system); + String nodeTitle = "More informations"; //create a course element of type info messages course = editor - .assertOnEditor() + .createNode("info") + .nodeTitle(nodeTitle) .autoPublish(); //check that the root node has the name of the repository entry course @@ -926,11 +938,21 @@ public class CourseTest extends Deployments { //open course editor CoursePageFragment course = new CoursePageFragment(browser); - RepositoryAccessPage courseAccess = course + CourseEditorPageFragment courseEditor = course .openToolsMenu() - .edit() + .edit(); + courseEditor + .selectRoot(); + // configure the peekview + STConfigurationPage stConfig = new STConfigurationPage(browser); + stConfig + .selectOverview() + .setDisplay(DisplayType.peekview); + + course = courseEditor .createNode("info") - .autoPublish() + .autoPublish(); + RepositoryAccessPage courseAccess = course .settings() .accessConfiguration() .setUserAccess(UserAccess.booking) @@ -1020,12 +1042,14 @@ public class CourseTest extends Deployments { .fillCreateCourseForm(title, false) .assertOnInfos(); + String infoMessageTitle = "Some informations"; //open course editor CoursePageFragment course = new CoursePageFragment(browser); RepositoryAccessPage courseAccess = course .openToolsMenu() .edit() .createNode("info") + .nodeTitle(infoMessageTitle) .autoPublish() .settings() .accessConfiguration() @@ -1057,7 +1081,7 @@ public class CourseTest extends Deployments { //check the course CoursePageFragment bookedCourse = CoursePageFragment.getCourse(userBrowser); bookedCourse - .assertOnTitle(title); + .assertOnTitle(infoMessageTitle); //Author go in the list of bookings of the course BookingPage bookingList = course diff --git a/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java b/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java index a45dcb328a4..15bf5fea4ee 100644 --- a/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java @@ -89,10 +89,6 @@ public class CoursePageFragment { public CoursePageFragment assertOnTitle(String displayName) { By titleBy = By.xpath("//h2[text()[contains(.,'" + displayName + "')]]"); OOGraphene.waitElement(titleBy, browser); - - WebElement titleEl = browser.findElement(titleBy); - Assert.assertNotNull(titleEl); - Assert.assertTrue(titleEl.isDisplayed()); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/STConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/STConfigurationPage.java new file mode 100644 index 00000000000..4b60e38a344 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/course/STConfigurationPage.java @@ -0,0 +1,64 @@ +/** + * <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.course; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Initial date: 9 mars 2020<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class STConfigurationPage { + + private final WebDriver browser; + + public STConfigurationPage(WebDriver browser) { + this.browser = browser; + } + + public STConfigurationPage selectOverview() { + By configBy = By.cssSelector("fieldset.o_sel_st_overview_settings"); + OOGraphene.selectTab("o_node_config", configBy, browser); + return this; + } + + public STConfigurationPage setDisplay(DisplayType type) { + By displayTypeBy = By.xpath("//fieldset[contains(@class,'o_sel_st_overview_settings')]//div[contains(@class,'o_sel_st_display_type')]//input[@type='radio'][@value='" + type + "']"); + OOGraphene.click(displayTypeBy, browser); + OOGraphene.waitBusy(browser); + + if(type == DisplayType.system || type == DisplayType.peekview) { + By displayTwoColumnsBy = By.xpath("//fieldset[contains(@class,'o_sel_st_overview_settings')]//input[@type='checkbox'][@name='displayTwoColumns']"); + OOGraphene.waitElement(displayTwoColumnsBy, browser); + } + return this; + } + + public enum DisplayType { + system, + peekview, + file, + delegate + } +} -- GitLab