From c26aecf8d8e938a4f67d7f70f0bbdee78cc9c81b Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 28 Mar 2018 20:25:58 +0200 Subject: [PATCH] OO-3296: update selenium test for user management --- src/test/java/org/olat/selenium/UserTest.java | 10 +-- .../selenium/page/user/UserAdminPage.java | 69 +++++++------------ .../org/olat/test/rest/UserRestClient.java | 18 +++-- src/test/resources/arquillian.xml | 2 +- 4 files changed, 42 insertions(+), 57 deletions(-) diff --git a/src/test/java/org/olat/selenium/UserTest.java b/src/test/java/org/olat/selenium/UserTest.java index 7734780626b..c536b50635c 100644 --- a/src/test/java/org/olat/selenium/UserTest.java +++ b/src/test/java/org/olat/selenium/UserTest.java @@ -32,7 +32,6 @@ import org.jboss.arquillian.graphene.page.Page; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Assert; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.olat.restapi.support.vo.CourseVO; @@ -600,7 +599,7 @@ public class UserTest extends Deployments { * @throws IOException * @throws URISyntaxException */ - @Test @Ignore + @Test @RunAsClient public void createUser(@InitialPage LoginPage loginPage, @Drone @User WebDriver userBrowser) @@ -647,7 +646,7 @@ public class UserTest extends Deployments { * search of the user management tab. * */ - @Test @Ignore + @Test @RunAsClient public void deleteUser(@InitialPage LoginPage loginPage, @Drone @User WebDriver userBrowser) { @@ -680,6 +679,7 @@ public class UserTest extends Deployments { //admin delete userAdminPage + .openSearchUser() .openDirectDeleteUser() .searchUserToDelete(username) .selectAndDeleteUser(lastName); @@ -707,7 +707,7 @@ public class UserTest extends Deployments { * @throws IOException * @throws URISyntaxException */ - @Test @Ignore + @Test @RunAsClient public void importUsers(@InitialPage LoginPage loginPage, @Drone @User WebDriver userBrowser) @@ -759,7 +759,7 @@ public class UserTest extends Deployments { * @throws IOException * @throws URISyntaxException */ - @Test @Ignore + @Test @RunAsClient public void importExistingUsers(@InitialPage LoginPage loginPage, @Drone @User WebDriver existingUserBrowser, diff --git a/src/test/java/org/olat/selenium/page/user/UserAdminPage.java b/src/test/java/org/olat/selenium/page/user/UserAdminPage.java index a7456fc0064..265addf311a 100644 --- a/src/test/java/org/olat/selenium/page/user/UserAdminPage.java +++ b/src/test/java/org/olat/selenium/page/user/UserAdminPage.java @@ -52,7 +52,7 @@ public class UserAdminPage { } public UserAdminPage openCreateUser() { - By createBy = By.cssSelector(".o_tree li.o_sel_useradmin_create>div>span.o_tree_link>a"); + By createBy = By.cssSelector("ul.o_tools a.o_sel_useradmin_create"); WebElement createMenuItem = browser.findElement(createBy); createMenuItem.click(); OOGraphene.waitBusy(browser); @@ -70,9 +70,9 @@ public class UserAdminPage { } public UserAdminPage openDirectDeleteUser() { - By createBy = By.cssSelector(".o_tree li.o_sel_useradmin_direct_delete>div>span.o_tree_link>a"); - WebElement createMenuItem = browser.findElement(createBy); - createMenuItem.click(); + By createBy = By.cssSelector("ul.o_tools a.o_sel_useradmin_direct_delete"); + OOGraphene.waitElement(createBy, browser); + browser.findElement(createBy).click(); OOGraphene.waitBusy(browser); return this; } @@ -87,7 +87,7 @@ public class UserAdminPage { public UserAdminPage searchUserToDelete(String username) { OOGraphene.closeBlueMessageWindow(browser); By createBy = By.cssSelector("fieldset.o_sel_user_search_form div.o_sel_user_search_username input[type='text']"); - OOGraphene.waitElement(createBy, 5, browser); + OOGraphene.waitElement(createBy, browser); browser.findElement(createBy).sendKeys(username); //search @@ -129,7 +129,8 @@ public class UserAdminPage { } public UserAdminPage openImportUsers() { - By importBy = By.cssSelector(".o_tree li.o_sel_useradmin_import>div>span.o_tree_link>a"); + By importBy = By.cssSelector("ul.o_tools a.o_sel_useradmin_import"); + OOGraphene.waitElement(importBy, browser); browser.findElement(importBy).click(); OOGraphene.waitBusy(browser); return this; @@ -137,8 +138,9 @@ public class UserAdminPage { public ImportUserPage startImport() { By importBy = By.cssSelector("a.o_sel_id_start_import_user_button.btn-primary"); + OOGraphene.waitElement(importBy, browser); browser.findElement(importBy).click(); - OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialog(browser); By dataBy = By.cssSelector("fieldset.o_sel_import_users_data"); OOGraphene.waitElement(dataBy, browser); return new ImportUserPage(browser); @@ -161,32 +163,27 @@ public class UserAdminPage { public UserAdminPage fillUserForm(UserVO userVo) { By usernameBy = By.cssSelector(".o_sel_id_create .o_sel_id_username input[type='text']"); - WebElement usernameEl = browser.findElement(usernameBy); - usernameEl.sendKeys(userVo.getLogin()); + OOGraphene.waitElement(usernameBy, browser); + browser.findElement(usernameBy).sendKeys(userVo.getLogin()); By firstNameBy = By.cssSelector(".o_sel_id_create .o_sel_id_firstname input[type='text']"); - WebElement firstNameEL = browser.findElement(firstNameBy); - firstNameEL.sendKeys(userVo.getFirstName()); + browser.findElement(firstNameBy).sendKeys(userVo.getFirstName()); By lastNameBy = By.cssSelector(".o_sel_id_create .o_sel_id_lastname input[type='text']"); - WebElement lastNameEl = browser.findElement(lastNameBy); - lastNameEl.sendKeys(userVo.getLastName()); + browser.findElement(lastNameBy).sendKeys(userVo.getLastName()); By emailBy = By.cssSelector(".o_sel_id_create .o_sel_id_email input[type='text']"); - WebElement emailEl = browser.findElement(emailBy); - emailEl.sendKeys(userVo.getEmail()); + browser.findElement(emailBy).sendKeys(userVo.getEmail()); By password1By = By.cssSelector(".o_sel_id_create .o_sel_id_password1 input[type='password']"); - WebElement password1El = browser.findElement(password1By); - password1El.sendKeys(userVo.getPassword()); + browser.findElement(password1By).sendKeys(userVo.getPassword()); By password2By = By.cssSelector(".o_sel_id_create .o_sel_id_password2 input[type='password']"); - WebElement password2El = browser.findElement(password2By); - password2El.sendKeys(userVo.getPassword()); + browser.findElement(password2By).sendKeys(userVo.getPassword()); By saveBy = By.cssSelector(".o_sel_id_create button.btn-primary"); browser.findElement(saveBy).click(); - OOGraphene.waitBusy(browser); + OOGraphene.waitBusyAndScrollTop(browser); OOGraphene.waitAndCloseBlueMessageWindow(browser); return this; } @@ -208,20 +205,18 @@ public class UserAdminPage { public UserAdminPage searchByUsername(String username) { By usernameBy = By.cssSelector(".o_sel_user_search_form .o_sel_user_search_username input[type='text']"); - WebElement usernameEl = browser.findElement(usernameBy); - usernameEl.sendKeys(username); + OOGraphene.waitElement(usernameBy, browser); + browser.findElement(usernameBy).sendKeys(username); By searchBy = By.cssSelector(".o_sel_user_search_form a.btn-default"); browser.findElement(searchBy).click(); OOGraphene.waitBusy(browser); - return this; } public UserAdminPage assertOnUserInList(String username) { - By userLinksBy = By.xpath("//div[contains(@class,'o_table_wrapper')]//table//tr//td//a[text()[contains(.,'" + username + "')]]"); - List<WebElement> usernameEls = browser.findElements(userLinksBy); - Assert.assertFalse(usernameEls.isEmpty()); + By userLinksBy = By.xpath("//div[contains(@class,'o_table_wrapper')]//table//tr/td/a[text()[contains(.,'" + username + "')]]"); + OOGraphene.waitElement(userLinksBy, browser); return this; } @@ -233,25 +228,9 @@ public class UserAdminPage { } public UserAdminPage selectByUsername(String username) { - By rows = By.cssSelector("div.o_table_wrapper table tbody tr"); - By usernameLinksBy = By.xpath("td//a[text()[contains(.,'" + username + "')]]"); - By selectBy = By.xpath("td//a[contains(@href,'select.user')]"); - - WebElement selectEl = null; - List<WebElement> rowEls = browser.findElements(rows); - for(WebElement rowEl:rowEls) { - List<WebElement> usernameLinkEls = rowEl.findElements(usernameLinksBy); - if(usernameLinkEls.size() > 0) { - List<WebElement> selectEls = rowEl.findElements(selectBy); - if(selectEls.size() > 0) { - selectEl = selectEls.get(0); - } - - } - } - - Assert.assertNotNull(selectEl); - selectEl.click(); + By selectBy = By.xpath("//div[contains(@class,'o_table_wrapper')]//td/a[text()[contains(.,'" + username + "')]]"); + OOGraphene.waitElement(selectBy, browser); + browser.findElement(selectBy).click(); OOGraphene.waitBusy(browser); return this; } diff --git a/src/test/java/org/olat/test/rest/UserRestClient.java b/src/test/java/org/olat/test/rest/UserRestClient.java index 24d1f9d9b8b..3e8330abda7 100644 --- a/src/test/java/org/olat/test/rest/UserRestClient.java +++ b/src/test/java/org/olat/test/rest/UserRestClient.java @@ -37,6 +37,8 @@ import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.util.EntityUtils; import org.junit.Assert; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; import org.olat.restapi.RestConnection; import org.olat.user.restapi.RolesVO; import org.olat.user.restapi.UserVO; @@ -51,6 +53,7 @@ import org.olat.user.restapi.UserVO; */ public class UserRestClient { + private static final OLog log = Tracing.createLoggerFor(UserRestClient.class); private static final AtomicInteger counter = new AtomicInteger(); private final URL deploymentUrl; @@ -136,12 +139,15 @@ public class UserRestClient { HttpResponse response = restConnection.execute(method); int responseCode = response.getStatusLine().getStatusCode(); assertTrue(responseCode == 200 || responseCode == 201); - InputStream body = response.getEntity().getContent(); - UserVO current = restConnection.parse(body, UserVO.class); - Assert.assertNotNull(current); - - current.setPassword(vo.getPassword()); - return current; + try(InputStream body = response.getEntity().getContent()) { + UserVO current = restConnection.parse(body, UserVO.class); + Assert.assertNotNull(current); + current.setPassword(vo.getPassword()); + return current; + } catch(IOException e) { + log.error("", e); + return null; + } } private UriBuilder getUsersURIBuilder() diff --git a/src/test/resources/arquillian.xml b/src/test/resources/arquillian.xml index adc9d8be81d..d622a71d227 100644 --- a/src/test/resources/arquillian.xml +++ b/src/test/resources/arquillian.xml @@ -25,7 +25,7 @@ <property name="dimensions">1024x800</property> <!-- <property name="downloadBinaries">no</property> - <property name="chromeDriverBinary">target/drone/312cd778e385a255c60caed5ffbaf6e5/chromedriver</property> + <property name="chromeDriverBinary">target/drone/75928443ebcccdfe49dffa924c1ee935/chromedriver</property> <property name="firefoxDriverBinary">target/drone/30f3fdc84d76c53de2916008a889d26f/geckodriver</property> --> <property name="firefoxUserPreferences">src/test/profile/firefox/prefs.js</property> -- GitLab