This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch user_e2e
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 66805d1bcb17f8fe4d2f9f3db09f8ad64f650d7c
Author: kezhenxu94 <[email protected]>
AuthorDate: Mon Dec 27 20:36:30 2021 +0800

    Adjust E2E to make it pass
---
 .../dolphinscheduler/e2e/cases/TenantE2ETest.java  |  9 ++-
 .../dolphinscheduler/e2e/cases/UserE2ETest.java    | 55 ++++++++++++------
 .../e2e/pages/security/SecurityPage.java           |  2 +-
 .../e2e/pages/security/TenantPage.java             |  8 ---
 .../e2e/pages/security/UserPage.java               | 66 +++++++++++-----------
 .../pages/security/pages/users/_source/list.vue    |  6 +-
 .../components/secondaryMenu/_source/menu.js       |  2 +-
 7 files changed, 84 insertions(+), 64 deletions(-)

diff --git 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/TenantE2ETest.java
 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/TenantE2ETest.java
index 4938a8b..e5c4ef5 100644
--- 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/TenantE2ETest.java
+++ 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/TenantE2ETest.java
@@ -32,6 +32,7 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
 import org.openqa.selenium.remote.RemoteWebDriver;
 
 @DolphinScheduler(composeFiles = "docker/basic/docker-compose.yaml")
@@ -52,7 +53,13 @@ class TenantE2ETest {
     @Test
     @Order(10)
     void testCreateTenant() {
-        new TenantPage(browser).create(tenant);
+        final TenantPage page = new TenantPage(browser);
+        page.create(tenant);
+
+        await().untilAsserted(() -> assertThat(page.tenantList())
+            .as("Tenant list should contain newly-created tenant")
+            .extracting(WebElement::getText)
+            .anyMatch(it -> it.contains(tenant)));
     }
 
     @Test
diff --git 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UserE2ETest.java
 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UserE2ETest.java
index 5395179..8b43e1b 100644
--- 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UserE2ETest.java
+++ 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UserE2ETest.java
@@ -20,22 +20,23 @@
 package org.apache.dolphinscheduler.e2e.cases;
 
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
+
 import org.apache.dolphinscheduler.e2e.core.DolphinScheduler;
 import org.apache.dolphinscheduler.e2e.pages.LoginPage;
-import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
 import org.apache.dolphinscheduler.e2e.pages.security.SecurityPage;
 import org.apache.dolphinscheduler.e2e.pages.security.TenantPage;
 import org.apache.dolphinscheduler.e2e.pages.security.UserPage;
+
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
 import org.openqa.selenium.remote.RemoteWebDriver;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.awaitility.Awaitility.await;
-
 @DolphinScheduler(composeFiles = "docker/basic/docker-compose.yaml")
 class UserE2ETest {
     private static final String tenant = System.getProperty("user.name");
@@ -49,26 +50,25 @@ class UserE2ETest {
     private static final String editEmail = "[email protected]";
     private static final String editPhone = "15800000001";
 
-
     private static RemoteWebDriver browser;
 
     @BeforeAll
     public static void setup() {
         new LoginPage(browser)
-                .login("admin","dolphinscheduler123")
-                .goToNav(SecurityPage.class)
-                .goToTab(TenantPage.class)
-                .create(tenant)
-                .goToNav(SecurityPage.class)
-                .goToTab(UserPage.class);
+            .login("admin", "dolphinscheduler123")
+            .goToNav(SecurityPage.class)
+            .goToTab(TenantPage.class)
+            .create(tenant)
+            .goToNav(SecurityPage.class)
+            .goToTab(UserPage.class);
     }
 
     @AfterAll
     public static void cleanup() {
-        new NavBarPage(browser)
-                .goToNav(SecurityPage.class)
-                .goToTab(TenantPage.class)
-                .delete(tenant);
+        new SecurityPage(browser)
+            .goToTab(TenantPage.class)
+            .delete(tenant)
+        ;
     }
 
     @Test
@@ -77,6 +77,15 @@ class UserE2ETest {
         final UserPage page = new UserPage(browser);
 
         page.create(user, password, email, phone);
+
+        await().untilAsserted(() -> {
+            browser.navigate().refresh();
+
+            assertThat(page.userList())
+                .as("User list should contain newly-created user")
+                .extracting(WebElement::getText)
+                .anyMatch(it -> it.contains(user));
+        });
     }
 
     @Test
@@ -98,7 +107,15 @@ class UserE2ETest {
     @Order(30)
     void testEditUser() {
         final UserPage page = new UserPage(browser);
-        page.editUser(user, editUser, editPassword, editEmail, editPhone);
+        page.update(user, editUser, editPassword, editEmail, editPhone);
+
+        await().untilAsserted(() -> {
+            browser.navigate().refresh();
+            assertThat(page.userList())
+                .as("User list should contain newly-modified User")
+                .extracting(WebElement::getText)
+                .anyMatch(it -> it.contains(editUser));
+        });
     }
 
 
@@ -106,14 +123,16 @@ class UserE2ETest {
     @Order(40)
     void testDeleteUser() {
         final UserPage page = new UserPage(browser);
-        page.delete(user);
+
+        page.delete(editUser);
 
         await().untilAsserted(() -> {
             browser.navigate().refresh();
+
             assertThat(
                 page.userList()
             ).noneMatch(
-                it -> it.getText().contains(user)
+                it -> it.getText().contains(user) || 
it.getText().contains(editUser)
             );
         });
     }
diff --git 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/SecurityPage.java
 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/SecurityPage.java
index 389bd2b..920d171 100644
--- 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/SecurityPage.java
+++ 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/SecurityPage.java
@@ -33,7 +33,7 @@ public class SecurityPage extends NavBarPage implements 
NavBarItem {
     @FindBy(className = "tab-tenant-manage")
     private WebElement menuTenantManage;
 
-    @FindBy(className = "user-manage")
+    @FindBy(className = "tab-user-manage")
     private WebElement menUserManage;
 
 
diff --git 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TenantPage.java
 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TenantPage.java
index 6fc70c6..eba9cce 100644
--- 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TenantPage.java
+++ 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TenantPage.java
@@ -19,9 +19,6 @@
 
 package org.apache.dolphinscheduler.e2e.pages.security;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.awaitility.Awaitility.await;
-
 import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
 
 import java.util.List;
@@ -67,11 +64,6 @@ public final class TenantPage extends NavBarPage implements 
SecurityPage.Tab {
         createTenantForm().inputDescription().sendKeys(description);
         createTenantForm().buttonSubmit().click();
 
-        await().untilAsserted(() -> assertThat(tenantList())
-            .as("Tenant list should contain newly-created tenant")
-            .extracting(WebElement::getText)
-            .anyMatch(it -> it.contains(tenant)));
-
         return this;
     }
 
diff --git 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/UserPage.java
 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/UserPage.java
index 90e7b2d..b602404 100644
--- 
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/UserPage.java
+++ 
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/UserPage.java
@@ -19,9 +19,6 @@
 
 package org.apache.dolphinscheduler.e2e.pages.security;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.awaitility.Awaitility.await;
-
 import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
 
 import java.util.List;
@@ -40,24 +37,24 @@ public final class UserPage extends NavBarPage implements 
SecurityPage.Tab {
     @FindBy(id = "btnCreateUser")
     private WebElement buttonCreateUser;
 
-    @FindBy(className = "rows-user")
+    @FindBy(className = "items")
     private List<WebElement> userList;
 
     @FindBys({
-            @FindBy(className = "el-popconfirm"),
-            @FindBy(className = "el-button--primary"),
+        @FindBy(className = "el-popconfirm"),
+        @FindBy(className = "el-button--primary"),
     })
-    private WebElement buttonConfirm;
+    private List<WebElement> buttonConfirm;
 
-    private UserForm createUserForm = new UserForm();
-    private UserForm editUserForm = new UserForm();
+    private final UserForm createUserForm = new UserForm();
+    private final UserForm editUserForm = new UserForm();
 
 
     public UserPage(RemoteWebDriver driver) {
         super(driver);
     }
 
-    public UserPage create(String user, String  password, String email, String 
phone) {
+    public UserPage create(String user, String password, String email, String 
phone) {
         buttonCreateUser().click();
 
         createUserForm().inputUserName().sendKeys(user);
@@ -66,43 +63,48 @@ public final class UserPage extends NavBarPage implements 
SecurityPage.Tab {
         createUserForm().inputPhone().sendKeys(phone);
         createUserForm().buttonSubmit().click();
 
-        await().untilAsserted(() -> assertThat(userList())
-                .as("User list should contain newly-created User")
-                .extracting(WebElement::getText)
-                .anyMatch(it -> it.contains(user)));
-
         return this;
     }
 
-    public UserPage editUser(String user, String editUser, String  
editPassword, String editEmail, String editPhone) {
+    public UserPage update(String user, String editUser, String editPassword, 
String editEmail, String editPhone) {
         userList()
-                .stream()
-                .filter(it -> it.getText().contains(user))
-                .findFirst()
-                .ifPresent(it -> 
it.findElement(By.className("editUser")).click());
-
+            .stream()
+            .filter(it -> 
it.findElement(By.className("name")).getAttribute("innerHTML").contains(user))
+            .flatMap(it -> it.findElements(By.className("edit")).stream())
+            .filter(WebElement::isDisplayed)
+            .findFirst()
+            .orElseThrow(() -> new RuntimeException("No edit button in user 
list"))
+            .click();
+
+        editUserForm().inputUserName().clear();
         editUserForm().inputUserName().sendKeys(editUser);
+        editUserForm().inputUserPassword().clear();
         editUserForm().inputUserPassword().sendKeys(editPassword);
+        editUserForm().inputEmail().clear();
         editUserForm().inputEmail().sendKeys(editEmail);
+        editUserForm().inputPhone().clear();
         editUserForm().inputPhone().sendKeys(editPhone);
         editUserForm().buttonSubmit().click();
 
-        await().untilAsserted(() -> assertThat(userList())
-                .as("User list should contain newly-created User")
-                .extracting(WebElement::getText)
-                .anyMatch(it -> it.contains(editUser)));
-
         return this;
     }
 
     public UserPage delete(String user) {
         userList()
-                .stream()
-                .filter(it -> it.getText().contains(user))
-                .findFirst()
-                .ifPresent(it -> 
it.findElement(By.className("delete")).click());
-
-        buttonConfirm().click();
+            .stream()
+            .filter(it -> 
it.findElement(By.className("name")).getAttribute("innerHTML").contains(user))
+            .flatMap(it -> it.findElements(By.className("delete")).stream())
+            .filter(WebElement::isDisplayed)
+            .findFirst()
+            .orElseThrow(() -> new RuntimeException("No delete button in user 
list"))
+            .click();
+
+        buttonConfirm()
+            .stream()
+            .filter(WebElement::isDisplayed)
+            .findFirst()
+            .orElseThrow(() -> new RuntimeException("No confirm button when 
deleting"))
+            .click();
 
         return this;
     }
diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/security/pages/users/_source/list.vue
 
b/dolphinscheduler-ui/src/js/conf/home/pages/security/pages/users/_source/list.vue
index d640faa..212060b 100644
--- 
a/dolphinscheduler-ui/src/js/conf/home/pages/security/pages/users/_source/list.vue
+++ 
b/dolphinscheduler-ui/src/js/conf/home/pages/security/pages/users/_source/list.vue
@@ -17,9 +17,9 @@
 <template>
   <div class="list-model user-list-model">
     <div class="table-box">
-      <el-table :data="list" size="mini" style="width: 100%" 
row-class-name="rows-user">
+      <el-table :data="list" size="mini" style="width: 100%" 
row-class-name="items">
         <el-table-column type="index" :label="$t('#')" 
width="50"></el-table-column>
-        <el-table-column prop="userName" :label="$t('User 
Name')"></el-table-column>
+        <el-table-column prop="userName" :label="$t('User Name')" 
class-name="name"></el-table-column>
         <el-table-column :label="$t('User Type')" width="80">
           <template slot-scope="scope">
             {{scope.row.userType === 'GENERAL_USER' ? `${$t('Ordinary 
users')}` : `${$t('Administrator')}`}}
@@ -62,7 +62,7 @@
               </el-dropdown>
             </el-tooltip>
             <el-tooltip :content="$t('Edit')" placement="top">
-              <el-button type="primary" size="mini" 
icon="el-icon-edit-outline" @click="_edit(scope.row)" circle 
class="editUser"></el-button>
+              <el-button type="primary" size="mini" 
icon="el-icon-edit-outline" @click="_edit(scope.row)" circle 
class="edit"></el-button>
             </el-tooltip>
             <el-tooltip :content="$t('Delete')" placement="top">
               <el-popconfirm
diff --git 
a/dolphinscheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js 
b/dolphinscheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js
index 927f93e..09395ca 100644
--- a/dolphinscheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js
+++ b/dolphinscheduler-ui/src/js/module/components/secondaryMenu/_source/menu.js
@@ -108,7 +108,7 @@ const menu = {
       enabled: true,
       icon: 'el-icon-user-solid',
       children: [],
-      classNames: 'user-manage'
+      classNames: 'tab-user-manage'
     },
     {
       name: `${i18n.$t('Warning group manage')}`,

Reply via email to