diff --git a/pom.xml b/pom.xml index 24228ad7d53332e5f10796fc4a185fef89b3241c..6ab06c3e1a9860d99e5dd514399f81c2dab1f690 100644 --- a/pom.xml +++ b/pom.xml @@ -2547,6 +2547,12 @@ <artifactId>arquillian-drone-impl</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.jboss.arquillian.extension</groupId> + <artifactId>arquillian-drone-webdriver-depchain</artifactId> + <type>pom</type> + <scope>test</scope> + </dependency> <dependency> <groupId>org.eu.ingwar.tools</groupId> <artifactId>arquillian-suite-extension</artifactId> @@ -2601,7 +2607,7 @@ <version>${version.selenium}</version> <scope>test</scope> </dependency> - <!-- Driver --> + <!-- Driver --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> @@ -2644,20 +2650,6 @@ <version>${version.selenium}</version> <scope>test</scope> </dependency> - <dependency> - <groupId>org.jboss.arquillian.graphene</groupId> - <artifactId>graphene-webdriver</artifactId> - <version>2.3.2</version> - <type>pom</type> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.seleniumhq.selenium</groupId> - <artifactId>htmlunit-driver</artifactId> - </exclusion> - </exclusions> - </dependency> - <!-- End test dependencies --> </dependencies> diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java index b49506277190680e2c1bbfb8d296648bf54d3efa..a0ec9189f8ce90fcb754b949586ab22dba8c359b 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java @@ -82,7 +82,7 @@ class JSDateChooserRenderer extends DefaultComponentRenderer { sb.append("<span class='input-group-addon'>") .append("<i class='o_icon o_icon_calendar' id=\"").append(triggerId).append("\" title=\"").appendHtmlEscaped(sourceTranslator.translate("calendar.choose")).append("\"") .append(" onclick=\"jQuery('#").append(receiverId).append("').datepicker('show');\"") - .append("></i></span>") + .append(">\u00A0</i></span>") .append("</div></div>");//input-group // date chooser javascript sb.append("<script>\n /* <![CDATA[ */ \n") diff --git a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java index cfb7b07bb4287fb92f7451b5aa0922f5cc5de521..b9b91209e9bd507a8413d06a1893501f03056ff5 100644 --- a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java +++ b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java @@ -76,13 +76,13 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre this.cssClass = cssClass; // Add back link before the bread crumbs, when pressed delegates click to current bread-crumb - 1 - backLink = LinkFactory.createCustomLink("back", "back", null, Link.NONTRANSLATED + Link.LINK_CUSTOM_CSS, null, this); + backLink = LinkFactory.createCustomLink("back", "back", "\u00A0", Link.NONTRANSLATED + Link.LINK_CUSTOM_CSS, null, this); backLink.setIconLeftCSS("o_icon o_icon_back"); backLink.setTitle(translator.translate("back")); backLink.setAccessKey("b"); // allow navigation using keyboard // Add back link before the bread crumbs, when pressed delegates click to current bread-crumb - 1 - closeLink = LinkFactory.createCustomLink("close", "close", null, Link.NONTRANSLATED + Link.LINK_CUSTOM_CSS, null, this); + closeLink = LinkFactory.createCustomLink("close", "close", "\u00A0", Link.NONTRANSLATED + Link.LINK_CUSTOM_CSS, null, this); closeLink.setIconLeftCSS("o_icon o_icon_close_tool"); closeLink.setCustomDisplayText(translator.translate("close")); closeLink.setAccessKey("x"); // allow navigation using keyboard diff --git a/src/main/java/org/olat/course/editor/ChooseNodeController.java b/src/main/java/org/olat/course/editor/ChooseNodeController.java index 248e5ea639e285caf61f24caedc8908909695a76..59eed28ef73e57615b5e92671676197d6d8c48f6 100644 --- a/src/main/java/org/olat/course/editor/ChooseNodeController.java +++ b/src/main/java/org/olat/course/editor/ChooseNodeController.java @@ -136,7 +136,7 @@ public class ChooseNodeController extends BasicController { createdNode = newNodeConfig.getInstance(); // Set some default values - String title = new String(newNodeConfig.getLinkText(getLocale())); + String title = newNodeConfig.getLinkText(getLocale()); createdNode.setShortTitle(title); createdNode.setNoAccessExplanation(translate("form.noAccessExplanation.default")); diff --git a/src/main/java/org/olat/course/member/MembersManagementMainController.java b/src/main/java/org/olat/course/member/MembersManagementMainController.java index 7974490eaacafdfce7a5cda8df7f751f26e99f38..52da6db3a4117014bacce3c81d7591490bbdaac0 100644 --- a/src/main/java/org/olat/course/member/MembersManagementMainController.java +++ b/src/main/java/org/olat/course/member/MembersManagementMainController.java @@ -125,6 +125,7 @@ public class MembersManagementMainController extends MainLayoutBasicController i mainVC = createVelocityContainer("main_members"); columnLayoutCtr = new LayoutMain3ColsController(ureq, getWindowControl(), menuTree, mainVC, "members-" + repoEntry.getKey()); + columnLayoutCtr.addCssClassToMain("o_members_mgmt"); listenTo(columnLayoutCtr); putInitialPanel(columnLayoutCtr.getInitialComponent()); diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java b/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java index c5a496293c4a436bb66bdc012def7e52eccccb46..5f078b46335be9e1705d02c49a2cc7096ca05825 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java +++ b/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java @@ -422,7 +422,7 @@ public class LTIConfigForm extends FormBasicController { nameEl.setDisplaySize(16); pair.setNameEl(nameEl); - SingleSelection typeEl = uifactory.addDropdownSingleselect("typ_" + guid, customParamLayout, customTypeKeys, customTypeValues, null); + SingleSelection typeEl = uifactory.addDropdownSingleselect("typ_" + guid, null, customParamLayout, customTypeKeys, customTypeValues, null); typeEl.setUserObject(pair); typeEl.addActionListener(FormEvent.ONCHANGE); pair.setCustomType(typeEl); @@ -435,7 +435,7 @@ public class LTIConfigForm extends FormBasicController { typeEl.select("free", true); } - SingleSelection userPropsChoice = uifactory.addDropdownSingleselect("userprops_" + guid, customParamLayout, userPropKeys, userPropValues, null); + SingleSelection userPropsChoice = uifactory.addDropdownSingleselect("userprops_" + guid, null, customParamLayout, userPropKeys, userPropValues, null); userPropsChoice.setUserObject(pair); userPropsChoice.setVisible(userprops); if(userprops) { diff --git a/src/main/java/org/olat/course/nodes/cal/CalEditController.java b/src/main/java/org/olat/course/nodes/cal/CalEditController.java index ebb39b6d78ef178d8f0dbd0e68ab4092360231e7..6f702c4b9a99fdf8f4451482f17aa8b7cf1691e7 100644 --- a/src/main/java/org/olat/course/nodes/cal/CalEditController.java +++ b/src/main/java/org/olat/course/nodes/cal/CalEditController.java @@ -235,7 +235,7 @@ public class CalEditController extends ActivateableTabbableDefaultController imp boolean autoDate = getAutoDate(config); String[] keys = new String[]{"auto","selected"}; String[] values = new String[]{translate("pane.tab.auto_date"),translate("pane.tab.manual_date")}; - autoDateEl = uifactory.addRadiosVertical("pane.tab_auto_date", formLayout, keys, values); + autoDateEl = uifactory.addRadiosVertical("pane.tab_auto_date", null, formLayout, keys, values); autoDateEl.setHelpText(translate("fhelp.start_date")); autoDateEl.select(autoDate ? keys[0] : keys[1], autoDate); diff --git a/src/main/java/org/olat/group/ui/edit/_content/tab_bgGrpMngmnt.html b/src/main/java/org/olat/group/ui/edit/_content/tab_bgGrpMngmnt.html index 63a10029802d96997404d927fbd82b60d451440c..919488376a01ea2fe1df3b6225631b705ef99868 100644 --- a/src/main/java/org/olat/group/ui/edit/_content/tab_bgGrpMngmnt.html +++ b/src/main/java/org/olat/group/ui/edit/_content/tab_bgGrpMngmnt.html @@ -1,4 +1,4 @@ -<fieldset> +<fieldset class="o_sel_group_members_visibility"> <legend> $r.contextHelpWithWrapper("Group Administration#_gruppensystem_members") $r.translate("fieldset.legend.displaymembers")</legend> @@ -9,7 +9,7 @@ $r.translate("fieldset.legend.allow.leaving")</legend> $r.render("configMembers") </fieldset> -<fieldset> +<fieldset class="o_sel_group_members_mgmt"> <legend> $r.translate("group.edit.tab.members")</legend> <div class="o_button_group o_button_group_right"> diff --git a/src/main/java/org/olat/gui/control/_content/topnav.html b/src/main/java/org/olat/gui/control/_content/topnav.html index 6d496be71440c341cadfe2c75c480686de291d01..17de5981abc86cbd614d7ff86d92fa2f0bf20b5e 100644 --- a/src/main/java/org/olat/gui/control/_content/topnav.html +++ b/src/main/java/org/olat/gui/control/_content/topnav.html @@ -10,7 +10,7 @@ <a id="o_sel_navbar_my_menu_caret" href="javascript:OPOL.navbar.toggleRight();"> $r.render("portrait") <span>$myMenuLabel</span> - <b class="caret"></b> + <b class="caret"> </b> </a> </li> #elseif(!$isInvitee) diff --git a/src/main/java/org/olat/modules/webFeed/ui/ItemFormController.java b/src/main/java/org/olat/modules/webFeed/ui/ItemFormController.java index ebd95a14c0f699a5fcb0da4a3d86613fc85db802..14c8a53ac7f078785577ac0835738555f8553861 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/ItemFormController.java +++ b/src/main/java/org/olat/modules/webFeed/ui/ItemFormController.java @@ -130,7 +130,7 @@ public abstract class ItemFormController extends FormBasicController { richTextConfig.disableMedia(); content.setVisible(hasContent()); - file = uifactory.addFileElement(getWindowControl(), "file", flc); + file = uifactory.addFileElement(getWindowControl(), "file", null, flc); file.setLabel("feed.item.file.label", null); if (hasMandatoryMedia()) { file.setMandatory(true, "feed.item.file.mandatory"); diff --git a/src/test/java/org/olat/selenium/AssessmentTest.java b/src/test/java/org/olat/selenium/AssessmentTest.java index e6a0edae67a633be6bde98c6600ab0b7714c85bf..0caccd65ce145ea2f8958f9fc228c2fe1ef02f06 100644 --- a/src/test/java/org/olat/selenium/AssessmentTest.java +++ b/src/test/java/org/olat/selenium/AssessmentTest.java @@ -29,8 +29,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; @@ -79,8 +77,6 @@ public class AssessmentTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * An author upload a test, create a course with a test course @@ -92,16 +88,18 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void qti12Test(@InitialPage LoginPage authorLoginPage) + public void qti12Test() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "QTI-Test-1.2-" + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/e4_test.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -184,18 +182,20 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void qti12CourseWithAssessment(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void qti12CourseWithAssessment(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); - authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + //upload a test String qtiTestTitle = "QTI-Test-1.2-" + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/e4_test.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -245,13 +245,13 @@ public class AssessmentTest extends Deployments { .finish(); //Ryomou open the course - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -313,6 +313,7 @@ public class AssessmentTest extends Deployments { .selectUser(ryomou) .assertPassed(ryomou); } + /** * An author upload a SCORM resource, create a course and use the * SCORM within. It publish the course, add a participant to the @@ -328,18 +329,20 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void scormCourseWithAssessment(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void scormCourseWithAssessment(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); - authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + //upload a test String scormTitle = "SCORM - " + UUID.randomUUID(); URL scormUrl = JunitTestHelper.class.getResource("file_resources/very_simple_scorm.zip"); File scormFile = new File(scormUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(scormTitle, scormFile); @@ -352,7 +355,7 @@ public class AssessmentTest extends Deployments { .clickToolbarBack(); //create a course element of type Scorm with the scorm that we create above - String scormNodeTitle = "SCORM"; + String scormNodeTitle = "SCORM-Node"; CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); courseEditor @@ -385,13 +388,13 @@ public class AssessmentTest extends Deployments { .finish(); //Ryomou open the course - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -454,19 +457,22 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void assessmentMode_manual(@InitialPage LoginPage authorLoginPage, - @Drone @Student WebDriver ryomouBrowser, @Drone @Participant WebDriver kanuBrowser) + public void assessmentMode_manual(@Drone @Student WebDriver ryomouBrowser, + @Drone @Participant WebDriver kanuBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); - authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + //upload a test String qtiTestTitle = "QTI-Test-1.2-" + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/e4_test.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -510,7 +516,7 @@ public class AssessmentTest extends Deployments { courseRuntime.members().quickAdd(kanu); //Kanu log in - LoginPage kanuLoginPage = LoginPage.getLoginPage(kanuBrowser, deploymentUrl); + LoginPage kanuLoginPage = LoginPage.load(kanuBrowser, deploymentUrl); kanuLoginPage .loginAs(kanu.getLogin(), kanu.getPassword()) .resume(); @@ -530,7 +536,7 @@ public class AssessmentTest extends Deployments { .confirmStart(); //Ryomou opens the course - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()); //start the assessment @@ -597,16 +603,18 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void certificatesManuallyGenerated(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver reiBrowser) + public void certificatesManuallyGenerated(@Drone @User WebDriver reiBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); - authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + //create a course String courseTitle = "Course-With-Certificates-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); CoursePageFragment courseRuntime = navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -649,7 +657,7 @@ public class AssessmentTest extends Deployments { .generateCertificate(); //Participant log in - LoginPage reiLoginPage = LoginPage.getLoginPage(reiBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(reiBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); @@ -677,8 +685,7 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void certificatesGeneratedByTest(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver reiBrowser) + public void certificatesGeneratedByTest(@Drone @User WebDriver reiBrowser) throws IOException, URISyntaxException { //create an author and a participant @@ -688,10 +695,12 @@ public class AssessmentTest extends Deployments { URL testUrl = ArquillianDeployments.class.getResource("file_resources/e4_test.zip"); String testTitle = "E4Test-" + UUID.randomUUID(); new RepositoryRestClient(deploymentUrl, author).deployResource(new File(testUrl.toURI()), "-", testTitle); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Certif-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -741,13 +750,13 @@ public class AssessmentTest extends Deployments { .clickToolbarBack(); //Participant log in - LoginPage reiLoginPage = LoginPage.getLoginPage(reiBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(reiBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); //open the course - NavigationPage reiNavBar = new NavigationPage(reiBrowser); + NavigationPage reiNavBar = NavigationPage.load(reiBrowser); reiNavBar .openMyCourses() .select(courseTitle); @@ -787,17 +796,18 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void assessmentCourseElement(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void assessmentCourseElement(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-Assessment-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -851,7 +861,7 @@ public class AssessmentTest extends Deployments { .assertUserPassedCourseNode(assessmentNodeTitle); //Ryomou login - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); @@ -888,19 +898,20 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void taskWithGroupsAndStandardSettings(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser, + public void taskWithGroupsAndStandardSettings(@Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver kanuBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-group-task-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -972,10 +983,12 @@ public class AssessmentTest extends Deployments { .nextPermissions() .finish(); - groupPage.close(); + groupPage + .close(); //go to the course CoursePageFragment coursePage = membersPage + .assertMembersManagement() .clickToolbarBack(); coursePage .publish()// publish the course for the participants @@ -983,13 +996,13 @@ public class AssessmentTest extends Deployments { .selectWithTitle(gtaNodeTitle); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -1007,13 +1020,13 @@ public class AssessmentTest extends Deployments { .assertSubmissionAvailable(); //Participant 2 log in - LoginPage kanuLoginPage = LoginPage.getLoginPage(kanuBrowser, deploymentUrl); + LoginPage kanuLoginPage = LoginPage.load(kanuBrowser, deploymentUrl); kanuLoginPage .loginAs(kanu) .resume(); //open the course - NavigationPage kanuNavBar = new NavigationPage(kanuBrowser); + NavigationPage kanuNavBar = NavigationPage.load(kanuBrowser); kanuNavBar .openMyCourses() .select(courseTitle); @@ -1082,18 +1095,19 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void taskWithIndividualScoreAndRevision(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void taskWithIndividualScoreAndRevision(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-individual-task-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1155,13 +1169,13 @@ public class AssessmentTest extends Deployments { .selectWithTitle(gtaNodeTitle); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -1256,18 +1270,19 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void taskWithoutAssignment(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void taskWithoutAssignment(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-task-alt-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1317,13 +1332,13 @@ public class AssessmentTest extends Deployments { .selectWithTitle(gtaNodeTitle); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -1411,18 +1426,19 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void taskWithIndividualScoreNoRevision(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void taskWithIndividualScoreNoRevision(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-individual-task-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1484,13 +1500,13 @@ public class AssessmentTest extends Deployments { .selectWithTitle(gtaNodeTitle); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -1551,8 +1567,7 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void bulkAssessment(@InitialPage LoginPage loginPage, - @Drone @User WebDriver ryomouBrowser, + public void bulkAssessment(@Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver kanuBrowser) throws IOException, URISyntaxException { @@ -1560,10 +1575,12 @@ public class AssessmentTest extends Deployments { UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-Assessment-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1623,12 +1640,12 @@ public class AssessmentTest extends Deployments { .finish(); //Ryomou login - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -1640,12 +1657,12 @@ public class AssessmentTest extends Deployments { .selectWithTitle(assessmentNodeTitle); //Second login - LoginPage kanuLoginPage = LoginPage.getLoginPage(kanuBrowser, deploymentUrl); + LoginPage kanuLoginPage = LoginPage.load(kanuBrowser, deploymentUrl); kanuLoginPage .loginAs(kanu) .resume(); - NavigationPage kanuNavBar = new NavigationPage(kanuBrowser); + NavigationPage kanuNavBar = NavigationPage.load(kanuBrowser); kanuNavBar .openMyCourses() .select(courseTitle); @@ -1685,18 +1702,19 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void taskOptionalWithIndividualScore(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void taskOptionalWithIndividualScore(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-auto-task-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1763,13 +1781,13 @@ public class AssessmentTest extends Deployments { .selectWithTitle(gtaNodeTitle); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -1833,18 +1851,19 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void taskWithoutSubmission(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void taskWithoutSubmission(@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(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-auto-task-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1911,13 +1930,13 @@ public class AssessmentTest extends Deployments { .assertPassed(); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -1954,18 +1973,19 @@ public class AssessmentTest extends Deployments { */ @Test @RunAsClient - public void taskOptionalWithoutSubmission(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void taskOptionalWithoutSubmission(@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); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-auto-task-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -2035,13 +2055,13 @@ public class AssessmentTest extends Deployments { .assertPassed(); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); diff --git a/src/test/java/org/olat/selenium/BusinessGroupTest.java b/src/test/java/org/olat/selenium/BusinessGroupTest.java index b04669488b983c939e0514d36f1b8385e785a9ec..a31c7ee5284c1eca6fcd5eb5d11b93095ec0e0bd 100644 --- a/src/test/java/org/olat/selenium/BusinessGroupTest.java +++ b/src/test/java/org/olat/selenium/BusinessGroupTest.java @@ -28,8 +28,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; @@ -72,8 +70,6 @@ public class BusinessGroupTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * Create a group, search it and delete it. @@ -84,16 +80,18 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void createDeleteBusinessGroup(@InitialPage LoginPage loginPage) + public void createDeleteBusinessGroup() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to groups String groupName = "Delete-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openGroups(browser) .createGroup(groupName, "A very little group to delete"); @@ -118,19 +116,20 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void groupMembersVisibility(@InitialPage LoginPage loginPage, - @Drone @Participant WebDriver participantBrowser) + public void groupMembersVisibility(@Drone @Participant WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createRandomUser("Selena"); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Aoi"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to groups String groupName = "Group-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); GroupPage group = navBar .openGroups(browser) .createGroup(groupName, "A very little group"); @@ -147,13 +146,13 @@ public class BusinessGroupTest extends Deployments { .nextPermissions() .finish(); - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); //tools participantLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .resume(); - NavigationPage participantNavBar = new NavigationPage(participantBrowser); + NavigationPage participantNavBar = NavigationPage.load(participantBrowser); participantNavBar .openGroups(participantBrowser) .selectGroup(groupName); @@ -177,16 +176,18 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void collaborativeTools(@InitialPage LoginPage loginPage) + public void collaborativeTools() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createRandomUser("Selena"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to groups String groupName = "Group-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); GroupPage group = navBar .openGroups(browser) .createGroup(groupName, "A very little group"); @@ -280,20 +281,21 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void createGroupWithWaitingList(@InitialPage LoginPage loginPage, - @Drone @Participant WebDriver participantBrowser, + public void createGroupWithWaitingList(@Drone @Participant WebDriver participantBrowser, @Drone @Student WebDriver studentBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createRandomUser("Selena"); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO student = new UserRestClient(deploymentUrl).createRandomUser("Asuka"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to groups String groupName = "Group-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); GroupPage group = navBar .openGroups(browser) .createGroup(groupName, "A group with a waiting list") @@ -322,13 +324,13 @@ public class BusinessGroupTest extends Deployments { //participant search published groups - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); //tools participantLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .resume(); //groups - NavigationPage participantNavBar = new NavigationPage(participantBrowser); + NavigationPage participantNavBar = NavigationPage.load(participantBrowser); participantNavBar .openGroups(participantBrowser) .publishedGroups() @@ -340,13 +342,13 @@ public class BusinessGroupTest extends Deployments { //student search published groups - LoginPage studentLoginPage = LoginPage.getLoginPage(studentBrowser, deploymentUrl); + LoginPage studentLoginPage = LoginPage.load(studentBrowser, deploymentUrl); //tools studentLoginPage .loginAs(student.getLogin(), student.getPassword()) .resume(); //groups - NavigationPage studentNavBar = new NavigationPage(studentBrowser); + NavigationPage studentNavBar = NavigationPage.load(studentBrowser); studentNavBar .openGroups(studentBrowser) .publishedGroups() @@ -384,8 +386,7 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void confirmMembershipByGroup(@InitialPage LoginPage loginPage, - @Drone @User WebDriver ryomouBrowser, + public void confirmMembershipByGroup(@Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver participantBrowser, @Drone @Student WebDriver reiBrowser) throws IOException, URISyntaxException { @@ -395,23 +396,24 @@ public class BusinessGroupTest extends Deployments { //admin make the confirmation of membership mandatory //for groups created by standard users. + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - AdministrationPage administration = new NavigationPage(browser) + AdministrationPage administration = NavigationPage.load(browser) .openAdministration() .openGroupSettings() .setGroupConfirmationForUser(true); //a standard user create a group - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); //go to groups String groupName = "Group-1-" + UUID.randomUUID(); - NavigationPage rymouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage rymouNavBar = NavigationPage.load(ryomouBrowser); GroupPage group = rymouNavBar .openGroups(ryomouBrowser) .createGroup(groupName, "Confirmation group"); @@ -436,12 +438,12 @@ public class BusinessGroupTest extends Deployments { .finish(); //participant login - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); participantLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .assertOnMembershipConfirmation() .confirmMembership(); - NavigationPage participantNavBar = new NavigationPage(participantBrowser); + NavigationPage participantNavBar = NavigationPage.load(participantBrowser); participantNavBar .openGroups(participantBrowser) .selectGroup(groupName) @@ -453,7 +455,7 @@ public class BusinessGroupTest extends Deployments { .loginAs(rei.getLogin(), rei.getPassword()) .assertOnMembershipConfirmation() .confirmMembership(); - NavigationPage reiNavBar = new NavigationPage(reiBrowser); + NavigationPage reiNavBar = NavigationPage.load(reiBrowser); reiNavBar .openGroups(reiBrowser) .selectGroup(groupName) @@ -476,20 +478,21 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void groupChat(@InitialPage LoginPage loginPage, - @Drone @Participant WebDriver kanuBrowser, + public void groupChat(@Drone @Participant WebDriver kanuBrowser, @Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to groups String groupName = "Group-Chat-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); GroupPage group = navBar .openGroups(browser) .createGroup(groupName, "A very little group to chat"); @@ -518,23 +521,23 @@ public class BusinessGroupTest extends Deployments { .finish(); //Kanu open the group - LoginPage kanuLoginPage = LoginPage.getLoginPage(kanuBrowser, deploymentUrl); + LoginPage kanuLoginPage = LoginPage.load(kanuBrowser, deploymentUrl); kanuLoginPage .loginAs(kanu.getLogin(), kanu.getPassword()) .resume(); - NavigationPage kanuNavBar = new NavigationPage(kanuBrowser); + NavigationPage kanuNavBar = NavigationPage.load(kanuBrowser); GroupPage kanuGroup = kanuNavBar .openGroups(kanuBrowser) .selectGroup(groupName); //Ryomou open the group - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); IMPage ryomouIM = ryomouNavBar .openGroups(ryomouBrowser) .selectGroup(groupName) @@ -584,15 +587,17 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void groupCalendar_addEditEvent(@InitialPage LoginPage loginPage) + public void groupCalendar_addEditEvent() throws IOException, URISyntaxException { UserVO coach = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(coach.getLogin(), coach.getPassword()) .resume(); //go to groups String groupName = "iCal-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); GroupPage group = navBar .openGroups(browser) .createGroup(groupName, "A very little group to delete"); @@ -634,15 +639,17 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void groupCalendar_recurringEvent(@InitialPage LoginPage loginPage) + public void groupCalendar_recurringEvent() throws IOException, URISyntaxException { UserVO coach = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(coach.getLogin(), coach.getPassword()) .resume(); //go to groups String groupName = "iCal-2-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); GroupPage group = navBar .openGroups(browser) .createGroup(groupName, "Calendar with a recurring event"); @@ -702,12 +709,13 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void enrollmentWithWaitingList(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser, + public void enrollmentWithWaitingList(@Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver reiBrowser, @Drone @Student WebDriver kanuBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); @@ -715,13 +723,14 @@ public class BusinessGroupTest extends Deployments { //create a course String courseTitle = "Enrolment-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) .clickToolbarBack(); //create a course element of type Enrolment - String enNodeTitle = "Enrolment-1"; + String enNodeTitle = "Enrol-1"; CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); courseEditor @@ -756,11 +765,11 @@ public class BusinessGroupTest extends Deployments { }; for(Enrollment enrollment:participantDrivers) { WebDriver driver = enrollment.getDriver(); - LoginPage.getLoginPage(driver, deploymentUrl) + LoginPage.load(driver, deploymentUrl) .loginAs(enrollment.getUser()) .resume(); - NavigationPage participantNavBar = new NavigationPage(driver); + NavigationPage participantNavBar = NavigationPage.load(driver); participantNavBar .openMyCourses() .openSearch() @@ -816,23 +825,24 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void enrollmentWithMultiEnrollment(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void enrollmentWithMultiEnrollment(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { - UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO author = new UserRestClient(deploymentUrl).createRandomAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); //create a course String courseTitle = "Enrolment-3-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) .clickToolbarBack(); //create a course element of type Enrolment - String enNodeTitle = "Enrolment-3"; + String enNodeTitle = "Enrol-3"; CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); courseEditor @@ -869,11 +879,11 @@ public class BusinessGroupTest extends Deployments { } //Ryomou open the course - LoginPage.getLoginPage(ryomouBrowser, deploymentUrl) + LoginPage.load(ryomouBrowser, deploymentUrl) .loginAs(ryomou) .resume(); - NavigationPage participantNavBar = new NavigationPage(ryomouBrowser); + NavigationPage participantNavBar = NavigationPage.load(ryomouBrowser); participantNavBar .openMyCourses() .openSearch() @@ -917,8 +927,7 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void enrollment(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser, + public void enrollment(@Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver reiBrowser, @Drone @Student WebDriver kanuBrowser) throws IOException, URISyntaxException { @@ -927,11 +936,13 @@ public class BusinessGroupTest extends Deployments { UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Enrollment-2-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -983,11 +994,11 @@ public class BusinessGroupTest extends Deployments { }; for(Enrollment enrollment:participantDrivers) { WebDriver driver = enrollment.getDriver(); - LoginPage.getLoginPage(driver, deploymentUrl) + LoginPage.load(driver, deploymentUrl) .loginAs(enrollment.getUser()) .resume(); - NavigationPage participantNavBar = new NavigationPage(driver); + NavigationPage participantNavBar = NavigationPage.load(driver); participantNavBar .openMyCourses() .openSearch() @@ -1049,8 +1060,7 @@ public class BusinessGroupTest extends Deployments { */ @Test @RunAsClient - public void enrollmentWithUnlimitedBusinessGroups(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser, + public void enrollmentWithUnlimitedBusinessGroups(@Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver reiBrowser, @Drone @Student WebDriver kanuBrowser) throws IOException, URISyntaxException { @@ -1059,11 +1069,13 @@ public class BusinessGroupTest extends Deployments { UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Enrollment-3-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1115,11 +1127,11 @@ public class BusinessGroupTest extends Deployments { }; for(Enrollment enrollment:participantDrivers) { WebDriver driver = enrollment.getDriver(); - LoginPage.getLoginPage(driver, deploymentUrl) + LoginPage.load(driver, deploymentUrl) .loginAs(enrollment.getUser()) .resume(); - NavigationPage participantNavBar = new NavigationPage(driver); + NavigationPage participantNavBar = NavigationPage.load(driver); participantNavBar .openMyCourses() .openSearch() diff --git a/src/test/java/org/olat/selenium/CourseElementTest.java b/src/test/java/org/olat/selenium/CourseElementTest.java index 88f2d8e9a71921f5f5d18172e576e381bf88d74e..ac0ca70b6022247b23a287fe7d3cc36e8e514eaa 100644 --- a/src/test/java/org/olat/selenium/CourseElementTest.java +++ b/src/test/java/org/olat/selenium/CourseElementTest.java @@ -28,8 +28,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; @@ -87,8 +85,6 @@ public class CourseElementTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** @@ -103,14 +99,16 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithCP(@InitialPage LoginPage loginPage) + public void courseWithCP() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-With-CP-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -125,7 +123,7 @@ public class CourseElementTest extends Deployments { navBar.openCourse(courseTitle); - String cpNodeTitle = "CP-1"; + String cpNodeTitle = "CPNode-1"; //create a course element of type CP with the CP that we create above CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); @@ -149,7 +147,9 @@ public class CourseElementTest extends Deployments { .selectWithTitle(cpNodeTitle); //check that the default title of CP (Lorem Ipsum) is visible in the iframe - WebElement cpIframe = browser.findElement(By.cssSelector("div.o_iframedisplay>iframe")); + By iframe = By.cssSelector("div.o_iframedisplay>iframe"); + OOGraphene.waitElement(iframe, browser); + WebElement cpIframe = browser.findElement(iframe); browser.switchTo().frame(cpIframe); browser.findElement(By.xpath("//h2[text()='Lorem Ipsum']")); } @@ -163,16 +163,18 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithSCORM_fullAuto(@InitialPage LoginPage loginPage) + public void courseWithSCORM_fullAuto() throws IOException, URISyntaxException { - UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO author = new UserRestClient(deploymentUrl).createRandomAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); URL zipUrl = JunitTestHelper.class.getResource("file_resources/scorm/SCORM_course_full_auto.zip"); File zipFile = new File(zipUrl.toURI()); //go the authoring environment to import our course String zipTitle = "SCORM - " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(zipTitle, zipFile); @@ -186,7 +188,8 @@ public class CourseElementTest extends Deployments { //scorm is auto started -> back ScormPage.getScormPage(browser) - .back(); + .back() + .assertOnStart(); //log out new UserToolsPage(browser) @@ -215,14 +218,16 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithWiki(@InitialPage LoginPage loginPage) + public void courseWithWiki() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-With-Wiki-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -237,7 +242,7 @@ public class CourseElementTest extends Deployments { navBar.openCourse(courseTitle); - String wikiNodeTitle = "Wiki-1"; + String wikiNodeTitle = "WikiNode-1"; //create a course element of type CP with the CP that we create above CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); @@ -277,20 +282,22 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithWiki_createInCourseEditor(@InitialPage LoginPage loginPage) + public void courseWithWiki_createInCourseEditor() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-With-Wiki-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) .clickToolbarBack(); - String wikiNodeTitle = "Wiki-1"; + String wikiNodeTitle = "WikiNode-1"; String wikiTitle = "Wiki for a course - " + UUID.randomUUID().toString(); //create a course element of type CP with the CP that we create above @@ -314,6 +321,8 @@ public class CourseElementTest extends Deployments { course .clickTree() .selectWithTitle(wikiNodeTitle) + // the course node select automatically the index page of the wiki + .assertWithTitleSelected("Index") .selectWithTitle("Index"); //check that the title of the index article/page is visible @@ -324,14 +333,16 @@ public class CourseElementTest extends Deployments { @Test @RunAsClient - public void courseWithQTITest(@InitialPage LoginPage loginPage) + public void courseWithQTITest() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-With-QTI-Test-1.2-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -378,21 +389,23 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithPodcast_externalFeed(@InitialPage LoginPage loginPage) + public void courseWithPodcast_externalFeed() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-With-Podcast-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) .clickToolbarBack(); - String podcastNodeTitle = "Podcats-1"; - String podcastTitle = "Podcast - " + UUID.randomUUID(); + String podcastNodeTitle = "PodcatNode-1"; + String podcastTitle = "ThePodcast - " + UUID.randomUUID(); //create a course element of type podcast CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) @@ -434,20 +447,22 @@ public class CourseElementTest extends Deployments { @Test @RunAsClient - public void courseWithBlog_externalFeed(@InitialPage LoginPage loginPage) + public void courseWithBlog_externalFeed() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-With-Blog-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) .clickToolbarBack(); - String blogNodeTitle = "Blog-1"; + String blogNodeTitle = "BlogNode-1"; String blogTitle = "Blog - " + UUID.randomUUID(); //create a course element of type blog @@ -499,23 +514,24 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithBlog_multipleUsers(@InitialPage LoginPage loginPage, - @Drone @Participant WebDriver participantDrone) + public void courseWithBlog_multipleUsers(@Drone @Participant WebDriver participantDrone) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course with a blog String courseTitle = "Course-Blog-1-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) .clickToolbarBack(); - String blogNodeTitle = "Blog-RW-1"; + String blogNodeTitle = "BlogNode-RW-1"; String blogTitle = "Blog - RW - " + UUID.randomUUID().toString(); //create a course element of type blog with a blog @@ -538,7 +554,7 @@ public class CourseElementTest extends Deployments { .clickTree() .selectWithTitle(blogNodeTitle); - String postTitle = "Blog-RW-1-" + UUID.randomUUID(); + String postTitle = "BlogPost-RW-1-" + UUID.randomUUID(); String postSummary = "Some explantations as teaser"; String postContent = "Content of the post"; FeedPage feed = FeedPage.getFeedPage(browser); @@ -549,10 +565,10 @@ public class CourseElementTest extends Deployments { //participant go to the blog participantDrone.navigate().to(deploymentUrl); - LoginPage participantLogin = LoginPage.getLoginPage(participantDrone, deploymentUrl); + LoginPage participantLogin = LoginPage.load(participantDrone, deploymentUrl); participantLogin.loginAs(participant.getLogin(), participant.getPassword()); //search the course in "My courses" - NavigationPage participantNavigation = new NavigationPage(participantDrone); + NavigationPage participantNavigation = NavigationPage.load(participantDrone); participantNavigation .openMyCourses() .openSearch() @@ -595,13 +611,15 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithInfoMessages(@InitialPage LoginPage authorLoginPage) + public void courseWithInfoMessages() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -698,15 +716,16 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithDialog(@InitialPage LoginPage authorLoginPage, - @Drone @Participant WebDriver participantBrowser) + public void courseWithDialog(@Drone @Participant WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -734,7 +753,7 @@ public class CourseElementTest extends Deployments { members .clickToolbarBack(); - String dialogNodeTitle = "Dialog"; + String dialogNodeTitle = "DialogNode"; //open course editor CoursePageFragment course = CoursePageFragment.getCourse(browser); CourseEditorPageFragment editor = course @@ -775,13 +794,13 @@ public class CourseElementTest extends Deployments { .createThread("JPEG vs PNG", "Which is the best format", null); // The participant come in - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); participantLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .resume(); // The participant find the course - NavigationPage participantNavBar = new NavigationPage(participantBrowser); + NavigationPage participantNavBar = NavigationPage.load(participantBrowser); participantNavBar .assertOnNavigationPage() .openMyCourses() @@ -831,15 +850,17 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithMemberList(@InitialPage LoginPage authorLoginPage) + public void courseWithMemberList() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO coach = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO participant1 = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); UserVO participant2 = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -973,7 +994,7 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithMemberList_sendMail(@InitialPage LoginPage authorLoginPage) + public void courseWithMemberList_sendMail() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); @@ -981,11 +1002,13 @@ public class CourseElementTest extends Deployments { UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); UserVO student1 = new UserRestClient(deploymentUrl).createRandomUser("student1"); UserVO student2 = new UserRestClient(deploymentUrl).createRandomUser("student2"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-with-member-list-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); CoursePageFragment courseRuntime = navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1097,14 +1120,15 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithParticipantFolder(@InitialPage LoginPage authorLoginPage, - @Drone @Participant WebDriver participantBrowser) + public void courseWithParticipantFolder(@Drone @Participant WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -1167,13 +1191,13 @@ public class CourseElementTest extends Deployments { .assertOnFile(coachImageFile.getName()); // The participant come in - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); participantLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .resume(); // The participant find the course - NavigationPage participantNavBar = new NavigationPage(participantBrowser); + NavigationPage participantNavBar = NavigationPage.load(participantBrowser); participantNavBar .assertOnNavigationPage() .openMyCourses() @@ -1218,18 +1242,19 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithForum_concurrent(@InitialPage LoginPage loginPage, - @Drone @Participant WebDriver kanuBrowser, + public void courseWithForum_concurrent(@Drone @Participant WebDriver kanuBrowser, @Drone @Student WebDriver reiBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course FO " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1258,12 +1283,12 @@ public class CourseElementTest extends Deployments { .createThread("The best anime ever", "What is the best anime ever?", null); //First user go to the course - LoginPage kanuLoginPage = LoginPage.getLoginPage(kanuBrowser, deploymentUrl); + LoginPage kanuLoginPage = LoginPage.load(kanuBrowser, deploymentUrl); kanuLoginPage .loginAs(kanu.getLogin(), kanu.getPassword()) .resume(); - NavigationPage kanuNavBar = new NavigationPage(kanuBrowser); + NavigationPage kanuNavBar = NavigationPage.load(kanuBrowser); kanuNavBar .openMyCourses() .openSearch() @@ -1281,12 +1306,12 @@ public class CourseElementTest extends Deployments { .openThread("The best anime ever"); //First user go to the course - LoginPage reiLoginPage = LoginPage.getLoginPage(reiBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(reiBrowser, deploymentUrl); reiLoginPage .loginAs(rei) .resume(); - NavigationPage reiNavBar = new NavigationPage(reiBrowser); + NavigationPage reiNavBar = NavigationPage.load(reiBrowser); reiNavBar .openMyCourses() .openSearch() @@ -1349,15 +1374,16 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithForum_guest(@InitialPage LoginPage loginPage, - @Drone @User WebDriver guestBrowser) + public void courseWithForum_guest(@Drone @User WebDriver guestBrowser) throws IOException, URISyntaxException { - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); String node1 = "Forums " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openCatalogAdministration() .addCatalogNode(node1, "First level of the catalog"); @@ -1396,11 +1422,11 @@ public class CourseElementTest extends Deployments { courseEditor.clickToolbarBack(); // guest go to the catalog and find the course - LoginPage guestLogin = LoginPage.getLoginPage(guestBrowser, deploymentUrl); + LoginPage guestLogin = LoginPage.load(guestBrowser, deploymentUrl); guestLogin .asGuest(); - NavigationPage guestNavBar = new NavigationPage(guestBrowser); + NavigationPage guestNavBar = NavigationPage.load(guestBrowser); guestNavBar .openCatalog() .selectCatalogEntry(node1) @@ -1449,10 +1475,6 @@ public class CourseElementTest extends Deployments { .clickBack() .assertThreadListOnNumber("Your favorite author", 3); } - - - - /** * An author setup a course with a LTI course element with score enabled. @@ -1468,24 +1490,25 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithLTI(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void courseWithLTI(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-LTI-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) .clickToolbarBack(); //create a course element of type Test with the test that we create above - String ltiTitle = "LTI"; + String ltiTitle = "LTI-Node"; CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit() .createNode("lti") @@ -1524,12 +1547,12 @@ public class CourseElementTest extends Deployments { .finish(); //Participant login - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); participantLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .resume(); - NavigationPage participantNavBar = new NavigationPage(participantBrowser); + NavigationPage participantNavBar = NavigationPage.load(participantBrowser); participantNavBar .openMyCourses() .openSearch() @@ -1559,17 +1582,19 @@ public class CourseElementTest extends Deployments { */ @Test @RunAsClient - public void courseWithContact(@InitialPage LoginPage loginPage) + public void courseWithContact() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); UserVO student = new UserRestClient(deploymentUrl).createRandomUser("student"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course - String courseTitle = "Course-with-member-list-" + UUID.randomUUID(); + String courseTitle = "Contatc Course" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); CoursePageFragment courseRuntime = navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1593,7 +1618,7 @@ public class CourseElementTest extends Deployments { getSmtpServer().reset();// reset e-mails //create a course element of type Test with the test that we create above - String nodeTitle = "Contact"; + String nodeTitle = "ContactNode"; CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); courseEditor @@ -1626,7 +1651,7 @@ public class CourseElementTest extends Deployments { loginPage.loginAs(ryomou.getLogin(), ryomou.getPassword()); - NavigationPage ryomouNavBar = new NavigationPage(browser); + NavigationPage ryomouNavBar = NavigationPage.load(browser); ryomouNavBar .openMyCourses() .select(courseTitle); diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java index 2d6bf59057b4ce381623f481c1b354704b6e14e7..cc1481a61be83fbf677eac92ef849eb820df1495 100644 --- a/src/test/java/org/olat/selenium/CourseTest.java +++ b/src/test/java/org/olat/selenium/CourseTest.java @@ -31,8 +31,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; @@ -91,8 +89,6 @@ public class CourseTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * An author create a course, jump to it, open the editor @@ -105,13 +101,15 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void createCourse(@InitialPage LoginPage loginPage) + public void createCourse() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -171,13 +169,15 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void createCourseWithSpecialCharacters(@InitialPage LoginPage loginPage) + public void createCourseWithSpecialCharacters() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -221,13 +221,15 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void createCourse_withWizard(@InitialPage LoginPage loginPage) + public void createCourse_withWizard() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -244,6 +246,7 @@ public class CourseTest extends Deployments { .nextNodes() .nextCatalog() .finish(); + OOGraphene.closeBlueMessageWindow(browser); RepositorySettingsPage settings = new RepositorySettingsPage(browser); //from description editor, back to details and launch the course @@ -262,9 +265,13 @@ public class CourseTest extends Deployments { By nodeBy = By.cssSelector("span.o_tree_link.o_tree_l1.o_tree_level_label_leaf>a"); List<WebElement> nodes = browser.findElements(nodeBy); Assert.assertEquals(5, nodes.size()); - for(WebElement node:nodes) { - node.click(); + 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')]/a[span]"); + OOGraphene.waitElement(linkBy, browser); + browser.findElement(linkBy).click(); OOGraphene.waitBusy(browser); + By activeLinkBy = By.xpath("//div[contains(@class,'o_tree')]//li[" + (i+1) + "][contains(@class,'active')]/div/span[contains(@class,'o_tree_link')]/a[span]"); + OOGraphene.waitElement(activeLinkBy, browser); } } @@ -282,17 +289,18 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void concurrentEditCourse(@InitialPage LoginPage loginPage, - @Drone @Participant WebDriver coAuthorBrowser) + public void concurrentEditCourse(@Drone @Participant WebDriver coAuthorBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO coAuthor = new UserRestClient(deploymentUrl).createAuthor("Rei"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -323,13 +331,13 @@ public class CourseTest extends Deployments { .edit(); //the second author come in - LoginPage coAuthroLoginPage = LoginPage.getLoginPage(coAuthorBrowser, deploymentUrl); + LoginPage coAuthroLoginPage = LoginPage.load(coAuthorBrowser, deploymentUrl); coAuthroLoginPage .loginAs(coAuthor.getLogin(), coAuthor.getPassword()) .resume(); //go to authoring - NavigationPage coAuthorNavBar = new NavigationPage(coAuthorBrowser); + NavigationPage coAuthorNavBar = NavigationPage.load(coAuthorBrowser); coAuthorNavBar .assertOnNavigationPage() .openAuthoringEnvironment() @@ -385,16 +393,17 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void concurrentVisitAndPublish(@InitialPage LoginPage loginPage, - @Drone @User WebDriver ryomouBrowser) + public void concurrentVisitAndPublish(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); //create a course String courseTitle = "Course to publish-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -421,11 +430,11 @@ public class CourseTest extends Deployments { .quickPublish(UserAccess.registred); // The user opens the course - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .openSearch() @@ -478,14 +487,16 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void courseRename(@InitialPage LoginPage loginPage) + public void courseRename() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course to rename-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -541,11 +552,11 @@ public class CourseTest extends Deployments { UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); //administrator create the categories in the catalog - LoginPage adminLogin = LoginPage.getLoginPage(adminBrowser, deploymentUrl); + LoginPage adminLogin = LoginPage.load(adminBrowser, deploymentUrl); adminLogin .loginAs("administrator", "openolat") .resume(); - NavigationPage adminNavBar = new NavigationPage(adminBrowser); + NavigationPage adminNavBar = NavigationPage.load(adminBrowser); String node1 = "First level " + UUID.randomUUID(); String node2_1 = "Second level first element " + UUID.randomUUID(); @@ -559,11 +570,12 @@ public class CourseTest extends Deployments { //An author create a course and publish it under a category //created above - LoginPage login = LoginPage.getLoginPage(browser, deploymentUrl); + LoginPage login = LoginPage.load(browser, deploymentUrl); login .loginAs(author.getLogin(), author.getPassword()) .resume(); String courseTitle = "Catalog-Course-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -583,12 +595,12 @@ public class CourseTest extends Deployments { //User logs in, go to "My courses", navigate the catalog and start //the course - LoginPage userLogin = LoginPage.getLoginPage(userBrowser, deploymentUrl); + LoginPage userLogin = LoginPage.load(userBrowser, deploymentUrl); userLogin .loginAs(user.getLogin(), user.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(userBrowser); + NavigationPage userNavBar = NavigationPage.load(userBrowser); userNavBar .openMyCourses() .openCatalog() @@ -615,14 +627,16 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void createCourseWithCalendar(@InitialPage LoginPage loginPage) + public void createCourseWithCalendar() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-With-iCal-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -717,14 +731,16 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void createCourseWithCalendar_alt(@InitialPage LoginPage loginPage) + public void createCourseWithCalendar_alt() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-iCal-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -802,14 +818,16 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void createCourseWithCalendar_singleToRecurrent(@InitialPage LoginPage loginPage) + public void createCourseWithCalendar_singleToRecurrent() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-iCal-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -828,7 +846,7 @@ public class CourseTest extends Deployments { settings .clickToolbarBack(); - String calendarNodeTitle = "iCal-3"; + String calendarNodeTitle = "iCalNode-3"; //create a course element of type calendar CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) .edit(); @@ -884,15 +902,16 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void courseBooking(@InitialPage LoginPage loginPage, - @Drone @User WebDriver ryomouBrowser) + public void courseBooking(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -930,11 +949,11 @@ public class CourseTest extends Deployments { .publish(); //a user search the course - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .openSearch() @@ -979,15 +998,16 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void courseFreeBooking(@InitialPage LoginPage loginPage, - @Drone @User WebDriver userBrowser) + public void courseFreeBooking(@Drone @User WebDriver userBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); UserVO user = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -1024,11 +1044,11 @@ public class CourseTest extends Deployments { .publish(); //a user search the course - LoginPage userLoginPage = LoginPage.getLoginPage(userBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(userBrowser, deploymentUrl); userLoginPage .loginAs(user.getLogin(), user.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(userBrowser); + NavigationPage userNavBar = NavigationPage.load(userBrowser); userNavBar .openMyCourses() .openSearch() @@ -1065,13 +1085,14 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void courseReminders(@InitialPage LoginPage loginPage) + public void courseReminders() throws IOException, URISyntaxException { //configure at least a license + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - new NavigationPage(browser) + NavigationPage.load(browser) .openAdministration() .openLicenses() .enableForResources("all rights reserved"); @@ -1083,6 +1104,7 @@ public class CourseTest extends Deployments { UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -1182,17 +1204,18 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void coursePassword(@InitialPage LoginPage loginPage, - @Drone @Participant WebDriver kanuBrowser, + public void coursePassword(@Drone @Participant WebDriver kanuBrowser, @Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -1250,12 +1273,12 @@ public class CourseTest extends Deployments { .assertOnTitle(infoTitle); //First user go to the course - LoginPage kanuLoginPage = LoginPage.getLoginPage(kanuBrowser, deploymentUrl); + LoginPage kanuLoginPage = LoginPage.load(kanuBrowser, deploymentUrl); kanuLoginPage .loginAs(kanu.getLogin(), kanu.getPassword()) .resume(); - NavigationPage kanuNavBar = new NavigationPage(kanuBrowser); + NavigationPage kanuNavBar = NavigationPage.load(kanuBrowser); kanuNavBar .openMyCourses() .openSearch() @@ -1277,7 +1300,7 @@ public class CourseTest extends Deployments { .assertOnTitle(infoTitle); //Second user use the rest url - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, new URL(courseInfoUrl)); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, new URL(courseInfoUrl)); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); @@ -1312,16 +1335,17 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void courseAccessRules(@InitialPage LoginPage loginPage, - @Drone @Student WebDriver reiBrowser) + public void courseAccessRules(@Drone @Student WebDriver reiBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("rei"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course FO " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1396,10 +1420,10 @@ public class CourseTest extends Deployments { .finish(); //participant search the course - LoginPage.getLoginPage(reiBrowser, deploymentUrl) + LoginPage.load(reiBrowser, deploymentUrl) .loginAs(rei) .resume(); - NavigationPage reiNavBar = new NavigationPage(reiBrowser); + NavigationPage reiNavBar = NavigationPage.load(reiBrowser); reiNavBar .openMyCourses() .select(courseTitle); @@ -1462,8 +1486,7 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void confirmMembershipForCourse(@InitialPage LoginPage loginPage, - @Drone @Author WebDriver authorBrowser, + public void confirmMembershipForCourse(@Drone @Author WebDriver authorBrowser, @Drone @Participant WebDriver participantBrowser, @Drone @Student WebDriver reiBrowser) throws IOException, URISyntaxException { @@ -1474,20 +1497,21 @@ public class CourseTest extends Deployments { //admin make the confirmation of membership mandatory //for groups created by standard users. + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - AdministrationPage administration = new NavigationPage(browser) + AdministrationPage administration = NavigationPage.load(browser) .openAdministration() .openGroupSettings() .setGroupConfirmationForAuthor(true); //author create a course String courseTitle = "Membership " + UUID.randomUUID(); - LoginPage.getLoginPage(authorBrowser, deploymentUrl) + LoginPage.load(authorBrowser, deploymentUrl) .loginAs(author) .resume(); - NavigationPage authorNavBar = new NavigationPage(authorBrowser); + NavigationPage authorNavBar = NavigationPage.load(authorBrowser); authorNavBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -1549,12 +1573,12 @@ public class CourseTest extends Deployments { .assertOnTitle(courseTitle); //participant login -> accept membership -> my courses -> course - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); participantLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .assertOnMembershipConfirmation() .confirmMembership(); - NavigationPage participantNavBar = new NavigationPage(participantBrowser); + NavigationPage participantNavBar = NavigationPage.load(participantBrowser); participantNavBar .openMyCourses() .select(courseTitle); @@ -1580,16 +1604,17 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void createContentPackage(@InitialPage LoginPage loginPage, - @Drone @User WebDriver ryomouBrowser) - throws IOException, URISyntaxException { + public void createContentPackage(@Drone @User WebDriver ryomouBrowser) + throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //create a CP String cpTitle = "CP " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCP(cpTitle) @@ -1639,11 +1664,11 @@ public class CourseTest extends Deployments { .publish(); //a user search the content package - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage ryomouLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); ryomouLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .openSearch() @@ -1668,16 +1693,18 @@ public class CourseTest extends Deployments { */ @Test @RunAsClient - public void tryImportOfWindowsZip(@InitialPage LoginPage loginPage) + public void tryImportOfWindowsZip() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); URL zipUrl = JunitTestHelper.class.getResource("file_resources/windows_zip.zip"); File zipFile = new File(zipUrl.toURI()); //go the authoring environment to create a CP String zipTitle = "ZIP - " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(zipTitle, zipFile) diff --git a/src/test/java/org/olat/selenium/ImsQTI21EditorTest.java b/src/test/java/org/olat/selenium/ImsQTI21EditorTest.java index e59d285926d23600e5d82c3dce157cf2ff572e13..a0764320b3b17dbdbeb210575e41b292335997b5 100644 --- a/src/test/java/org/olat/selenium/ImsQTI21EditorTest.java +++ b/src/test/java/org/olat/selenium/ImsQTI21EditorTest.java @@ -27,8 +27,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Test; @@ -73,14 +71,12 @@ public class ImsQTI21EditorTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * Create a test, import the CSV example, remove the * first single choice which come if someone create a * test. Change the delivery settings of the test to - * show the detailled results.<br> + * show the detailed results.<br> * Run the test and check the results. * * @param loginPage @@ -89,13 +85,15 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void importQuestionsCSV(@InitialPage LoginPage authorLoginPage) + public void importQuestionsCSV() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Excel QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -117,7 +115,7 @@ public class ImsQTI21EditorTest extends Deployments { //remove the single choice which come from the creation // of the test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); // go to options and show the results @@ -168,13 +166,15 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void importQuestionsCSVMatchVariants(@InitialPage LoginPage authorLoginPage) + public void importQuestionsCSVMatchVariants() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "ExcelMatch QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -196,7 +196,7 @@ public class ImsQTI21EditorTest extends Deployments { //remove the single choice which come from the creation // of the test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); // go to options and show the results @@ -248,14 +248,15 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorSingleChoices(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void qti21EditorSingleChoices(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -267,7 +268,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a single choice: all answers score @@ -345,11 +346,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(ryomouBrowser); + NavigationPage userNavBar = NavigationPage.load(ryomouBrowser); userNavBar .openMyCourses() .openSearch() @@ -394,12 +395,14 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorSingleChoices_conditionalAttemptsFeedback(@InitialPage LoginPage authorLoginPage) + public void qti21EditorSingleChoices_conditionalAttemptsFeedback() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -410,7 +413,7 @@ public class ImsQTI21EditorTest extends Deployments { QTI21EditorPage qtiEditor = qtiPage .edit(); qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a single choice: all answers score @@ -465,15 +468,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorMultipleChoices(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorMultipleChoices(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO eric = new UserRestClient(deploymentUrl).createRandomUser("Eric"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -485,7 +489,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a single choice: all answers score @@ -565,11 +569,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -604,11 +608,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage ericLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage ericLoginPage = LoginPage.load(participantBrowser, deploymentUrl); ericLoginPage .loginAs(eric.getLogin(), eric.getPassword()) .resume(); - NavigationPage ericNavBar = new NavigationPage(participantBrowser); + NavigationPage ericNavBar = NavigationPage.load(participantBrowser); ericNavBar .openMyCourses() .openSearch() @@ -643,12 +647,14 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorMultipleChoices_complexConditionalFeedback(@InitialPage LoginPage authorLoginPage) + public void qti21EditorMultipleChoices_complexConditionalFeedback() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -659,7 +665,7 @@ public class ImsQTI21EditorTest extends Deployments { QTI21EditorPage qtiEditor = qtiPage .edit(); qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a single choice: all answers score @@ -745,15 +751,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorKprim(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorKprim(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO melissa = new UserRestClient(deploymentUrl).createRandomUser("Melissa"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Kprim QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -765,7 +772,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a kprim @@ -839,11 +846,11 @@ public class ImsQTI21EditorTest extends Deployments { //a user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -878,11 +885,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage melLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage melLoginPage = LoginPage.load(participantBrowser, deploymentUrl); melLoginPage .loginAs(melissa.getLogin(), melissa.getPassword()) .resume(); - NavigationPage melNavBar = new NavigationPage(participantBrowser); + NavigationPage melNavBar = NavigationPage.load(participantBrowser); melNavBar .openMyCourses() .openSearch() @@ -921,15 +928,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorHotspot_singleChoice(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorHotspot_singleChoice(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); String qtiTestTitle = "Hotspot QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -941,7 +949,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add an hotspot: all answers score @@ -1021,11 +1029,11 @@ public class ImsQTI21EditorTest extends Deployments { //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -1058,11 +1066,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -1099,15 +1107,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorHotspot_multipleChoice(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorHotspot_multipleChoice(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); String qtiTestTitle = "Hotspot QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -1119,7 +1128,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add an hotspot: all answers score @@ -1201,11 +1210,11 @@ public class ImsQTI21EditorTest extends Deployments { //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -1238,11 +1247,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -1281,16 +1290,17 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorFib_text(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorFib_text(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "FIB QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -1302,7 +1312,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a gap entry: all answers score @@ -1374,11 +1384,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -1414,11 +1424,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -1458,16 +1468,17 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorNumericalInput_exact(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorNumericalInput_exact(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Numerical QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -1479,7 +1490,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a numerical input: all answers score, tolerance exact @@ -1551,11 +1562,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -1591,11 +1602,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -1634,16 +1645,17 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorNumericalInput_absolut(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorNumericalInput_absolut(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Numerical QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -1655,7 +1667,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a numerical input: 3.1 - 3.2 @@ -1720,11 +1732,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -1762,11 +1774,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -1806,15 +1818,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorHottext(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorHottext(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Hottext QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -1826,7 +1839,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a hot text with score: all answers @@ -1870,11 +1883,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -1916,15 +1929,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorMatch(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorMatch(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO melissa = new UserRestClient(deploymentUrl).createRandomUser("Melissa"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Match QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -1936,7 +1950,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a match, multiple selection @@ -2024,11 +2038,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -2064,11 +2078,11 @@ public class ImsQTI21EditorTest extends Deployments { .assertOnAssessmentTestScore(6);// 4 points from the first question, 2 from the second //a second user search the content package - LoginPage melLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage melLoginPage = LoginPage.load(participantBrowser, deploymentUrl); melLoginPage .loginAs(melissa.getLogin(), melissa.getPassword()) .resume(); - NavigationPage melNavBar = new NavigationPage(participantBrowser); + NavigationPage melNavBar = NavigationPage.load(participantBrowser); melNavBar .openMyCourses() .openSearch() @@ -2113,15 +2127,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorMatch_distractors(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorMatch_distractors(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO melissa = new UserRestClient(deploymentUrl).createRandomUser("Melissa"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Match QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -2133,7 +2148,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a match, multiple selection @@ -2217,11 +2232,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -2257,11 +2272,11 @@ public class ImsQTI21EditorTest extends Deployments { .assertOnAssessmentTestScore("4.5");// 4 points from the first question, 0.5 from the second //a second user search the content package - LoginPage melLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage melLoginPage = LoginPage.load(participantBrowser, deploymentUrl); melLoginPage .loginAs(melissa.getLogin(), melissa.getPassword()) .resume(); - NavigationPage melNavBar = new NavigationPage(participantBrowser); + NavigationPage melNavBar = NavigationPage.load(participantBrowser); melNavBar .openMyCourses() .openSearch() @@ -2306,15 +2321,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorMatchDragAndDrop(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorMatchDragAndDrop(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO asuka = new UserRestClient(deploymentUrl).createRandomUser("Asuka"); UserVO chara = new UserRestClient(deploymentUrl).createRandomUser("Chara"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Match DnD QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -2326,7 +2342,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a match, multiple selection @@ -2416,11 +2432,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage asukaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage asukaLoginPage = LoginPage.load(participantBrowser, deploymentUrl); asukaLoginPage .loginAs(asuka.getLogin(), asuka.getPassword()) .resume(); - NavigationPage asukaNavBar = new NavigationPage(participantBrowser); + NavigationPage asukaNavBar = NavigationPage.load(participantBrowser); asukaNavBar .openMyCourses() .openSearch() @@ -2456,11 +2472,11 @@ public class ImsQTI21EditorTest extends Deployments { .assertOnAssessmentTestScore(9); //a second user search the content package - LoginPage charaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage charaLoginPage = LoginPage.load(participantBrowser, deploymentUrl); charaLoginPage .loginAs(chara.getLogin(), chara.getPassword()) .resume(); - NavigationPage charaNavBar = new NavigationPage(participantBrowser); + NavigationPage charaNavBar = NavigationPage.load(participantBrowser); charaNavBar .openMyCourses() .openSearch() @@ -2501,15 +2517,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorMatchDragAndDrop_distractors(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorMatchDragAndDrop_distractors(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO asuka = new UserRestClient(deploymentUrl).createRandomUser("Asuka"); UserVO chara = new UserRestClient(deploymentUrl).createRandomUser("Chara"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Match DnD QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -2521,7 +2538,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a match, multiple selection @@ -2605,11 +2622,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage asukaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage asukaLoginPage = LoginPage.load(participantBrowser, deploymentUrl); asukaLoginPage .loginAs(asuka.getLogin(), asuka.getPassword()) .resume(); - NavigationPage asukaNavBar = new NavigationPage(participantBrowser); + NavigationPage asukaNavBar = NavigationPage.load(participantBrowser); asukaNavBar .openMyCourses() .openSearch() @@ -2645,11 +2662,11 @@ public class ImsQTI21EditorTest extends Deployments { .assertOnAssessmentTestScore("4.5"); //a second user search the content package - LoginPage charaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage charaLoginPage = LoginPage.load(participantBrowser, deploymentUrl); charaLoginPage .loginAs(chara.getLogin(), chara.getPassword()) .resume(); - NavigationPage charaNavBar = new NavigationPage(participantBrowser); + NavigationPage charaNavBar = NavigationPage.load(participantBrowser); charaNavBar .openMyCourses() .openSearch() @@ -2692,15 +2709,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorMatchTrueFalse(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorMatchTrueFalse(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); UserVO asuka = new UserRestClient(deploymentUrl).createRandomUser("Asuka"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "True false QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -2712,7 +2730,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add a match, score "all answers" @@ -2792,11 +2810,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -2832,11 +2850,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage asukaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage asukaLoginPage = LoginPage.load(participantBrowser, deploymentUrl); asukaLoginPage .loginAs(asuka.getLogin(), asuka.getPassword()) .resume(); - NavigationPage asukaNavBar = new NavigationPage(participantBrowser); + NavigationPage asukaNavBar = NavigationPage.load(participantBrowser); asukaNavBar .openMyCourses() .openSearch() @@ -2872,15 +2890,16 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorUpload(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorUpload(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //make a test String qtiTestTitle = "Upload QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -2892,7 +2911,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add an upload interaction @@ -2931,11 +2950,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -2975,16 +2994,17 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorEssay(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorEssay(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //make a test String qtiTestTitle = "Essai QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -2996,7 +3016,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add an essay interaction @@ -3035,11 +3055,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -3077,16 +3097,17 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorDrawing(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorDrawing(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //make a test String qtiTestTitle = "Drawing QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -3098,7 +3119,7 @@ public class ImsQTI21EditorTest extends Deployments { .edit(); //start a blank test qtiEditor - .selectNode("Single choice") + .selectNode("Single Choice") .deleteNode(); //add an essay interaction @@ -3141,11 +3162,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() @@ -3186,14 +3207,15 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorHiddenSection(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorHiddenSection(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -3255,11 +3277,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -3297,16 +3319,17 @@ public class ImsQTI21EditorTest extends Deployments { */ @Test @RunAsClient - public void qti21EditorNegativePoints(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver participantBrowser) + public void qti21EditorNegativePoints(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); UserVO asuka = new UserRestClient(deploymentUrl).createRandomUser("Asuka"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createQTI21Test(qtiTestTitle) @@ -3412,11 +3435,11 @@ public class ImsQTI21EditorTest extends Deployments { .save(); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -3445,11 +3468,11 @@ public class ImsQTI21EditorTest extends Deployments { //a second user search the content package - LoginPage asukaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage asukaLoginPage = LoginPage.load(participantBrowser, deploymentUrl); asukaLoginPage .loginAs(asuka.getLogin(), asuka.getPassword()) .resume(); - NavigationPage asukaNavBar = new NavigationPage(participantBrowser); + NavigationPage asukaNavBar = NavigationPage.load(participantBrowser); asukaNavBar .openMyCourses() .openSearch() @@ -3477,11 +3500,11 @@ public class ImsQTI21EditorTest extends Deployments { .assertOnAssessmentTestMaxScore(7); //a third user search the content package - LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage reiLoginPage = LoginPage.load(participantBrowser, deploymentUrl); reiLoginPage .loginAs(rei.getLogin(), rei.getPassword()) .resume(); - NavigationPage reiNavBar = new NavigationPage(participantBrowser); + NavigationPage reiNavBar = NavigationPage.load(participantBrowser); reiNavBar .openMyCourses() .openSearch() diff --git a/src/test/java/org/olat/selenium/ImsQTI21InteractionsTest.java b/src/test/java/org/olat/selenium/ImsQTI21InteractionsTest.java index aa2dea2a8ea282e47561c12aa4ce78d099e92922..49bcf63132d605926e2263c5e389222b54d97344 100644 --- a/src/test/java/org/olat/selenium/ImsQTI21InteractionsTest.java +++ b/src/test/java/org/olat/selenium/ImsQTI21InteractionsTest.java @@ -27,8 +27,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Test; @@ -73,8 +71,6 @@ public class ImsQTI21InteractionsTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * Check if the hotspot interaction send a "correct" feedback. @@ -85,15 +81,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21HotspotInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21HotspotInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Hotspot QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_hotspot.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -130,15 +128,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21AssociateInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21AssociateInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Associate QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_associate_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -180,15 +180,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21GraphicAssociateInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21GraphicAssociateInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Graphic associate QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_graphic_associate_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -228,15 +230,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21MatchInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21MatchInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Match QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_match_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -277,15 +281,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21OrderInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21OrderInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Order QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_order_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -324,15 +330,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21EndInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21EndInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "End QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_end_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -386,15 +394,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21GraphicGapInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21GraphicGapInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Graphic Gap Match QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_graphic_gap_match_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -433,15 +443,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21SelectPointInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21SelectPointInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Select point QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_select_point_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -478,15 +490,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21GraphicOrderInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21GraphicOrderInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Graphic order QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_graphic_order_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -527,15 +541,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21PositionObjectInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21PositionObjectInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Position object QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_position_object_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -575,15 +591,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21InlineChoiceInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21InlineChoiceInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Inline choice QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_inline_choice_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -620,15 +638,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21SliderInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21SliderInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Slider QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_slider_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -666,15 +686,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21GapMatchInteraction(@InitialPage LoginPage authorLoginPage) + public void qti21GapMatchInteraction() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Gap match QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_gap_match_ims.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -712,15 +734,17 @@ public class ImsQTI21InteractionsTest extends Deployments { */ @Test @RunAsClient - public void qti21MultipleInput(@InitialPage LoginPage authorLoginPage) + public void qti21MultipleInput() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Gap match QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_multi-input.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) diff --git a/src/test/java/org/olat/selenium/ImsQTI21Test.java b/src/test/java/org/olat/selenium/ImsQTI21Test.java index 65dfc8f4a2d758f06ac33acbc31d74fb8a5a21b9..9f3d03563ff3e349258737478f523dbedce29428 100644 --- a/src/test/java/org/olat/selenium/ImsQTI21Test.java +++ b/src/test/java/org/olat/selenium/ImsQTI21Test.java @@ -27,8 +27,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; @@ -68,8 +66,6 @@ public class ImsQTI21Test extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * Test the flow of the simplest possible test with our @@ -83,16 +79,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_noParts_noFeedbacks(@InitialPage LoginPage authorLoginPage) + public void qti21TestFlow_noParts_noFeedbacks() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "With parts QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_without_feedbacks.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -125,16 +123,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_noParts_withFeedbacks(@InitialPage LoginPage authorLoginPage) + public void qti21TestFlow_noParts_withFeedbacks() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "With parts QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_with_feedbacks.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -175,16 +175,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_noParts_feedbacksAndResults(@InitialPage LoginPage authorLoginPage) + public void qti21TestFlow_noParts_feedbacksAndResults() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "With parts QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_with_feedbacks.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -228,16 +230,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_parts_noFeedbacksButResults(@InitialPage LoginPage authorLoginPage) + public void qti21TestFlow_parts_noFeedbacksButResults() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "With parts QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_parts_without_feedbacks.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -284,16 +288,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_parts_feedbacks(@InitialPage LoginPage authorLoginPage) + public void qti21TestFlow_parts_feedbacks() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "With parts QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_with_parts_and_test_feedbacks.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -333,16 +339,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_timeLimits(@InitialPage LoginPage authorLoginPage) + public void qti21TestFlow_timeLimits() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Timed QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_time_limits.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -358,7 +366,7 @@ public class ImsQTI21Test extends Deployments { .assertOnAssessmentItem("Last choice") .answerSingleChoiceWithParagraph("True") .saveAnswer() - .assertOnAssessmentTestTerminated(15); + .assertOnAssessmentTestTerminated(30); } /** @@ -370,16 +378,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_timeLimits_results(@InitialPage LoginPage authorLoginPage) + public void qti21TestFlow_timeLimits_results() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Timed QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_time_limits.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -421,18 +431,19 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21TestFlow_suspend(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void qti21TestFlow_suspend(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Suspend QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_4_no_skipping.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile) @@ -461,11 +472,11 @@ public class ImsQTI21Test extends Deployments { .assertOnAssessmentItem("Single choice"); //a user search the test - LoginPage userLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(ryomouBrowser, deploymentUrl); userLoginPage .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(ryomouBrowser); + NavigationPage userNavBar = NavigationPage.load(ryomouBrowser); userNavBar .openMyCourses() .openSearch() @@ -532,16 +543,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21Course(@InitialPage LoginPage authorLoginPage) + public void qti21Course() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Simple QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_test.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -612,16 +625,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21Course_lmsHidden_results(@InitialPage LoginPage authorLoginPage) + public void qti21Course_lmsHidden_results() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Simple QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_test.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -703,16 +718,18 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21Course_suspend(@InitialPage LoginPage authorLoginPage) + public void qti21Course_suspend() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "No skipping QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_4_no_skipping.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -819,18 +836,19 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21CourseTestCockpitProgress(@InitialPage LoginPage loginPage, - @Drone @User WebDriver participantBrowser) + public void qti21CourseTestCockpitProgress(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Cockpit 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_without_feedbacks.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -884,11 +902,11 @@ public class ImsQTI21Test extends Deployments { //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -946,18 +964,19 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21CourseTestCorrectionWorkflow(@InitialPage LoginPage loginPage, - @Drone @User WebDriver participantBrowser) + public void qti21CourseTestCorrectionWorkflow(@Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO participant = new UserRestClient(deploymentUrl).createRandomUser("Hakufu"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Correction 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/test_sc_essay_mc.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -1004,11 +1023,11 @@ public class ImsQTI21Test extends Deployments { .quickAdd(participant); //a user search the content package - LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(participantBrowser, deploymentUrl); userLoginPage .loginAs(participant.getLogin(), participant.getPassword()) .resume(); - NavigationPage userNavBar = new NavigationPage(participantBrowser); + NavigationPage userNavBar = NavigationPage.load(participantBrowser); userNavBar .openMyCourses() .openSearch() @@ -1078,18 +1097,20 @@ public class ImsQTI21Test extends Deployments { */ @Test @RunAsClient - public void qti21Course_selfTest(@InitialPage LoginPage loginPage) + public void qti21Course_selfTest() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage.loginAs(author.getLogin(), author.getPassword()); //upload a test String qtiTestTitle = "Simple QTI 2.1 " + UUID.randomUUID(); URL qtiTestUrl = JunitTestHelper.class.getResource("file_resources/qti21/simple_QTI_21_test.zip"); File qtiTestFile = new File(qtiTestUrl.toURI()); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .uploadResource(qtiTestTitle, qtiTestFile); @@ -1148,7 +1169,7 @@ public class ImsQTI21Test extends Deployments { // participant comes in and do the self test loginPage.loginAs(ryomou.getLogin(), ryomou.getPassword()); - NavigationPage ryomouNavBar = new NavigationPage(browser); + NavigationPage ryomouNavBar = NavigationPage.load(browser); ryomouNavBar .openMyCourses() .select(courseTitle); diff --git a/src/test/java/org/olat/selenium/LecturesTest.java b/src/test/java/org/olat/selenium/LecturesTest.java index 86faeeec5cdfb796a2e9a90c9395203de800fea0..065c086d91ca1f4b88191c584063bc3aaac4efc7 100644 --- a/src/test/java/org/olat/selenium/LecturesTest.java +++ b/src/test/java/org/olat/selenium/LecturesTest.java @@ -27,8 +27,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Test; @@ -67,8 +65,6 @@ public class LecturesTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * An author create a course, enable the absence management, @@ -84,15 +80,16 @@ public class LecturesTest extends Deployments { */ @Test @RunAsClient - public void lecturesRollCall_authorizedAbsence(@InitialPage LoginPage loginPage, - @Drone @User WebDriver coachBrowser, @Drone @Participant WebDriver participantBrowser) + public void lecturesRollCall_authorizedAbsence(@Drone @User WebDriver coachBrowser, + @Drone @Participant WebDriver participantBrowser) throws IOException, URISyntaxException { // configure the lectures module + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - new NavigationPage(browser) + NavigationPage.load(browser) .openAdministration() .openLecturesSettings() .configure(true, true, true, false, false) @@ -105,10 +102,11 @@ public class LecturesTest extends Deployments { UserVO participant2 = new UserRestClient(deploymentUrl).createRandomUser("Rymou"); LoginPage - .getLoginPage(browser, deploymentUrl) + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -181,7 +179,7 @@ public class LecturesTest extends Deployments { .save(); //coach at work - LoginPage coachLoginPage = LoginPage.getLoginPage(coachBrowser, deploymentUrl); + LoginPage coachLoginPage = LoginPage.load(coachBrowser, deploymentUrl); coachLoginPage .loginAs(coach); new RollCallInterceptorPage(coachBrowser) @@ -192,7 +190,7 @@ public class LecturesTest extends Deployments { .assertOnClosedTable(); //participant check it roll call - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); participantLoginPage .loginAs(participant1) .resume(); @@ -222,15 +220,16 @@ public class LecturesTest extends Deployments { */ @Test @RunAsClient - public void lectureMobileRollCall_authorizedAbsence(@InitialPage LoginPage loginPage, - @Drone @User WebDriver coachBrowser, @Drone @User WebDriver participantBrowser) + public void lectureMobileRollCall_authorizedAbsence(@Drone @User WebDriver coachBrowser, + @Drone @User WebDriver participantBrowser) throws IOException, URISyntaxException { // configure the lectures module + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - new NavigationPage(browser) + NavigationPage.load(browser) .openAdministration() .openLecturesSettings() .configure(true, true, true, false, false) @@ -243,10 +242,11 @@ public class LecturesTest extends Deployments { UserVO participant2 = new UserRestClient(deploymentUrl).createRandomUser("Rymou"); LoginPage - .getLoginPage(browser, deploymentUrl) + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -319,7 +319,7 @@ public class LecturesTest extends Deployments { .save(); //coach at work - LoginPage coachLoginPage = LoginPage.getLoginPage(coachBrowser, deploymentUrl); + LoginPage coachLoginPage = LoginPage.load(coachBrowser, deploymentUrl); coachLoginPage .loginAs(coach); new RollCallInterceptorPage(coachBrowser) @@ -335,7 +335,7 @@ public class LecturesTest extends Deployments { .assertOnClosedTable(); //participant check it roll call - LoginPage participantLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(participantBrowser, deploymentUrl); participantLoginPage .loginAs(participant1) .resume(); @@ -360,14 +360,15 @@ public class LecturesTest extends Deployments { */ @Test @RunAsClient - public void lecturesRollCall(@InitialPage LoginPage loginPage) + public void lecturesRollCall() throws IOException, URISyntaxException { // configure the lectures module + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - new NavigationPage(browser) + NavigationPage.load(browser) .openAdministration() .openLecturesSettings() .configure(true, true, false, false, false) @@ -378,10 +379,11 @@ public class LecturesTest extends Deployments { UserVO participant1 = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); UserVO participant2 = new UserRestClient(deploymentUrl).createRandomUser("Rymou"); - LoginPage authorLoginPage = LoginPage.getLoginPage(browser, deploymentUrl); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); authorLoginPage.loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -480,14 +482,15 @@ public class LecturesTest extends Deployments { */ @Test @RunAsClient - public void lecturesRollCall_defaultAuthorizedAbsence(@InitialPage LoginPage loginPage) + public void lecturesRollCall_defaultAuthorizedAbsence() throws IOException, URISyntaxException { // configure the lectures module + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - new NavigationPage(browser) + NavigationPage.load(browser) .openAdministration() .openLecturesSettings() .configure(false, false, true, true, true) @@ -499,10 +502,11 @@ public class LecturesTest extends Deployments { UserVO participant2 = new UserRestClient(deploymentUrl).createRandomUser("Rymou"); LoginPage - .getLoginPage(browser, deploymentUrl) + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -575,7 +579,7 @@ public class LecturesTest extends Deployments { .save(); //coach at work - LoginPage coachLoginPage = LoginPage.getLoginPage(browser, deploymentUrl); + LoginPage coachLoginPage = LoginPage.load(browser, deploymentUrl); coachLoginPage .loginAs(author); new RollCallInterceptorPage(browser) @@ -586,7 +590,7 @@ public class LecturesTest extends Deployments { .assertOnClosedTable(); //participant check it roll call - LoginPage participantLoginPage = LoginPage.getLoginPage(browser, deploymentUrl); + LoginPage participantLoginPage = LoginPage.load(browser, deploymentUrl); participantLoginPage .loginAs(participant1) .resume(); @@ -610,16 +614,18 @@ public class LecturesTest extends Deployments { */ @Test @RunAsClient - public void importLectures(@InitialPage LoginPage loginPage) + public void importLectures() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); // configure the lectures module + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); diff --git a/src/test/java/org/olat/selenium/LoginTest.java b/src/test/java/org/olat/selenium/LoginTest.java index 951a10a4e85f90ed057b6dd4cbe737ef7365c21f..34e861fe899465b7026839b806300423d9bcf35c 100644 --- a/src/test/java/org/olat/selenium/LoginTest.java +++ b/src/test/java/org/olat/selenium/LoginTest.java @@ -26,7 +26,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Test; @@ -60,9 +59,10 @@ public class LoginTest extends Deployments { */ @Test @RunAsClient - public void loadIndex(@InitialPage LoginPage loginPage) { + public void loadIndex(LoginPage loginPage) { //check that the login page, or dmz is loaded - loginPage.assertOnLoginPage(); + LoginPage.load(browser, deploymentUrl) + .assertOnLoginPage(); } /** @@ -72,9 +72,11 @@ public class LoginTest extends Deployments { */ @Test @RunAsClient - public void loginAsAdministrator(@InitialPage LoginPage loginPage) { + public void loginAsAdministrator() { //load dmz - loginPage.assertOnLoginPage(); + LoginPage loginPage = LoginPage + .load(browser, deploymentUrl) + .assertOnLoginPage(); //login as administrator loginPage .loginAs("administrator", "openolat") @@ -91,14 +93,16 @@ public class LoginTest extends Deployments { */ @Test @RunAsClient - public void loginAsNewUser(@InitialPage LoginPage loginPage) + public void loginAsNewUser() throws IOException, URISyntaxException { //create a random user UserRestClient userClient = new UserRestClient(deploymentUrl); UserVO user = userClient.createRandomUser(); //load dmz - loginPage.assertOnLoginPage(); + LoginPage loginPage = LoginPage + .load(browser, deploymentUrl) + .assertOnLoginPage(); //login loginPage.loginAs(user.getLogin(), user.getPassword()); } @@ -118,7 +122,7 @@ public class LoginTest extends Deployments { */ @Test @RunAsClient - public void maintenanceMessage(@InitialPage LoginPage loginPage, + public void maintenanceMessage( @Drone @Participant WebDriver reiBrowser, @Drone @Student WebDriver kanuBrowser) throws IOException, URISyntaxException { @@ -127,24 +131,24 @@ public class LoginTest extends Deployments { UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu"); //a first user log in - LoginPage kanuLogin = LoginPage.getLoginPage(kanuBrowser, deploymentUrl) + LoginPage kanuLogin = LoginPage.load(kanuBrowser, deploymentUrl) .loginAs(kanu) .resume(); // administrator come in, and set a maintenance message - loginPage + LoginPage.load(browser, deploymentUrl) .assertOnLoginPage() .loginAs("administrator", "openolat") .resume(); String message = "Hello - " + UUID.randomUUID(); - AdministrationMessagesPage messagesPage = new NavigationPage(browser) + AdministrationMessagesPage messagesPage = NavigationPage.load(browser) .openAdministration() .selectInfoMessages() .newMaintenanceMessage(message); //A new user see the login page - LoginPage.getLoginPage(reiBrowser, deploymentUrl) + LoginPage.load(reiBrowser, deploymentUrl) .waitOnMaintenanceMessage(message) .loginAs(rei) .resume() diff --git a/src/test/java/org/olat/selenium/PortfolioV2Test.java b/src/test/java/org/olat/selenium/PortfolioV2Test.java index a3330a22ed42c4e3c56a108b2223c04a18a46a96..5f9034a17a7bbab11f24cec87bd283784a0448ee 100644 --- a/src/test/java/org/olat/selenium/PortfolioV2Test.java +++ b/src/test/java/org/olat/selenium/PortfolioV2Test.java @@ -28,8 +28,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; @@ -81,8 +79,6 @@ public class PortfolioV2Test extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** @@ -94,10 +90,11 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void createSimpleBinder(@InitialPage LoginPage loginPage) + public void createSimpleBinder() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createRandomUser("rei"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); @@ -135,17 +132,18 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void createTemplate(@InitialPage LoginPage loginPage, - @Drone @User WebDriver ryomouBrowser) + public void createTemplate(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("ryomou"); - - loginPage + + LoginPage + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()) .resume(); String binderTitle = "PF-Binder-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createPortfolioBinder(binderTitle) @@ -194,13 +192,13 @@ public class PortfolioV2Test extends Deployments { .finish(); //Participant log in - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); - ryomouLoginPage + LoginPage + .load(ryomouBrowser, deploymentUrl) .loginAs(ryomou) .resume(); //open the course - NavigationPage ryomouNavBar = new NavigationPage(ryomouBrowser); + NavigationPage ryomouNavBar = NavigationPage.load(ryomouBrowser); ryomouNavBar .openMyCourses() .select(courseTitle); @@ -231,10 +229,11 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void collectForumMediaInCourse(@InitialPage LoginPage loginPage) + public void collectForumMediaInCourse() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); @@ -242,6 +241,7 @@ public class PortfolioV2Test extends Deployments { String courseTitle = "Collect-Forum-" + UUID.randomUUID(); String forumTitle = ("Forum-" + UUID.randomUUID()).substring(0, 24); //go to authoring, create a course with a forum + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .openCreateDropDown() @@ -294,15 +294,17 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void collectWikiMediaInWikiResource(@InitialPage LoginPage loginPage) + public void collectWikiMediaInWikiResource() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //go to authoring + NavigationPage navBar = NavigationPage.load(browser); AuthoringEnvPage authoringEnv = navBar .assertOnNavigationPage() .openAuthoringEnvironment(); @@ -349,15 +351,17 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void collectBlogEntryMediaInBlogResource(@InitialPage LoginPage loginPage) + public void collectBlogEntryMediaInBlogResource() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); //create a course String courseTitle = "Course-With-Blog-" + UUID.randomUUID().toString(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -427,17 +431,18 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void collectEfficiencyStatement(@InitialPage LoginPage authorLoginPage, - @Drone @User WebDriver ryomouBrowser) + public void collectEfficiencyStatement(@Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); - - authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + LoginPage.load(browser, deploymentUrl) + .loginAs(author.getLogin(), author.getPassword()); //create a course String courseTitle = "Course-Assessment-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createCourse(courseTitle) @@ -491,8 +496,8 @@ public class PortfolioV2Test extends Deployments { .assertUserPassedCourseNode(assessmentNodeTitle); //Ryomou login - LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); - ryomouLoginPage + LoginPage + .load(ryomouBrowser, deploymentUrl) .loginAs(ryomou.getLogin(), ryomou.getPassword()) .resume(); @@ -534,13 +539,13 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void binderInvitation(@InitialPage LoginPage loginPage, - @Drone @User WebDriver inviteeBrowser) + public void binderInvitation(@Drone @User WebDriver inviteeBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createRandomUser("rei"); - - loginPage + + LoginPage + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()) .resume(); @@ -631,18 +636,19 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void binderAssessment(@InitialPage LoginPage loginPage, - @Drone @User WebDriver reiBrowser) + public void binderAssessment(@Drone @User WebDriver reiBrowser) throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("rei"); - - loginPage + + LoginPage + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()) .resume(); String binderTitle = "Binder to assess " + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); navBar .openAuthoringEnvironment() .createPortfolioBinder(binderTitle) @@ -707,13 +713,13 @@ public class PortfolioV2Test extends Deployments { .finish(); //Participant log in - LoginPage reiLoginPage = LoginPage.getLoginPage(reiBrowser, deploymentUrl); - reiLoginPage + LoginPage + .load(reiBrowser, deploymentUrl) .loginAs(rei) .resume(); //open the course - NavigationPage reiNavBar = new NavigationPage(reiBrowser); + NavigationPage reiNavBar = NavigationPage.load(reiBrowser); reiNavBar .openMyCourses() .select(courseTitle); @@ -799,10 +805,11 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void editPage(@InitialPage LoginPage loginPage) + public void editPage() throws IOException, URISyntaxException { UserVO user = new UserRestClient(deploymentUrl).createRandomUser("rei"); - loginPage + LoginPage + .load(browser, deploymentUrl) .loginAs(user.getLogin(), user.getPassword()) .resume(); @@ -872,11 +879,12 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void deletePage(@InitialPage LoginPage loginPage) + public void deletePage() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createRandomUser("rei"); - - loginPage + + LoginPage + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()) .resume(); @@ -956,11 +964,12 @@ public class PortfolioV2Test extends Deployments { */ @Test @RunAsClient - public void deleteBinder(@InitialPage LoginPage loginPage) + public void deleteBinder() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createRandomUser("rei"); - - loginPage + + LoginPage + .load(browser, deploymentUrl) .loginAs(author.getLogin(), author.getPassword()) .resume(); diff --git a/src/test/java/org/olat/selenium/QuestionPoolTest.java b/src/test/java/org/olat/selenium/QuestionPoolTest.java index 52839020b0807fbe7b4bfba9f4dec1d6c5ccf122..c319dae75196febeabc287fe69200f7336d99d07 100644 --- a/src/test/java/org/olat/selenium/QuestionPoolTest.java +++ b/src/test/java/org/olat/selenium/QuestionPoolTest.java @@ -26,8 +26,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Test; @@ -58,8 +56,6 @@ public class QuestionPoolTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - @Page - private NavigationPage navBar; /** * Smoke test: an author create a QTI 2.1 question, @@ -71,15 +67,17 @@ public class QuestionPoolTest extends Deployments { */ @Test @RunAsClient - public void questionPool(@InitialPage LoginPage loginPage) + public void questionPool() throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor("Lili"); - + + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); String questionTitle = "SC-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); QuestionPoolPage questionPool = navBar.assertOnNavigationPage() .openQuestionPool(); questionPool @@ -102,15 +100,16 @@ public class QuestionPoolTest extends Deployments { */ @Test @RunAsClient - public void reviewProcess(@InitialPage LoginPage loginPage) + public void reviewProcess() throws IOException, URISyntaxException { UserVO reviewer = new UserRestClient(deploymentUrl).createAuthor("Albert"); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - AdministrationPage administration = new NavigationPage(browser) + AdministrationPage administration = NavigationPage.load(browser) .openAdministration(); // configure the review process administration @@ -137,7 +136,9 @@ public class QuestionPoolTest extends Deployments { .resume(); String questionTitle = "SC-" + UUID.randomUUID(); - QuestionPoolPage questionPool = navBar.assertOnNavigationPage() + NavigationPage navBar = NavigationPage.load(browser); + QuestionPoolPage questionPool = navBar + .assertOnNavigationPage() .openQuestionPool(); questionPool .selectMyQuestions() diff --git a/src/test/java/org/olat/selenium/UserTest.java b/src/test/java/org/olat/selenium/UserTest.java index c536b50635c30f666c39434ef8ce554271fa046b..2e3cfa84334ffbc6aee38658eecfca6b8f6348e7 100644 --- a/src/test/java/org/olat/selenium/UserTest.java +++ b/src/test/java/org/olat/selenium/UserTest.java @@ -27,8 +27,6 @@ import java.util.UUID; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.page.InitialPage; -import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; @@ -72,9 +70,7 @@ public class UserTest extends Deployments { private WebDriver browser; @ArquillianResource private URL deploymentUrl; - - @Page - private NavigationPage navBar; + /** * Set the resume preferences to automatically resume the session, @@ -85,7 +81,7 @@ public class UserTest extends Deployments { * @throws URISyntaxException */ @Test - public void resumeCourseAutomatically(@InitialPage LoginPage loginPage) + public void resumeCourseAutomatically() throws IOException, URISyntaxException { //create a random user UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); @@ -93,6 +89,7 @@ public class UserTest extends Deployments { CourseVO course = new RepositoryRestClient(deploymentUrl).deployDemoCourse(); //login + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .assertOnLoginPage() .loginAs(user.getLogin(), user.getPassword()); @@ -138,7 +135,7 @@ public class UserTest extends Deployments { * @throws URISyntaxException */ @Test - public void resumeCourseOnDemand(@InitialPage LoginPage loginPage) + public void resumeCourseOnDemand() throws IOException, URISyntaxException { //create a random user UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); @@ -146,7 +143,8 @@ public class UserTest extends Deployments { CourseVO course = new RepositoryRestClient(deploymentUrl).deployDemoCourse(); //login - loginPage.loginAs(user.getLogin(), user.getPassword()); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl) + .loginAs(user.getLogin(), user.getPassword()); //set the preferences to resume automatically UserToolsPage userTools = new UserToolsPage(browser); @@ -186,11 +184,11 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void resumeDisabled(@InitialPage LoginPage loginPage) + public void resumeDisabled() throws IOException, URISyntaxException { UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); - loginPage + LoginPage loginPage = LoginPage.load(browser, deploymentUrl) .loginAs(user.getLogin(), user.getPassword()) .resume(); @@ -229,13 +227,13 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void loginInHomeWithLandingPage(@InitialPage LoginPage loginPage) + public void loginInHomeWithLandingPage() throws IOException, URISyntaxException { //create a random user UserRestClient userClient = new UserRestClient(deploymentUrl); UserVO user = userClient.createAuthor(); - loginPage + LoginPage loginPage = LoginPage.load(browser, deploymentUrl) .assertOnLoginPage() .loginAs(user.getLogin(), user.getPassword()); @@ -268,14 +266,15 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void loginInHomeWithRestUrl(@InitialPage LoginPage loginPage) + public void loginInHomeWithRestUrl() throws IOException, URISyntaxException { //create a random user UserRestClient userClient = new UserRestClient(deploymentUrl); UserVO user = userClient.createRandomUser(); //load dmz - loginPage.assertOnLoginPage(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl) + .assertOnLoginPage(); String jumpToNotificationsUrl = deploymentUrl.toString() + "url/HomeSite/" + user.getKey() + "/notifications/0"; browser.get(jumpToNotificationsUrl); @@ -284,7 +283,8 @@ public class UserTest extends Deployments { new UserToolsPage(browser).assertOnNotifications(); //go to courses - navBar.openMyCourses(); + NavigationPage.load(browser) + .openMyCourses(); //use url to go to notifications String goToNotificationsUrl = deploymentUrl.toString() + "auth/HomeSite/" + user.getKey() + "/notifications/0"; @@ -307,7 +307,7 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void restUrlAfterLogin(@InitialPage LoginPage loginPage) + public void restUrlAfterLogin() throws IOException, URISyntaxException { //create a random user UserRestClient userClient = new UserRestClient(deploymentUrl); @@ -315,11 +315,13 @@ public class UserTest extends Deployments { UserVO ryomou = userClient.createRandomUser("Ryomou"); //load dmz + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .assertOnLoginPage() .loginAs(user.getLogin(), user.getPassword()); //go to courses + NavigationPage navBar = NavigationPage.load(browser); navBar.openMyCourses(); //use url to go to the other users business card @@ -369,10 +371,11 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void userSwitchLanguageSwitchToEnglish(@InitialPage LoginPage loginPage) + public void userSwitchLanguageSwitchToEnglish() throws IOException, URISyntaxException { UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(user.getLogin(), user.getPassword()) .resume(); @@ -429,10 +432,11 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void userChangeItsPassword(@InitialPage LoginPage loginPage) + public void userChangeItsPassword() throws IOException, URISyntaxException { UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(user.getLogin(), user.getPassword()) .resume(); @@ -463,10 +467,11 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void userResetItsPreferences(@InitialPage LoginPage loginPage) + public void userResetItsPreferences() throws IOException, URISyntaxException { UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(user.getLogin(), user.getPassword()) .resume(); @@ -493,13 +498,15 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void portletDeactivateActivate(@InitialPage LoginPage loginPage) + public void portletDeactivateActivate() throws IOException, URISyntaxException { UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(user.getLogin(), user.getPassword()); + NavigationPage navBar = NavigationPage.load(browser); PortalPage portal = navBar.openPortal() .assertPortlet(PortalPage.quickStartBy) .edit() @@ -528,13 +535,15 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void movePortletToTheTop(@InitialPage LoginPage loginPage) + public void movePortletToTheTop() throws IOException, URISyntaxException { UserVO user = new UserRestClient(deploymentUrl).createRandomUser(); + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs(user.getLogin(), user.getPassword()); - + + NavigationPage navBar = NavigationPage.load(browser); PortalPage portal = navBar.openPortal() .assertPortlet(PortalPage.notesBy) .edit() @@ -569,12 +578,14 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void browserBack(@InitialPage LoginPage loginPage) + public void browserBack() throws IOException, URISyntaxException { + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .loginAs("administrator", "openolat") .resume(); - + + NavigationPage navBar = NavigationPage.load(browser); navBar .openPortal() .assertPortlet(PortalPage.quickStartBy); @@ -601,11 +612,11 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void createUser(@InitialPage LoginPage loginPage, - @Drone @User WebDriver userBrowser) + public void createUser(@Drone @User WebDriver userBrowser) throws IOException, URISyntaxException { //login + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .assertOnLoginPage() .loginAs("administrator", "openolat") @@ -614,6 +625,8 @@ public class UserTest extends Deployments { String uuid = UUID.randomUUID().toString(); String username = "miku-" + uuid; UserVO userVo = UserAdminPage.createUserVO(username, "Miku", "Hatsune", "miku-" + uuid + "@openolat.com", "miku01"); + + NavigationPage navBar = NavigationPage.load(browser); UserAdminPage userAdminPage = navBar .openUserManagement() .openCreateUser() @@ -628,7 +641,7 @@ public class UserTest extends Deployments { .assertOnUserEditView(username); //user log in - LoginPage userLoginPage = LoginPage.getLoginPage(userBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(userBrowser, deploymentUrl); //tools userLoginPage .loginAs(username, "miku01") @@ -648,10 +661,10 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void deleteUser(@InitialPage LoginPage loginPage, - @Drone @User WebDriver userBrowser) { + public void deleteUser(@Drone @User WebDriver userBrowser) { //login + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .assertOnLoginPage() .loginAs("administrator", "openolat") @@ -661,6 +674,8 @@ public class UserTest extends Deployments { String username = "miku-" + uuid; String lastName = "Hatsune" + uuid; UserVO userVo = UserAdminPage.createUserVO(username, "Miku", lastName, "miku-" + uuid + "@openolat.com", "miku01"); + + NavigationPage navBar = NavigationPage.load(browser); UserAdminPage userAdminPage = navBar .openUserManagement() .openCreateUser() @@ -668,7 +683,7 @@ public class UserTest extends Deployments { .assertOnUserEditView(username); //user log in - LoginPage userLoginPage = LoginPage.getLoginPage(userBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(userBrowser, deploymentUrl); //tools userLoginPage .loginAs(username, "miku01") @@ -685,7 +700,7 @@ public class UserTest extends Deployments { .selectAndDeleteUser(lastName); //user try the login - userLoginPage = LoginPage.getLoginPage(userBrowser, deploymentUrl); + userLoginPage = LoginPage.load(userBrowser, deploymentUrl); userLoginPage .loginDenied(username, "miku01"); //assert on error message @@ -709,15 +724,16 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void importUsers(@InitialPage LoginPage loginPage, - @Drone @User WebDriver userBrowser) + public void importUsers(@Drone @User WebDriver userBrowser) throws IOException, URISyntaxException { //login + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .assertOnLoginPage() .loginAs("administrator", "openolat") .resume(); - + + NavigationPage navBar = NavigationPage.load(browser); UserAdminPage userAdminPage = navBar .openUserManagement() .openImportUsers(); @@ -742,7 +758,7 @@ public class UserTest extends Deployments { OOGraphene.waitAndCloseBlueMessageWindow(browser); //user log in - LoginPage userLoginPage = LoginPage.getLoginPage(userBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(userBrowser, deploymentUrl); //tools userLoginPage .loginAs(username1, "rosario01") @@ -761,8 +777,7 @@ public class UserTest extends Deployments { */ @Test @RunAsClient - public void importExistingUsers(@InitialPage LoginPage loginPage, - @Drone @User WebDriver existingUserBrowser, + public void importExistingUsers(@Drone @User WebDriver existingUserBrowser, @Drone @Student WebDriver newUserBrowser) throws IOException, URISyntaxException { @@ -770,11 +785,13 @@ public class UserTest extends Deployments { .createRandomUser("tsukune"); //login + LoginPage loginPage = LoginPage.load(browser, deploymentUrl); loginPage .assertOnLoginPage() .loginAs("administrator", "openolat") .resume(); - + + NavigationPage navBar = NavigationPage.load(browser); UserAdminPage userAdminPage = navBar .openUserManagement() .openImportUsers(); @@ -801,7 +818,7 @@ public class UserTest extends Deployments { OOGraphene.waitAndCloseBlueMessageWindow(browser); //existing user log in with its new password and check if its name was updated - LoginPage userLoginPage = LoginPage.getLoginPage(existingUserBrowser, deploymentUrl); + LoginPage userLoginPage = LoginPage.load(existingUserBrowser, deploymentUrl); //tools userLoginPage .loginAs(user1.getLogin(), "openolat2") @@ -809,7 +826,7 @@ public class UserTest extends Deployments { .assertLoggedInByLastName("Aono"); //new user log in - LoginPage newLoginPage = LoginPage.getLoginPage(newUserBrowser, deploymentUrl); + LoginPage newLoginPage = LoginPage.load(newUserBrowser, deploymentUrl); //tools newLoginPage .loginAs(newUser.getLogin(), "rosario02") diff --git a/src/test/java/org/olat/selenium/page/LoginPage.java b/src/test/java/org/olat/selenium/page/LoginPage.java index 57a937166e62b8f806f4a48d6a0d57d23d950233..5630c145142de879a3fb293ea472ccfa219d76c3 100644 --- a/src/test/java/org/olat/selenium/page/LoginPage.java +++ b/src/test/java/org/olat/selenium/page/LoginPage.java @@ -24,8 +24,6 @@ import java.net.URL; import java.util.List; import org.jboss.arquillian.drone.api.annotation.Drone; -import org.jboss.arquillian.graphene.Graphene; -import org.jboss.arquillian.graphene.page.Location; import org.junit.Assert; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.user.restapi.UserVO; @@ -41,7 +39,6 @@ import org.openqa.selenium.WebElement; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -@Location("dmz") public class LoginPage { private static final String footerUserDivXPath = "//div[@id='o_footer_user']/span[@id='o_username']"; @@ -60,9 +57,10 @@ public class LoginPage { @Drone private WebDriver browser; - public static LoginPage getLoginPage(WebDriver browser, URL deploymentUrl) { + public static LoginPage load(WebDriver browser, URL deploymentUrl) { LoginPage page = new LoginPage(browser); browser.navigate().to(deploymentUrl); + OOGraphene.waitElement(loginFormBy, browser); return page; } @@ -105,7 +103,7 @@ public class LoginPage { public LoginPage assertOnMembershipConfirmation() { By reservationBy = By.cssSelector("div.o_reservation"); - OOGraphene.waitElement(reservationBy, 5, browser); + OOGraphene.waitElement(reservationBy, 10, browser); WebElement reservationEl = browser.findElement(reservationBy); Assert.assertTrue(reservationEl.isDisplayed()); return this; @@ -126,9 +124,8 @@ public class LoginPage { */ public void asGuest() { By guestLinkBy = By.xpath("//a[contains(@href,'menu.guest')]"); - WebElement guestLink = browser.findElement(guestLinkBy); - Graphene.guardHttp(guestLink).click(); - + OOGraphene.waitElement(guestLinkBy, browser); + browser.findElement(guestLinkBy).click(); By footerUserDivBy = By.id("o_footer_user"); OOGraphene.waitElement(footerUserDivBy, browser); } diff --git a/src/test/java/org/olat/selenium/page/NavigationPage.java b/src/test/java/org/olat/selenium/page/NavigationPage.java index b6bfcdb5b827e1dbf0401728c452622ec99de8d7..5de107c8241b978b11ebf76e0816dedfd306b305 100644 --- a/src/test/java/org/olat/selenium/page/NavigationPage.java +++ b/src/test/java/org/olat/selenium/page/NavigationPage.java @@ -21,7 +21,6 @@ package org.olat.selenium.page; import java.util.List; -import org.jboss.arquillian.drone.api.annotation.Drone; import org.junit.Assert; import org.olat.selenium.page.core.AdministrationPage; import org.olat.selenium.page.course.MyCoursesPage; @@ -61,15 +60,15 @@ public class NavigationPage { public static final By portalAssertBy = By.className("o_portal"); public static final By toolbarBackBy = By.cssSelector("li.o_breadcrumb_back>a"); - @Drone - private WebDriver browser; + private final WebDriver browser; - public NavigationPage() { - // + private NavigationPage(WebDriver browser) { + this.browser = browser; } - public NavigationPage(WebDriver browser) { - this.browser = browser; + public static final NavigationPage load(WebDriver browser) { + OOGraphene.waitElement(navigationSitesBy, browser); + return new NavigationPage(browser); } public NavigationPage assertOnNavigationPage() { @@ -157,9 +156,8 @@ public class NavigationPage { private void openMoreMenu() { By openMoreBy = By.cssSelector("#o_navbar_more a.dropdown-toggle"); - List<WebElement> openMoreLinks = browser.findElements(openMoreBy); - Assert.assertFalse(openMoreLinks.isEmpty()); - openMoreLinks.get(0).click(); + OOGraphene.waitElement(openMoreBy, browser); + browser.findElement(openMoreBy).click(); //wait the small transition By openedMoreMenuby = By.cssSelector("#o_navbar_more ul.dropdown-menu.dropdown-menu-right"); OOGraphene.waitElement(openedMoreMenuby, 5, browser); diff --git a/src/test/java/org/olat/selenium/page/core/AdministrationPage.java b/src/test/java/org/olat/selenium/page/core/AdministrationPage.java index a75cd852c188836428d8db831acaedf84af66426..080afd214e769577723e60c625b207cb17d873ad 100644 --- a/src/test/java/org/olat/selenium/page/core/AdministrationPage.java +++ b/src/test/java/org/olat/selenium/page/core/AdministrationPage.java @@ -127,29 +127,25 @@ public class AdministrationPage { } public AdministrationPage setGroupConfirmationForUser(boolean mandatory) { - By userConfirmationBy = By.xpath("//label[input[@name='mandatory.membership' and @value='user']]"); By userConfirmationCheckBy = By.xpath("//label/input[@name='mandatory.membership' and @value='user']"); - OOGraphene.waitElement(userConfirmationBy, browser); - OOGraphene.scrollTo(userConfirmationBy, browser); + OOGraphene.waitElement(userConfirmationCheckBy, browser); + OOGraphene.scrollTo(userConfirmationCheckBy, browser); - WebElement userConfirmationEl = browser.findElement(userConfirmationBy); WebElement userConfirmationCheckEl = browser.findElement(userConfirmationCheckBy); - OOGraphene.check(userConfirmationEl, userConfirmationCheckEl, new Boolean(mandatory)); + OOGraphene.check(userConfirmationCheckEl, Boolean.valueOf(mandatory)); OOGraphene.waitBusy(browser); return this; } public AdministrationPage setGroupConfirmationForAuthor(boolean mandatory) { - By authorConfirmationBy = By.xpath("//label[input[@name='mandatory.membership' and @value='author']]"); By authorConfirmationCheckBy = By.xpath("//label/input[@name='mandatory.membership' and @value='author']"); - OOGraphene.waitElement(authorConfirmationBy, 5, browser); - OOGraphene.scrollTo(authorConfirmationBy, browser); + OOGraphene.waitElement(authorConfirmationCheckBy, browser); + OOGraphene.scrollTo(authorConfirmationCheckBy, browser); - WebElement authorConfirmationEl = browser.findElement(authorConfirmationBy); WebElement authorConfirmationCheckEl = browser.findElement(authorConfirmationCheckBy); - OOGraphene.check(authorConfirmationEl, authorConfirmationCheckEl, new Boolean(mandatory)); + OOGraphene.check(authorConfirmationCheckEl, Boolean.valueOf(mandatory)); OOGraphene.waitBusy(browser); return this; } 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 12ab23035000513d494dafd92d3333d35f554e13..7ed8c9bad8efc4df42b6bf017de90eda42d0b543 100644 --- a/src/test/java/org/olat/selenium/page/core/CalendarPage.java +++ b/src/test/java/org/olat/selenium/page/core/CalendarPage.java @@ -72,8 +72,7 @@ public class CalendarPage { * @return The calendar page */ public CalendarPage assertOnCalendar() { - List<WebElement> calendarToolbarsEl = browser.findElements(calendarToolbatBy); - Assert.assertFalse(calendarToolbarsEl.isEmpty()); + OOGraphene.waitElement(calendarToolbatBy, browser); return this; } @@ -116,12 +115,10 @@ public class CalendarPage { public CalendarPage setAllDay(boolean allDay) { By locationBy = By.xpath("//fieldset[contains(@class,'o_sel_cal_entry_form')]//div[contains(@class,'o_sel_cal_all_day')]//input[@type='checkbox']"); - By labelLocationBy = By.xpath("//fieldset[contains(@class,'o_sel_cal_entry_form')]//div[contains(@class,'o_sel_cal_all_day')]//label[input[@type='checkbox']]"); WebElement allDayEl = browser.findElement(locationBy); - WebElement allDayLabelEl = browser.findElement(labelLocationBy); - OOGraphene.scrollTo(labelLocationBy, browser); - OOGraphene.check(allDayLabelEl, allDayEl, new Boolean(allDay)); + OOGraphene.scrollTo(locationBy, browser); + OOGraphene.check(allDayEl, new Boolean(allDay)); if(!allDay) { By hourBy = By.xpath("//fieldset[contains(@class,'o_sel_cal_entry_form')]//div[contains(@class,'o_sel_cal_begin')]//input[contains(@id,'o_dch_')]"); @@ -149,33 +146,28 @@ public class CalendarPage { new Select(recurrenceEl).selectByValue(recur); OOGraphene.waitBusy(browser); - //By untilBy = By.cssSelector("fieldset.o_sel_cal_entry_form div.o_sel_cal_until input[type='text']"); By untilAltBy = By.cssSelector("fieldset.o_sel_cal_entry_form div.o_sel_cal_until span.input-group-addon i"); - OOGraphene.waitElement(untilAltBy, 5, browser); + OOGraphene.waitElement(untilAltBy, browser); browser.findElement(untilAltBy).click(); - OOGraphene.waitGui(browser); - selectDayInDatePicker(day); return this; } private CalendarPage selectDayInDatePicker(int day) { By datePickerBy = By.id("ui-datepicker-div"); - OOGraphene.waitElement(datePickerBy, 5, browser); + OOGraphene.waitElement(datePickerBy, browser); By dayBy = By.xpath("//div[@id='ui-datepicker-div']//td//a[normalize-space(text())='" + day + "']"); - OOGraphene.waitElement(dayBy, 5, browser); + OOGraphene.waitElement(dayBy, browser); browser.findElement(dayBy).click(); - OOGraphene.waitElementUntilNotVisible(datePickerBy, 5, browser); - //OOGraphene.waitingALittleBit(); return this; } public CalendarPage save() { By saveBy = By.cssSelector("fieldset.o_sel_cal_entry_form button.btn.btn-primary span"); OOGraphene.waitElement(saveBy, 5, browser); - OOGraphene.clickAndWait(saveBy, browser);//TODO sel + OOGraphene.clickAndWait(saveBy, browser);//TODO selenium return this; } diff --git a/src/test/java/org/olat/selenium/page/core/ContactPage.java b/src/test/java/org/olat/selenium/page/core/ContactPage.java index 95cfe38ecbc5817c7746bd3a33800512d5c22009..6362daeb02a12207dc6988b4579eb0d3df83e449 100644 --- a/src/test/java/org/olat/selenium/page/core/ContactPage.java +++ b/src/test/java/org/olat/selenium/page/core/ContactPage.java @@ -62,8 +62,9 @@ public class ContactPage { public ContactPage send() { By sendBy = By.cssSelector("fieldset.o_sel_contact_form button.btn-primary"); - OOGraphene.clickAndWait(sendBy, browser); - OOGraphene.closeBlueMessageWindow(browser); + OOGraphene.moveAndClick(sendBy, browser); + OOGraphene.moveTop(browser); + OOGraphene.waitAndCloseBlueMessageWindow(browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/core/FolderPage.java b/src/test/java/org/olat/selenium/page/core/FolderPage.java index 9e2c804eac64574f0e2fe618c7bc31c699679397..bb0799058b553aee4a88676ba5d182e83388ea2e 100644 --- a/src/test/java/org/olat/selenium/page/core/FolderPage.java +++ b/src/test/java/org/olat/selenium/page/core/FolderPage.java @@ -137,7 +137,7 @@ public class FolderPage { // tooltip of the image sometimes appears and block the click By tooltipBy = By.cssSelector("div.tooltip-inner"); - WebElement rootEl = OOGraphene.unwrap(browser.findElement(rootBy)); + WebElement rootEl = browser.findElement(rootBy); List<WebElement> tooltipEls = browser.findElements(tooltipBy); if(tooltipEls.size() > 0) { new Actions(browser) diff --git a/src/test/java/org/olat/selenium/page/core/IMPage.java b/src/test/java/org/olat/selenium/page/core/IMPage.java index 645ae41495721b30428c85f8b582babb4de35f44..e7f3f977272a04049b13f2cd657137ab02985ba0 100644 --- a/src/test/java/org/olat/selenium/page/core/IMPage.java +++ b/src/test/java/org/olat/selenium/page/core/IMPage.java @@ -19,11 +19,6 @@ */ package org.olat.selenium.page.core; -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.function.Function; - -import org.jboss.arquillian.graphene.Graphene; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -84,21 +79,8 @@ public class IMPage { * @return */ public IMPage assertOnMessage(final String message) { - final By historyBy = By.cssSelector(".o_im_chat_history .o_im_body"); - - Graphene.waitModel().withTimeout(10, TimeUnit.SECONDS).until(new Function<WebDriver,Boolean>(){ - @Override - public Boolean apply(WebDriver bbrowser) { - boolean found = false; - List<WebElement> history = bbrowser.findElements(historyBy); - for(WebElement m:history) { - if(m.getText().contains(message)) { - found = true; - } - } - return found; - } - }); + final By historyBy = By.xpath("//div[contains(@class,'o_im_body')][text()[contains(.,'" + message + "')]]"); + OOGraphene.waitElement(historyBy, 10, browser); return this; } } diff --git a/src/test/java/org/olat/selenium/page/core/LicensesAdminstrationPage.java b/src/test/java/org/olat/selenium/page/core/LicensesAdminstrationPage.java index 96546fb87c0cfa186866242abc68d55a5d7c5575..6070739b31770ddec1cfacfb440dfaae463048f9 100644 --- a/src/test/java/org/olat/selenium/page/core/LicensesAdminstrationPage.java +++ b/src/test/java/org/olat/selenium/page/core/LicensesAdminstrationPage.java @@ -24,7 +24,6 @@ import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.interactions.Actions; /** * @@ -42,17 +41,13 @@ public class LicensesAdminstrationPage { public LicensesAdminstrationPage enableForResources(String license) { By resourceCheckBy = By.xpath("//div[contains(@class,'o_table_flexi')]//tr[td[text()[contains(.,'" + license + "')]]]/td[10]/div/label/input[@type='checkbox']"); - By resourceLabelBy = By.xpath("//div[contains(@class,'o_table_flexi')]//tr[td[text()[contains(.,'" + license + "')]]]/td[10]/div/label"); - - WebElement resourceCheckEl = browser.findElement(resourceCheckBy); - WebElement resourceLabelEl = browser.findElement(resourceLabelBy); if(browser instanceof ChromeDriver) { - resourceLabelEl = OOGraphene.unwrap(resourceLabelEl); - new Actions(browser).moveToElement(resourceLabelEl).build().perform(); + OOGraphene.moveTo(resourceCheckBy, browser); OOGraphene.waitingALittleBit(); } - - OOGraphene.check(resourceLabelEl, resourceCheckEl, Boolean.TRUE); + + WebElement resourceCheckEl = browser.findElement(resourceCheckBy); + OOGraphene.check(resourceCheckEl, Boolean.TRUE); OOGraphene.waitBusy(browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/core/MenuTreePageFragment.java b/src/test/java/org/olat/selenium/page/core/MenuTreePageFragment.java index 3cac28a2c3b4501193c3f9ba4fd3c427b167215d..90677ad7af5b27ea17da4e10b8ecdcbfd2ce0717 100644 --- a/src/test/java/org/olat/selenium/page/core/MenuTreePageFragment.java +++ b/src/test/java/org/olat/selenium/page/core/MenuTreePageFragment.java @@ -62,34 +62,22 @@ public class MenuTreePageFragment { } public MenuTreePageFragment selectWithTitle(String title) { - boolean found = false; - WebElement tree = browser.findElement(treeBy); - List<WebElement> nodeLinks = tree.findElements(By.cssSelector("li>div>span.o_tree_link>a")); - for(WebElement nodeLink:nodeLinks) { - String text = nodeLink.getText().toLowerCase(); - if(text.contains(title.toLowerCase())) { - nodeLink.click(); - OOGraphene.waitBusy(browser); - found = true; - } - } - - Assert.assertTrue("Link not found with title: " + title, found); + By linkBy = By.xpath("//div[contains(@class,'o_tree')]//li/div/span[contains(@class,'o_tree_link')]/a[span[contains(text(),'" + title + "')]]"); + OOGraphene.waitElement(linkBy, browser); + browser.findElement(linkBy).click(); + OOGraphene.waitBusy(browser); return this; } public MenuTreePageFragment assertWithTitle(String title) { - boolean found = false; - By titleBy = By.cssSelector(".o_tree li>div>span.o_tree_link>a"); - List<WebElement> nodeLinks = browser.findElements(titleBy); - for(WebElement nodeLink:nodeLinks) { - String text = nodeLink.getText(); - if(text.contains(title)) { - found = true; - } - } - - Assert.assertTrue("Link not found with title: " + title, found); + By linkBy = By.xpath("//div[contains(@class,'o_tree')]//li/div/span[contains(@class,'o_tree_link')]/a[span[contains(text(),'" + title + "')]]"); + OOGraphene.waitElement(linkBy, browser); + return this; + } + + public MenuTreePageFragment assertWithTitleSelected(String title) { + By linkBy = By.xpath("//div[contains(@class,'o_tree')]//li[contains(@class,'active')]/div/span[contains(@class,'o_tree_link')]/a[span[contains(text(),'" + title + "')]]"); + OOGraphene.waitElement(linkBy, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/AssessmentCEConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/AssessmentCEConfigurationPage.java index 4bc628edbe0aacc48c508ddac4d2e99a7758afe8..1e722428893cad68372535418d7317bbd74a536c 100644 --- a/src/test/java/org/olat/selenium/page/course/AssessmentCEConfigurationPage.java +++ b/src/test/java/org/olat/selenium/page/course/AssessmentCEConfigurationPage.java @@ -19,9 +19,6 @@ */ package org.olat.selenium.page.course; -import java.util.List; - -import org.junit.Assert; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -73,26 +70,12 @@ public class AssessmentCEConfigurationPage { By saveBy = By.cssSelector(".o_sel_course_ms_form button.btn.btn-primary"); OOGraphene.click(saveBy, browser); OOGraphene.waitBusy(browser); + OOGraphene.scrollTop(browser); return this; } private AssessmentCEConfigurationPage selectTab(By tabBy) { - List<WebElement> tabLinks = browser.findElements(CourseEditorPageFragment.navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> chooseRepoEntry = browser.findElements(tabBy); - if(chooseRepoEntry.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_node_config", tabBy, browser); return this; } - } diff --git a/src/test/java/org/olat/selenium/page/course/AssessmentModePage.java b/src/test/java/org/olat/selenium/page/course/AssessmentModePage.java index 84d27e375cdd21f26e48f809ba0619d2f229ed08..12f2bde252783c42d64671a2db9e67edb2ec0753 100644 --- a/src/test/java/org/olat/selenium/page/course/AssessmentModePage.java +++ b/src/test/java/org/olat/selenium/page/course/AssessmentModePage.java @@ -72,6 +72,7 @@ public class AssessmentModePage { OOGraphene.closeBlueMessageWindow(browser); By nameBy = By.cssSelector("div.o_sel_assessment_mode_name input[type='text']"); + OOGraphene.waitElement(nameBy, browser); browser.findElement(nameBy).sendKeys(name); //begin OOGraphene.datetime(begin, "o_sel_assessment_mode_begin", browser); @@ -84,8 +85,8 @@ public class AssessmentModePage { //audience course By audienceBy = By.xpath("//div[contains(@class,'o_sel_assessment_mode_audience')]//input[@value='course']"); - WebElement audienceEl = browser.findElement(audienceBy); - audienceEl.click(); + OOGraphene.waitElement(audienceBy, browser); + browser.findElement(audienceBy).click(); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/AssessmentToolPage.java b/src/test/java/org/olat/selenium/page/course/AssessmentToolPage.java index f2c445e6961dd6986c7d8e29ad653a544124e7d0..5279b7b15f184a3f6dc64552599dc1fc4776fd91 100644 --- a/src/test/java/org/olat/selenium/page/course/AssessmentToolPage.java +++ b/src/test/java/org/olat/selenium/page/course/AssessmentToolPage.java @@ -21,7 +21,9 @@ package org.olat.selenium.page.course; import java.util.List; +import org.apache.logging.log4j.Logger; import org.junit.Assert; +import org.olat.core.logging.Tracing; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.user.restapi.UserVO; import org.openqa.selenium.By; @@ -35,6 +37,7 @@ import org.openqa.selenium.WebElement; * */ public class AssessmentToolPage { + private static final Logger log = Tracing.createLoggerFor(AssessmentToolPage.class); private final WebDriver browser; @@ -171,8 +174,8 @@ public class AssessmentToolPage { * @return Itself */ public AssessmentToolPage assertProgress(UserVO user, int progress) { - By progressBy = By.xpath("//div[contains(@class,'o_table_wrapper')]/table//tr[td/a[contains(.,'" + user.getFirstName() + "')]]/td/div[@class='progress']/div[@title='" + progress + "%']"); - OOGraphene.waitElement(progressBy, 10, browser); + By progressBy = By.xpath("//div[contains(@class,'o_table_wrapper')]/table//tr[td/a[contains(.,'" + user.getFirstName() + "')]]/td/div[@class='progress'][div[@title='" + progress + "%']]"); + OOGraphene.waitElement(progressBy, 15, 1, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/ContactConfigPage.java b/src/test/java/org/olat/selenium/page/course/ContactConfigPage.java index 1b374ea4fe028bce413870d78b5298dbcb82a929..31357e2983193ce5709ad1a0418cf3e7dac1f5c4 100644 --- a/src/test/java/org/olat/selenium/page/course/ContactConfigPage.java +++ b/src/test/java/org/olat/selenium/page/course/ContactConfigPage.java @@ -40,7 +40,7 @@ public class ContactConfigPage { public ContactConfigPage selectConfiguration() { OOGraphene.scrollTop(browser); By configBy = By.className("o_sel_co_config_form"); - OOGraphene.selectTab(CourseEditorPageFragment.navBarNodeConfiguration, configBy, browser); + OOGraphene.selectTab("o_node_config", configBy, browser); return this; } 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 5fac7c2d665bf2513e5ecef3d87339b83b5b1f9b..6572a9ab4ef0b978bbae5a833e358317820911a7 100644 --- a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java @@ -44,8 +44,6 @@ public class CourseEditorPageFragment { public static final By toolbarBackBy = By.cssSelector("li.o_breadcrumb_back>a"); - public static final By navBarNodeConfiguration = By.cssSelector("ul.o_node_config>li>a"); - public static final By chooseCpButton = By.className("o_sel_cp_choose_repofile"); public static final By chooseWikiButton = By.className("o_sel_wiki_choose_repofile"); public static final By chooseTestButton = By.className("o_sel_test_choose_repofile"); @@ -105,7 +103,7 @@ public class CourseEditorPageFragment { browser.findElement(rootNodeBy).click(); OOGraphene.waitBusy(browser); By rootNodeActiveBy = By.cssSelector("span.o_tree_link.o_tree_l0.active"); - OOGraphene.waitElement(rootNodeActiveBy, 5, browser); + OOGraphene.waitElement(rootNodeActiveBy, browser); return this; } @@ -149,25 +147,7 @@ public class CourseEditorPageFragment { private CourseEditorPageFragment selectTab(By tabBy) { //make sure the tab bar is loaded - By navBarBy = By.cssSelector("ul.o_node_config"); - OOGraphene.waitElement(navBarBy, 5, browser); - - List<WebElement> tabLinks = browser.findElements(navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - OOGraphene.waitElement(tabNavTabsBy, 5, browser); - List<WebElement> chooseRepoEntry = browser.findElements(tabBy); - if(chooseRepoEntry.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_node_config", tabBy, browser); return this; } @@ -215,18 +195,14 @@ public class CourseEditorPageFragment { * @return */ public CourseEditorPageFragment createNode(String nodeAlias) { - OOGraphene.waitElement(createNodeButton, 5, browser); + OOGraphene.waitElement(createNodeButton, browser); browser.findElement(createNodeButton).click(); OOGraphene.waitModalDialog(browser); By nodeBy = By.xpath("//div[@id='o_course_editor_choose_nodetype']//a[contains(@class,'o_sel_course_editor_node-" + nodeAlias + "')]"); - OOGraphene.waitElement(nodeBy, browser); - if("lti".equals(nodeAlias) || "co".equals(nodeAlias) || "cal".equals(nodeAlias)) { - OOGraphene.clickAndWait(nodeBy, browser); - } else { - browser.findElement(nodeBy).click(); - OOGraphene.waitBusy(browser); - } + OOGraphene.moveAndClick(nodeBy, browser); + OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialogDisappears(browser); return this; } @@ -238,7 +214,7 @@ public class CourseEditorPageFragment { */ public CourseEditorPageFragment nodeTitle(String title) { By shortTitleBy = By.cssSelector("div.o_sel_node_editor_shorttitle input[type='text']"); - OOGraphene.waitElement(shortTitleBy, 5, browser); + OOGraphene.waitElement(shortTitleBy, browser); WebElement shortTitleEl = browser.findElement(shortTitleBy); shortTitleEl.clear(); shortTitleEl.sendKeys(title); @@ -324,23 +300,15 @@ public class CourseEditorPageFragment { * @return */ public CourseEditorPageFragment selectTabLearnContent() { - List<WebElement> tabLinks = browser.findElements(navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); + OOGraphene.selectTab("o_node_config", (b) -> { for(By chooseRepoEntriesButton: chooseRepoEntriesButtonList) { - List<WebElement> chooseRepoEntry = browser.findElements(chooseRepoEntriesButton); - if(chooseRepoEntry.size() > 0) { - found = true; - break a_a; + List<WebElement> chooseRepoEntry = b.findElements(chooseRepoEntriesButton); + if(!chooseRepoEntry.isEmpty()) { + return true; } } - } - - Assert.assertTrue("Found the tab learn content", found); + return false; + }, browser); return this; } 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 890cdfe23faa8ccb27d0bf9734b2a93545ad9f87..b91c8a784e7c2cbb2647ab62c4bd57466b9b9470 100644 --- a/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/CoursePageFragment.java @@ -134,7 +134,7 @@ public class CoursePageFragment { * @return */ public MenuTreePageFragment clickTree() { - OOGraphene.waitElement(MenuTreePageFragment.treeBy, 2, browser); + OOGraphene.waitElement(MenuTreePageFragment.treeBy, browser); MenuTreePageFragment menuTree = new MenuTreePageFragment(browser); menuTree.selectRoot(); return menuTree; @@ -146,7 +146,7 @@ public class CoursePageFragment { */ public CoursePageFragment openToolsMenu() { browser.findElement(toolsMenuCaret).click(); - OOGraphene.waitElement(toolsMenu, 5, browser); + OOGraphene.waitElement(toolsMenu, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/CourseWizardPage.java b/src/test/java/org/olat/selenium/page/course/CourseWizardPage.java index 16a3399c57f0e190aacc5e5ef7943b9f0edd120f..486058cbf8f427834a6ddf8ca39e9848733f6e71 100644 --- a/src/test/java/org/olat/selenium/page/course/CourseWizardPage.java +++ b/src/test/java/org/olat/selenium/page/course/CourseWizardPage.java @@ -84,11 +84,13 @@ public class CourseWizardPage { By checkAllBy = By.cssSelector("div.modal div.form-group input[type='checkbox']"); List<WebElement> checkAll = browser.findElements(checkAllBy); Assert.assertFalse(checkAll.isEmpty()); - for(WebElement check:checkAll) { - check.click(); + int numOfCheckbox = checkAll.size(); + for(int i=0;i<numOfCheckbox; i++) { + By checkbox = By.xpath("//div[contains(@class,'modal')]//div[contains(@class,'form-group')]//div[" + (i+1) + "]/div/label/input[@type='checkbox']"); + OOGraphene.waitElement(checkbox, browser); + browser.findElement(checkbox).click(); OOGraphene.waitBusy(browser); } - return this; } } \ No newline at end of file diff --git a/src/test/java/org/olat/selenium/page/course/DialogConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/DialogConfigurationPage.java index bdef7c63adae0fff68ff89bb03109167cf48876d..8f70804a5f382e1e975260a53bd5c2b8065cd97b 100644 --- a/src/test/java/org/olat/selenium/page/course/DialogConfigurationPage.java +++ b/src/test/java/org/olat/selenium/page/course/DialogConfigurationPage.java @@ -41,7 +41,7 @@ public class DialogConfigurationPage { public DialogConfigurationPage selectConfiguration() { By dialogConfigBy = By.cssSelector("fieldset.o_sel_dialog_settings_upload"); - OOGraphene.selectTab(CourseEditorPageFragment.navBarNodeConfiguration, dialogConfigBy, browser); + OOGraphene.selectTab("o_node_config", dialogConfigBy, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/EnrollmentConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/EnrollmentConfigurationPage.java index 7778efe2947a47f5f2cf392161183c2c6e8eccad..679427f26e54af2c4a8e6f4bb512ce6055e05fee 100644 --- a/src/test/java/org/olat/selenium/page/course/EnrollmentConfigurationPage.java +++ b/src/test/java/org/olat/selenium/page/course/EnrollmentConfigurationPage.java @@ -21,7 +21,6 @@ package org.olat.selenium.page.course; import java.util.List; -import org.junit.Assert; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -127,21 +126,7 @@ public class EnrollmentConfigurationPage { } private EnrollmentConfigurationPage selectTab(By tabBy) { - List<WebElement> tabLinks = browser.findElements(CourseEditorPageFragment.navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> chooseRepoEntry = browser.findElements(tabBy); - if(chooseRepoEntry.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_node_config", tabBy, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/ForumCEPage.java b/src/test/java/org/olat/selenium/page/course/ForumCEPage.java index 28927ea654db41c4e48f97b4afe4ce52ba309773..d23e3814fc4ab078ca94efb16523e7e489b1de4a 100644 --- a/src/test/java/org/olat/selenium/page/course/ForumCEPage.java +++ b/src/test/java/org/olat/selenium/page/course/ForumCEPage.java @@ -19,13 +19,9 @@ */ package org.olat.selenium.page.course; -import java.util.List; - -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; /** * Drive the configuration of the forum's course element. @@ -55,21 +51,7 @@ public class ForumCEPage { } private ForumCEPage selectTab(By tabBy) { - List<WebElement> tabLinks = browser.findElements(CourseEditorPageFragment.navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> chooseRepoEntry = browser.findElements(tabBy); - if(chooseRepoEntry.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_node_config", tabBy, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/GroupTaskConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/GroupTaskConfigurationPage.java index 6f2132188a8ef67da42924e623c2bc53b2fd5bb2..24c67de297551eb3cfa0a80ce5fc5f11dfb0f9c0 100644 --- a/src/test/java/org/olat/selenium/page/course/GroupTaskConfigurationPage.java +++ b/src/test/java/org/olat/selenium/page/course/GroupTaskConfigurationPage.java @@ -20,9 +20,7 @@ package org.olat.selenium.page.course; import java.io.File; -import java.util.List; -import org.junit.Assert; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -82,11 +80,9 @@ public class GroupTaskConfigurationPage { } private GroupTaskConfigurationPage enableStep(String name, boolean enable) { - By stepBy = By.xpath("//fieldset[contains(@class,'o_sel_course_gta_steps')]//label[input[@name='" + name + "']]"); - WebElement labelEl = browser.findElement(stepBy); By checkboxStepBy = By.xpath("//fieldset[contains(@class,'o_sel_course_gta_steps')]//label/input[@name='" + name + "']"); WebElement checkboxEl = browser.findElement(checkboxStepBy); - OOGraphene.check(labelEl, checkboxEl, Boolean.valueOf(enable)); + OOGraphene.check(checkboxEl, Boolean.valueOf(enable)); OOGraphene.waitBusy(browser); return this; } @@ -190,9 +186,8 @@ public class GroupTaskConfigurationPage { public GroupTaskConfigurationPage saveTasks() { By saveBy = By.cssSelector(".o_sel_course_gta_task_config_buttons button.btn-primary"); - List<WebElement> saveEls = browser.findElements(saveBy); - Assert.assertEquals(1, saveEls.size()); - saveEls.get(0).click(); + OOGraphene.waitElement(saveBy, browser); + browser.findElement(saveBy).click(); OOGraphene.waitBusy(browser); return this; } @@ -211,10 +206,9 @@ public class GroupTaskConfigurationPage { //save By saveBy = By.cssSelector(".o_sel_course_gta_upload_solution_form button.btn-primary"); - List<WebElement> saveEls = browser.findElements(saveBy); - Assert.assertEquals(1, saveEls.size()); - saveEls.get(0).click(); + browser.findElement(saveBy).click(); OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialogDisappears(browser); return this; } @@ -231,21 +225,7 @@ public class GroupTaskConfigurationPage { } private GroupTaskConfigurationPage selectTab(By tabBy) { - List<WebElement> tabLinks = browser.findElements(CourseEditorPageFragment.navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> elements = browser.findElements(tabBy); - if(elements.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_node_config", tabBy, browser); return this; } } diff --git a/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java b/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java index 96b79b3a038eda7b7c9e6d3c64774be34a699e5c..4ae09dcf651e2142446c55cf2ef81345cb4886a7 100644 --- a/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java +++ b/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java @@ -106,7 +106,8 @@ public class GroupTaskPage { private GroupTaskPage uploadFile(String stepId, File file) { By uploadButtonBy = By.cssSelector("#" + stepId + " .o_sel_course_gta_submit_file"); - OOGraphene.clickAndWait(uploadButtonBy, browser);//TODO sel clickAndWait + OOGraphene.moveAndClick(uploadButtonBy, browser); + OOGraphene.waitBusyAndScrollTop(browser); OOGraphene.waitModalDialog(browser); By inputBy = By.cssSelector(".o_fileinput input[type='file']"); diff --git a/src/test/java/org/olat/selenium/page/course/GroupTaskToCoachPage.java b/src/test/java/org/olat/selenium/page/course/GroupTaskToCoachPage.java index 82999f3aa2d7a8c97f2e03b84b6fd28aadbdd4fb..da417319ee61c001f9369101729873bf79522747 100644 --- a/src/test/java/org/olat/selenium/page/course/GroupTaskToCoachPage.java +++ b/src/test/java/org/olat/selenium/page/course/GroupTaskToCoachPage.java @@ -85,7 +85,7 @@ public class GroupTaskToCoachPage { public GroupTaskToCoachPage reviewed() { By reviewBy = By.cssSelector("#o_step_review_content .o_sel_course_gta_reviewed"); OOGraphene.waitElement(reviewBy, browser); - OOGraphene.clickAndWait(reviewBy, browser); + OOGraphene.moveAndClick(reviewBy, browser); confirm(); OOGraphene.waitAndCloseBlueMessageWindow(browser); return this; @@ -109,10 +109,12 @@ public class GroupTaskToCoachPage { } public GroupTaskToCoachPage confirm() { + OOGraphene.waitBusyAndScrollTop(browser); OOGraphene.waitModalDialog(browser); - WebElement yesLink = browser.findElement(By.xpath("//div[contains(@class,'modal-dialog')]//a[contains(@href,'link_0')]")); - yesLink.click(); + By yes = By.xpath("//div[contains(@class,'modal-dialog')]//a[contains(@href,'link_0')]"); + browser.findElement(yes).click(); OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialogDisappears(browser); return this; } @@ -139,6 +141,7 @@ public class GroupTaskToCoachPage { By saveButtonBy = By.cssSelector(".o_sel_course_gta_upload_form button.btn-primary"); browser.findElement(saveButtonBy).click(); OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialogDisappears(browser); By correctionUploaded = By.xpath("//table[contains(@class,'table')]//tr/td//a[text()[contains(.,'" + correctionFile.getName() + "')]]"); OOGraphene.waitElement(correctionUploaded, 5, browser); return this; @@ -203,19 +206,15 @@ public class GroupTaskToCoachPage { By groupAssessmentPopupBy = By.cssSelector(".modal-body .o_sel_course_gta_group_assessment_form"); OOGraphene.waitElement(groupAssessmentPopupBy, 5, browser); - By applyToAllBy = By.xpath("//div[contains(@class,'o_sel_course_gta_group_assessment_form')]//div[contains(@class,'o_sel_course_gta_apply_to_all')]//label[input[@type='checkbox']]"); By applyToAllCheckBy = By.xpath("//div[contains(@class,'o_sel_course_gta_group_assessment_form')]//div[contains(@class,'o_sel_course_gta_apply_to_all')]//input[@type='checkbox']"); - WebElement applyToAllEl = browser.findElement(applyToAllBy); WebElement applyToAllCheckEl = browser.findElement(applyToAllCheckBy); - OOGraphene.check(applyToAllEl, applyToAllCheckEl, Boolean.TRUE); + OOGraphene.check(applyToAllCheckEl, Boolean.TRUE); OOGraphene.waitBusy(browser); if(passed != null) { - By passedBy = By.xpath("//div[contains(@class,'o_sel_course_gta_group_assessment_form')]//div[contains(@class,'o_sel_course_gta_group_passed')]//label[input[@type='checkbox']]"); By passedCheckBy = By.xpath("//div[contains(@class,'o_sel_course_gta_group_assessment_form')]//div[contains(@class,'o_sel_course_gta_group_passed')]//input[@type='checkbox']"); - WebElement passedEl = browser.findElement(passedBy); WebElement passedCheckEl = browser.findElement(passedCheckBy); - OOGraphene.check(passedEl, passedCheckEl, Boolean.TRUE); + OOGraphene.check(passedCheckEl, Boolean.TRUE); OOGraphene.waitBusy(browser); } diff --git a/src/test/java/org/olat/selenium/page/course/InfoMessageCEPage.java b/src/test/java/org/olat/selenium/page/course/InfoMessageCEPage.java index a8755eee21edf5a5dac9b78ae4ceeb325afb9f09..1779868474dd9ad7589afbd72f6c691980ef4391 100644 --- a/src/test/java/org/olat/selenium/page/course/InfoMessageCEPage.java +++ b/src/test/java/org/olat/selenium/page/course/InfoMessageCEPage.java @@ -246,21 +246,7 @@ public class InfoMessageCEPage { } private InfoMessageCEPage selectTab(By tabBy) { - List<WebElement> tabLinks = browser.findElements(CourseEditorPageFragment.navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> chooseRepoEntry = browser.findElements(tabBy); - if(chooseRepoEntry.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_node_config", tabBy, browser); return this; } } diff --git a/src/test/java/org/olat/selenium/page/course/LTIConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/LTIConfigurationPage.java index b7fbf5dd1c130cfc627664a724d5b3339fd750a6..4be93dce501ea2fda03125a95125da3d14446ee7 100644 --- a/src/test/java/org/olat/selenium/page/course/LTIConfigurationPage.java +++ b/src/test/java/org/olat/selenium/page/course/LTIConfigurationPage.java @@ -40,7 +40,7 @@ public class LTIConfigurationPage { public LTIConfigurationPage selectConfiguration() { By configBy = By.cssSelector("fieldset.o_sel_lti_config_form"); - OOGraphene.selectTab(CourseEditorPageFragment.navBarNodeConfiguration, configBy, browser); + OOGraphene.selectTab("o_node_config", configBy, browser); return this; } @@ -59,10 +59,8 @@ public class LTIConfigurationPage { public LTIConfigurationPage enableScore(double scale, double cutValue) { By assessableBy = By.xpath("//div[contains(@class,'o_sel_lti_config_assessable')]//input[@type='checkbox']"); - By assessableLabelBy = By.xpath("//div[contains(@class,'o_sel_lti_config_assessable')]//label[input[@type='checkbox']]"); WebElement assessableEl = browser.findElement(assessableBy); - WebElement assessableLabelEl = browser.findElement(assessableLabelBy); - OOGraphene.check(assessableLabelEl, assessableEl, Boolean.TRUE); + OOGraphene.check(assessableEl, Boolean.TRUE); By scaleBy = By.cssSelector("div.o_sel_lti_config_scale input[type=text]"); OOGraphene.waitElement(scaleBy, browser); @@ -79,6 +77,7 @@ public class LTIConfigurationPage { By saveBy = By.cssSelector("fieldset.o_sel_lti_config_form button.btn-primary"); browser.findElement(saveBy).click(); OOGraphene.waitBusy(browser); + OOGraphene.moveTop(browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/MemberListConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/MemberListConfigurationPage.java index 2d609e05aa905389c9cb78f58e96a3343717df9f..b51de2ec5d170700f133ff3adaee687ecba4a70b 100644 --- a/src/test/java/org/olat/selenium/page/course/MemberListConfigurationPage.java +++ b/src/test/java/org/olat/selenium/page/course/MemberListConfigurationPage.java @@ -40,7 +40,7 @@ public class MemberListConfigurationPage { public MemberListConfigurationPage selectSettings() { By configBy = By.cssSelector("fieldset.o_sel_cmembers_settings"); - OOGraphene.selectTab(CourseEditorPageFragment.navBarNodeConfiguration, configBy, browser); + OOGraphene.selectTab("o_node_config", configBy, browser); return this; } @@ -58,10 +58,8 @@ public class MemberListConfigurationPage { private MemberListConfigurationPage setMembers(Boolean visible, String type) { By checkboxBy = By.xpath("//fieldset[contains(@class,'o_sel_cmembers_settings')]//input[@type='checkbox'][@name='" + type + "']"); - By labelBy = By.xpath("//fieldset[contains(@class,'o_sel_cmembers_settings')]//label[input[@type='checkbox'][@name='" + type + "']]"); WebElement checkboxEl = browser.findElement(checkboxBy); - WebElement labelEl = browser.findElement(labelBy); - OOGraphene.check(labelEl, checkboxEl, visible); + OOGraphene.check(checkboxEl, visible); 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 53e4cd595fe918c274f77641c8d4a969d0a24d96..58c50605fdf251b0f87f4309353bab36b8932ef7 100644 --- a/src/test/java/org/olat/selenium/page/course/MembersPage.java +++ b/src/test/java/org/olat/selenium/page/course/MembersPage.java @@ -52,7 +52,7 @@ public class MembersPage { By addMemberBy = By.className("o_sel_course_add_member"); browser.findElement(addMemberBy).click(); OOGraphene.waitModalWizard(browser); - OOGraphene.waitElement(By.cssSelector("fieldset.o_sel_usersearch_searchform"), 5, browser); + OOGraphene.waitElement(By.cssSelector("fieldset.o_sel_usersearch_searchform"), browser); return new MembersWizardPage(browser); } @@ -60,7 +60,7 @@ public class MembersPage { By importMembersBy = By.className("o_sel_course_import_members"); browser.findElement(importMembersBy).click(); OOGraphene.waitModalWizard(browser); - OOGraphene.waitElement(By.cssSelector("div.o_sel_user_import textarea.form-control"), 5, browser); + OOGraphene.waitElement(By.cssSelector("div.o_sel_user_import textarea.form-control"), browser); return new MembersWizardPage(browser); } @@ -189,6 +189,12 @@ public class MembersPage { return this; } + public MembersPage assertMembersManagement() { + By membersBy = By.cssSelector("div.o_members_mgmt"); + OOGraphene.waitElement(membersBy, browser); + return this; + } + /** * Click back to the course * @@ -196,9 +202,7 @@ public class MembersPage { */ public CoursePageFragment clickToolbarBack() { OOGraphene.closeBlueMessageWindow(browser); - By toolbarBackBy = By.cssSelector("li.o_breadcrumb_back>a"); - browser.findElement(toolbarBackBy).click(); - OOGraphene.waitBusy(browser); + OOGraphene.clickBreadcrumbBack(browser); return new CoursePageFragment(browser); } diff --git a/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java b/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java index 4506ce057cc923602b5d492dfd73f6c20a83a3f3..ccbd2c2a10d769e0450012e080ee6cc4163a98cb 100644 --- a/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java @@ -116,11 +116,8 @@ public class PublisherPageFragment { OOGraphene.waitElement(guestsBy, browser); if(access == UserAccess.guest) { - By labelGuestsBy = By.xpath("//div[contains(@class,'o_sel_repositoryentry_access_guest')]//label/input[@name='entry.access.guest' and @value='on']"); - WebElement guestsEl = browser.findElement(guestsBy); - WebElement labelGuestsEl = browser.findElement(labelGuestsBy); - OOGraphene.check(labelGuestsEl, guestsEl, Boolean.TRUE); + OOGraphene.check(guestsEl, Boolean.TRUE); } } else if(access == UserAccess.membersOnly) { By allUsersBy = By.xpath("//div[@id='o_coentry_access_type']/div/label/input[@name='entry.access.type' and @value='private']"); diff --git a/src/test/java/org/olat/selenium/page/course/RemindersPage.java b/src/test/java/org/olat/selenium/page/course/RemindersPage.java index 1bcdd1edb2733aacf82b890f62590dc560c3cf39..0a1a98588e5731efaedb1d0dd536787282b3ac9a 100644 --- a/src/test/java/org/olat/selenium/page/course/RemindersPage.java +++ b/src/test/java/org/olat/selenium/page/course/RemindersPage.java @@ -85,6 +85,7 @@ public class RemindersPage { */ public RemindersPage sendReminders() { By sendBy = By.cssSelector("div.o_callout_content ul.o_dropdown a.o_sel_course_reminder_send"); + OOGraphene.waitElement(sendBy, browser); browser.findElement(sendBy).click(); OOGraphene.waitBusy(browser); return this; diff --git a/src/test/java/org/olat/selenium/page/graphene/BusyScrollToPredicate.java b/src/test/java/org/olat/selenium/page/graphene/BusyScrollToPredicate.java index 67bde4b23245305d4d58b4785c12bf3107425bf7..585e6282b18e6e8ea103d7870524866c93756668 100644 --- a/src/test/java/org/olat/selenium/page/graphene/BusyScrollToPredicate.java +++ b/src/test/java/org/olat/selenium/page/graphene/BusyScrollToPredicate.java @@ -44,6 +44,6 @@ public class BusyScrollToPredicate implements Function<WebDriver,Boolean> { } else if(y.intValue() == 0) { count++; } - return count > 2; + return count > 3; } } diff --git a/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java b/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java index 0190906abb1477229b5f68fc376f6abf71b77b15..4c52ea5a3f182c56024ed818256f16cc416b7db6 100644 --- a/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java +++ b/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java @@ -21,22 +21,26 @@ package org.olat.selenium.page.graphene; import java.io.File; import java.text.DateFormat; +import java.time.Duration; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; -import java.util.concurrent.TimeUnit; +import java.util.function.Predicate; -import org.jboss.arquillian.graphene.Graphene; import org.junit.Assert; +import org.olat.core.util.StringHelper; import org.openqa.selenium.By; import org.openqa.selenium.ElementNotVisibleException; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.WrapsElement; import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.FluentWait; +import org.openqa.selenium.support.ui.WebDriverWait; /** * @@ -46,15 +50,32 @@ import org.openqa.selenium.firefox.FirefoxDriver; */ public class OOGraphene { - private static final long poolingDuration = 100;//ms - private static final long waitTinyDuration = 50;//seconds - private static final long defaultTimeout = 5;//seconds + private static final Duration poolingDuration = Duration.ofMillis(100);//ms + private static final Duration waitTinyDuration = Duration.ofSeconds(50);//seconds + private static final long driverTimeout = 60;//seconds + private static final long movePause = 400;//milliseconds + private static final long moveToPause = 100;//milliseconds + + private static final Duration polling = Duration.ofMillis(100); + private static final Duration poolingSlow = Duration.ofMillis(200); + private static final Duration timeout = Duration.ofSeconds(5); private static final By closeBlueBoxButtonBy = By.cssSelector("div.o_alert_info div.o_sel_info_message a.o_alert_close.o_sel_info_close"); public static final By wizardNextBy = By.xpath("//div[contains(@class,'modal-footer')]//a[contains(@class,'o_wizard_button_next')]"); public static final By wizardFinishBy = By.xpath("//div[contains(@class,'modal-footer')]//a[contains(@class,'o_wizard_button_finish') and not(contains(@class,'o_disabled'))]"); + + public static FluentWait<WebDriver> wait(WebDriver browser) { + return new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(poolingSlow); + } + + public static FluentWait<WebDriver> wait(WebDriver browser, Duration timeout) { + return new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(poolingSlow); + } + /** * Wait until the busy flag is ok, the browser scrolled * to the top and that the body of the modal dialog is visible. @@ -63,9 +84,10 @@ public class OOGraphene { */ public static void waitModalDialog(WebDriver browser) { waitBusyAndScrollTop(browser); - By modalBy = By.cssSelector("div.modal-dialog div.modal-body"); - Graphene.waitModel(browser).withTimeout(5, TimeUnit.SECONDS) - .pollingEvery(200, TimeUnit.MILLISECONDS).until().element(modalBy).is().visible(); + By modalBy = By.cssSelector("div.o_layered_panel div.modal-dialog div.modal-body"); + new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(poolingSlow) + .until(ExpectedConditions.visibilityOfElementLocated(modalBy)); } /** @@ -76,15 +98,17 @@ public class OOGraphene { */ public static void waitModalWizard(WebDriver browser) { waitBusyAndScrollTop(browser); - By modalBy = By.cssSelector("div.modal-dialog div.modal-body"); - Graphene.waitModel(browser).withTimeout(defaultTimeout, TimeUnit.SECONDS) - .pollingEvery(200, TimeUnit.MILLISECONDS).until().element(modalBy).is().visible(); + By modalBy = By.cssSelector("div.o_layered_panel div.modal-dialog div.modal-body"); + new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(poolingSlow) + .until(ExpectedConditions.visibilityOfElementLocated(modalBy)); } public static void waitModalDialogDisappears(WebDriver browser) { By modalBy = By.xpath("//div[not(@id='o_form_dirty_message')]/div[contains(@class,'modal-dialog')]/div[contains(@class,'modal-content')]"); - Graphene.waitModel(browser).withTimeout(5, TimeUnit.SECONDS) - .pollingEvery(200, TimeUnit.MILLISECONDS).until().element(modalBy).is().not().present(); + new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(poolingSlow) + .until(ExpectedConditions.invisibilityOfElementLocated(modalBy)); } public static void waitCallout(WebDriver browser) { @@ -93,13 +117,15 @@ public class OOGraphene { } public static void waitBusy(WebDriver browser) { - Graphene.waitModel(browser).withTimeout(defaultTimeout, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until(new BusyPredicate()); + new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(poolingDuration) + .until(new BusyPredicate()); } public static void waitBusy(WebDriver browser, int timeoutInSeconds) { - Graphene.waitModel(browser).withTimeout(timeoutInSeconds, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until(new BusyPredicate()); + new WebDriverWait(browser, driverTimeout) + .withTimeout(Duration.ofSeconds(timeoutInSeconds)).pollingEvery(poolingDuration) + .until(new BusyPredicate()); } /** @@ -108,8 +134,15 @@ public class OOGraphene { * @param browser */ public static void waitElement(By element, WebDriver browser) { - Graphene.waitModel(browser).withTimeout(5, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(element).is().visible(); + new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(polling) + .until(ExpectedConditions.visibilityOfElementLocated(element)); + } + + public static void waitElementClickable(By element, WebDriver browser) { + new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(polling) + .until(ExpectedConditions.elementToBeClickable(element)); } /** @@ -120,8 +153,35 @@ public class OOGraphene { * @param browser The web driver */ public static void waitElement(By element, int timeoutInSeconds, WebDriver browser) { - Graphene.waitModel(browser).withTimeout(timeoutInSeconds, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(element).is().visible(); + new WebDriverWait(browser, driverTimeout) + .withTimeout(Duration.ofSeconds(timeoutInSeconds)).pollingEvery(polling) + .until(ExpectedConditions.visibilityOfElementLocated(element)); + } + + /** + * Wait until the element is visible. + * + * @param element The selector for the element + * @param timeoutInSeconds The timeout in seconds + * @param browser The web driver + */ + public static void waitElement(By element, int timeoutInSeconds, int pollingInSeconds, WebDriver browser) { + new WebDriverWait(browser, driverTimeout) + .withTimeout(Duration.ofSeconds(timeoutInSeconds)).pollingEvery(Duration.ofSeconds(pollingInSeconds)) + .until(ExpectedConditions.visibilityOfElementLocated(element)); + } + + /** + * Wait until the element is present in the DOM. + * + * @param element + * @param timeoutInSeconds + * @param browser + */ + public static void waitElementPresence(By element, int timeoutInSeconds, WebDriver browser) { + new WebDriverWait(browser, driverTimeout) + .withTimeout(Duration.ofSeconds(timeoutInSeconds)).pollingEvery(polling) + .until(ExpectedConditions.presenceOfElementLocated(element)); } /** @@ -132,8 +192,9 @@ public class OOGraphene { * @param browser The web driver */ public static void waitElementDisappears(By element, int timeoutInSeconds, WebDriver browser) { - Graphene.waitModel(browser).withTimeout(timeoutInSeconds, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(element).is().not().present(); + new WebDriverWait(browser, driverTimeout) + .withTimeout(Duration.ofSeconds(timeoutInSeconds)).pollingEvery(poolingDuration) + .until(ExpectedConditions.invisibilityOfElementLocated(element)); } /** @@ -144,12 +205,9 @@ public class OOGraphene { * @param browser */ public static void waitElementUntilNotVisible(By element, int timeoutInSeconds, WebDriver browser) { - Graphene.waitModel(browser).withTimeout(timeoutInSeconds, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(element).is().not().visible(); - } - - public static void waitGui(WebDriver browser) { - Graphene.waitGui(browser); + new WebDriverWait(browser, driverTimeout) + .withTimeout(Duration.ofSeconds(timeoutInSeconds)).pollingEvery(poolingDuration) + .until(ExpectedConditions.invisibilityOfElementLocated(element)); } public static void nextStep(WebDriver browser) { @@ -157,8 +215,11 @@ public class OOGraphene { } public static void finishStep(WebDriver browser) { - clickAndWait(wizardFinishBy, browser); - OOGraphene.closeBlueMessageWindow(browser); + moveAndClick(wizardFinishBy, browser); + closeBlueMessageWindow(browser); + By wizardBy = By.cssSelector("div.o_layered_panel div.o_wizard"); + waitElementUntilNotVisible(wizardBy, 10, browser); + waitBusyAndScrollTop(browser); } /** @@ -184,23 +245,49 @@ public class OOGraphene { * click it. After it wait until the window scroll to the top * and/or make a classic waitBusy * - * @param buttonBy - * @param browser + * @param buttonBy The button to click + * @param browser The driver */ public static void clickAndWait(By buttonBy, WebDriver browser) { WebElement buttonEl = browser.findElement(buttonBy); boolean move = buttonEl.getLocation().getY() > 669; if(move) { - scrollTo(buttonBy, browser); - } - browser.findElement(buttonBy).click(); - if(move) { + //scrollTo(buttonBy, browser); + new Actions(browser) + .moveToElement(buttonEl) + .pause(movePause) + .click(buttonEl) + .perform(); OOGraphene.waitBusyAndScrollTop(browser); } else { + browser.findElement(buttonBy).click(); OOGraphene.waitBusy(browser); } } + /** + * Check the location of the button. If it's below the visible + * window, it scrolls to the button, waits a little longer and + * click it. + * + * @param buttonBy The button to click + * @param browser The driver + */ + public static void moveAndClick(By buttonBy, WebDriver browser) { + waitElement(buttonBy, browser); + WebElement buttonEl = browser.findElement(buttonBy); + boolean move = buttonEl.getLocation().getY() > 669; + if(move) { + new Actions(browser) + .moveToElement(buttonEl) + .pause(movePause) + .click(buttonEl) + .perform(); + } else { + browser.findElement(buttonBy).click(); + } + } + /** * Scroll to the element and wait a little longer. * @param by @@ -212,6 +299,15 @@ public class OOGraphene { OOGraphene.waitingALittleLonger(); } + public static void moveTo(By by, WebDriver browser) { + waitElement(by, browser); + WebElement el = browser.findElement(by); + new Actions(browser) + .moveToElement(el) + .pause(moveToPause) + .perform(); + } + /** * Scroll to the top anchor. * @@ -223,30 +319,40 @@ public class OOGraphene { OOGraphene.waitingALittleLonger(); } + public static void moveTop(WebDriver browser) { + WebElement el = browser.findElement(By.id("o_top")); + new Actions(browser) + .moveToElement(el) + .pause(moveToPause) + .perform(); + } + // top.tinymce.get('o_fi1000000416').setContent('<p>Hacked</p>'); // <div id="o_fi1000000416_diw" class="o_richtext_mce"> <iframe id="o_fi1000000416_ifr"> public static final void tinymce(String content, WebDriver browser) { - Graphene.waitModel(browser).withTimeout(waitTinyDuration, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + new WebDriverWait(browser, driverTimeout) + .until(new TinyMCELoadedPredicate()); + new WebDriverWait(browser, driverTimeout).withTimeout(waitTinyDuration) + .pollingEvery(poolingDuration) .until(new TinyMCELoadedPredicate()); ((JavascriptExecutor)browser).executeScript("top.tinymce.activeEditor.setContent('" + content + "')"); } public static final void tinymceExec(String content, WebDriver browser) { - Graphene.waitModel(browser).withTimeout(waitTinyDuration, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + new WebDriverWait(browser, driverTimeout).withTimeout(waitTinyDuration) + .pollingEvery(poolingDuration) .until(new TinyMCELoadedPredicate()); ((JavascriptExecutor)browser).executeScript("top.tinymce.activeEditor.execCommand('mceInsertRawHTML', true, '" + content + "')"); } public static final void tinymce(String content, String containerCssSelector, WebDriver browser) { By tinyIdBy = By.cssSelector(containerCssSelector + " div.o_richtext_mce"); - waitElement(tinyIdBy, 5, browser); + waitElement(tinyIdBy, browser); WebElement tinyIdEl = browser.findElement(tinyIdBy); String tinyId = tinyIdEl.getAttribute("id").replace("_diw", ""); - Graphene.waitModel(browser).withTimeout(waitTinyDuration, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + new WebDriverWait(browser, driverTimeout).withTimeout(waitTinyDuration) + .pollingEvery(poolingDuration) .until(new TinyMCELoadedByIdPredicate(tinyId)); ((JavascriptExecutor)browser).executeScript("top.tinymce.editors['" + tinyId + "'].setContent('" + content + "')"); } @@ -260,12 +366,12 @@ public class OOGraphene { */ public static final void tinymceInsert(String content, String containerCssSelector, WebDriver browser) { By tinyIdBy = By.cssSelector(containerCssSelector + " div.o_richtext_mce"); - waitElement(tinyIdBy, 5, browser); + waitElement(tinyIdBy, browser); WebElement tinyIdEl = browser.findElement(tinyIdBy); String tinyId = tinyIdEl.getAttribute("id").replace("_diw", ""); - Graphene.waitModel(browser).withTimeout(waitTinyDuration, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + new WebDriverWait(browser, driverTimeout).withTimeout(waitTinyDuration) + .pollingEvery(poolingDuration) .until(new TinyMCELoadedByIdPredicate(tinyId)); ((JavascriptExecutor)browser).executeScript("top.tinymce.editors['" + tinyId + "'].insertContent('" + content + "')"); } @@ -276,24 +382,42 @@ public class OOGraphene { * @param formBy The selector to found the form * @param browser The browser */ - public static final void selectTab(By tabsBy, By formBy, WebDriver browser) { - List<WebElement> tabLinks = browser.findElements(tabsBy); - + public static final void selectTab(String ulClass, By formBy, WebDriver browser) { + selectTab(ulClass, (b) -> { + List<WebElement> chooseRepoEntry = browser.findElements(formBy); + return !chooseRepoEntry.isEmpty(); + }, browser); + } + + /** + * + * @param ulClass The class of the nav-tabs + * @param selectTab A predicate to select the right tab + * @param browser The driver + */ + public static final void selectTab(String ulClass, Predicate<WebDriver> selectTab, WebDriver browser) { + List<WebElement> tabLinks = browser.findElements(By.cssSelector("ul." + ulClass + ">li>a")); + int count = tabLinks.size(); boolean found = false; a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> chooseRepoEntry = browser.findElements(formBy); - if(chooseRepoEntry.size() > 0) { + for(int i=0; i<count; i++) { + By tabLinkBy = By.xpath("//ul[contains(@class,'" + ulClass + "')]/li[" + (i+1) + "]/a"); + WebElement tabEl = browser.findElement(tabLinkBy); + String tabClass = tabEl.getAttribute("onclick"); + if(StringHelper.containsNonWhitespace(tabClass)) { + tabEl.click(); + waitBusy(browser); + By activatedTabLinkBy = By.xpath("//ul[contains(@class,'" + ulClass + "')]/li[" + (i+1) + "][@class='active']/a"); + waitElement(activatedTabLinkBy, browser); + if(selectTab.test(browser)) { + found = true; + break a_a; + } + } else if(selectTab.test(browser)) { found = true; break a_a; } } - - if(!found) { - System.out.println(); - } Assert.assertTrue("Found the tab", found); } @@ -318,21 +442,6 @@ public class OOGraphene { } } - public static final void check(WebElement labelEl, WebElement checkboxEl, Boolean val) { - if(val == null) return; - - String checked = checkboxEl.getAttribute("checked"); - if(Boolean.TRUE.equals(val)) { - if(checked == null) { - labelEl.click(); - } - } else { - if(checked != null) { - labelEl.click(); - } - } - } - public static final void textarea(WebElement textareaEl, String content, WebDriver browser) { String id = textareaEl.getAttribute("id"); ((JavascriptExecutor)browser).executeScript("document.getElementById('" + id + "').value = '" + content + "'"); @@ -365,6 +474,9 @@ public class OOGraphene { timeEls.get(0).sendKeys(Integer.toString(hour)); timeEls.get(1).clear(); timeEls.get(1).sendKeys(Integer.toString(minute)); + + By datePickerBy = By.id("ui-datepicker-div"); + waitElementDisappears(datePickerBy, 5, browser); } public static final void flexiTableSelectAll(WebDriver browser) { @@ -391,7 +503,9 @@ public class OOGraphene { * @param browser */ public static final void waitingTransition(WebDriver browser) { - Graphene.waitModel(browser).pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until(new TransitionPredicate()); + new WebDriverWait(browser, driverTimeout) + .pollingEvery(poolingDuration) + .until(new TransitionPredicate()); waitingALittleBit(); } @@ -441,15 +555,23 @@ public class OOGraphene { */ public static final void waitBusyAndScrollTop(WebDriver browser) { try { - Graphene.waitModel(browser) - .ignoring(TimeoutException.class) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + new WebDriverWait(browser, driverTimeout) + .pollingEvery(poolingDuration) + .withTimeout(timeout) .until(new BusyScrollToPredicate()); } catch (Exception e) { e.printStackTrace(); } } + public static final void clickBreadcrumbBack(WebDriver browser) { + //By backBy = By.xpath("//ol[@class='breadcrumb']/li[contains(@class,'o_breadcrumb_back')]/following-sibling::li/a"); + By backBy = By.xpath("//ol[@class='breadcrumb']/li[@class='o_breadcrumb_back']/a[i[contains(@class,'o_icon_back')]]"); + waitElement(backBy, browser); + browser.findElement(backBy).click(); + waitBusy(browser); + } + public static final void closeErrorBox(WebDriver browser) { By errorBoxBy = By.cssSelector(".modal-body.alert.alert-danger"); waitElement(errorBoxBy, 5, browser); @@ -470,8 +592,9 @@ public class OOGraphene { public static final void waitAndCloseBlueMessageWindow(WebDriver browser) { try { - Graphene.waitModel(browser).withTimeout(5, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(closeBlueBoxButtonBy).is().visible(); + new WebDriverWait(browser, driverTimeout) + .withTimeout(timeout).pollingEvery(poolingDuration) + .until(ExpectedConditions.visibilityOfElementLocated(closeBlueBoxButtonBy)); } catch (Exception e) { //e.printStackTrace(); } @@ -504,9 +627,8 @@ public class OOGraphene { private static final void clickCloseButton(WebDriver browser, WebElement closeButton) { closeButton.click(); - Graphene.waitModel(browser) - .withTimeout(1000, TimeUnit.MILLISECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + new WebDriverWait(browser, driverTimeout) + .withTimeout(Duration.ofMillis(1000)).pollingEvery(poolingDuration) .until(new CloseAlertInfoPredicate()); } @@ -556,21 +678,11 @@ public class OOGraphene { public static final void waitNavBarTransition(WebDriver browser) { try { - Graphene.waitModel(browser).pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + new WebDriverWait(browser, driverTimeout).pollingEvery(poolingDuration) .until(new NavBarTransitionPredicate()); waitingALittleBit(); } catch (Exception e) { //e.printStackTrace(); } } - - public static final WebElement unwrap(WebElement element) { - if(element instanceof WrapsElement) { - WebElement wrappedCircleEl = ((WrapsElement)element).getWrappedElement(); - if(wrappedCircleEl instanceof WrapsElement) { - element = ((WrapsElement)wrappedCircleEl).getWrappedElement(); - } - } - return element; - } } diff --git a/src/test/java/org/olat/selenium/page/graphene/Position.java b/src/test/java/org/olat/selenium/page/graphene/Position.java index 2582fb253d784ec49e45eae3b3d5ae25269a52d8..ccb62e1119566ed65a4b6369a1d8d18e7d15ceef 100644 --- a/src/test/java/org/olat/selenium/page/graphene/Position.java +++ b/src/test/java/org/olat/selenium/page/graphene/Position.java @@ -24,7 +24,6 @@ import java.util.List; import org.olat.ims.qti21.model.xml.AssessmentItemFactory; import org.openqa.selenium.Dimension; import org.openqa.selenium.WebDriver; -import org.openqa.selenium.firefox.FirefoxDriver; /** * @@ -66,37 +65,29 @@ public class Position { x = (x2 + x1) / 2; y = (y2 + y1) / 2; } - - if(browser instanceof FirefoxDriver) { - x = x - Math.round(dimension.getWidth() / 2.0f); - y = y - Math.round(dimension.getHeight() / 2.0f); - } + + x = x - Math.round(dimension.getWidth() / 2.0f); + y = y - Math.round(dimension.getHeight() / 2.0f); return new Position(x, y); } public static Position valueOf(int x, int y, Dimension dimension, WebDriver browser) { - if(browser instanceof FirefoxDriver) { - x = x - Math.round(dimension.getWidth() / 2.0f); - y = y - Math.round(dimension.getHeight() / 2.0f); - } + x = x - Math.round(dimension.getWidth() / 2.0f); + y = y - Math.round(dimension.getHeight() / 2.0f); return new Position(x, y); } public static Position valueOf(int x, int y, int firefoxCorrection, Dimension dimension, WebDriver browser) { - if(browser instanceof FirefoxDriver) { - x = x - Math.round(dimension.getWidth() / 2.0f); - y = y - Math.round(dimension.getHeight() / 2.0f); - x += firefoxCorrection; - y += firefoxCorrection; - } + x = x - Math.round(dimension.getWidth() / 2.0f); + y = y - Math.round(dimension.getHeight() / 2.0f); + x += firefoxCorrection; + y += firefoxCorrection; return new Position(x, y); } public static Position valueOf(int x, int y, int width, int height, WebDriver browser) { - if(browser instanceof FirefoxDriver) { - x = x - Math.round(width / 2.0f); - y = y - Math.round(height / 2.0f); - } + x = x - Math.round(width / 2.0f); + y = y - Math.round(height / 2.0f); return new Position(x, y); } diff --git a/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedByIdPredicate.java b/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedByIdPredicate.java index 6ff6c24df8600a0f317dd50275683f7120bf4943..4c2f6a1ec689e2c6494f47e6a90dcee2cd7d0fa5 100644 --- a/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedByIdPredicate.java +++ b/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedByIdPredicate.java @@ -21,6 +21,8 @@ package org.olat.selenium.page.graphene; import java.util.function.Function; +import org.apache.logging.log4j.Logger; +import org.olat.core.logging.Tracing; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; @@ -34,6 +36,8 @@ import org.openqa.selenium.WebDriver; */ public class TinyMCELoadedByIdPredicate implements Function<WebDriver,Boolean> { + private static final Logger log = Tracing.createLoggerFor(TinyMCELoadedByIdPredicate.class); + private final String id; public TinyMCELoadedByIdPredicate(String id) { @@ -42,11 +46,16 @@ public class TinyMCELoadedByIdPredicate implements Function<WebDriver,Boolean> { @Override public Boolean apply(WebDriver driver) { - Object active = ((JavascriptExecutor)driver) - .executeScript("return top != null && top.tinymce != null && top.tinymce.activeEditor != null " - + " && top.tinymce.activeEditor.initialized && top.tinymce.editors[0].initialized " - + " && (top.tinymce.editors.length > 1 ? top.tinymce.editors[1].initialized : true)" - + " && top.tinymce.editors['" + id + "'].initialized;"); - return Boolean.TRUE.equals(active); + try { + Object active = ((JavascriptExecutor)driver) + .executeScript("return top != null && top.tinymce != null && top.tinymce.activeEditor != null " + + " && top.tinymce.activeEditor.initialized && top.tinymce.editors[0].initialized " + + " && (top.tinymce.editors.length > 1 ? top.tinymce.editors[1].initialized : true)" + + " && top.tinymce.editors['" + id + "'].initialized;"); + return Boolean.TRUE.equals(active); + } catch (Exception e) { + log.error("", e); + return Boolean.FALSE; + } } } diff --git a/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedPredicate.java b/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedPredicate.java index f76c7e419e15ae7606e2e0c8355c0df1a20bf26a..1b359986750fe6bf9838c44a00525bab1be7930a 100644 --- a/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedPredicate.java +++ b/src/test/java/org/olat/selenium/page/graphene/TinyMCELoadedPredicate.java @@ -21,6 +21,8 @@ package org.olat.selenium.page.graphene; import java.util.function.Function; +import org.apache.logging.log4j.Logger; +import org.olat.core.logging.Tracing; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; @@ -33,13 +35,20 @@ import org.openqa.selenium.WebDriver; * */ public class TinyMCELoadedPredicate implements Function<WebDriver, Boolean> { + + private static final Logger log = Tracing.createLoggerFor(TinyMCELoadedPredicate.class); @Override public Boolean apply(WebDriver driver) { - Object active = ((JavascriptExecutor)driver) - .executeScript("return top != null && top.tinymce != null && top.tinymce.activeEditor != null " - + " && top.tinymce.activeEditor.initialized && top.tinymce.editors[0].initialized " - + " && (top.tinymce.editors.length > 1 ? top.tinymce.editors[1].initialized : true);"); - return Boolean.TRUE.equals(active); + try { + Object active = ((JavascriptExecutor)driver) + .executeScript("return top != null && top.tinymce != null && top.tinymce.activeEditor != null " + + " && top.tinymce.activeEditor.initialized && top.tinymce.editors[0].initialized " + + " && (top.tinymce.editors.length > 1 ? top.tinymce.editors[1].initialized : true);"); + return Boolean.TRUE.equals(active); + } catch (Exception e) { + log.error("", e); + return Boolean.FALSE; + } } } diff --git a/src/test/java/org/olat/selenium/page/graphene/TransitionPredicate.java b/src/test/java/org/olat/selenium/page/graphene/TransitionPredicate.java index 7f76c7b73fef1864ce99ea7728d8cd5ca8ea8314..7c1d3f70e9ad6a2c2996d4efc21b7e84870c7d00 100644 --- a/src/test/java/org/olat/selenium/page/graphene/TransitionPredicate.java +++ b/src/test/java/org/olat/selenium/page/graphene/TransitionPredicate.java @@ -21,6 +21,8 @@ package org.olat.selenium.page.graphene; import java.util.function.Function; +import org.apache.logging.log4j.Logger; +import org.olat.core.logging.Tracing; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; @@ -33,11 +35,18 @@ import org.openqa.selenium.WebDriver; * */ public class TransitionPredicate implements Function<WebDriver,Boolean> { + + private static final Logger log = Tracing.createLoggerFor(TransitionPredicate.class); @Override public Boolean apply(WebDriver driver) { - Object busy = ((JavascriptExecutor)driver) - .executeScript("return (window.OPOL.navbar.state.sitesDirty || window.OPOL.navbar.state.tabsDirty || window.OPOL.navbar.state.toolsDirty)"); - return Boolean.FALSE.equals(busy); + try { + Object busy = ((JavascriptExecutor)driver) + .executeScript("return (window === undefined || !('OPOL' in window) || !('navbar' in window.OPOL) || !('state' in window.OPOL.navbar) || window.OPOL.navbar.state.sitesDirty || window.OPOL.navbar.state.tabsDirty || window.OPOL.navbar.state.toolsDirty)"); + return Boolean.FALSE.equals(busy); + } catch (Exception e) { + log.error("", e); + return Boolean.FALSE; + } } } 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 adb5bdde2c1a7bec8d6c1e9ae785669ba497d0f4..1b9794868ca4c09cf418290ca8a773e3b41cfed6 100644 --- a/src/test/java/org/olat/selenium/page/group/GroupPage.java +++ b/src/test/java/org/olat/selenium/page/group/GroupPage.java @@ -46,7 +46,7 @@ import org.openqa.selenium.WebElement; */ public class GroupPage { - private static final By showOwners = By.className("o_sel_group_show_owners"); + private static final By showOwners = By.className("o_sel_group_members_mgmt"); private static final By toolsBy = By.className("o_sel_collab_tools"); private static final By editDetails = By.className("o_sel_group_edit_title"); private static final By bookingConfigBy = By.className("o_sel_accesscontrol_create"); @@ -194,12 +194,14 @@ public class GroupPage { } public void close() { - By closeBy = By.cssSelector("a i.o_icon_close_tool"); + By closeBy = By.xpath("//li[@class='o_breadcrumb_close']/a[i[contains(@class,'o_icon_close_tool')]]"); + OOGraphene.waitElementClickable(closeBy, browser); browser.findElement(closeBy).click(); OOGraphene.waitBusy(browser); } public GroupPage setVisibility(boolean owners, boolean participants, boolean waitingList) { + OOGraphene.waitElement(By.className("o_sel_group_members_visibility"), browser); if(owners) { By showOwnersBy = By.cssSelector(".o_sel_group_show_owners input[type='checkbox']"); browser.findElement(showOwnersBy).click(); @@ -224,11 +226,11 @@ public class GroupPage { } public GroupPage setWaitingList() { - By waitingListBy = By.xpath("//div[contains(@class,'o_sel_group_edit_waiting_list')]//label[input[@type='checkbox']]"); By waitingListCheckBy = By.xpath("//div[contains(@class,'o_sel_group_edit_waiting_list')]//input[@type='checkbox']"); - WebElement waitingListEl = browser.findElement(waitingListBy); + OOGraphene.moveTo(waitingListCheckBy, browser); + WebElement waitingListCheckEl = browser.findElement(waitingListCheckBy); - OOGraphene.check(waitingListEl, waitingListCheckEl, Boolean.TRUE); + OOGraphene.check(waitingListCheckEl, Boolean.TRUE); OOGraphene.waitBusy(browser); return this; } @@ -282,22 +284,7 @@ public class GroupPage { } private void openAdminTab(By marker) { - By navBarAdmin = By.cssSelector("div.o_tabbed_pane ul>li>a"); - OOGraphene.waitElement(navBarAdmin, browser); - List<WebElement> tabLinks = browser.findElements(navBarAdmin); - Assert.assertFalse(tabLinks.isEmpty()); - - boolean found = false; - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> markerEls = browser.findElements(marker); - if(markerEls.size() > 0) { - found = true; - break; - } - } - Assert.assertTrue(found); + OOGraphene.selectTab("nav-tabs", marker, browser); } public GroupPage assertOnInfosPage(String name) { diff --git a/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java b/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java index 82740d198483aa3105de5049dab8fdd52775fe75..b9f9742f126fc22059b87598e27183386a7697e7 100644 --- a/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java +++ b/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java @@ -68,7 +68,7 @@ public class MembersWizardPage { public MembersWizardPage finish() { try { By contactFormBy = By.cssSelector("fieldset.o_sel_contact_form"); - OOGraphene.waitElement(contactFormBy, 5, browser); + OOGraphene.waitElement(contactFormBy, browser); OOGraphene.waitBusyAndScrollTop(browser); OOGraphene.finishStep(browser); } catch (Exception e) { @@ -94,7 +94,7 @@ public class MembersWizardPage { By searchBy = By.cssSelector(".o_sel_usersearch_searchform a.btn-default"); OOGraphene.clickAndWait(searchBy, browser); - + // select all By selectAll = By.xpath("//div[contains(@class,'modal')]//div[contains(@class,'o_table_checkall')]/a[i[contains(@class,'o_icon_check_on')]]"); OOGraphene.waitElement(selectAll, browser); diff --git a/src/test/java/org/olat/selenium/page/lecture/EditLectureBlockPage.java b/src/test/java/org/olat/selenium/page/lecture/EditLectureBlockPage.java index eeec96333ca86c313c51c1f92042804b8e1827d5..e6e39bd2c3dea07b56ca3701521f7d714a895fbc 100644 --- a/src/test/java/org/olat/selenium/page/lecture/EditLectureBlockPage.java +++ b/src/test/java/org/olat/selenium/page/lecture/EditLectureBlockPage.java @@ -50,9 +50,7 @@ public class EditLectureBlockPage { public EditLectureBlockPage setTeacher(UserVO user) { By checkboxBy = By.xpath("//div[contains(@class,'o_sel_repo_lecture_teachers')]//input[@type='checkbox'][@value='" + user.getKey() + "']"); WebElement checkboxEl = browser.findElement(checkboxBy); - By labelBy = By.xpath("//div[contains(@class,'o_sel_repo_lecture_teachers')]//label[input[@type='checkbox'][@value='" + user.getKey() + "']]"); - WebElement labelEl = browser.findElement(labelBy); - OOGraphene.check(labelEl, checkboxEl, Boolean.TRUE); + OOGraphene.check(checkboxEl, Boolean.TRUE); return this; } @@ -85,7 +83,6 @@ public class EditLectureBlockPage { By untilAltBy = By.cssSelector("fieldset.o_sel_repo_edit_lecture_form div.o_sel_repo_lecture_date span.input-group-addon i"); browser.findElement(untilAltBy).click(); - OOGraphene.waitGui(browser); selectDayInDatePicker(day); return this; } @@ -99,7 +96,6 @@ public class EditLectureBlockPage { browser.findElement(dayBy).click(); OOGraphene.waitElementUntilNotVisible(datePickerBy, 5, browser); - //OOGraphene.waitingALittleBit(); return this; } diff --git a/src/test/java/org/olat/selenium/page/lecture/LectureAdminSettingsPage.java b/src/test/java/org/olat/selenium/page/lecture/LectureAdminSettingsPage.java index f28f6327272d69204a9a14eebb815afe68d66f8e..ab7bd41de8f6503ea2e4f7776e1c8a2867c573cc 100644 --- a/src/test/java/org/olat/selenium/page/lecture/LectureAdminSettingsPage.java +++ b/src/test/java/org/olat/selenium/page/lecture/LectureAdminSettingsPage.java @@ -118,15 +118,13 @@ public class LectureAdminSettingsPage { } private LectureAdminSettingsPage set(String name, String value, boolean enable) { - By enableLabelBy = By.xpath("//label[input[@name='" + name + "' and @value='" + value + "']]"); By enableCheckBy = By.xpath("//label/input[@name='" + name + "' and @value='" + value + "']"); - OOGraphene.waitElement(enableLabelBy, browser); - OOGraphene.scrollTo(enableLabelBy, browser); + OOGraphene.waitElement(enableCheckBy, browser); + OOGraphene.scrollTo(enableCheckBy, browser); - WebElement enableLabelEl = browser.findElement(enableLabelBy); WebElement enableCheckEl = browser.findElement(enableCheckBy); - OOGraphene.check(enableLabelEl, enableCheckEl, new Boolean(enable)); + OOGraphene.check(enableCheckEl, new Boolean(enable)); OOGraphene.waitBusy(browser); return this; diff --git a/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryAdminPage.java b/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryAdminPage.java index 064dfd1fa09d4dc9904fdfa41b640f968c991d85..bb8c54bb02205287689503fc7275a2449e63b288 100644 --- a/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryAdminPage.java +++ b/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryAdminPage.java @@ -67,9 +67,7 @@ public class LectureRepositoryAdminPage { */ public CoursePageFragment clickToolbarRootCrumb() { OOGraphene.closeBlueMessageWindow(browser); - By toolbarBackBy = By.xpath("//li[contains(@class,'o_breadcrumb_back')]/following-sibling::li/a"); - browser.findElement(toolbarBackBy).click(); - OOGraphene.waitBusy(browser); + OOGraphene.clickBreadcrumbBack(browser); return new CoursePageFragment(browser); } diff --git a/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryParticipantsPage.java b/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryParticipantsPage.java index 73c0935b733f3dbe33fe4c17edb58e02a23f1d41..b2d03b230f08a44599a07de12c8a878041302298 100644 --- a/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryParticipantsPage.java +++ b/src/test/java/org/olat/selenium/page/lecture/LectureRepositoryParticipantsPage.java @@ -68,16 +68,15 @@ public class LectureRepositoryParticipantsPage { By firstAdmissionBy = By.cssSelector("fieldset.o_sel_lecture_participant_summary_form div.o_sel_lecture_first_admission span.input-group-addon i"); OOGraphene.waitElement(firstAdmissionBy, browser); browser.findElement(firstAdmissionBy).click(); - OOGraphene.waitGui(browser); - + // a month before By monthBeforeBy = By.cssSelector("a.ui-datepicker-prev.ui-corner-all"); + OOGraphene.waitElement(monthBeforeBy, browser); browser.findElement(monthBeforeBy).click(); - OOGraphene.waitGui(browser); // select the 12 By dayBy = By.xpath("//div[@id='ui-datepicker-div']//td//a[normalize-space(text())='12']"); - OOGraphene.waitElement(dayBy, 5, browser); + OOGraphene.waitElement(dayBy, browser); browser.findElement(dayBy).click(); //wait until diff --git a/src/test/java/org/olat/selenium/page/lecture/LectureRepositorySettingsPage.java b/src/test/java/org/olat/selenium/page/lecture/LectureRepositorySettingsPage.java index d4b1117ad200a9df6b08828269fb11b3e85c6dc9..30260fcdadbfc82b8a3ac5184c55565b4f16c667 100644 --- a/src/test/java/org/olat/selenium/page/lecture/LectureRepositorySettingsPage.java +++ b/src/test/java/org/olat/selenium/page/lecture/LectureRepositorySettingsPage.java @@ -40,12 +40,10 @@ public class LectureRepositorySettingsPage { public LectureRepositorySettingsPage enableLectures() { By enableBy = By.xpath("//label/input[@name='lecture.admin.enabled' and @value='on']"); - By enableLabelBy = By.xpath("//label[input[@name='lecture.admin.enabled' and @value='on']]"); OOGraphene.waitElement(enableBy, browser); WebElement checkboxEl = browser.findElement(enableBy); - WebElement labelEl = browser.findElement(enableLabelBy); - OOGraphene.check(labelEl, checkboxEl, Boolean.TRUE); + OOGraphene.check(checkboxEl, Boolean.TRUE); OOGraphene.waitBusy(browser); By overrideBy = By.cssSelector("div.o_sel_repo_lecture_override input[type=radio]"); diff --git a/src/test/java/org/olat/selenium/page/portfolio/BinderPublicationPage.java b/src/test/java/org/olat/selenium/page/portfolio/BinderPublicationPage.java index acf65dec89e390bb96e7ec9c56d2ea484d1f6046..7bdd36c31d584233ad64f772256485ca8c2577e5 100644 --- a/src/test/java/org/olat/selenium/page/portfolio/BinderPublicationPage.java +++ b/src/test/java/org/olat/selenium/page/portfolio/BinderPublicationPage.java @@ -82,11 +82,9 @@ public class BinderPublicationPage { public BinderPublicationPage fillAccessRights(String name, Boolean check) { By checkBy = By.xpath("//div[contains(@class,'o_portfolio_rights')]//table//tr[td[contains(text(),'" + name + "')]]/td//input[@type='checkbox']"); - By labelCheckBy = By.xpath("//div[contains(@class,'o_portfolio_rights')]//table//tr[td[contains(text(),'" + name + "')]]/td//label[input[@type='checkbox']]"); WebElement checkEl = browser.findElement(checkBy); - WebElement labelCheckEl = browser.findElement(labelCheckBy); - OOGraphene.scrollTo(labelCheckBy, browser); - OOGraphene.check(labelCheckEl, checkEl, check); + OOGraphene.scrollTo(checkBy, browser); + OOGraphene.check(checkEl, check); OOGraphene.waitBusy(browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/qpool/QuestionPoolPage.java b/src/test/java/org/olat/selenium/page/qpool/QuestionPoolPage.java index b383e6e2570b58f67fc5ae6c50eaa0e8190d7f7a..4dae8506e9ea2a3b3eb52aba49c68cf5d2e10a42 100644 --- a/src/test/java/org/olat/selenium/page/qpool/QuestionPoolPage.java +++ b/src/test/java/org/olat/selenium/page/qpool/QuestionPoolPage.java @@ -137,6 +137,7 @@ public class QuestionPoolPage { */ public QuestionPoolPage startReviewProcess() { By startProcessBy = By.xpath("//div[contains(@class,'o_button_group')]/a[contains(@onclick,'process.activate.start.review')]"); + OOGraphene.waitElement(startProcessBy, browser); browser.findElement(startProcessBy).click(); OOGraphene.waitBusy(browser); OOGraphene.waitModalDialog(browser); diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21AssessmentItemEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21AssessmentItemEditorPage.java index cdaa50c59c958dbaf136a982670fc79c020ebc4b..4099c09c4d4eac76e6575975309f3fe0be905c27 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21AssessmentItemEditorPage.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21AssessmentItemEditorPage.java @@ -19,13 +19,9 @@ */ package org.olat.selenium.page.qti; -import java.util.List; - -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; /** * @@ -44,21 +40,7 @@ public abstract class QTI21AssessmentItemEditorPage { } protected QTI21AssessmentItemEditorPage selectTab(By tabBy) { - List<WebElement> tabLinks = browser.findElements(tabBarBy); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> tabEls = browser.findElements(tabBy); - if(tabEls.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_sel_assessment_item_config", tabBy, browser); return this; } } diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21ConfigurationCEPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21ConfigurationCEPage.java index 443382a9cc15633721f7721a9afc65aebdb5c303..137e91d8fc3abc7ba5b579d39e9ec76fd97afbe1 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21ConfigurationCEPage.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21ConfigurationCEPage.java @@ -19,11 +19,7 @@ */ package org.olat.selenium.page.qti; -import java.util.List; - -import org.junit.Assert; import org.olat.ims.qti21.QTI21AssessmentResultsOptions; -import org.olat.selenium.page.course.CourseEditorPageFragment; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -52,6 +48,7 @@ public class QTI21ConfigurationCEPage { By scoreBy = By.cssSelector(".o_sel_results_on_homepage input[type='checkbox']"); WebElement scoreEl = browser.findElement(scoreBy); OOGraphene.check(scoreEl, showResults); + OOGraphene.waitBusy(browser); return this; } @@ -101,21 +98,7 @@ public class QTI21ConfigurationCEPage { } private QTI21ConfigurationCEPage selectTab(By tabBy) { - List<WebElement> tabLinks = browser.findElements(CourseEditorPageFragment.navBarNodeConfiguration); - - boolean found = false; - a_a: - for(WebElement tabLink:tabLinks) { - tabLink.click(); - OOGraphene.waitBusy(browser); - List<WebElement> chooseRepoEntry = browser.findElements(tabBy); - if(chooseRepoEntry.size() > 0) { - found = true; - break a_a; - } - } - - Assert.assertTrue("Found the tab", found); + OOGraphene.selectTab("o_node_config", tabBy, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21HotspotEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21HotspotEditorPage.java index 2b7a05525a4f3abb95d5000c5fce217f2dbfd257..21a29b1913504d5adca247d88f587569bfaf6c3e 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21HotspotEditorPage.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21HotspotEditorPage.java @@ -27,7 +27,6 @@ import org.openqa.selenium.By; import org.openqa.selenium.Dimension; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; import uk.ac.ed.ph.jqtiplus.value.Cardinality; @@ -82,10 +81,7 @@ public class QTI21HotspotEditorPage extends QTI21AssessmentItemEditorPage { public QTI21HotspotEditorPage moveToHotspotEditor() { By editorBy = By.id("o_qti_hotspots_edit"); OOGraphene.waitElement(editorBy, browser); - - if(browser instanceof FirefoxDriver) { - OOGraphene.scrollTo(editorBy, browser); - } + OOGraphene.moveTo(editorBy, browser); return this; } @@ -96,8 +92,8 @@ public class QTI21HotspotEditorPage extends QTI21AssessmentItemEditorPage { public QTI21HotspotEditorPage resizeCircle() { By circleBy = By.cssSelector("div.o_draw_circle"); OOGraphene.waitElement(circleBy, browser); + WebElement circleEl = browser.findElement(circleBy); - circleEl = OOGraphene.unwrap(circleEl); Dimension dim = circleEl.getSize(); Position pos = Position.valueOf(10, 10, dim, browser); new Actions(browser) @@ -137,7 +133,6 @@ public class QTI21HotspotEditorPage extends QTI21AssessmentItemEditorPage { private QTI21HotspotEditorPage moveElement(By elementBy, int xOffset, int yOffset) { OOGraphene.waitElement(elementBy, browser); WebElement element = browser.findElement(elementBy); - element = OOGraphene.unwrap(element); Dimension size = element.getSize(); int centerX = size.getWidth() / 2; int centerY = size.getHeight() / 2; diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21MultipleChoiceEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21MultipleChoiceEditorPage.java index a7ec6b4162de966098f5c9c32893ef098951aac4..4c38b9b39e50c2dafd76eba950626ba14ee519e3 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21MultipleChoiceEditorPage.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21MultipleChoiceEditorPage.java @@ -43,20 +43,19 @@ public class QTI21MultipleChoiceEditorPage extends QTI21AssessmentItemEditorPage */ public QTI21MultipleChoiceEditorPage addChoice(int position) { By addBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + position + "')]/a"); + OOGraphene.waitElement(addBy, browser); browser.findElement(addBy).click(); OOGraphene.waitBusy(browser); //wait the next element By addedBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + (position + 1) + "')]/a"); - OOGraphene.waitElement(addedBy, 5, browser); + OOGraphene.waitElement(addedBy, browser); return this; } public QTI21MultipleChoiceEditorPage setCorrect(int position) { - By correctBy = By.xpath("//div[contains(@class,'o_sel_choice_" + position + "')]//label[input[contains(@id,'oo_correct-')]]"); By correctCheckBy = By.xpath("//div[contains(@class,'o_sel_choice_" + position + "')]//input[contains(@id,'oo_correct-')]"); - WebElement correctEl = browser.findElement(correctBy); WebElement correctCheckEl = browser.findElement(correctCheckBy); - OOGraphene.check(correctEl, correctCheckEl, true); + OOGraphene.check(correctCheckEl, true); OOGraphene.waitBusy(browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21Page.java b/src/test/java/org/olat/selenium/page/qti/QTI21Page.java index 6758e6a31a955a505414c7dcb66edd0cdcc47795..226e14213ed34be6860e88f7d4466c3ade3b433e 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21Page.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21Page.java @@ -312,9 +312,9 @@ public class QTI21Page { public QTI21Page answerMatchDropSourceToTarget(String source, String target) { By sourceBy = By.xpath("//li[contains(@class,'o_match_dnd_source')]/p[contains(text(),'" + source + "')]"); OOGraphene.waitElement(sourceBy, 5, browser); - WebElement sourceEl = OOGraphene.unwrap(browser.findElement(sourceBy)); + WebElement sourceEl = browser.findElement(sourceBy); By targetBy = By.xpath("//li[contains(@class,'o_match_dnd_target')]/div[@class='clearfix']/p[contains(text(),'" + target + "')]"); - WebElement targetEl = OOGraphene.unwrap(browser.findElement(targetBy)); + WebElement targetEl = browser.findElement(targetBy); new Actions(browser) .moveToElement(sourceEl, 30, 30) .clickAndHold() @@ -330,9 +330,9 @@ public class QTI21Page { public QTI21Page answerMatchDropTargetToTarget(String source, String target) { By sourceDroppedBy = By.xpath("//ul[contains(@class,'o_match_dnd_target_drop_zone')]/li[contains(@class,'o_match_dnd_source')]/p[contains(text(),'" + source + "')]"); - WebElement sourceEl = OOGraphene.unwrap(browser.findElement(sourceDroppedBy)); + WebElement sourceEl = browser.findElement(sourceDroppedBy); By targetBy = By.xpath("//li[contains(@class,'o_match_dnd_target')]/div[@class='clearfix']/p[contains(text(),'" + target + "')]"); - WebElement targetEl = OOGraphene.unwrap(browser.findElement(targetBy)); + WebElement targetEl = browser.findElement(targetBy); new Actions(browser) .moveToElement(sourceEl, 30, 30) .clickAndHold() @@ -353,9 +353,9 @@ public class QTI21Page { public QTI21Page answerAssociate(String source, int index, boolean left) { By itemBy = By.xpath("//div[contains(@class,'o_associate_items')]/div[contains(@class,'o_associate_item')][contains(text(),'" + source + "')]"); - WebElement itemEl = OOGraphene.unwrap( browser.findElement(itemBy)); + WebElement itemEl = browser.findElement(itemBy); By targetBy = By.xpath("//div[@class='association'][" + index + "]/div[contains(@class,'association_box')][contains(@class,'" + (left ? "left" : "right") + "')]"); - WebElement targetEl = OOGraphene.unwrap(browser.findElement(targetBy)); + WebElement targetEl = browser.findElement(targetBy); new Actions(browser) .moveToElement(itemEl, 10, 10) .clickAndHold() @@ -409,7 +409,7 @@ public class QTI21Page { By associateItemsBy = By.xpath("//div[@class='graphicAssociateInteraction']"); OOGraphene.waitElement(associateItemsBy, browser); if(browser instanceof FirefoxDriver) { - OOGraphene.scrollTo(associateItemsBy, browser); + OOGraphene.moveTo(associateItemsBy, browser); } return this; } @@ -417,9 +417,9 @@ public class QTI21Page { public QTI21Page answerOrderDropItem(String source) { By sourceBy = By.xpath("//li[@class='o_assessmentitem_order_item'][contains(text(),'" + source + "')]"); OOGraphene.waitElement(sourceBy, 5, browser); - WebElement sourceEl = OOGraphene.unwrap(browser.findElement(sourceBy)); + WebElement sourceEl = browser.findElement(sourceBy); By targetBy = By.xpath("//div[@class='orderInteraction']//div[contains(@class,'target')]/ul"); - WebElement targetEl = OOGraphene.unwrap(browser.findElement(targetBy)); + WebElement targetEl = browser.findElement(targetBy); Position sourcePos = Position.valueOf(30, 30, sourceEl.getSize(), browser); Position targetPos = Position.valueOf(30, 30, targetEl.getSize(), browser); @@ -464,20 +464,15 @@ public class QTI21Page { browser.findElement(sourceBy).click(); By areaBy = By.xpath("//div[@class='graphicGapMatchInteraction']//map/area[@data-qti-id='" + gap + "']"); WebElement areaEl = browser.findElement(areaBy); - if(browser instanceof FirefoxDriver) { - String coords = areaEl.getAttribute("coords"); - By imgBy = By.xpath("//div[contains(@class,'graphicGapMatchInteraction')]/div/div/img"); - WebElement element = browser.findElement(imgBy); - Dimension dim = element.getSize(); - Position pos = Position.valueOf(coords, dim, browser); - new Actions(browser) - .moveToElement(element, pos.getX(), pos.getY()) - .click() - .perform(); - - } else { - areaEl.click(); - } + String coords = areaEl.getAttribute("coords"); + By imgBy = By.xpath("//div[contains(@class,'graphicGapMatchInteraction')]/div/div/img"); + WebElement element = browser.findElement(imgBy); + Dimension dim = element.getSize(); + Position pos = Position.valueOf(coords, dim, browser); + new Actions(browser) + .moveToElement(element, pos.getX(), pos.getY()) + .click() + .perform(); return this; } @@ -491,7 +486,7 @@ public class QTI21Page { public QTI21Page answerSelectPoint(int x, int y, int width, int height) { Position pos = Position.valueOf(x, y, width, height, browser); By canvasBy = By.xpath("//div[contains(@class,'selectPointInteraction')]/div/canvas"); - WebElement canvasEl = OOGraphene.unwrap(browser.findElement(canvasBy)); + WebElement canvasEl = browser.findElement(canvasBy); new Actions(browser) .moveToElement(canvasEl, pos.getX(), pos.getY()) .click() @@ -526,9 +521,9 @@ public class QTI21Page { public QTI21Page answerPositionObject(int index, int x, int y, int firefoxCorrection) { By itemBy = By.xpath("//div[contains(@class,'positionObjectStage')]//div[@id='object-item-" + index + "']"); OOGraphene.waitElement(itemBy, browser); - WebElement itemEl = OOGraphene.unwrap(browser.findElement(itemBy)); + WebElement itemEl = browser.findElement(itemBy); By targetBy = By.xpath("//div[@class='positionObjectStage']//img[contains(@id,'qtiworks_id_container_')]"); - WebElement targetEl = OOGraphene.unwrap(browser.findElement(targetBy)); + WebElement targetEl = browser.findElement(targetBy); Dimension targetDim = targetEl.getSize(); Position targetPos = Position.valueOf(x, y, firefoxCorrection, targetDim, browser); Dimension itemDim = itemEl.getSize(); @@ -549,11 +544,9 @@ public class QTI21Page { * @return Itself */ public QTI21Page moveToVerticalSlider() { - By interactionBy = By.id("itemBody"); + By interactionBy = By.cssSelector("span.ui-slider-handle"); OOGraphene.waitElement(interactionBy, browser); - if(browser instanceof FirefoxDriver) { - OOGraphene.scrollTo(interactionBy, browser); - } + OOGraphene.moveTo(interactionBy, browser); return this; } @@ -566,7 +559,7 @@ public class QTI21Page { public QTI21Page answerVerticalSlider(int val) { By sliderBy = By.xpath("//div[contains(@class,'sliderInteraction')]/div[contains(@class,'sliderVertical')]/div[contains(@class,'sliderWidget')]"); OOGraphene.waitElement(sliderBy, browser); - WebElement sliderEl = OOGraphene.unwrap(browser.findElement(sliderBy)); + WebElement sliderEl = browser.findElement(sliderBy); Dimension size = sliderEl.getSize(); float height = (size.getHeight() / 100f) * val; int scaledY = Math.round(size.getHeight() - height); @@ -602,8 +595,7 @@ public class QTI21Page { */ public QTI21Page answerDrawing() { By drawingBy = By.xpath("//div[contains(@class,'drawingInteraction')]//canvas[@id='tmp_canvas']"); - WebElement drawingEl = OOGraphene.unwrap(browser.findElement(drawingBy)); - + WebElement drawingEl = browser.findElement(drawingBy); new Actions(browser) .moveToElement(drawingEl, 30, 30) .clickAndHold() @@ -623,6 +615,12 @@ public class QTI21Page { return this; } + public QTI21Page assertAnswered() { + By answeredBy = By.xpath("//span[contains(@class,'o_assessmentitem_status')][i[contains(@class,'o_icon_qti_answered')]]"); + OOGraphene.waitElement(answeredBy, browser); + return this; + } + /** * For hotspot because Firefox cannot click the save without * special scrolling. @@ -924,7 +922,7 @@ public class QTI21Page { */ public QTI21Page assertOnAssessmentTestTerminated() { By terminatedBy = By.cssSelector("div.o_sel_assessment_test_terminated"); - OOGraphene.waitElement(terminatedBy, 5, browser); + OOGraphene.waitElement(terminatedBy, browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21SingleChoiceEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21SingleChoiceEditorPage.java index 6b8954d32eed8403f9a7f26aaea1910db512b7e2..6e8ee7e9d98e7895f57f883ee9cded256f4863ba 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21SingleChoiceEditorPage.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21SingleChoiceEditorPage.java @@ -43,16 +43,18 @@ public class QTI21SingleChoiceEditorPage extends QTI21AssessmentItemEditorPage { */ public QTI21SingleChoiceEditorPage addChoice(int position) { By addBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + position + "')]/a"); + OOGraphene.waitElement(addBy, browser); browser.findElement(addBy).click(); OOGraphene.waitBusy(browser); //wait the next element By addedBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + (position + 1) + "')]/a"); - OOGraphene.waitElement(addedBy, 5, browser); + OOGraphene.waitElement(addedBy, browser); return this; } public QTI21SingleChoiceEditorPage setCorrect(int position) { By correctBy = By.xpath("//div[contains(@class,'o_sel_choice_" + position + "')]//input[contains(@id,'oo_correct-')]"); + OOGraphene.waitElement(correctBy, browser); browser.findElement(correctBy).click(); 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 455e7dc62de5af66c8a04c6cd6cff271f5bca0ad..9133cba85509663d5e5cd2e6ae891d3c946ba94a 100644 --- a/src/test/java/org/olat/selenium/page/repository/FeedPage.java +++ b/src/test/java/org/olat/selenium/page/repository/FeedPage.java @@ -155,8 +155,9 @@ public class FeedPage { public FeedPage publishPost() { By publishButton = By.cssSelector(".o_sel_feed_form button.btn-primary"); - browser.findElement(publishButton).click(); + OOGraphene.moveAndClick(publishButton, browser); OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialogDisappears(browser); return this; } diff --git a/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java b/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java index 187a6bad264a71f26102ebb216801bb351a6015c..c8cc44d13edd8ecc8d070330b68919139929eaf3 100644 --- a/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java +++ b/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java @@ -49,11 +49,8 @@ public class RepositoryAccessPage { OOGraphene.waitElement(guestsBy, browser); if(access == UserAccess.guest) { - By labelGuestsBy = By.xpath("//div[contains(@class,'o_sel_repositoryentry_access_guest')]//label/input[@name='entry.access.guest' and @value='on']"); - WebElement guestsEl = browser.findElement(guestsBy); - WebElement labelGuestsEl = browser.findElement(labelGuestsBy); - OOGraphene.check(labelGuestsEl, guestsEl, Boolean.TRUE); + OOGraphene.check(guestsEl, Boolean.TRUE); } } else if(access == UserAccess.membersOnly) { By allUsersBy = By.xpath("//div[@id='o_coentry_access_type']/div/label/input[@name='entry.access.type' and @value='private']"); diff --git a/src/test/java/org/olat/selenium/page/repository/RepositorySettingsPage.java b/src/test/java/org/olat/selenium/page/repository/RepositorySettingsPage.java index 2144b10c81efafe8fad39e83e6fb37d531127974..d1c0e2b64c599f8c74785b3f52bc006b5b886734 100644 --- a/src/test/java/org/olat/selenium/page/repository/RepositorySettingsPage.java +++ b/src/test/java/org/olat/selenium/page/repository/RepositorySettingsPage.java @@ -19,7 +19,6 @@ */ package org.olat.selenium.page.repository; -import org.olat.selenium.page.NavigationPage; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -76,7 +75,6 @@ public class RepositorySettingsPage { } public void back() { - browser.findElement(NavigationPage.toolbarBackBy).click(); - OOGraphene.waitBusy(browser); + OOGraphene.clickBreadcrumbBack(browser); } } diff --git a/src/test/java/org/olat/selenium/page/repository/ScormPage.java b/src/test/java/org/olat/selenium/page/repository/ScormPage.java index e15eacf28cbdd31f69b8880db5171ef84d96644f..64cb93599299499ca92e6af4acfa25f59d43858d 100644 --- a/src/test/java/org/olat/selenium/page/repository/ScormPage.java +++ b/src/test/java/org/olat/selenium/page/repository/ScormPage.java @@ -50,12 +50,17 @@ public class ScormPage { public ScormPage start() { By startBy = By.cssSelector("button.o_sel_start_scorm"); - WebElement startButton = browser.findElement(startBy); - startButton.click(); + browser.findElement(startBy).click(); OOGraphene.waitBusy(browser); return this; } + public ScormPage assertOnStart() { + By startBy = By.cssSelector("button.o_sel_start_scorm"); + OOGraphene.waitElement(startBy, browser); + return this; + } + public ScormPage passVerySimpleScorm() { browser.switchTo().frame("scormContentFrame"); @@ -116,6 +121,7 @@ public class ScormPage { */ public ScormPage back() { By backBy = By.className("o_link_back"); + OOGraphene.waitElement(backBy, browser); browser.findElement(backBy).click(); OOGraphene.waitBusy(browser); return this; diff --git a/src/test/java/org/olat/selenium/page/user/UserToolsPage.java b/src/test/java/org/olat/selenium/page/user/UserToolsPage.java index 4e4834f9800d21271a16b466141b17a19683dbc5..c852216efa604715e46ce7ab506230bd51388136 100644 --- a/src/test/java/org/olat/selenium/page/user/UserToolsPage.java +++ b/src/test/java/org/olat/selenium/page/user/UserToolsPage.java @@ -21,7 +21,9 @@ package org.olat.selenium.page.user; import java.util.List; +import org.apache.logging.log4j.Logger; import org.junit.Assert; +import org.olat.core.logging.Tracing; import org.olat.selenium.page.LoginPage; import org.olat.selenium.page.core.FolderPage; import org.olat.selenium.page.graphene.OOGraphene; @@ -39,6 +41,8 @@ import org.openqa.selenium.WebElement; */ public class UserToolsPage { + private static final Logger log = Tracing.createLoggerFor(UserToolsPage.class); + public static final By mySettingsClassName = By.className("o_sel_user_tools-mysettings"); private final WebDriver browser; @@ -102,17 +106,22 @@ public class UserToolsPage { List<WebElement> mySettingsLinks = browser.findElements(mySettingsClassName); if(mySettingsLinks.isEmpty() || !mySettingsLinks.get(0).isDisplayed()) { By toolbarCaretBy = By.id("o_sel_navbar_my_menu_caret"); + List<WebElement> toolbarCaretLinks = browser.findElements(toolbarCaretBy); Assert.assertFalse(toolbarCaretLinks.isEmpty()); WebElement toolbarCaretLink = toolbarCaretLinks.get(0); Assert.assertNotNull(toolbarCaretLink); try { - toolbarCaretLink.click(); + browser.findElement(toolbarCaretBy).click(); } catch (Exception e) { - e.printStackTrace(); + log.error("", e); } OOGraphene.waitNavBarTransition(browser); - OOGraphene.waitElement(mySettingsClassName, browser); + try { + OOGraphene.waitElement(mySettingsClassName, browser);//TODO selenium + } catch (Exception e) { + log.error("", e); + } } assertOnUserTools(); return this; @@ -174,6 +183,6 @@ public class UserToolsPage { By logoutBy = By.className("o_logout"); browser.findElement(logoutBy).click(); - OOGraphene.waitElement(LoginPage.loginFormBy, 5, browser); + OOGraphene.waitElement(LoginPage.loginFormBy, browser); } } \ No newline at end of file diff --git a/src/test/java/org/olat/test/ArquillianDeployments.java b/src/test/java/org/olat/test/ArquillianDeployments.java index a7d6aef88a34f190f69a3a9227184777b56d6667..d94e7e86f9b15bc3ed8344548c25dd155f27c328 100644 --- a/src/test/java/org/olat/test/ArquillianDeployments.java +++ b/src/test/java/org/olat/test/ArquillianDeployments.java @@ -50,7 +50,9 @@ public class ArquillianDeployments { public static final String LIB_DIR = "target/openolat-lms-14.0-SNAPSHOT/WEB-INF/lib"; public static WebArchive createDeployment() { - return createDeployment("openolat.war", new HashMap<>()); + Map<String,String> overrideProperties = new HashMap<>(); + overrideProperties.put("ldap.enable", "false"); + return createDeployment("openolat.war", overrideProperties); } public static WebArchive createDeployment(Map<String,String> overrideProperties) {