Browse Source

e2e add the case of deleting user and tenant   (#2210)

* add e2e
pull/2/head
xingchun-chen 4 years ago committed by GitHub
parent
commit
c82758c505
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      e2e/src/test/java/org/apache/dolphinscheduler/base/BaseDriver.java
  2. 17
      e2e/src/test/java/org/apache/dolphinscheduler/base/BaseTest.java
  3. 2
      e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java
  4. 2
      e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreatWorkflowData.java
  5. 4
      e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateProjectData.java
  6. 73
      e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateWorkflowData.java
  7. 10
      e2e/src/test/java/org/apache/dolphinscheduler/data/security/TenantManageData.java
  8. 5
      e2e/src/test/java/org/apache/dolphinscheduler/data/security/UserManageData.java
  9. 69
      e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateWorkflowLocator.java
  10. 8
      e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TenantManageLocator.java
  11. 3
      e2e/src/test/java/org/apache/dolphinscheduler/locator/security/UserManageLocator.java
  12. 14
      e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java
  13. 11
      e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateProjectPage.java
  14. 89
      e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateWorkflowPage.java
  15. 26
      e2e/src/test/java/org/apache/dolphinscheduler/page/security/TenantManagePage.java
  16. 25
      e2e/src/test/java/org/apache/dolphinscheduler/page/security/UserManagePage.java
  17. 35
      e2e/src/test/java/org/apache/dolphinscheduler/testcase/LoginTest.java
  18. 37
      e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteTenantTest.java
  19. 36
      e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteUserTest.java
  20. 7
      e2e/src/test/java/org/apache/dolphinscheduler/testcase/project/CreateProjectTest.java
  21. 10
      e2e/src/test/java/org/apache/dolphinscheduler/testcase/project/CreateWorkflowTest.java
  22. 11
      e2e/src/test/java/org/apache/dolphinscheduler/testcase/security/TenantManageTest.java
  23. 8
      e2e/src/test/java/org/apache/dolphinscheduler/testcase/security/UserManageTest.java
  24. 18
      e2e/suite.xml
  25. 28
      e2e/testng.xml

8
e2e/src/test/java/org/apache/dolphinscheduler/base/BaseDriver.java

@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.base;
import org.apache.dolphinscheduler.constant.TestConstant; import org.apache.dolphinscheduler.constant.TestConstant;
import org.apache.dolphinscheduler.util.PropertiesReader; import org.apache.dolphinscheduler.util.PropertiesReader;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeDriver;
@ -35,7 +36,7 @@ public class BaseDriver {
/** /**
* driver * driver
*/ */
private WebDriver driver; private static WebDriver driver;
/** /**
* chrome driver path * chrome driver path
@ -88,6 +89,7 @@ public class BaseDriver {
chromeOptions.setPageLoadStrategy(PageLoadStrategy.NONE); chromeOptions.setPageLoadStrategy(PageLoadStrategy.NONE);
chromeOptions.addArguments("--no-sandbox"); chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-dev-shm-usage"); chromeOptions.addArguments("--disable-dev-shm-usage");
//Browser client running requires annotation --headless
chromeOptions.addArguments("--headless"); chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--disable-gpu"); chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments("--whitelisted-ips"); chromeOptions.addArguments("--whitelisted-ips");
@ -120,7 +122,7 @@ public class BaseDriver {
* *
* @return driver * @return driver
*/ */
public WebDriver getDriver() { public static WebDriver getDriver() {
return driver; return driver;
} }
@ -141,7 +143,7 @@ public class BaseDriver {
public void closeBrowser() throws InterruptedException { public void closeBrowser() throws InterruptedException {
// JS Show a pop-up box to indicate the end of the test // JS Show a pop-up box to indicate the end of the test
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
((JavascriptExecutor) driver).executeScript("alert('Test completed, browser closes after 3s')"); // ((JavascriptExecutor) driver).executeScript("alert('Test completed, browser closes after 3s')");
Thread.sleep(TestConstant.THREE_THOUSANG); Thread.sleep(TestConstant.THREE_THOUSANG);
if (driver != null) { if (driver != null) {
driver.quit(); driver.quit();

17
e2e/src/test/java/org/apache/dolphinscheduler/base/BaseTest.java

@ -17,7 +17,6 @@
package org.apache.dolphinscheduler.base; package org.apache.dolphinscheduler.base;
import org.apache.dolphinscheduler.page.LoginPage;
import org.apache.dolphinscheduler.util.PropertiesReader; import org.apache.dolphinscheduler.util.PropertiesReader;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.testng.annotations.*; import org.testng.annotations.*;
@ -28,6 +27,7 @@ import java.util.Properties;
/** /**
* base test class * base test class
*/ */
@Test(groups={"functionTests"})
public class BaseTest { public class BaseTest {
/** /**
* properties * properties
@ -43,7 +43,7 @@ public class BaseTest {
/** /**
* driver * driver
*/ */
public WebDriver driver; public static WebDriver driver;
/** /**
* Executed before executing a test suite  * Executed before executing a test suite 
@ -54,7 +54,7 @@ public class BaseTest {
*/ */
@BeforeSuite(alwaysRun = true) @BeforeSuite(alwaysRun = true)
@Parameters({"propertiesPath"}) @Parameters({"propertiesPath"})
public void beforeSuite(@Optional("src/test/resources/config/config.properties") String propertiesPath) throws IOException { public void beforeSuite(@Optional("src/test/resources/config/config.properties") String propertiesPath) throws Exception {
// read properties // read properties
properties = PropertiesReader.readProperties(propertiesPath); properties = PropertiesReader.readProperties(propertiesPath);
} }
@ -70,14 +70,13 @@ public class BaseTest {
driver = baseDriver.getDriver(); driver = baseDriver.getDriver();
} }
/** /**
* Executed before executing a class method in a test case * Executed before executing a class method in a test case
*/ */
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
public void setUp() throws IOException, InterruptedException { public void setUp() throws Exception {
LoginPage loginPage = new LoginPage(driver);
loginPage.jumpPage();
loginPage.login();
} }
@ -85,7 +84,7 @@ public class BaseTest {
* Execute after executing a class method in a test case * Execute after executing a class method in a test case
*/ */
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)
public void afterClass() { public void afterClass() throws InterruptedException {
// logout // logout
} }
@ -102,6 +101,6 @@ public class BaseTest {
* Execute after executing a testsuite * Execute after executing a testsuite
*/ */
@AfterSuite(alwaysRun = true) @AfterSuite(alwaysRun = true)
public void afterSuite() { public void afterSuite() throws InterruptedException {
} }
} }

2
e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java

@ -39,5 +39,5 @@ public class LoginData {
*/ */
public static final String PASSWORD = PropertiesReader.getKey("PASSWORD"); public static final String PASSWORD = PropertiesReader.getKey("PASSWORD");
public static final String TENANT = "Tenant Manage - DolphinScheduler"; public static final String TENANT = "租户管理 - DolphinScheduler";
} }

2
e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreatWorkflowData.java

@ -18,7 +18,7 @@ package org.apache.dolphinscheduler.data.project;
public class CreatWorkflowData { public class CreatWorkflowData {
//input shell task name //input shell task name
public static final String SHELL_TASK_NAME = "shell task description test"; public static final String SHELL_TASK_NAME = "shell task description test1";
//input shell task description //input shell task description
public static final String SHELL_TASK_DESCRIPTION = "shell task description test"; public static final String SHELL_TASK_DESCRIPTION = "shell task description test";

4
e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreatProjectData.java → e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateProjectData.java

@ -16,9 +16,9 @@
*/ */
package org.apache.dolphinscheduler.data.project; package org.apache.dolphinscheduler.data.project;
public class CreatProjectData { public class CreateProjectData {
// create project name // create project name
public static final String PROJECT_NAME = "selenium_project"; public static final String PROJECT_NAME = "selenium_project_3";
// create project description // create project description
public static final String DESCRIPTION = "test create project description"; public static final String DESCRIPTION = "test create project description";
// project page title // project page title

73
e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateWorkflowData.java

@ -0,0 +1,73 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.dolphinscheduler.data.project;
public class CreateWorkflowData {
/**
* create workflow data
*/
//input shell task name
public static final String SHELL_TASK_NAME = "shell_task_selenium_5";
//input shell task description
public static final String SHELL_TASK_DESCRIPTION = "shell task description test";
//input timeout
public static final String INPUT_TIMEOUT = "60";
//input shell script
public static final String SHELL_SCRIPT = "echo 1111111";
//input custom parameters
public static final String INPUT_CUSTOM_PARAMETERS = "selenium_parameter";
//input custom parameters value
public static final String INPUT_CUSTOM_PARAMETERS_VALUE = "selenium_parameter_123";
//input add custom parameters
public static final String INPUT_ADD_CUSTOM_PARAMETERS = "selenium_parameter_delete";
//input add custom parameters value
public static final String INPUT_ADD_CUSTOM_PARAMETERS_VALUE = "selenium_parameter_delete_456";
//create workflow title
public static final String WORKFLOW_TITLE = "创建流程定义 - DolphinScheduler";
/**
* save workflow data
*/
//input workflow name
public static final String INPUT_WORKFLOW_NAME = "selenium_shell_1";
//input workflow description
public static final String INPUT_WORKFLOW_DESCRIPTION = "test selenium_shell_1 description";
//input workflow timeout
public static final String INPUT_WORKFLOW_TIMEOUT = "30";
//input workflow global parameters
public static final String INPUT_WORKFLOW_GLOBAL_PARAMETERS = "selenium_global_parameters_1";
//input workflow global parameters value
public static final String INPUT_WORKFLOW_GLOBAL_PARAMETERS_VALUES = "selenium_global_parameters_value_1";
//input to add workflow global parameters
public static final String INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS = "selenium_global_parameters_2";
//input to add workflow global parameters value
public static final String INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS_VALUES = "selenium_global_parameters_value_2";
}

10
e2e/src/test/java/org/apache/dolphinscheduler/data/security/TenantManageData.java

@ -20,18 +20,12 @@
*/ */
package org.apache.dolphinscheduler.data.security; package org.apache.dolphinscheduler.data.security;
import org.apache.dolphinscheduler.data.LoginData;
public class TenantManageData { public class TenantManageData {
/**
* Tenant URL
*/
public static final String TENANAT_URL = LoginData.URL + "/ui/#/security/tenant";
/** /**
* Tenant Code * Tenant Code
*/ */
public static final String TENANAT_CODE = "dolphinscheduler_tenant_code2"; public static final String TENANAT_CODE = "dolphinscheduler_tenant_code15";
/** /**
* Tenant Name * Tenant Name
@ -48,7 +42,7 @@ public class TenantManageData {
*/ */
public static final String DESCRIPTION = "creat tenant test"; public static final String DESCRIPTION = "creat tenant test";
public static final String TENANAT_MANAGE = "Tenant Manage - DolphinScheduler"; public static final String TENANAT_MANAGE = "租户管理 - DolphinScheduler";

5
e2e/src/test/java/org/apache/dolphinscheduler/data/security/UserManageData.java

@ -16,12 +16,9 @@
*/ */
package org.apache.dolphinscheduler.data.security; package org.apache.dolphinscheduler.data.security;
import org.apache.dolphinscheduler.data.LoginData;
public class UserManageData { public class UserManageData {
public static final String USER_URL = LoginData.URL + "/ui/#/security/users"; public static final String USERNAME = "selenium_5";
public static final String USERNAME = "selenium111";
public static final String PASSWORD = "123456qwe"; public static final String PASSWORD = "123456qwe";

69
e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateWorkflowLocator.java

@ -20,12 +20,20 @@ package org.apache.dolphinscheduler.locator.project;
import org.openqa.selenium.By; import org.openqa.selenium.By;
public class CreateWorkflowLocator { public class CreateWorkflowLocator {
/**
* jump workflow define page
*/
// click project name // click project name
public static final By CLICK_PROJECT_NAME = By.xpath("//span/a"); public static final By CLICK_PROJECT_NAME = By.xpath("//span/a");
// click workflow define // click workflow define
public static final By CLICK_WORKFLOW_DEFINE = By.xpath("//li/span"); public static final By CLICK_WORKFLOW_DEFINE = By.xpath("//li/span");
/**
* create workflow
*/
// click create workflow button // click create workflow button
public static final By CLICK_CREATE_WORKFLOW_BUTTON = By.xpath("//button/span"); public static final By CLICK_CREATE_WORKFLOW_BUTTON = By.xpath("//button/span");
@ -96,15 +104,15 @@ public class CreateWorkflowLocator {
public static final By INPUT_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div/div/input"); public static final By INPUT_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div/div/input");
//input custom parameters value //input custom parameters value
public static final By INPUT_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/input"); public static final By INPUT_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/div/div/div/div[1]/div[2]/input");
//click add custom parameters //click to add custom parameters
public static final By CLICK_ADD_CUSTOM_PARAMETERS = By.xpath("//span[2]/a/em"); public static final By CLICK_ADD_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div/span[2]/a/em");
//input add custom parameters //input to add custom parameters
public static final By INPUT_ADD_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div[2]/div/input"); public static final By INPUT_ADD_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div[2]/div[1]/input");
//input add custom parameters value //input to add custom parameters value
public static final By INPUT_ADD_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/div[2]/input"); public static final By INPUT_ADD_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/div[2]/input");
//delete custom parameters //delete custom parameters
@ -112,4 +120,53 @@ public class CreateWorkflowLocator {
//click submit button //click submit button
public static final By CLICK_SUBMIT_BUTTON = By.xpath("//button[2]/span"); public static final By CLICK_SUBMIT_BUTTON = By.xpath("//button[2]/span");
/**
* save workflow
*/
//click save workflow button
public static final By CLICK_SAVE_WORKFLOW_BUTTON = By.xpath("//button/span");
//input workflow name
public static final By INPUT_WORKFLOW_NAME = By.xpath("//input");
//input workflow description
public static final By INPUT_WORKFLOW_DESCRIPTION = By.xpath("//textarea");
//select tenant
public static final By CLICK_TENANT = By.xpath("//div[4]/div/div/div/input");
public static final By SELECT_TENANT = By.xpath("//div[2]/div/div/div/ul/li/span");
//click workflow timeout alarm
public static final By CLICK_WORKFLOW_TIMEOUT_ALARM = By.xpath("//span[2]/span/span");
//input workflow timeout
public static final By INPUT_WORKFLOW_TIMEOUT = By.xpath("//span/div/input");
//click workflow global parameters
public static final By CLICK_WORKFLOW_GLOBAL_PARAMETERS = By.xpath("//span/a/em");
//input workflow global parameters
public static final By INPUT_WORKFLOW_GLOBAL_PARAMETERS = By.xpath("//div[8]/div/div/div/div/input");
//input workflow global parameters value
public static final By INPUT_WORKFLOW_GLOBAL_PARAMETERS_VALUES = By.xpath("//div[2]/input");
//click to add workflow global parameters
public static final By CLICK_ADD_WORKFLOW_GLOBAL_PARAMETERS = By.xpath("//span[2]/a/em");
//input to add workflow global parameters
public static final By INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS = By.xpath("//div[8]/div/div/div[2]/div/input");
//input to add workflow global parameters value
public static final By INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS_VALUES = By.xpath("//div[2]/div[2]/input");
//delete workflow global parameters value
public static final By CLICK_DELETE_WORKFLOW_GLOBAL_PARAMETERS = By.xpath("//div[2]/span/a/em");
//click add button
public static final By CLICK_ADD_BUTTON = By.xpath("//button[2]/span");
} }

8
e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TenantManageLocator.java

@ -19,7 +19,9 @@ package org.apache.dolphinscheduler.locator.security;
import org.openqa.selenium.By; import org.openqa.selenium.By;
public class TenantManageLocator{ public class TenantManageLocator{
public static final By CREATE_TENANT_BUTTON = By.xpath("//button[@class='ans-btn ans-btn-ghost ans-btn-small']"); public static final By TENANT_MANAGE = By.xpath("//div[2]/div/a/div/a/span");
public static final By CREATE_TENANT_BUTTON = By.xpath("//button/span");
public static final By TENANT_INPUT_CODE = By.xpath("//div[2]/div/div/div[2]/div/input"); public static final By TENANT_INPUT_CODE = By.xpath("//div[2]/div/div/div[2]/div/input");
@ -30,4 +32,8 @@ public class TenantManageLocator{
public static final By DESCRIPTION = By.xpath("//textarea"); public static final By DESCRIPTION = By.xpath("//textarea");
public static final By SUBMIT_BUTTON = By.xpath("//div[3]/button[2]/span"); public static final By SUBMIT_BUTTON = By.xpath("//div[3]/button[2]/span");
public static final By DELETE_TENANT_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[8]/span/button");
public static final By CONFIRM_DELETE_TENANT_BUTTON = By.xpath("//div[2]/div/button[2]/span");
} }

3
e2e/src/test/java/org/apache/dolphinscheduler/locator/security/UserManageLocator.java

@ -42,4 +42,7 @@ public class UserManageLocator {
public static final By SUBMIT = By.xpath("//div[3]/button[2]/span"); public static final By SUBMIT = By.xpath("//div[3]/button[2]/span");
public static final By DELETE_USER_BUTTON = By.xpath("//span[2]/button/i");
public static final By CONFIRM_DELETE_USER_BUTTON = By.xpath("//div[2]/div/button[2]/span");
} }

14
e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java

@ -21,6 +21,7 @@ import org.apache.dolphinscheduler.constant.TestConstant;
import org.apache.dolphinscheduler.data.LoginData; import org.apache.dolphinscheduler.data.LoginData;
import org.apache.dolphinscheduler.locator.LoginLocator; import org.apache.dolphinscheduler.locator.LoginLocator;
import org.apache.dolphinscheduler.util.RedisUtil; import org.apache.dolphinscheduler.util.RedisUtil;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
@ -38,18 +39,25 @@ public class LoginPage extends PageCommon {
/** /**
* jump page * jump page
*/ */
public void jumpPage() { public void jumpPageEnlish() {
System.out.println("jump login page"); System.out.println("jump to English login page");
super.jumpPage(LoginData.URL); super.jumpPage(LoginData.URL);
Cookie cookie = new Cookie("language", "en_US", "/", null);
driver.manage().addCookie(cookie);
} }
public void jumpPageChinese() {
super.jumpPage(LoginData.URL);
Cookie cookie = new Cookie("language", "zh_CN", "/", null);
driver.manage().addCookie(cookie);
}
/** /**
* login * login
* *
* @return Whether to enter the specified page after searching * @return Whether to enter the specified page after searching
*/ */
public boolean login() throws InterruptedException { public boolean login() throws InterruptedException {
System.out.println("LoginPage");
// login data // login data
sendInput(LoginLocator.LOGIN_INPUT_USER, LoginData.USER); sendInput(LoginLocator.LOGIN_INPUT_USER, LoginData.USER);
sendInput(LoginLocator.LOGIN_INPUT_PASSWORD, LoginData.PASSWORD); sendInput(LoginLocator.LOGIN_INPUT_PASSWORD, LoginData.PASSWORD);

11
e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateProjectPage.java

@ -18,7 +18,7 @@ package org.apache.dolphinscheduler.page.project;
import org.apache.dolphinscheduler.common.PageCommon; import org.apache.dolphinscheduler.common.PageCommon;
import org.apache.dolphinscheduler.constant.TestConstant; import org.apache.dolphinscheduler.constant.TestConstant;
import org.apache.dolphinscheduler.data.project.CreatProjectData; import org.apache.dolphinscheduler.data.project.CreateProjectData;
import org.apache.dolphinscheduler.locator.project.CreateProjectLocator; import org.apache.dolphinscheduler.locator.project.CreateProjectLocator;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
@ -26,6 +26,7 @@ public class CreateProjectPage extends PageCommon {
public CreateProjectPage(WebDriver driver) { public CreateProjectPage(WebDriver driver) {
super(driver); super(driver);
} }
/** /**
* jump page * jump page
*/ */
@ -36,7 +37,7 @@ public class CreateProjectPage extends PageCommon {
} }
/** /**
* creatTenant * createTenant
* *
* @return Whether to enter the specified page after creat tenant * @return Whether to enter the specified page after creat tenant
*/ */
@ -46,13 +47,13 @@ public class CreateProjectPage extends PageCommon {
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
// input create project data // input create project data
sendInput(CreateProjectLocator.PROJECT_NAME, CreatProjectData.PROJECT_NAME); sendInput(CreateProjectLocator.PROJECT_NAME, CreateProjectData.PROJECT_NAME);
sendInput(CreateProjectLocator.PROJECT_DESCRIPTION, CreatProjectData.DESCRIPTION); sendInput(CreateProjectLocator.PROJECT_DESCRIPTION, CreateProjectData.DESCRIPTION);
// click submit button // click submit button
clickButton(CreateProjectLocator.SUBMIT_BUTTON); clickButton(CreateProjectLocator.SUBMIT_BUTTON);
// Whether to enter the specified page after submit // Whether to enter the specified page after submit
return ifTitleContains(CreatProjectData.PROJECT_TITLE); return ifTitleContains(CreateProjectData.PROJECT_TITLE);
} }
} }

89
e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateWorkflowPage.java

@ -18,7 +18,7 @@ package org.apache.dolphinscheduler.page.project;
import org.apache.dolphinscheduler.common.PageCommon; import org.apache.dolphinscheduler.common.PageCommon;
import org.apache.dolphinscheduler.constant.TestConstant; import org.apache.dolphinscheduler.constant.TestConstant;
import org.apache.dolphinscheduler.data.project.CreatWorkflowData; import org.apache.dolphinscheduler.data.project.CreateWorkflowData;
import org.apache.dolphinscheduler.locator.project.CreateWorkflowLocator; import org.apache.dolphinscheduler.locator.project.CreateWorkflowLocator;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
@ -26,29 +26,33 @@ public class CreateWorkflowPage extends PageCommon {
public CreateWorkflowPage(WebDriver driver) { public CreateWorkflowPage(WebDriver driver) {
super(driver); super(driver);
} }
/** /**
* jump page * jump create workflow page
*/ */
public boolean createWorkflow() throws InterruptedException { public boolean createWorkflow() throws InterruptedException {
System.out.println("Click on the project name to jump to the project homepage");
// click project name // click project name
clickElement(CreateWorkflowLocator.CLICK_PROJECT_NAME); clickElement(CreateWorkflowLocator.CLICK_PROJECT_NAME);
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
System.out.println("Click on workflow define");
// click workflow define // click workflow define
clickElement(CreateWorkflowLocator.CLICK_WORKFLOW_DEFINE); clickElement(CreateWorkflowLocator.CLICK_WORKFLOW_DEFINE);
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
System.out.println("Click create workflow button");
// click create workflow button // click create workflow button
clickElement(CreateWorkflowLocator.CLICK_CREATE_WORKFLOW_BUTTON); clickElement(CreateWorkflowLocator.CLICK_CREATE_WORKFLOW_BUTTON);
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
System.out.println("drag shell task");
//drag shell_task //drag shell_task
dragAndDrop(CreateWorkflowLocator.MOUSE_DOWN_AT_SHELL,CreateWorkflowLocator.MOUSE_MOVE_SHELL_AT_DAG); dragAndDrop(CreateWorkflowLocator.MOUSE_DOWN_AT_SHELL,CreateWorkflowLocator.MOUSE_MOVE_SHELL_AT_DAG);
//input shell task _name //input shell task _name
sendInput(CreateWorkflowLocator.INPUT_SHELL_TASK_NAME , CreatWorkflowData.SHELL_TASK_NAME); sendInput(CreateWorkflowLocator.INPUT_SHELL_TASK_NAME , CreateWorkflowData.SHELL_TASK_NAME);
//click stop run type //click stop run type
clickElement(CreateWorkflowLocator.CLICK_STOP_RUN_TYPE); clickElement(CreateWorkflowLocator.CLICK_STOP_RUN_TYPE);
@ -57,7 +61,7 @@ public class CreateWorkflowPage extends PageCommon {
clickElement(CreateWorkflowLocator.CLICK_NORMAL_RUN_TYPE); clickElement(CreateWorkflowLocator.CLICK_NORMAL_RUN_TYPE);
//input shell task description //input shell task description
sendInput(CreateWorkflowLocator.INPUT_SHELL_TASK_DESCRIPTION , CreatWorkflowData.SHELL_TASK_DESCRIPTION); sendInput(CreateWorkflowLocator.INPUT_SHELL_TASK_DESCRIPTION , CreateWorkflowData.SHELL_TASK_DESCRIPTION);
//select task priority //select task priority
clickElement(CreateWorkflowLocator.CLICK_TASK_PRIORITY); clickElement(CreateWorkflowLocator.CLICK_TASK_PRIORITY);
@ -73,19 +77,15 @@ public class CreateWorkflowPage extends PageCommon {
//select failed retry interval //select failed retry interval
clickElement(CreateWorkflowLocator.SELECT_FAIL_RETRIES_INTERVAL); clickElement(CreateWorkflowLocator.SELECT_FAIL_RETRIES_INTERVAL);
//click timeout alarm //click timeout alarm
clickElement(CreateWorkflowLocator.CLICK_TIMEOUT_ALARM); clickElement(CreateWorkflowLocator.CLICK_TIMEOUT_ALARM);
//select timeout fail //select timeout fail
clickElement(CreateWorkflowLocator.SELECT_TIMEOUT_FAIL); clickElement(CreateWorkflowLocator.SELECT_TIMEOUT_FAIL);
//cancel timeout alarm //cancel timeout alarm
clickElement(CreateWorkflowLocator.CANCEL_TIMEOUT_ALARM); clickElement(CreateWorkflowLocator.CANCEL_TIMEOUT_ALARM);
//select timeout alarm //select timeout alarm
clickElement(CreateWorkflowLocator.SELECT_TIMEOUT_ALARM); clickElement(CreateWorkflowLocator.SELECT_TIMEOUT_ALARM);
@ -94,10 +94,10 @@ public class CreateWorkflowPage extends PageCommon {
clearInput(CreateWorkflowLocator.SELECT_TIMEOUT); clearInput(CreateWorkflowLocator.SELECT_TIMEOUT);
//input timeout //input timeout
sendInput(CreateWorkflowLocator.SELECT_TIMEOUT,CreatWorkflowData.INPUT_TIMEOUT); sendInput(CreateWorkflowLocator.SELECT_TIMEOUT, CreateWorkflowData.INPUT_TIMEOUT);
//click codeMirror and input script //click codeMirror and input script
inputCodeMirror(CreateWorkflowLocator.CLICK_CODE_MIRROR, CreateWorkflowLocator.INPUT_SCRIPT,CreatWorkflowData.SHELL_SCRIPT); inputCodeMirror(CreateWorkflowLocator.CLICK_CODE_MIRROR, CreateWorkflowLocator.INPUT_SCRIPT, CreateWorkflowData.SHELL_SCRIPT);
scrollToElementBottom(); scrollToElementBottom();
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
@ -105,10 +105,10 @@ public class CreateWorkflowPage extends PageCommon {
clickElement(CreateWorkflowLocator.CLICK_CUSTOM_PARAMETERS); clickElement(CreateWorkflowLocator.CLICK_CUSTOM_PARAMETERS);
//input custom parameters //input custom parameters
sendInput(CreateWorkflowLocator.INPUT_CUSTOM_PARAMETERS, CreatWorkflowData.INPUT_CUSTOM_PARAMETERS); sendInput(CreateWorkflowLocator.INPUT_CUSTOM_PARAMETERS, CreateWorkflowData.INPUT_CUSTOM_PARAMETERS);
//input custom parameters value //input custom parameters value
sendInput(CreateWorkflowLocator.INPUT_CUSTOM_PARAMETERS_VALUE, CreatWorkflowData.INPUT_CUSTOM_PARAMETERS_VALUE); sendInput(CreateWorkflowLocator.INPUT_CUSTOM_PARAMETERS_VALUE, CreateWorkflowData.INPUT_CUSTOM_PARAMETERS_VALUE);
//click add custom parameters //click add custom parameters
clickElement(CreateWorkflowLocator.CLICK_ADD_CUSTOM_PARAMETERS); clickElement(CreateWorkflowLocator.CLICK_ADD_CUSTOM_PARAMETERS);
@ -117,10 +117,10 @@ public class CreateWorkflowPage extends PageCommon {
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
//input add custom parameters //input add custom parameters
sendInput(CreateWorkflowLocator.INPUT_ADD_CUSTOM_PARAMETERS,CreatWorkflowData.INPUT_ADD_CUSTOM_PARAMETERS); sendInput(CreateWorkflowLocator.INPUT_ADD_CUSTOM_PARAMETERS, CreateWorkflowData.INPUT_ADD_CUSTOM_PARAMETERS);
//input add custom parameters value //input add custom parameters value
sendInput(CreateWorkflowLocator.INPUT_ADD_CUSTOM_PARAMETERS_VALUE,CreatWorkflowData.INPUT_ADD_CUSTOM_PARAMETERS_VALUE); sendInput(CreateWorkflowLocator.INPUT_ADD_CUSTOM_PARAMETERS_VALUE, CreateWorkflowData.INPUT_ADD_CUSTOM_PARAMETERS_VALUE);
//click delete custom parameters //click delete custom parameters
clickElement(CreateWorkflowLocator.CLICK_DELETE_CUSTOM_PARAMETERS); clickElement(CreateWorkflowLocator.CLICK_DELETE_CUSTOM_PARAMETERS);
@ -129,9 +129,64 @@ public class CreateWorkflowPage extends PageCommon {
//click submit button //click submit button
clickElement(CreateWorkflowLocator.CLICK_SUBMIT_BUTTON); clickElement(CreateWorkflowLocator.CLICK_SUBMIT_BUTTON);
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
System.out.println("Task node set up successfully");
System.out.println("move to Dag Element ");
moveToDragElement(CreateWorkflowLocator.MOUSE_MOVE_SHELL_AT_DAG,-300,-100); moveToDragElement(CreateWorkflowLocator.MOUSE_MOVE_SHELL_AT_DAG,-300,-100);
return ifTitleContains(CreatWorkflowData.WORKFLOW_TITLE); return ifTitleContains(CreateWorkflowData.WORKFLOW_TITLE);
}
/**
* save workflow
*/
public boolean saveWorkflow() throws InterruptedException {
System.out.println("start to save workflow ");
//click save workflow button
clickElement(CreateWorkflowLocator.CLICK_SAVE_WORKFLOW_BUTTON);
//input workflow name
sendInput(CreateWorkflowLocator.INPUT_WORKFLOW_NAME, CreateWorkflowData.INPUT_WORKFLOW_NAME);
//input workflow description
sendInput(CreateWorkflowLocator.INPUT_WORKFLOW_DESCRIPTION, CreateWorkflowData.INPUT_WORKFLOW_DESCRIPTION);
//select tenant
clickElement(CreateWorkflowLocator.CLICK_TENANT);
clickElement(CreateWorkflowLocator.SELECT_TENANT);
//click workflow timeout alarm
clickElement(CreateWorkflowLocator.CLICK_WORKFLOW_TIMEOUT_ALARM);
clearInput(CreateWorkflowLocator.INPUT_WORKFLOW_TIMEOUT);
//input workflow timeout
sendInput(CreateWorkflowLocator.INPUT_WORKFLOW_TIMEOUT, CreateWorkflowData.INPUT_WORKFLOW_TIMEOUT);
//click workflow global parameters
clickElement(CreateWorkflowLocator.CLICK_WORKFLOW_GLOBAL_PARAMETERS);
//input workflow global parameters
sendInput(CreateWorkflowLocator.INPUT_WORKFLOW_GLOBAL_PARAMETERS, CreateWorkflowData.INPUT_WORKFLOW_GLOBAL_PARAMETERS);
//input workflow global parameters value
sendInput(CreateWorkflowLocator.INPUT_WORKFLOW_GLOBAL_PARAMETERS_VALUES, CreateWorkflowData.INPUT_WORKFLOW_GLOBAL_PARAMETERS_VALUES);
//click to add workflow global parameters
clickElement(CreateWorkflowLocator.CLICK_ADD_WORKFLOW_GLOBAL_PARAMETERS);
//input to add workflow global parameters
sendInput(CreateWorkflowLocator.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS, CreateWorkflowData.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS);
//input to add workflow global parameters value
sendInput(CreateWorkflowLocator.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS_VALUES, CreateWorkflowData.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS_VALUES);
//delete workflow global parameters value
clickElement(CreateWorkflowLocator.CLICK_DELETE_WORKFLOW_GLOBAL_PARAMETERS);
Thread.sleep(TestConstant.ONE_THOUSANG);
//click add button
clickElement(CreateWorkflowLocator.CLICK_ADD_BUTTON);
System.out.println("submit workflow");
return ifTitleContains(CreateWorkflowData.WORKFLOW_TITLE);
} }
} }

26
e2e/src/test/java/org/apache/dolphinscheduler/page/security/TenantManagePage.java

@ -34,15 +34,6 @@ public class TenantManagePage extends PageCommon {
super(driver); super(driver);
} }
/**
* jump page
*/
public void jumpPage() {
System.out.println("jump tenant page");
super.jumpPage(TenantManageData.TENANAT_URL);
}
/** /**
* createTenant * createTenant
* *
@ -50,6 +41,7 @@ public class TenantManagePage extends PageCommon {
*/ */
public boolean createTenant() throws InterruptedException { public boolean createTenant() throws InterruptedException {
Thread.sleep(TestConstant.ONE_THOUSANG); Thread.sleep(TestConstant.ONE_THOUSANG);
clickButton(TenantManageLocator.TENANT_MANAGE);
//create tenant //create tenant
clickButton(TenantManageLocator.CREATE_TENANT_BUTTON); clickButton(TenantManageLocator.CREATE_TENANT_BUTTON);
@ -66,4 +58,20 @@ public class TenantManagePage extends PageCommon {
// Whether to enter the specified page after submit // Whether to enter the specified page after submit
return ifTitleContains(TenantManageData.TENANAT_MANAGE); return ifTitleContains(TenantManageData.TENANAT_MANAGE);
} }
public boolean deleteTenant() throws InterruptedException {
Thread.sleep(TestConstant.ONE_THOUSANG);
clickButton(TenantManageLocator.TENANT_MANAGE);
Thread.sleep(TestConstant.ONE_THOUSANG);
// click delete button
clickButton(TenantManageLocator.DELETE_TENANT_BUTTON);
Thread.sleep(TestConstant.ONE_THOUSANG);
//click confirm delete button
clickButton(TenantManageLocator.CONFIRM_DELETE_TENANT_BUTTON);
// Whether to enter the specified page after submit
return ifTitleContains(TenantManageData.TENANAT_MANAGE);
}
} }

25
e2e/src/test/java/org/apache/dolphinscheduler/page/security/UserManagePage.java

@ -26,16 +26,9 @@ public class UserManagePage extends PageCommon {
public UserManagePage(WebDriver driver) { public UserManagePage(WebDriver driver) {
super(driver); super(driver);
} }
/**
* jump page
*/
public void jumpPage() {
System.out.println("jump tenant page");
super.jumpPage(UserManageData.USER_URL);
}
/** /**
* creatTenant * createTenant
* *
* @return Whether to enter the specified page after creat tenant * @return Whether to enter the specified page after creat tenant
*/ */
@ -64,4 +57,20 @@ public class UserManagePage extends PageCommon {
// Whether to enter the specified page after submit // Whether to enter the specified page after submit
return ifTitleContains(UserManageData.USER_MANAGE); return ifTitleContains(UserManageData.USER_MANAGE);
} }
public boolean deleteUser() throws InterruptedException {
Thread.sleep(TestConstant.ONE_THOUSANG);
// click user manage
clickElement(UserManageLocator.CLICK_USER_MANAGE);
Thread.sleep(TestConstant.ONE_THOUSANG);
// click delete user button
clickButton(UserManageLocator.DELETE_USER_BUTTON );
// click confirm delete button
clickButton(UserManageLocator.CONFIRM_DELETE_USER_BUTTON);
// Whether to enter the specified page after submit
return ifTitleContains(UserManageData.USER_MANAGE);
}
} }

35
e2e/src/test/java/org/apache/dolphinscheduler/testcase/LoginTest.java

@ -1,37 +1,26 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.dolphinscheduler.testcase; package org.apache.dolphinscheduler.testcase;
import org.apache.dolphinscheduler.base.BaseTest;
import org.apache.dolphinscheduler.page.LoginPage; import org.apache.dolphinscheduler.page.LoginPage;
import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import static org.apache.dolphinscheduler.base.BaseTest.driver;
public class LoginTest extends BaseTest { @Test(groups={"functionTests","login"})
public class LoginTest {
private LoginPage loginPage; private LoginPage loginPage;
@Test(description = "LoginTest", priority = 1) @Test(description = "LoginTest", priority = 1)
public void testLogin() throws InterruptedException { public void testLogin() throws InterruptedException {
// init login page
loginPage = new LoginPage(driver); loginPage = new LoginPage(driver);
System.out.println("===================================");
System.out.println("jump to Chinese login page");
loginPage.jumpPageChinese();
// enter login page System.out.println("start login");
loginPage.jumpPage(); assert loginPage.login();
System.out.println("end login");
System.out.println("===================================");
//assert login page
assert loginPage.login();
} }
} }

37
e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteTenantTest.java

@ -0,0 +1,37 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.dolphinscheduler.testcase.deleteData;
import org.apache.dolphinscheduler.base.BaseTest;
import org.apache.dolphinscheduler.page.security.TenantManagePage;
import org.testng.annotations.Test;
public class DeleteTenantTest extends BaseTest {
private TenantManagePage tenantManagePage;
@Test(groups={"functionTests"},dependsOnGroups = { "login","createTenant"},description = "DeleteTenantTest")
public void testDeleteTenant() throws InterruptedException {
tenantManagePage = new TenantManagePage(driver);
//assert tenant manage page
System.out.println("start delete tenant");
assert tenantManagePage.deleteTenant();
System.out.println("end delete tenant");
System.out.println("===================================");
}
}

36
e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteUserTest.java

@ -0,0 +1,36 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.dolphinscheduler.testcase.deleteData;
import org.apache.dolphinscheduler.base.BaseTest;
import org.apache.dolphinscheduler.page.security.UserManagePage;
import org.testng.annotations.Test;
public class DeleteUserTest extends BaseTest {
private UserManagePage userManagePage;
@Test(groups={"functionTests"},dependsOnGroups = { "login","user" },description = "DeleteUserTest")
public void testDeleteUser() throws InterruptedException {
userManagePage = new UserManagePage(driver);
//assert user manage page
System.out.println("start delete user");
assert userManagePage.deleteUser();
System.out.println("end delete user");
System.out.println("===================================");
}
}

7
e2e/src/test/java/org/apache/dolphinscheduler/testcase/project/CreateProjectTest.java

@ -23,13 +23,16 @@ import org.testng.annotations.Test;
public class CreateProjectTest extends BaseTest { public class CreateProjectTest extends BaseTest {
private CreateProjectPage createProjectPage; private CreateProjectPage createProjectPage;
@Test(description = "TenantTest", priority = 1) @Test(groups={"functionTests"},dependsOnGroups = { "login" },description = "CreateProjectTest",priority=4)
public void testUserManage() throws InterruptedException { public void testCreateProject() throws InterruptedException {
createProjectPage = new CreateProjectPage(driver); createProjectPage = new CreateProjectPage(driver);
// enter user manage page // enter user manage page
createProjectPage.jumpProjectManagePage(); createProjectPage.jumpProjectManagePage();
//assert user manage page //assert user manage page
System.out.println("start create project");
assert createProjectPage.createProject(); assert createProjectPage.createProject();
System.out.println("end create project");
System.out.println("===================================");
} }
} }

10
e2e/src/test/java/org/apache/dolphinscheduler/testcase/project/CreateWorkflowTest.java

@ -26,12 +26,16 @@ public class CreateWorkflowTest extends BaseTest {
private CreateProjectPage createProjectPage; private CreateProjectPage createProjectPage;
@Test(description = "CreateWorkflowTest", priority = 1) @Test(groups={"functionTests"},dependsOnGroups = { "login" },description = "CreateWorkflowTest",priority=5)
public void CreateWorkflowTest() throws InterruptedException { public void testCreateWorkflow() throws InterruptedException {
createProjectPage = new CreateProjectPage(driver); createProjectPage = new CreateProjectPage(driver);
createProjectPage.jumpProjectManagePage(); createProjectPage.jumpProjectManagePage();
createWorkflowPage = new CreateWorkflowPage(driver); createWorkflowPage = new CreateWorkflowPage(driver);
//assert create workflow System.out.println("start create workflow");
assert createWorkflowPage.createWorkflow(); assert createWorkflowPage.createWorkflow();
assert createWorkflowPage.saveWorkflow();
System.out.println("end create workflow");
System.out.println("===================================");
} }
} }

11
e2e/src/test/java/org/apache/dolphinscheduler/testcase/security/TenantManageTest.java

@ -20,15 +20,20 @@ import org.apache.dolphinscheduler.base.BaseTest;
import org.apache.dolphinscheduler.page.security.TenantManagePage; import org.apache.dolphinscheduler.page.security.TenantManagePage;
import org.testng.annotations.Test; import org.testng.annotations.Test;
public class TenantManageTest extends BaseTest { public class TenantManageTest extends BaseTest {
private TenantManagePage tenantManagePage; private TenantManagePage tenantManagePage;
@Test(description = "TenantTest", priority = 1) @Test(groups={"functionTests","createTenant"},dependsOnGroups = { "login" },description = "TenantManageTest")
public void testTenantManage() throws InterruptedException { public void testTenantManage() throws InterruptedException {
tenantManagePage = new TenantManagePage(driver); tenantManagePage = new TenantManagePage(driver);
// enter tenant manage page
tenantManagePage.jumpPage();
//assert tenant manage page //assert tenant manage page
System.out.println("start create tenant");
assert tenantManagePage.createTenant(); assert tenantManagePage.createTenant();
System.out.println("end create tenant");
System.out.println("===================================");
} }
} }

8
e2e/src/test/java/org/apache/dolphinscheduler/testcase/security/UserManageTest.java

@ -23,12 +23,14 @@ import org.testng.annotations.Test;
public class UserManageTest extends BaseTest { public class UserManageTest extends BaseTest {
private UserManagePage userManagePage; private UserManagePage userManagePage;
@Test(description = "TenantTest", priority = 1) @Test(groups={"functionTests","user"},dependsOnGroups = { "login" },description = "UserManageTest")
public void testUserManage() throws InterruptedException { public void testUserManage() throws InterruptedException {
userManagePage = new UserManagePage(driver); userManagePage = new UserManagePage(driver);
// enter user manage page
userManagePage.jumpPage();
//assert user manage page //assert user manage page
System.out.println("start create user");
assert userManagePage.createUser(); assert userManagePage.createUser();
System.out.println("end create user");
System.out.println("===================================");
} }
} }

18
e2e/suite.xml

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="e2e Test Suite" parallel="tests" thread-count="2">
<!-- create tenant -->
<test name="create-tenant" preserve-order="true">
<classes>
<class name="org.apache.dolphinscheduler.testcase.security.TenantManageTest">
</class>
</classes>
</test>
<!-- create user -->
<test name="create-user" preserve-order="true">
<classes>
<class name="org.apache.dolphinscheduler.testcase.security.UserManageTest">
</class>
</classes>
</test>
</suite>

28
e2e/testng.xml

@ -1,19 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="dolphinscheduler_e2e" parallel="false"> <suite name="dolphinscheduler_e2e" parallel="true">
<test name="dolphinscheduler_test"> <test name="dolphinscheduler_test" preserve-order="true">
<!--<packages>--> <groups>
<!--&lt;!&ndash;<package name="org.apache.dolphinscheduler.testcase.security.TenantManageTest"/>&ndash;&gt;--> <run>
<!--<package name="org.apache.dolphinscheduler.testcase.security.*"/>--> <include name="functionTests" />
<!--</packages>--> </run>
</groups>
<classes> <classes>
<class name="org.apache.dolphinscheduler.testcase.security.TenantManageTest"></class> <class name="org.apache.dolphinscheduler.testcase.LoginTest"></class>
<class name="org.apache.dolphinscheduler.testcase.security.TenantManageTest"></class>
<class name="org.apache.dolphinscheduler.testcase.security.UserManageTest"></class>
<!--<class name="org.apache.dolphinscheduler.testcase.project.CreateProjectTest"></class>-->
<!--&lt;!&ndash;<class name="org.apache.dolphinscheduler.testcase.project.CreateWorkflowTest"></class>&ndash;&gt;-->
<class name="org.apache.dolphinscheduler.testcase.deleteData.DeleteTenantTest"></class>
<class name="org.apache.dolphinscheduler.testcase.deleteData.DeleteUserTest"></class>
</classes> </classes>
</test> </test>
<!--<suite-files>-->
<!--<suite-file path="suite.xml"/>-->
<!--</suite-files>-->
<listeners> <listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" /> <listener class-name="org.uncommons.reportng.HTMLReporter" />

Loading…
Cancel
Save