From 1471dd54bb0d945226d41d3225f0650790553a98 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Tue, 17 Dec 2019 13:52:33 +0100 Subject: [PATCH] no-jira: update selenium tests for learn path --- .../org/olat/selenium/AssessmentTest.java | 23 +++++++- .../org/olat/selenium/CourseElementTest.java | 11 +++- .../java/org/olat/selenium/CourseTest.java | 13 ++--- .../java/org/olat/selenium/ImsQTI21Test.java | 53 ++++++++++++++++++- .../page/course/CourseEditorPageFragment.java | 2 +- .../page/course/CoursePageFragment.java | 20 ++++++- .../selenium/page/course/MembersPage.java | 52 ++++++++++++++++++ 7 files changed, 158 insertions(+), 16 deletions(-) diff --git a/src/test/java/org/olat/selenium/AssessmentTest.java b/src/test/java/org/olat/selenium/AssessmentTest.java index 1450da951bf..7c2c403bc2b 100644 --- a/src/test/java/org/olat/selenium/AssessmentTest.java +++ b/src/test/java/org/olat/selenium/AssessmentTest.java @@ -127,8 +127,27 @@ public class AssessmentTest extends Deployments { .quickPublish(); //open the course and see the test start page - courseEditor - .clickToolbarBack() + CoursePageFragment course = courseEditor + .clickToolbarBack(); + + // make the author a participant too + course + .members() + .selectMembers() + .openMembership(author.getFirstName()) + .editRepositoryMembership(Boolean.TRUE) + .saveMembership() + .clickToolbarBack(); + // close the course + course + .closeCourse(); + + // reopen the course as participant (default) + navBar + .openAuthoringEnvironment() + .selectResource(courseTitle); + + course .clickTree() .selectWithTitle(testNodeTitle); diff --git a/src/test/java/org/olat/selenium/CourseElementTest.java b/src/test/java/org/olat/selenium/CourseElementTest.java index 3f286918ad4..76913224840 100644 --- a/src/test/java/org/olat/selenium/CourseElementTest.java +++ b/src/test/java/org/olat/selenium/CourseElementTest.java @@ -185,7 +185,7 @@ public class CourseElementTest extends Deployments { // publish the course new RepositoryEditDescriptionPage(browser) .clickToolbarBack(); - CoursePageFragment.getCourse(browser) + CoursePageFragment course = CoursePageFragment.getCourse(browser) .edit() .autoPublish(); @@ -194,6 +194,15 @@ public class CourseElementTest extends Deployments { .back() .assertOnStart(); + // make the author a participant too + course + .members() + .selectMembers() + .openMembership(author.getFirstName()) + .editRepositoryMembership(Boolean.TRUE) + .saveMembership() + .clickToolbarBack(); + //log out new UserToolsPage(browser) .logout(); diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java index 4e5499c33eb..b2559443a5d 100644 --- a/src/test/java/org/olat/selenium/CourseTest.java +++ b/src/test/java/org/olat/selenium/CourseTest.java @@ -247,18 +247,11 @@ public class CourseTest extends Deployments { .nextCatalog() .finish(); OOGraphene.closeBlueMessageWindow(browser); - - RepositorySettingsPage settings = new RepositorySettingsPage(browser); - //from description editor, back to details and launch the course - settings - .assertOnInfos(); - settings - .back(); - + //open course editor CoursePageFragment course = CoursePageFragment.getCourse(browser); course - .assertOnCoursePage() + .assertOnLearnPath() .assertOnTitle(title); //assert the 5 nodes are there and click them @@ -266,7 +259,7 @@ public class CourseTest extends Deployments { List<WebElement> nodes = browser.findElements(nodeBy); Assert.assertEquals(5, nodes.size()); for(int i=0; i<5; i++) { - By linkBy = By.xpath("//div[contains(@class,'o_tree')]//li[" + (i+1) + "]/div/span[contains(@class,'o_tree_link')][contains(@class,'o_tree_l1')][contains(@class,'o_tree_level_label_leaf')]/a[span]"); + By linkBy = By.xpath("//div[conains(@class,'o_tree')]//li[" + (i+1) + "]/div/span[contains(@class,'o_tree_link')][contains(@class,'o_tree_l1')][contains(@class,'o_tree_level_label_leaf')]/a[span]"); OOGraphene.waitElement(linkBy, browser); browser.findElement(linkBy).click(); OOGraphene.waitBusy(browser); diff --git a/src/test/java/org/olat/selenium/ImsQTI21Test.java b/src/test/java/org/olat/selenium/ImsQTI21Test.java index 1c5213922b1..7c87f92ca21 100644 --- a/src/test/java/org/olat/selenium/ImsQTI21Test.java +++ b/src/test/java/org/olat/selenium/ImsQTI21Test.java @@ -588,10 +588,27 @@ public class ImsQTI21Test extends Deployments { .publish() .quickPublish(); - //open the course and see the CP + //open the course CoursePageFragment course = courseEditor .clickToolbarBack(); + // make the author a participant too + course + .members() + .selectMembers() + .openMembership(author.getFirstName()) + .editRepositoryMembership(Boolean.TRUE) + .saveMembership() + .clickToolbarBack(); + // close the course + course + .closeCourse(); + + // reopen the course as participant (default) + navBar + .openAuthoringEnvironment() + .selectResource(courseTitle); + course .clickTree() .selectWithTitle(testNodeTitle); @@ -681,6 +698,23 @@ public class ImsQTI21Test extends Deployments { CoursePageFragment course = courseEditor .clickToolbarBack(); + // make the author a participant too + course + .members() + .selectMembers() + .openMembership(author.getFirstName()) + .editRepositoryMembership(Boolean.TRUE) + .saveMembership() + .clickToolbarBack(); + // close the course + course + .closeCourse(); + + // reopen the course as participant (default) + navBar + .openAuthoringEnvironment() + .selectResource(courseTitle); + course .clickTree() .selectWithTitle(testNodeTitle); @@ -779,6 +813,23 @@ public class ImsQTI21Test extends Deployments { CoursePageFragment course = courseEditor .clickToolbarBack(); + // make the author a participant too + course + .members() + .selectMembers() + .openMembership(author.getFirstName()) + .editRepositoryMembership(Boolean.TRUE) + .saveMembership() + .clickToolbarBack(); + // close the course + course + .closeCourse(); + + // reopen the course as participant (default) + navBar + .openAuthoringEnvironment() + .selectResource(courseTitle); + course .clickTree() .selectWithTitle(testNodeTitle); diff --git a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java index 3000d796055..670f29dac3f 100644 --- a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java @@ -525,7 +525,7 @@ public class CourseEditorPageFragment { /** * Click the back button * - * @return + * @return Itself */ public CoursePageFragment clickToolbarBack() { browser.findElement(toolbarBackBy).click(); 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 b91c8a784e7..3589a5ec017 100644 --- a/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java @@ -79,9 +79,15 @@ public class CoursePageFragment { return this; } + public CoursePageFragment assertOnLearnPath() { + By menuPathBy = By.cssSelector("div.o_tree.o_tree_root_visible.o_course_menu.o_lp_tree"); + OOGraphene.waitElement(menuPathBy, browser); + return this; + } + public CoursePageFragment assertOnTitle(String displayName) { By titleBy = By.xpath("//h2[text()[contains(.,'" + displayName + "')]]"); - OOGraphene.waitElement(titleBy, 5, browser); + OOGraphene.waitElement(titleBy, browser); WebElement titleEl = browser.findElement(titleBy); Assert.assertNotNull(titleEl); @@ -290,4 +296,16 @@ public class CoursePageFragment { OOGraphene.waitElement(statusViewBy, browser); return this; } + + + /** + * Close the course + */ + public CoursePageFragment closeCourse() { + By closeBy = By.cssSelector("ol.breadcrumb li.o_breadcrumb_close a"); + OOGraphene.waitElement(closeBy, browser); + browser.findElement(closeBy).click(); + OOGraphene.waitBusy(browser); + return this; + } } diff --git a/src/test/java/org/olat/selenium/page/course/MembersPage.java b/src/test/java/org/olat/selenium/page/course/MembersPage.java index 58c50605fdf..8d6d4d71d6c 100644 --- a/src/test/java/org/olat/selenium/page/course/MembersPage.java +++ b/src/test/java/org/olat/selenium/page/course/MembersPage.java @@ -168,6 +168,58 @@ public class MembersPage { .finish(); } + /** + * @param name The name of the user + * @return Itself + */ + public MembersPage openMembership(String name) { + By toolBy = By.xpath("//div//tr[td/a[text()[contains(.,'" + name+ "')]]]/td/a[i[contains(@class,'o_icon_actions')]]"); + OOGraphene.waitElement(toolBy, browser); + browser.findElement(toolBy).click(); + OOGraphene.waitCallout(browser); + + By editBy = By.xpath("//div[contains(@class,'popover')]//ul[contains(@class,'o_dropdown')]/li/a[contains(@onclick,'tbl_edit')]"); + browser.findElement(editBy).click(); + + OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialog(browser); + return this; + } + + /** + * + * @param participant true/false to change membership + * @return Itself + */ + public MembersPage editRepositoryMembership(Boolean participant) { + if(participant != null) { + By participantBy = By.cssSelector(".o_sel_edit_permissions label input[name='repoRights'][type='checkbox'][value='participant']"); + WebElement participantEl = browser.findElement(participantBy); + OOGraphene.check(participantEl, participant); + OOGraphene.waitBusy(browser); + } + return this; + } + + /** + * Save the member ship of a user. + * + * @return Itself + */ + public MembersPage saveMembership() { + By saveBy = By.cssSelector("div.modal-content div.o_button_group button.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + + // confirm email + By confirmNoMailBy = By.xpath("//div[contains(@class,'modal-footer')]/a[contains(@onclick,'link_1')]"); + OOGraphene.waitElement(confirmNoMailBy, browser); + browser.findElement(confirmNoMailBy).click(); + OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialogDisappears(browser); + return this; + } + /** * Check if the user with the specified first name is in the member list. * @param user -- GitLab