You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ki...@apache.org on 2021/10/22 05:56:07 UTC

[dolphinscheduler] branch dev updated: Remove legacy E2E codes (#6585)

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

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


The following commit(s) were added to refs/heads/dev by this push:
     new e156680  Remove legacy E2E codes (#6585)
e156680 is described below

commit e15668097a2f73fd137b8adbe79f4150886c59f9
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Fri Oct 22 13:55:59 2021 +0800

    Remove legacy E2E codes (#6585)
---
 e2e/pom.xml                                        | 163 --------
 .../dolphinscheduler/constant/TestConstant.java    |  35 --
 .../dolphinscheduler/util/PropertiesReader.java    |  49 ---
 .../apache/dolphinscheduler/util/RedisUtil.java    | 204 ----------
 .../apache/dolphinscheduler/util/YmlReader.java    |  45 --
 .../apache/dolphinscheduler/base/BaseDriver.java   | 147 -------
 .../org/apache/dolphinscheduler/base/BaseTest.java | 106 -----
 .../dolphinscheduler/common/BrowserCommon.java     | 451 ---------------------
 .../apache/dolphinscheduler/common/PageCommon.java |  50 ---
 .../apache/dolphinscheduler/data/LoginData.java    |  40 --
 .../data/project/CreateProjectData.java            |  26 --
 .../data/project/CreateWorkflowData.java           |  77 ----
 .../data/project/ProcessInstanceData.java          |  27 --
 .../dolphinscheduler/data/project/ProjectData.java |  27 --
 .../data/project/RunWorkflowData.java              |  27 --
 .../dolphinscheduler/data/project/TimingData.java  |  27 --
 .../data/project/WorkflowDefineData.java           |  27 --
 .../data/security/AlertManageData.java             |  28 --
 .../data/security/QueueManageData.java             |  27 --
 .../data/security/TenantManageData.java            |  31 --
 .../data/security/TokenManageData.java             |  27 --
 .../data/security/UserManageData.java              |  27 --
 .../dolphinscheduler/locator/LoginLocator.java     |  33 --
 .../locator/project/CreateProjectLocator.java      |  47 ---
 .../locator/project/CreateWorkflowLocator.java     | 183 ---------
 .../locator/project/ProcessInstanceLocator.java    |  34 --
 .../locator/project/ProjectLocator.java            |  45 --
 .../locator/project/RunWorkflowLocator.java        |  48 ---
 .../locator/project/TimingLocator.java             |  67 ---
 .../locator/project/WorkflowDefineLocator.java     | 207 ----------
 .../locator/security/AlertManageLocator.java       |  36 --
 .../locator/security/QueueManageLocator.java       |  33 --
 .../locator/security/TenantManageLocator.java      |  41 --
 .../locator/security/TokenManageLocator.java       |  45 --
 .../locator/security/UserManageLocator.java        |  68 ----
 .../apache/dolphinscheduler/page/LoginPage.java    |  70 ----
 .../page/project/CreateProjectPage.java            |  74 ----
 .../page/project/CreateWorkflowPage.java           | 201 ---------
 .../page/project/ProcessInstancePage.java          |  44 --
 .../dolphinscheduler/page/project/ProjectPage.java |  74 ----
 .../page/project/RunWorkflowPage.java              |  58 ---
 .../dolphinscheduler/page/project/TimingPage.java  | 144 -------
 .../page/project/WorkflowDefinePage.java           | 243 -----------
 .../page/security/AlertManagePage.java             |  84 ----
 .../page/security/QueueManagePage.java             |  90 ----
 .../page/security/TenantManagePage.java            |  80 ----
 .../page/security/TokenManagePage.java             |  99 -----
 .../page/security/UserManagePage.java              | 150 -------
 .../dolphinscheduler/testcase/TestLogin.java       |  41 --
 .../testcase/deleteData/DeleteProjectTest.java     |  39 --
 .../testcase/deleteData/DeleteTenantTest.java      |  38 --
 .../testcase/deleteData/DeleteUserTest.java        |  42 --
 .../testcase/deleteData/DeleteWorkflowTest.java    |  43 --
 .../testcase/testDeleteData/TestDeleteAlert.java   |  42 --
 .../testcase/testDeleteData/TestDeleteProject.java |  39 --
 .../testcase/testDeleteData/TestDeleteTenant.java  |  38 --
 .../testcase/testDeleteData/TestDeleteToken.java   |  42 --
 .../testcase/testDeleteData/TestDeleteUser.java    |  42 --
 .../testDeleteData/TestDeleteWorkflow.java         |  48 ---
 .../testcase/testProject/TestProcessInstance.java  |  35 --
 .../testcase/testProject/TestProject.java          |  40 --
 .../testcase/testProject/TestRunWorkflow.java      |  41 --
 .../testcase/testProject/TestTiming.java           |  75 ----
 .../testcase/testProject/TestWorkflowDefine.java   |  57 ---
 .../testcase/testSecurity/TestAlertManage.java     |  36 --
 .../testcase/testSecurity/TestQueueManage.java     |  42 --
 .../testcase/testSecurity/TestTenantManage.java    |  36 --
 .../testcase/testSecurity/TestTokenManage.java     |  43 --
 .../testcase/testSecurity/TestUserManage.java      |  48 ---
 e2e/src/test/resources/config/config.properties    |  58 ---
 e2e/src/test/resources/testData/security_zh_cn.yml |  54 ---
 e2e/src/test/resources/testData/workflow_zh_cn.yml |  63 ---
 e2e/testng.xml                                     |  90 ----
 73 files changed, 5138 deletions(-)

diff --git a/e2e/pom.xml b/e2e/pom.xml
deleted file mode 100644
index fffbf89..0000000
--- a/e2e/pom.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ 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.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.dolphinscheduler-e2e</groupId>
-    <artifactId>dolphinscheduler-e2e</artifactId>
-    <version>1.0.0</version>
-
-    <properties>
-        <testng.version>6.14.3</testng.version>
-        <selenium.version>3.141.59</selenium.version>
-        <guava.version>22.0</guava.version>
-        <commons-io.version>2.6</commons-io.version>
-        <reportng.version>1.1.4</reportng.version>
-        <commons-pool2.version>2.8.0</commons-pool2.version>
-        <inject.version>4.2.1</inject.version>
-        <xml.file>testng.xml</xml.file>
-    </properties>
-
-    <dependencies>
-        <!-- selenium -->
-        <dependency>
-            <groupId>org.seleniumhq.selenium</groupId>
-            <artifactId>selenium-java</artifactId>
-            <version>${selenium.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>${guava.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.inject</groupId>
-            <artifactId>guice</artifactId>
-            <version>${inject.version}</version>
-        </dependency>
-        <!-- testng -->
-        <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <version>${testng.version}</version>
-        </dependency>
-        <!-- Depends on reportNg, associated with testNg-->
-        <dependency>
-            <groupId>org.uncommons</groupId>
-            <artifactId>reportng</artifactId>
-            <version>${reportng.version}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.testng</groupId>
-                    <artifactId>testng</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons-io.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.jedis</artifactId>
-            <version>2.6.2_1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-pool2</artifactId>
-            <version>${commons-pool2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jyaml</groupId>
-            <artifactId>jyaml</artifactId>
-            <version>1.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-core</artifactId>
-            <version>5.1.5.RELEASE</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.0</version>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                    <encoding>UTF-8</encoding>
-                </configuration>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <version>2.20.1</version>
-                <configuration>
-                    <suiteXmlFiles>
-                        <suiteXmlFile>${xml.file}</suiteXmlFile>
-                    </suiteXmlFiles>
-                    <argLine>-Dfile.encoding=UTF-8</argLine>
-                    <properties>
-                        <property>
-                            <name>usedefaultlisteners</name>
-                            <!--Set listen false, Do not use the default report testng, use reportng-->
-                            <value>false</value>
-                        </property>
-                        <property>
-                            <name>listener</name>
-                            <value>org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter</value>
-                        </property>
-                    </properties>
-                    <!--<workingDirectory>target/</workingDirectory>-->
-                    <!--<forkMode>always</forkMode>-->
-                </configuration>
-            </plugin>
-
-
-            <!--<plugin>-->
-                <!--<groupId>org.apache.maven.plugins</groupId>-->
-                <!--<artifactId>maven-surefire-plugin</artifactId>-->
-                <!--<version>2.5</version>-->
-                <!--<configuration>-->
-                    <!--<properties>-->
-                        <!--<property>-->
-                            <!--<name>usedefaultlisteners</name>-->
-                            <!--&lt;!&ndash;Set listen false, Do not use the default report testng, use reportng&ndash;&gt;-->
-                            <!--<value>false</value>-->
-                        <!--</property>-->
-                        <!--<property>-->
-                            <!--<name>listener</name>-->
-                            <!--<value>org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter</value>-->
-                        <!--</property>-->
-                    <!--</properties>-->
-                    <!--<workingDirectory>target/</workingDirectory>-->
-                    <!--<forkMode>always</forkMode>-->
-                <!--</configuration>-->
-            <!--</plugin>-->
-        </plugins>
-    </build>
-</project>
diff --git a/e2e/src/main/java/org/apache/dolphinscheduler/constant/TestConstant.java b/e2e/src/main/java/org/apache/dolphinscheduler/constant/TestConstant.java
deleted file mode 100644
index 2cc78d5..0000000
--- a/e2e/src/main/java/org/apache/dolphinscheduler/constant/TestConstant.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.constant;
-
-public class TestConstant {
-    /**
-     * 1000
-     */
-    public static final int ONE_THOUSAND = 1000;
-
-    /**
-     * 3000
-     */
-    public static final int THREE_THOUSAND = 3000;
-
-    /**
-     * 10000
-     */
-    public static final int TEN_THOUSAND = 10000;
-
-}
diff --git a/e2e/src/main/java/org/apache/dolphinscheduler/util/PropertiesReader.java b/e2e/src/main/java/org/apache/dolphinscheduler/util/PropertiesReader.java
deleted file mode 100644
index cbf7d07..0000000
--- a/e2e/src/main/java/org/apache/dolphinscheduler/util/PropertiesReader.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.util;
-
-import java.io.*;
-import java.util.Properties;
-
-/**
- * read properties
- */
-public class PropertiesReader {
-    private static Properties properties = new Properties();
-
-    /**
-     * @param propertiesPath properties path
-     * @return Properties
-     * @throws IOException IOException
-     */
-    public static Properties readProperties(String propertiesPath) throws IOException {
-        System.out.println("read properties ");
-        InputStream inputStream = new FileInputStream(propertiesPath);
-        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
-        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
-        properties.load(bufferedReader);
-        return properties;
-    }
-
-    /***
-     * @param key key
-     * @return value
-     */
-    public static String getKey(String key) {
-        return properties.getProperty(key);
-    }
-}
diff --git a/e2e/src/main/java/org/apache/dolphinscheduler/util/RedisUtil.java b/e2e/src/main/java/org/apache/dolphinscheduler/util/RedisUtil.java
deleted file mode 100644
index 14261a5..0000000
--- a/e2e/src/main/java/org/apache/dolphinscheduler/util/RedisUtil.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * 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.util;
-
-import org.apache.dolphinscheduler.constant.TestConstant;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-import redis.clients.jedis.JedisPoolConfig;
-
-/**
- * redis util
- */
-public class RedisUtil {
-    /**
-     * redis  ip
-     */
-    private static String redisIp;
-
-    /**
-     * redis port
-     */
-    private static int redisPort;
-
-    /**
-     * redis password
-     */
-    private static String redisPwd;
-
-    /**
-     * redis pool config
-     */
-    private static JedisPoolConfig jedisPoolConfig;
-
-    /**
-     * redis pool
-     */
-    private static JedisPool jedisPool;
-
-    /**
-     * jedis connection
-     */
-    private Jedis jedis;
-
-    /**
-     * jedis expire time
-     */
-    private int jedisExpireTime;
-
-    /**
-     * jedis max total
-     */
-    private static int jedisPoolMaxTotal;
-
-    /**
-     * jedis max idle
-     */
-    private static int jedisPoolMaxIdle;
-
-    /**
-     * jedis max wait time
-     */
-    private static int jedisPoolMaxWaitMillis;
-
-    /**
-     * Whether to perform a valid check when calling the borrowObject method
-     */
-    private static boolean jedisPoolTestOnBorrow;
-
-    /**
-     * Whether to perform a valid check when calling the returnObject method
-     */
-    private static boolean jedisPoolTestOnReturn;
-
-    /**
-     * storage local thread
-     */
-    public static ThreadLocal<Jedis> threadLocal = new ThreadLocal<>();
-
-    /*
-     * redis init
-     */
-    static {
-        // redis properties
-        redisIp = PropertiesReader.getKey("redis.ip");
-        redisPort = Integer.valueOf(PropertiesReader.getKey("redis.port"));
-        redisPwd = PropertiesReader.getKey("redis.pwd");
-        //redis pool  properties
-        jedisPoolMaxTotal = Integer.valueOf(PropertiesReader.getKey("jedis.pool.maxTotal"));
-        jedisPoolMaxIdle = Integer.valueOf(PropertiesReader.getKey("jedis.pool.maxIdle"));
-        jedisPoolMaxWaitMillis = Integer.valueOf(PropertiesReader.getKey("jedis.pool.maxWaitMillis"));
-        jedisPoolTestOnBorrow = Boolean.valueOf(PropertiesReader.getKey("jedis.pool.testOnBorrow"));
-        jedisPoolTestOnReturn = Boolean.valueOf(PropertiesReader.getKey("jedis.pool.testOnReturn"));
-        // redis pool start properties
-        jedisPoolConfig = new JedisPoolConfig();
-        jedisPoolConfig.setMaxTotal(jedisPoolMaxTotal);
-        jedisPoolConfig.setMaxIdle(jedisPoolMaxIdle);
-        jedisPoolConfig.setMaxWaitMillis(jedisPoolMaxWaitMillis);
-        jedisPoolConfig.setTestOnBorrow(jedisPoolTestOnBorrow);
-        jedisPoolConfig.setTestOnReturn(jedisPoolTestOnReturn);
-        // connect redis
-        try {
-            System.out.println("redis init");
-            if (redisPwd.isEmpty())
-                jedisPool = new JedisPool(jedisPoolConfig, redisIp, redisPort, TestConstant.THREE_THOUSAND);
-            else {
-                jedisPool = new JedisPool(jedisPoolConfig, redisIp, redisPort, TestConstant.TEN_THOUSAND, redisPwd);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            System.out.println("redis connect fail");
-        }
-    }
-
-    /**
-     * get redis pool
-     *
-     * @return redis pool
-     */
-    public static JedisPool getJedisPool() {
-        return jedisPool;
-    }
-
-    /**
-     * get jedis connection
-     *
-     * @return jedis connection
-     */
-    public Jedis getNewJedis() {
-        Jedis newJedis = null;
-        try {
-            newJedis = jedisPool.getResource();
-        } catch (Exception e) {
-            e.printStackTrace();
-            System.out.println("redis connection fail");
-        }
-        System.out.println("redis connection success");
-        return newJedis;
-    }
-
-    /**
-     * get jedis connection
-     *
-     * @return jedis connection
-     */
-    public Jedis getJedis() {
-        return jedis;
-    }
-
-    public void setJedisAndExpire(Jedis jedis) {
-        this.jedis = jedis;
-        threadLocal.set(jedis);
-        // jedis expire time(s)
-        jedisExpireTime = Integer.valueOf(PropertiesReader.getKey("jedis.expireTime"));
-        System.out.println("redisUtil sets up a redis connection");
-    }
-
-    /**
-     * set key
-     *
-     * @param key key
-     * @param value value
-     *
-     */
-
-    public void setKey(String key, String value) {
-        jedis.set(key, value);
-        // set expire time 1h
-        jedis.expire(key, jedisExpireTime);
-    }
-
-    /**
-     * get key
-     *
-     * @param key key
-     * @return value
-     */
-    public String getKey(String key) {
-        return jedis.get(key);
-    }
-
-    /**
-     * Return jedis connection
-     */
-    public void returnJedis() {
-        if (jedis != null) {
-            jedis.close();
-        }
-        System.out.println("jedis has been returned");
-    }
-}
diff --git a/e2e/src/main/java/org/apache/dolphinscheduler/util/YmlReader.java b/e2e/src/main/java/org/apache/dolphinscheduler/util/YmlReader.java
deleted file mode 100644
index e2784eb..0000000
--- a/e2e/src/main/java/org/apache/dolphinscheduler/util/YmlReader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-
-import org.ho.yaml.Yaml;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-
-/**
- * read yml file
- */
-public class YmlReader {
-    public static HashMap<String,HashMap<String, String>> map;
-    public String getDataYml(String filePath, String key1, String key2) {
-        Yaml yaml = new Yaml();
-        Resource resource = new DefaultResourceLoader().getResource("classpath:" + filePath + ".yml");
-        try {
-            InputStream inputStream = resource.getInputStream();
-            map = yaml.loadType(inputStream, HashMap.class);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        String data = map.get(key1).get(key2);
-        return data;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseDriver.java b/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseDriver.java
deleted file mode 100644
index 73a8da2..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseDriver.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * 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.base;
-
-
-import org.apache.dolphinscheduler.constant.TestConstant;
-import org.apache.dolphinscheduler.util.PropertiesReader;
-import org.openqa.selenium.PageLoadStrategy;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.chrome.ChromeDriver;
-import org.openqa.selenium.chrome.ChromeOptions;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-
-/**
- * base driver class
- */
-public class BaseDriver {
-    /**
-     * driver
-     */
-    private static WebDriver driver;
-
-    /**
-     * chrome driver path
-     */
-    private String chromeDriverPath;
-
-
-    /**
-     * implicitly wait time(s)
-     */
-    private long implicitlyWait;
-
-    /**
-     * page load timeout(s)
-     */
-    private long pageLoadTimeout;
-
-    /**
-     * script Timeout(s)
-     */
-    private long setScriptTimeout;
-
-
-    /**
-     * Local thread storage is used to store the driver
-     */
-    public static ThreadLocal<WebDriver> threadLocal = new ThreadLocal<>();
-
-    /**
-     *Initialization parameters
-     */
-    public BaseDriver() throws IOException {
-        /* driver test class path */
-        chromeDriverPath = PropertiesReader.getKey("driver.chromeDriver");
-
-        /* wait time */
-        implicitlyWait = Long.valueOf(PropertiesReader.getKey("driver.timeouts.implicitlyWait"));
-        pageLoadTimeout = Long.valueOf(PropertiesReader.getKey("driver.timeouts.pageLoadTimeout"));
-        setScriptTimeout = Long.valueOf(PropertiesReader.getKey("driver.timeouts.setScriptTimeout"));
-    }
-
-
-    /**
-     * start chrome browser
-     */
-    public void startBrowser() throws Exception {
-        System.out.println("===================test start===================");
-        // set chrome driver
-        System.setProperty("webdriver.chrome.driver", chromeDriverPath);
-        ChromeOptions chromeOptions = new ChromeOptions();
-        chromeOptions.setPageLoadStrategy(PageLoadStrategy.NONE);
-        chromeOptions.addArguments("--no-sandbox");
-        chromeOptions.addArguments("--disable-dev-shm-usage");
-        //Browser client running requires annotation --headless
-        chromeOptions.addArguments("--headless");
-        chromeOptions.addArguments("--disable-gpu");
-        chromeOptions.addArguments("--whitelisted-ips");
-        chromeOptions.addArguments("--disable-infobars");
-        chromeOptions.addArguments("--disable-browser-side-navigation");
-        driver = new ChromeDriver(chromeOptions);
-
-        /* driver setting wait time */
-        // implicitly wait time
-        driver.manage().timeouts().implicitlyWait(implicitlyWait, TimeUnit.SECONDS);
-
-        // page load timeout
-        driver.manage().timeouts().pageLoadTimeout(pageLoadTimeout, TimeUnit.SECONDS);
-
-        // script timeout
-        driver.manage().timeouts().setScriptTimeout(setScriptTimeout, TimeUnit.SECONDS);
-
-        // window maximize
-        driver.manage().window().maximize();
-
-        // set threadLocal
-        threadLocal.set(driver);
-    }
-
-    /**
-     * get webDriver
-     *
-     * @return driver
-     */
-    public static WebDriver getDriver() {
-        return driver;
-    }
-
-    /**
-     * set webDriver
-     *
-     * @param driver driver
-     */
-    public void setDriver(WebDriver driver) {
-        this.driver = driver;
-        // Thread local storage
-        threadLocal.set(driver);
-    }
-
-    /**
-     * close browser
-     */
-    public void closeBrowser() throws InterruptedException {
-        Thread.sleep(TestConstant.THREE_THOUSAND);
-        if (driver != null) {
-            driver.quit();
-            System.out.println("===================test end===================");
-        }
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseTest.java b/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseTest.java
deleted file mode 100644
index 88012e9..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * 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.base;
-
-
-import org.apache.dolphinscheduler.util.PropertiesReader;
-import org.openqa.selenium.WebDriver;
-import org.testng.annotations.*;
-
-import java.io.IOException;
-import java.util.Properties;
-
-/**
- *  base test class
- */
-@Test(groups={"functionTests"})
-public class BaseTest {
-    /**
-     * properties
-     */
-    private static Properties properties;
-
-
-    /**
-     * baseDriver
-     */
-    private BaseDriver baseDriver;
-
-    /**
-     * driver
-     */
-    public static WebDriver driver;
-
-    /**
-     * Executed before executing a test suite 
-     * Read the test configuration file
-     *
-     * @param propertiesPath properties path
-     * @throws IOException IOException
-     */
-    @BeforeSuite(alwaysRun = true)
-    @Parameters({"propertiesPath"})
-    public void beforeSuite(@Optional("src/test/resources/config/config.properties") String propertiesPath) throws Exception {
-        // read properties
-        properties = PropertiesReader.readProperties(propertiesPath);
-    }
-
-    /**
-     * Executed before executing a testcase
-     */
-    @BeforeTest(alwaysRun = true)
-    public void beforeTest() throws Exception {
-        //base driver
-        baseDriver = new BaseDriver();
-        baseDriver.startBrowser();
-        driver = baseDriver.getDriver();
-    }
-
-
-
-    /**
-     * Executed before executing a class method in a test case
-     */
-    @BeforeClass(alwaysRun = true)
-    public void setUp() throws Exception {
-    }
-
-
-    /**
-     * Execute after executing a class method in a test case
-     */
-    @AfterClass(alwaysRun = true)
-    public void afterClass() throws InterruptedException {
-        // logout
-    }
-
-    /**
-     * Execute after executing a testcase
-    */
-    @AfterTest(alwaysRun = true)
-    public void afterTest() throws InterruptedException {
-        // close browser
-        baseDriver.closeBrowser();
-    }
-
-    /**
-     * Execute after executing a testsuite
-     */
-    @AfterSuite(alwaysRun = true)
-    public void afterSuite() throws InterruptedException {
-    }
-}
\ No newline at end of file
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/common/BrowserCommon.java b/e2e/src/test/java/org/apache/dolphinscheduler/common/BrowserCommon.java
deleted file mode 100644
index 6fafefc..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/common/BrowserCommon.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * 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.common;
-
-import org.apache.dolphinscheduler.util.PropertiesReader;
-import org.apache.dolphinscheduler.util.RedisUtil;
-import org.openqa.selenium.*;
-import org.openqa.selenium.interactions.Actions;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.WebDriverWait;
-import redis.clients.jedis.Jedis;
-import org.openqa.selenium.JavascriptExecutor;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Encapsulate the most basic operations on the interface in the browser
- */
-public class BrowserCommon {
-    /**
-     * driver
-     */
-    protected WebDriver driver;
-
-    /**
-     * actions
-     */
-    protected Actions actions;
-
-    /**
-     * JavaScript
-     */
-    protected JavascriptExecutor je;
-
-    /**
-     * Show wait
-     */
-    protected WebDriverWait wait;
-
-    /**
-     * Jedis
-     */
-    protected Jedis jedis;
-
-    /**
-     * redis util
-     */
-    protected RedisUtil redisUtil;
-
-    /**
-     * @param driver driver
-     */
-    public BrowserCommon(WebDriver driver) {
-        this.driver = driver;
-        this.actions = new Actions(driver);
-        this.je = ((JavascriptExecutor) driver);
-        // show wait timeout
-        long timeout = Long.valueOf(PropertiesReader.getKey("driver.timeouts.webDriverWait"));
-        wait = new WebDriverWait(driver, timeout);
-    }
-
-    /**
-     * @param driver driver
-     * @param jedis jedis
-     */
-    public BrowserCommon(WebDriver driver, Jedis jedis) {
-        this.driver = driver;
-        this.actions = new Actions(driver);
-        this.je = ((JavascriptExecutor) driver);
-        // show wait timeout
-        long timeout = Long.valueOf(PropertiesReader.getKey("driver.timeouts.webDriverWait"));
-        wait = new WebDriverWait(driver, timeout);
-        this.jedis = jedis;
-    }
-
-    /**
-     * @param driver driver
-     * @param redisUtil redisUtil
-     */
-    public BrowserCommon(WebDriver driver, RedisUtil redisUtil) {
-        this.driver = driver;
-        this.actions = new Actions(driver);
-        this.je = ((JavascriptExecutor) driver);
-        // show wait timeout
-        long timeout = Long.valueOf(PropertiesReader.getKey("driver.timeouts.webDriverWait"));
-        wait = new WebDriverWait(driver, timeout);
-    }
-
-
-    /**
-     * Get WebElement element object through element positioning
-     *
-     * @param locator By
-     * @return WebElement
-     */
-
-    public WebElement locateElement(By locator) {
-        return wait.until(ExpectedConditions.presenceOfElementLocated(locator));
-    }
-
-    /**
-     * Click button element
-     *
-     * @param locator By
-     * @return clickButton
-     */
-    public WebElement clickButton(By locator) {
-        WebElement buttonElement = locateElement(locator);
-        wait.until(ExpectedConditions.elementToBeClickable(locator));
-        ExpectedConditions.elementToBeClickable(locator);
-        buttonElement.click();
-        return buttonElement;
-    }
-
-    /**
-     * Click Navigation Bar element
-     *
-     * @param locator By
-     * @return clickButton
-     */
-    public void clickTopElement(By locator) {
-        WebElement element = driver.findElement(locator);
-        JavascriptExecutor executor = (JavascriptExecutor) driver;
-        executor.executeScript("arguments[0].click();", element);
-    }
-
-
-    /**
-     * Click element
-     *
-     * @param locator By
-     * @return inputElement
-     */
-    public WebElement clickElement(By locator) {
-        WebElement clickElement = locateElement(locator);
-        clickElement.click();
-        return clickElement;
-    }
-
-
-    /**
-     * input element
-     *
-     * @param locator By
-     * @param content Input content
-     * @return inputElement
-     */
-    public WebElement sendInput(By locator, String content) {
-        WebElement inputElement = locateElement(locator);
-        inputElement.clear();
-        inputElement.sendKeys(content);
-        return inputElement;
-    }
-
-
-    /**
-     * input element after clearing
-     *
-     * @param locator By
-     * @param content Input content
-     * @return inputElement
-     */
-    public WebElement clearSendInput(By locator, String content) {
-        WebElement inputElement = locateElement(locator);
-        //input date
-        inputElement.clear();
-        inputElement.sendKeys(Keys.HOME,Keys.chord(Keys.SHIFT,Keys.END));
-        inputElement.sendKeys(content);
-        return inputElement;
-    }
-
-    /**
-     * clear element
-     *
-     * @param locator By
-     */
-    public WebElement clearInput(By locator) {
-        WebElement clearElement = locateElement(locator);
-        clearElement.click();
-        clearElement.sendKeys(Keys.chord(Keys.CONTROL, "a"));
-        clearElement.sendKeys(Keys.BACK_SPACE);
-        return clearElement;
-    }
-
-    /**
-     * input codeMirror
-     *
-     * @param codeMirrorLocator By codeMirror
-     * @param codeMirrorLineLocator By codeMirrorLine
-     */
-    public void inputCodeMirror(By codeMirrorLocator, By codeMirrorLineLocator, String content) {
-        WebElement codeMirrorElement = locateElement(codeMirrorLocator);
-        WebElement codeMirrorLineElement = locateElement(codeMirrorLineLocator);
-        codeMirrorElement.click();
-        codeMirrorLineElement.sendKeys(content);
-    }
-
-    /**
-     * move to element
-     *
-     * @param locator BY
-     * @return actions
-     */
-    public Actions moveToElement(By locator) {
-        return actions.moveToElement(locateElement(locator));
-    }
-
-    /**
-     * mouse drag  element
-     *
-     * @param sourceLocator BY
-     * @param targetLocator BY
-     */
-    public void dragAndDrop(By sourceLocator, By targetLocator) {
-        WebElement sourceElement = locateElement(sourceLocator);
-        WebElement targetElement = locateElement(targetLocator);
-        actions.dragAndDrop(sourceElement, targetElement).perform();
-        actions.release();
-    }
-
-    public void moveToDragElement(By targetLocator, int x, int y) {
-        WebElement targetElement = locateElement(targetLocator);
-        actions.dragAndDropBy(targetElement, x, y).perform();
-        actions.release();
-    }
-
-    /**
-     * Right mouse click on the element
-     *
-     * @param locator By
-     * @return actions
-     */
-    public void mouseRightClickElement(By locator) {
-        WebElement mouseRightClickElement = locateElement(locator);
-        actions.contextClick(mouseRightClickElement).perform();
-    }
-
-    /**
-     * The mouse moves from a position to a specified positionØ
-     *
-     * @param sourceLocator BY
-     * @param targetLocator BY
-     * @return actions
-     */
-    public void mouseMovePosition(By sourceLocator, By targetLocator) throws InterruptedException {
-        WebElement sourceElement = locateElement(sourceLocator);
-        WebElement targetElement = locateElement(targetLocator);
-        actions.dragAndDrop(sourceElement,targetElement).perform();
-        actions.click();
-    }
-
-    /**
-     * jump page
-     *
-     * @param url url
-     */
-    public void jumpPage(String url) {
-        driver.get(url);
-    }
-
-
-    /**
-     * Find the next handle, recommended for two windows
-     *
-     * @return driver
-     */
-    public WebDriver switchNextHandle() {
-        // Current window handle
-        String currentHandle = driver.getWindowHandle();
-        // All window handle
-        Set<String> allHandles = driver.getWindowHandles();
-        // Finding the next handle
-        for (String handle : allHandles) {
-            if (!handle.equals(currentHandle)) {
-                return driver.switchTo().window(handle);
-            }
-        }
-        return driver;
-    }
-
-    /**
-     * select time
-     *
-     * @return WebElement
-     */
-    public WebElement selectDate(String js, By locator_time, String date) {
-        JavascriptExecutor removeAttribute = (JavascriptExecutor) driver;
-        removeAttribute.executeScript("var setDate=" + js + ";setDate.removeAttribute('readonly');");
-        WebElement dateElement = locateElement(locator_time);
-
-        //input date
-        dateElement.clear();
-        dateElement.sendKeys(Keys.HOME,Keys.chord(Keys.SHIFT,Keys.END));
-        dateElement.sendKeys(date);
-        return dateElement;
-    }
-
-        /**
-         * Multi-window switch handle, according to the handle number passed in
-         *
-         * @param num Number starts from 1
-         * @return driver
-         */
-    public WebDriver switchHandle(int num) {
-        // current handle
-        String currentHandle = driver.getWindowHandle();
-        // all handle
-        Set<String> allHandlesSet = driver.getWindowHandles();
-        List<String> allHandlesList = new ArrayList<>(allHandlesSet);
-        // switch handle
-        return driver.switchTo().window(allHandlesList.get(num - 1));
-    }
-
-    /**
-     * Switch frame structure
-     *
-     * @param locator frame
-     * @return driver
-     */
-    public WebDriver switchFrame(By locator) {
-        return driver.switchTo().frame(locateElement(locator));
-    }
-
-    /**
-     * Switch parent frame structure
-     *
-     * @return driver
-     */
-    public WebDriver switchParentFrame() {
-        return driver.switchTo().parentFrame();
-    }
-
-    /**
-     * Switch out of frame structure
-     *
-     * @return driver
-     */
-    public WebDriver switchOutOfFrame() {
-        return driver.switchTo().defaultContent();
-    }
-
-
-    /**
-     * execute JS Script
-     *
-     * @param script JS script
-     */
-    public void executeScript(String script) {
-        je.executeScript(script);
-    }
-
-    /**
-     * execute JS Script
-     *
-     * @param script JS script
-     * @param args   Object element array
-     */
-    public void executeScript(String script, Object... args) {
-        je.executeScript(script, args);
-    }
-
-    /**
-     * Page slide to top
-     */
-    public void scrollToTop() {
-        executeScript("window.scrollTo(0, 0)");
-    }
-
-    /**
-     * Page slides to the bottom
-     */
-    public void scrollToBottom() {
-        executeScript("window.scrollTo(0, document.body.scrollHeight)");
-    }
-
-    public void scrollToElementBottom(By locator) {
-        WebElement webElement = locateElement(locator);
-        ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", webElement);
-    }
-
-
-    /**
-     * Page swipe makes the top of the element align with the top of the page
-     *
-     * @param by Elements that need to be aligned with the top of the page
-     */
-    public void scrollElementTopToTop(By by) {
-        executeScript("arguments[0].scrollIntoView(true);", driver.findElement(by));
-    }
-
-    /**
-     * Page sliding makes the bottom of the element aligned with the bottom of the page
-     *
-     * @param by Elements that need to be aligned with the bottom of the page
-     */
-    public void scrollElementBottomToBottom(By by) {
-        executeScript("arguments[0].scrollIntoView(false);", driver.findElement(by));
-    }
-
-
-    /**
-     * Determine if the current page title is the specified title
-     *
-     * @param title  title
-     * @return boolean
-     */
-
-    public boolean ifTitleIs(String title) {
-        return wait.until(ExpectedConditions.titleIs(title));
-    }
-
-    /**
-     * Determines whether the current page title contains the specified text
-     *
-     * @param text text
-     * @return boolean
-     */
-    public boolean ifTitleContains(String text) {
-        return wait.until(ExpectedConditions.titleContains(text));
-    }
-
-    /**
-     * Determines whether the text value of an element on the current page is the specified text
-     *
-     * @param locator By
-     * @param text text
-     * @return boolean
-     */
-    public boolean ifTextExists(By locator, String text) {
-        return wait.until(ExpectedConditions.textToBePresentInElementLocated(locator, text));
-    }
-
-    public void flushPage() {
-        driver.navigate().refresh();
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/common/PageCommon.java b/e2e/src/test/java/org/apache/dolphinscheduler/common/PageCommon.java
deleted file mode 100644
index 72dc03a..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/common/PageCommon.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.common;
-
-import org.apache.dolphinscheduler.util.RedisUtil;
-import org.openqa.selenium.WebDriver;
-import redis.clients.jedis.Jedis;
-
-
-/**
- * Encapsulate the operation methods that can be used for each module page
- */
-public class PageCommon extends BrowserCommon {
-    /**
-     * @param driver driver
-     */
-    public PageCommon(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * @param driver driver
-     * @param jedis jedis
-     */
-    public PageCommon(WebDriver driver, Jedis jedis) {
-        super(driver, jedis);
-    }
-
-    /**
-     * @param driver driver
-     * @param redisUtil redisUtil
-     */
-    public PageCommon(WebDriver driver, RedisUtil redisUtil) {
-        super(driver, redisUtil);
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java
deleted file mode 100644
index 332b800..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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;
-
-import org.apache.dolphinscheduler.util.PropertiesReader;
-
-/**
- * Landing page object: data
- */
-
-public class LoginData {
-    /**
-     * Login URL
-     */
-    public static final String URL = PropertiesReader.getKey("LOGIN_URL");
-
-    /**
-     * Login username
-     */
-    public static final String USER = PropertiesReader.getKey("USER_NAME");
-
-    /**
-     * Login password
-     */
-    public static final String PASSWORD = PropertiesReader.getKey("PASSWORD");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateProjectData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateProjectData.java
deleted file mode 100644
index 473df58..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateProjectData.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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 CreateProjectData {
-    // create project name
-    public static final String PROJECT_NAME = "selenium_project_1";
-    // create project description
-    public static final String DESCRIPTION = "test create project description";
-    // project page title
-    public static final String PROJECT_TITLE = "项目 - DolphinScheduler";
-}
\ No newline at end of file
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateWorkflowData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateWorkflowData.java
deleted file mode 100644
index 6a310fa..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/CreateWorkflowData.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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_1";
-
-    //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";
-
-    //workflow define title
-    public static final String WORKFLOW_TITLE = "工作流定义 - DolphinScheduler";
-
-    //create workflow title
-    public static final String CREATE_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";
-}
\ No newline at end of file
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProcessInstanceData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProcessInstanceData.java
deleted file mode 100644
index fa827f6..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProcessInstanceData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class ProcessInstanceData {
-    public String getProcessInstanceData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String processInstanceData = ymlReader.getDataYml("testData/workflow_zh_cn", "processInstance", param);
-        return  processInstanceData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProjectData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProjectData.java
deleted file mode 100644
index 22b4468..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProjectData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class ProjectData {
-    public String getProjectData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String projectData = ymlReader.getDataYml("testData/workflow_zh_cn", "projectManage", param);
-        return  projectData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/RunWorkflowData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/RunWorkflowData.java
deleted file mode 100644
index 7653f5a..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/RunWorkflowData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class RunWorkflowData {
-    public String getRunWorkflowData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String runWorkflowData = ymlReader.getDataYml("testData/workflow_zh_cn", "runWorkflow", param);
-        return  runWorkflowData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/TimingData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/TimingData.java
deleted file mode 100644
index 87fbbd8..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/TimingData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class TimingData {
-    public String getTimingData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String timingData = ymlReader.getDataYml("testData/workflow_zh_cn", "timing", param);
-        return  timingData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/WorkflowDefineData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/WorkflowDefineData.java
deleted file mode 100644
index 41b33e7..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/WorkflowDefineData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class WorkflowDefineData {
-    public String getWorkflowDefineData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String workflowDefineData = ymlReader.getDataYml("testData/workflow_zh_cn", "workflowDefine", param);
-        return  workflowDefineData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/AlertManageData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/AlertManageData.java
deleted file mode 100644
index 6bb2db4..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/AlertManageData.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.security;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class AlertManageData {
-    public String getAlertData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String alertData = ymlReader.getDataYml("testData/security_zh_cn", "alertManage", param);
-        return  alertData;
-    }
-
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java
deleted file mode 100644
index 4b72160..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.security;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class QueueManageData {
-    public String getQueueData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String queueData = ymlReader.getDataYml("testData/security_zh_cn", "queueManage", param);
-        return  queueData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TenantManageData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TenantManageData.java
deleted file mode 100644
index 0c97277..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TenantManageData.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * Tenant page object: data
- */
-package org.apache.dolphinscheduler.data.security;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class TenantManageData {
-    public String getTenantData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String tenantData = ymlReader.getDataYml("testData/security_zh_cn", "tenantManage", param);
-        return  tenantData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java
deleted file mode 100644
index 10fdc25..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.security;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class TokenManageData  {
-    public String getTokenData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String tokenData = ymlReader.getDataYml("testData/security_zh_cn", "tokenManage", param);
-        return  tokenData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/UserManageData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/UserManageData.java
deleted file mode 100644
index 699cce4..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/UserManageData.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.security;
-
-import org.apache.dolphinscheduler.util.YmlReader;
-
-public class UserManageData  {
-    public String getUserData(String param) {
-        YmlReader ymlReader = new YmlReader();
-        String userData = ymlReader.getDataYml("testData/security_zh_cn", "userManage", param);
-        return  userData;
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/LoginLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/LoginLocator.java
deleted file mode 100644
index 32a82bb..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/LoginLocator.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.locator;
-
-import org.openqa.selenium.By;
-
-/**
- * Page object: element positioning
- */
-
-public class LoginLocator {
-    public static final By LOGIN_INPUT_USER = By.xpath("//input[@class='input-element suffix']");
-
-    public static final By LOGIN_INPUT_PASSWORD = By.xpath("//input[@class='input-element suffix']");
-
-    public static final By LOGIN_BUTTON = By.xpath("//button");
-
-    public static final By LOGIN_BUTTON_MOVE = By.xpath("//button[contains(.,' Loading...')]");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateProjectLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateProjectLocator.java
deleted file mode 100644
index b5c7f4b..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateProjectLocator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.locator.project;
-
-import org.openqa.selenium.By;
-
-public class CreateProjectLocator {
-    //click project manage
-//    public static final By PROJECT_MANAGE = By.xpath("//div[@class='clearfix list'][2]");
-    public static final By PROJECT_MANAGE = By.xpath("//div[2]/div[2]/div/a/span");
-
-    //    public static final By SECURITY_MANAGE = By.xpath("//div[@class='m-top']/div/div[2]/dev[@class='clearfix list'][6]");
-    public static final By SECURITY_MANAGE = By.xpath("//div[2]/div[6]/div/a/span");
-
-
-    //click create project button
-    public static final By CREATE_PROJECT_BUTTON = By.xpath("//div[2]/div/div[1]/button/span");
-
-    //input project name
-    public static final By PROJECT_NAME = By.xpath("//div[2]/div/div/div[2]/div/input");
-
-    //input project description
-    public static final By PROJECT_DESCRIPTION = By.xpath("//textarea");
-
-    //submit button
-    public static final By SUBMIT_BUTTON = By.xpath("//div[3]/button[2]/span");
-
-    //delete project button
-    public static final By DELETE_PROJECT_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[9]/span/button");
-
-    //confirm delete project button
-    public static final By CONFIRM_DELETE_PROJECT_BUTTON = By.xpath("//div[2]/div/button[2]/span");
-}
\ No newline at end of file
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateWorkflowLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateWorkflowLocator.java
deleted file mode 100644
index 3d21549..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/CreateWorkflowLocator.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * 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.locator.project;
-
-import org.openqa.selenium.By;
-
-public class CreateWorkflowLocator {
-
-    /**
-     * jump workflow define page
-     */
-
-    // click project name
-    public static final By CLICK_PROJECT_NAME = By.xpath("//span/a");
-
-    // click workflow define
-    public static final By CLICK_WORKFLOW_DEFINE = By.xpath("//li/span");
-
-    /**
-     * create workflow
-     */
-    // click create workflow button
-    public static final By CLICK_CREATE_WORKFLOW_BUTTON = By.xpath("//button/span");
-
-    //mouse down at shell
-    public static final By MOUSE_DOWN_AT_SHELL = By.xpath("//div[@id='SHELL']/div/div");
-
-    //mouse down at spark
-    public static final By MOUSE_DOWN_AT_SPARK = By.xpath("//div[5]/div/div");
-
-    //mouse move at DAG
-    public static final By MOUSE_MOVE_SHELL_AT_DAG = By.xpath("//div[@id='canvas']");
-
-    //input shell task _name
-    public static final By INPUT_SHELL_TASK_NAME = By.xpath("//input");
-
-    //click stop run type
-    public static final By CLICK_STOP_RUN_TYPE = By.xpath("//label[2]/span/input");
-
-    //click normal run type
-    public static final By CLICK_NORMAL_RUN_TYPE = By.xpath("//span/input");
-
-    //input shell task description
-    public static final By INPUT_SHELL_TASK_DESCRIPTION = By.xpath("//label/div/textarea");
-
-    //click task priority
-    public static final By CLICK_TASK_PRIORITY = By.xpath("//span/div/div/div/div/div");
-
-    //select task priority
-    public static final By SELECT_TASK_PRIORITY = By.xpath("//li[2]/li/span");
-
-    //click work group
-    public static final By CLICK_WORK_GROUP = By.xpath("//div/div/input");
-
-    //select work group
-    public static final By SELECT_WORK_GROUP = By.xpath("//div[4]/div[2]/div/div[1]/div/input");
-
-    //select number of failed retries
-    public static final By SELECT_FAIL_RETRIES_NUMBER = By.xpath("//div[5]/div[2]/div[1]/div[1]/div/input");
-
-    //select failed retry interval
-    public static final By SELECT_FAIL_RETRIES_INTERVAL = By.xpath("//div[5]/div[2]/div[2]/div[1]/div/input");
-
-    //click timeout alarm
-    public static final By CLICK_TIMEOUT_ALARM = By.xpath("//label/div/span/span");
-
-    //select timeout fail
-    public static final By SELECT_TIMEOUT_FAIL = By.xpath("//div/div/label[2]/span/input");
-
-    //cancel timeout alarm
-    public static final By CANCEL_TIMEOUT_ALARM = By.xpath("//div/div/label/span/input");
-
-    //select timeout alarm
-    public static final By SELECT_TIMEOUT_ALARM = By.xpath("//div/div/label/span/input");
-
-    //input timeout
-    public static final By SELECT_TIMEOUT = By.xpath("//div[3]/div[2]/label/div/input");
-
-    //click codeMirror
-    public static final By CLICK_CODE_MIRROR = By.xpath("//div[5]/div/pre");
-
-    //input script
-    public static final By INPUT_SCRIPT = By.xpath("//div[2]/div/div/div/div/div/textarea");
-
-    //click custom parameters
-    public static final By CLICK_CUSTOM_PARAMETERS = By.xpath("//span/a/em");
-
-    //input custom parameters
-    public static final By INPUT_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div/div/input");
-
-    //input custom parameters value
-    public static final By INPUT_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/div/div/div/div[1]/div[2]/input");
-
-    //click to add custom parameters
-    public static final By CLICK_ADD_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div/span[2]/a/em");
-
-    //input to add custom parameters
-    public static final By INPUT_ADD_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div[2]/div[1]/input");
-
-    //input to add custom parameters value
-    public static final By INPUT_ADD_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/div[2]/input");
-
-    //delete custom parameters
-    public static final By CLICK_DELETE_CUSTOM_PARAMETERS = By.xpath("//div[2]/span/a/em");
-
-    //click submit button
-    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");
-
-    //scroll to element bottom
-    public static final By SCROLL_BOTTOM = By.xpath("//span/a/em");
-
-    /**
-     * delete workflow
-     */
-    //click delete workflow button
-    public static final By DELETE_WORKFLOW_BOTTOM = By.xpath("//span/button/i");
-
-    //click confirm delete workflow button
-    public static final By CONFIRM_DELETE_WORKFLOW_BOTTOM = By.xpath("//div[2]/div/button[2]/span");
-}
\ No newline at end of file
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/ProcessInstanceLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/ProcessInstanceLocator.java
deleted file mode 100644
index c881c27..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/ProcessInstanceLocator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.locator.project;
-
-import org.openqa.selenium.By;
-
-public class ProcessInstanceLocator {
-    // jump Process Instance page
-    // process instance state is success
-    public static final By PROCESS_INSTANCE_SUCCESS_STATE = By.xpath("//table/tr[2]/td[4]/span/em[@title['data-original-title']='成功']");
-
-    //click Process Instance name
-    public static final By CLICK_PROCESS_INSTANCE_NAME = By.xpath("//div[4]/div/ul/li[2]");
-
-    // click rerun button
-    public static final By CLICK_RERUN_BUTTON = By.xpath("//tr[2]/td[14]/div[1]/button[2]");
-
-    //assert rerun type
-    public static final By RUNNING_TYPE  = By.xpath("//tr[2]/td[5]/span");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/ProjectLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/ProjectLocator.java
deleted file mode 100644
index 94af3ac..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/ProjectLocator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.locator.project;
-
-import org.openqa.selenium.By;
-
-public class ProjectLocator {
-    //click project manage
-    public static final By PROJECT_MANAGE = By.xpath("//div[2]/div[2]/div/a/span");
-
-    //click create project button
-    public static final By CREATE_PROJECT_BUTTON = By.xpath("//button/span");
-
-    //input project name
-    public static final By PROJECT_NAME = By.xpath("//div[2]/div/div/div[2]/div/input");
-
-    //input project description
-    public static final By PROJECT_DESCRIPTION = By.xpath("//textarea");
-
-    //submit button
-    public static final By SUBMIT_BUTTON = By.xpath("//div[3]/button[2]/span");
-
-    // project name
-    public static final By LIST_PROJECT_NAME = By.xpath("//table/tr[2]/td[2]/span/a");
-
-    //delete project button
-    public static final By DELETE_PROJECT_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[9]/span/button");
-
-    //confirm delete project button
-    public static final By CONFIRM_DELETE_PROJECT_BUTTON = By.xpath("//div[2]/div/button[2]/span");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/RunWorkflowLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/RunWorkflowLocator.java
deleted file mode 100644
index 36a788f..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/RunWorkflowLocator.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.locator.project;
-
-import org.openqa.selenium.By;
-
-public class RunWorkflowLocator {
-    /**
-     * run workflow
-     */
-    // click run workflow button
-    public static final By CLICK_RUN_WORKFLOW_BUTTON = By.xpath("//div[1]/div/table/tr[2]/td[10]/button[2]");
-
-    //set running parameters
-    public static final By SELECT_FAILURE_STRATEGY_END = By.xpath("//div[5]/div/div[2]/div/div[3]/div[2]/div/label[2]/span[1]/input");
-    public static final By SELECT_FAILURE_STRATEGY_CONTINUE = By.xpath("//div[3]/div[2]/div/label[1]/span[1]/input");
-
-    public static final By CLICK_NOTICE_STRATEGY = By.xpath("//div[4]/div[2]/div/div[1]/div/input");
-    public static final By SELECT_NOTICE_STRATEGY = By.xpath("//div/ul/li[4]/span");
-
-    public static final By CLICK_PROCESS_PRIORITY = By.xpath("//div/div/div/div/div/span[2]");
-    public static final By SELECT_PROCESS_PRIORITY_HIGHEST  = By.xpath("//li[1]/li/span");
-
-    public static final By CLICK_WORKER_GROUP = By.xpath("//div[6]/div[2]/div/div[1]/div/input");
-    public static final By SELECT_WORKER_GROUP  = By.xpath("//div[5]/div/div[2]/div/div[6]/div[2]/div/div[2]/div/div/div/ul/li/span");
-
-    public static final By CLICK_NOTICE_GROUP = By.xpath("//div[7]/div[2]/div/div[1]/div/input");
-    public static final By SELECT_NOTICE_GROUP  = By.xpath("//div[5]/div/div[2]/div/div[7]/div[2]/div/div[2]/div/div/div/ul/li/span");
-
-    public static final By INPUT_RECIPIENT  = By.xpath("//div[8]/div[2]/div/div/span/span/input");
-    public static final By INPUT_Cc  = By.xpath("//div[9]/div[2]/div/div/span/span/input");
-
-    public static final By CLICK_RUNNING_BUTTON  = By.xpath("//div[11]/button[2]");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/TimingLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/TimingLocator.java
deleted file mode 100644
index f73d869..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/TimingLocator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.locator.project;
-
-import org.openqa.selenium.By;
-
-public class TimingLocator {
-    // create timing button
-    public static final By CLICK_TIMING_BUTTON = By.xpath("//button[3]");
-
-    public static final By CLICK_EXECUTION_TIMING_BUTTON = By.xpath("//div[3]/button/span");
-
-    public static final By SELECT_FAILURE_STRATEGY_END = By.xpath("//label[2]/span/input");
-    public static final By SELECT_FAILURE_STRATEGY_CONTINUE = By.xpath("//div[2]/div/label/span[2]");
-
-    public static final By CLICK_NOTICE_STRATEGY = By.xpath("//div[6]/div[2]/div/div/div/input");
-    public static final By SELECT_NOTICE_STRATEGY = By.xpath("//div[2]/div/div/div/ul/li[4]/span");
-
-    public static final By CLICK_PROCESS_PRIORITY = By.xpath("//div[7]/div[2]/div/div/div/div/div/span[2]");
-    public static final By SELECT_PROCESS_PRIORITY  = By.xpath("//li/li/span");
-
-    public static final By CLICK_WORKER_GROUP = By.xpath("//div[8]/div[2]/div/div/div/input");
-    public static final By SELECT_WORKER_GROUP  = By.xpath("//div[8]/div[2]/div/div[2]/div/div/div/ul/li/span");
-
-    public static final By CLICK_NOTICE_GROUP = By.xpath("//div[9]/div[2]/div/div/div/input");
-    public static final By SELECT_NOTICE_GROUP  = By.xpath("//div[9]/div[2]/div/div[2]/div/div/div/ul/li/span");
-
-    public static final By INPUT_RECIPIENT  = By.xpath("//div[10]/div[2]/div/div/span/span/input");
-    public static final By INPUT_Cc  = By.xpath("//div[11]/div[2]/div/div/span/span/input");
-
-    public static final By CLICK_CREATE_BUTTON  = By.xpath("//div[12]/button[2]/span");
-
-    //edit timing
-    public static final By TIMING_STATE = By.xpath("//table/tr[2]/td[9]/span");
-
-    public static final By CLICK_TIMING_MANAGEMENT_BUTTON = By.xpath("//tr[2]/td[10]/button[6]");
-
-    public static final By WORKFLOW_NAME = By.xpath("//table/tr[2]/td[2]/span/a");
-
-    public static final By CLICK_EDIT_TIMING_BUTTON = By.xpath("//tr[2]/td[10]/button[1]/i");
-
-    //online timing
-    public static final By TIMING_MANAGEMENT_TIMING_STATE = By.xpath("//table/tr[2]/td[7]/span");
-
-    public static final By CLICK_ONLINE_TIMING_BUTTON = By.xpath("//table/tr[2]/td[10]/button[@title['data-original-title']='上线']");
-
-    //offline timing
-    public static final By CLICK_OFFLINE_TIMING_BUTTON = By.xpath("//table/tr[2]/td[10]/button[@title['data-original-title']='下线']");
-
-    //delete timing
-    public static final By CLICK_DELETE_TIMING_BUTTON = By.xpath("//table/tr[2]/td[10]/span/button");
-    public static final By CLICK_CONFIRM_DELETE_TIMING_BUTTON = By.xpath("//div[2]/div/button[2]/span");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/WorkflowDefineLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/WorkflowDefineLocator.java
deleted file mode 100644
index c851be3..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/WorkflowDefineLocator.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * 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.locator.project;
-
-import org.openqa.selenium.By;
-
-public class WorkflowDefineLocator {
-
-    /**
-     * jump workflow define page
-     */
-    // click project name
-    public static final By CLICK_PROJECT_NAME = By.xpath("//span/a");
-
-    // click workflow define
-    public static final By CLICK_WORKFLOW_DEFINE = By.xpath("//li/span");
-
-    /**
-     * create workflow
-     */
-    // click create workflow button
-    public static final By CLICK_CREATE_WORKFLOW_BUTTON = By.xpath("//button/span");
-
-    //mouse down at shell
-    public static final By MOUSE_DOWN_AT_SHELL = By.xpath("//div[@id='SHELL']/div/div");
-
-    //mouse down at spark
-    public static final By MOUSE_DOWN_AT_SPARK = By.xpath("//div[5]/div/div");
-
-    //mouse move at DAG
-    public static final By MOUSE_MOVE_SHELL_AT_DAG = By.xpath("//div[@id='canvas']");
-
-    //input shell task _name
-    public static final By INPUT_SHELL_TASK_NAME = By.xpath("//input");
-
-    //click stop run type
-    public static final By CLICK_STOP_RUN_TYPE = By.xpath("//label[2]/span[1]/input");
-
-    //click normal run type
-    public static final By CLICK_NORMAL_RUN_TYPE = By.xpath("//label[1]/span[1]/input");
-
-    //input shell task description
-    public static final By INPUT_SHELL_TASK_DESCRIPTION = By.xpath("//label/div/textarea");
-
-    //click task priority
-    public static final By CLICK_TASK_PRIORITY = By.xpath("//span/div/div/div/div/div");
-
-    //select task priority
-    public static final By SELECT_TASK_PRIORITY = By.xpath("//li[2]/li/span");
-
-    //click work group
-    public static final By CLICK_WORK_GROUP = By.xpath("//div/div/input");
-
-    //select work group
-    public static final By SELECT_WORK_GROUP = By.xpath("//div[4]/div[2]/div/div[1]/div/input");
-
-    //select number of failed retries
-    public static final By SELECT_FAIL_RETRIES_NUMBER = By.xpath("//div[5]/div[2]/div[1]/div[1]/div/input");
-
-    //select failed retry interval
-    public static final By SELECT_FAIL_RETRIES_INTERVAL = By.xpath("//div[5]/div[2]/div[2]/div[1]/div/input");
-
-    //click timeout alarm
-    public static final By CLICK_TIMEOUT_ALARM = By.xpath("//label/div/span/span");
-
-    //select timeout fail
-    public static final By SELECT_TIMEOUT_FAIL = By.xpath("//div/div/label[2]/span/input");
-
-    //cancel timeout alarm
-    public static final By CANCEL_TIMEOUT_ALARM = By.xpath("//div/div/label/span/input");
-
-    //select timeout alarm
-    public static final By SELECT_TIMEOUT_ALARM = By.xpath("//div/div/label/span/input");
-
-    //input timeout
-    public static final By SELECT_TIMEOUT = By.xpath("//div[3]/div[2]/label/div/input");
-
-    //click codeMirror
-    public static final By CLICK_CODE_MIRROR = By.xpath("//div[5]/div/pre");
-
-    //input script
-    public static final By INPUT_SCRIPT = By.xpath("//div[2]/div/div/div/div/div/textarea");
-
-    //click custom parameters
-    public static final By CLICK_CUSTOM_PARAMETERS = By.xpath("//span/a/em");
-
-    //input custom parameters
-    public static final By INPUT_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div/div/input");
-
-    //input custom parameters value
-    public static final By INPUT_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/div/div/div/div[1]/div[2]/input");
-
-    //click to add custom parameters
-    public static final By CLICK_ADD_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div/span[2]/a/em");
-
-    //input to add custom parameters
-    public static final By INPUT_ADD_CUSTOM_PARAMETERS = By.xpath("//div[2]/div/div/div/div[2]/div[1]/input");
-
-    //input to add custom parameters value
-    public static final By INPUT_ADD_CUSTOM_PARAMETERS_VALUE = By.xpath("//div[2]/div[2]/input");
-
-    //delete custom parameters
-    public static final By CLICK_DELETE_CUSTOM_PARAMETERS = By.xpath("//div[2]/span/a/em");
-
-    //click submit button
-    public static final By CLICK_SUBMIT_BUTTON = By.xpath("//div[3]/div/button[2]/span");
-
-    //copy task
-    public static final By MOUSE_RIGHT_CLICK = By.xpath("//div[2]/div[2]/div/div/div/div/div[2]");
-    public static final By COPY_TASK = By.xpath("//a[3]/span");
-
-    //click line
-    public static final By CLICK_LINE = By.xpath("//a[@id='line']/button/i");
-
-    public static final By LINE_SOURCES_TASK = By.xpath("//div[@id='canvas']/div[1]/div[2]");
-
-    public static final By LINE_TARGET_TASK = By.xpath("//div[@id='canvas']/div[2]/div[2]");
-
-    /**
-     * save workflow
-     */
-    //click save workflow button
-    public static final By CLICK_SAVE_WORKFLOW_BUTTON = By.xpath("//div[2]/div[1]/div[2]/button[2]/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[4]/div/div[2]/div/div/div/ul/li[2]/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("//div[2]/div/button[2]/span");    
-    //scroll to element bottom
-    public static final By SCROLL_BOTTOM = By.xpath("//span/a/em");
-
-    public static final By WORKFLOW_NAME = By.xpath("//table/tr[2]/td[3]/span/a");
-
-    /**
-     * online workflow
-     */
-    public static final By WORKFLOW_STATE = By.xpath("//table/tr[2]/td[4]/span");
-
-
-    // click online workflow button
-    public static final By CLICK_ONLINE_WORKFLOW_BUTTON = By.xpath("//button[@title['data-original-title']='上线']");
-
-    /**
-     * offline workflow
-     */
-    // click offline workflow button
-    public static final By CLICK_OFFLINE_WORKFLOW_BUTTON = By.xpath("//button[@title['data-original-title']='下线']");
-
-    /**
-     * delete workflow
-     */
-    //click delete workflow button
-    public static final By DELETE_WORKFLOW_BOTTOM = By.xpath("//table/tr[2]/td[10]/span/button");
-
-    //click confirm delete workflow button
-    public static final By CONFIRM_DELETE_WORKFLOW_BOTTOM = By.xpath("//div[2]/div/button[2]/span");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/AlertManageLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/AlertManageLocator.java
deleted file mode 100644
index 82ac473..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/AlertManageLocator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.locator.security;
-
-import org.openqa.selenium.By;
-
-public class AlertManageLocator {
-    //create alert locator
-    public static final By CLICK_ALERT_MANAGE = By.xpath("//div[4]/div/a/div/a/span");
-    public static final By CLICK_CREATE_ALERT = By.xpath("//div[1]/div[2]/div/div[2]/div[2]/div/div[1]/button/span");
-    public static final By INPUT_ALERT_NAME = By.xpath("//div[2]/div/div[1]/div[2]/div/input");
-    public static final By CLICK_ALERT_TYPE = By.xpath("//div[2]/div/div[2]/div/div[2]/div[2]/div/div[1]/div/input");
-    public static final By SELECT_ALERT_EMAIL = By.xpath("//div[2]/div/div[2]/div/div[2]/div[2]/div/div[2]/div/div/div/ul/li[1]/span");
-    public static final By INPUT_ALERT_DESCRIPTION = By.xpath("//textarea");
-    public static final By SUBMIT_ALERT = By.xpath("//div[3]/button[2]/span");
-
-    public static final By ALERT_NAME = By.xpath("//table/tr[2]/td[2]/span");
-
-    //delete alert locator
-    public static final By DELETE_ALERT_BUTTON = By.xpath("//span/button");
-    public static final By CONFIRM_DELETE_ALERT_BUTTON = By.xpath("//div[2]/div/button[2]/span");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/QueueManageLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/QueueManageLocator.java
deleted file mode 100644
index dd42a91..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/QueueManageLocator.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.locator.security;
-
-import org.openqa.selenium.By;
-
-public class QueueManageLocator {
-    //create queue locator
-    public static final By CLICK_QUEUE_MANAGE = By.xpath("//div[6]/div/a/div/a/span");
-    public static final By CLICK_CREATE_QUEUE = By.xpath("//button/span");
-    public static final By INPUT_QUEUE_NAME = By.xpath("//div[2]/div/div/div[2]/div/input");
-    public static final By INPUT_QUEUE_VALUE = By.xpath("//div[2]/div[2]/div/input");
-    public static final By SUBMIT_QUEUE = By.xpath("//button[2]/span");
-
-    public static final By LIST_QUEUE_NAME = By.xpath("//table/tr[2]/td[2]/span");
-
-    //edit queue locator
-    public static final By CLICK_EDIT_QUEUE = By.xpath("//td[6]/button/i");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TenantManageLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TenantManageLocator.java
deleted file mode 100644
index d9316df..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TenantManageLocator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.locator.security;
-
-import org.openqa.selenium.By;
-
-public class TenantManageLocator{
-    public static final By SECURITY_CENTER = By.xpath("//div[2]/div[6]/div/a/span/em");
-
-    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 QUEUE = 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 DELETE_TENANT_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[7]/span/button");
-
-    public static final By CONFIRM_DELETE_TENANT_BUTTON = By.xpath("//div[2]/div/button[2]/span");
-
-    public static final By TENANT_CODE_FIRST = By.xpath("//table/tr[2]/td[2]/span");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java
deleted file mode 100644
index e85807f..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.locator.security;
-
-import org.openqa.selenium.By;
-
-public class TokenManageLocator {
-    //create token
-    public static final By CLICK_TOKEN_MANAGE = By.xpath("/html/body/div[1]/div[2]/div/div[1]/div[7]/div/a/div/a/span");
-
-    public static final By CLICK_CREATE_TOKEN = By.xpath("//div[2]/div/div[2]/div[2]/div/div[1]/button/span");
-
-    public static final By CREATE_TOKEN_POPUP = By.xpath("//div[5]/div/div[2]/div/div[1]/span");
-
-    public static final By SELECT_USER = By.xpath("//div[2]/div[2]/div/div/div/span/i");
-
-    public static final By CLICK_GENERATE_TOKEN_BUTTON = By.xpath("//div[3]/div[2]/button/span");
-
-    public static final By CLICK_SUBMIT_BUTTON = By.xpath("//div[3]/button[2]/span");
-
-    //edit token
-    public static final By TOKEN = By.xpath("//table/tr[2]/td[1]/span");
-    public static final By EDIT_TOKEN_BUTTON = By.xpath("//table/tr[2]/td[7]/button");
-
-
-    //delete token
-    public static final By CLICK_DELETE_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[7]/span/button");
-
-    public static final By CLICK_CONFIRM_DELETE_BUTTON = By.xpath("//div[2]/div/button[2]/span");
-
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/UserManageLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/UserManageLocator.java
deleted file mode 100644
index 80f9df2..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/UserManageLocator.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.locator.security;
-
-import org.openqa.selenium.By;
-
-public class UserManageLocator {
-
-    /**
-     * create user
-     */
-    public static final By CLICK_USER_MANAGE = By.xpath("//div[3]/div/a/div/a/span");
-
-    public static final By CLICK_CREATE_USER_BUTTON = By.xpath("//span[contains(.,'创建用户')]");
-
-    public static final By INPUT_USERNAME = By.xpath("//div[2]/div/div/div[2]/div/input");
-
-    public static final By INPUT_PASSWORD = By.xpath("//div[2]/div[2]/div/input");
-
-    public static final By CLICK_TENANT = By.xpath("//div[3]/div[2]/div/div/div/input");
-
-    public static final By SELECT_TENANT = By.xpath("//div[3]/div[2]/div/div[2]/div/div/div/ul/li/span");
-
-    public static final By CLICK_QUEUE = By.xpath("//div[4]/div[2]/div/div/div/input");
-
-    public static final By SELECT_QUEUE = By.xpath("//div[4]/div[2]/div/div[2]/div/div/div/ul/li/span");
-
-    public static final By INPUT_EMAIL = By.xpath("//div[5]/div[2]/div/input");
-
-    public static final By INPUT_PHONE = By.xpath("//div[6]/div[2]/div/input");
-
-    public static final By SELECT_STOP_STATE = By.xpath("//div[7]/div[2]/div/label[2]/span/input");
-
-    public static final By SELECT_ENABLE_STATE = By.xpath("//div[7]/div[2]/div/label[1]/span/input");
-
-    public static final By SUBMIT = By.xpath("//div[3]/button[2]/span");
-
-    public static final By USERNAME = By.xpath("//table/tr[2]/td[2]/span");
-
-    /**
-     * edit user
-     */
-    public static final By USER_NAME = By.xpath("//table/tr[2]/td[2]/span");
-
-    public static final By EDIT_GENERAL_USER_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[11]/button");
-
-    public static final By EDIT_ADMIN_USER_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[3]/td[11]/button");
-    /**
-     * delete user
-     */
-    public static final By DELETE_USER_BUTTON = By.xpath("//table/tr[3]/td[11]/span[2]/button");
-
-    public static final By CONFIRM_DELETE_USER_BUTTON = By.xpath("//tr[3]/td[11]/span[2]/div/div[2]/div/button[2]/span");
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java
deleted file mode 100644
index 468938d..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.page;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.LoginData;
-import org.apache.dolphinscheduler.data.security.TenantManageData;
-import org.apache.dolphinscheduler.locator.LoginLocator;
-import org.openqa.selenium.Cookie;
-import org.openqa.selenium.WebDriver;
-
-public class LoginPage extends PageCommon {
-    TenantManageData tenantManageData = new TenantManageData();
-
-    /**
-     * Unique constructor
-     * @param driver driver
-     */
-    public LoginPage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * jump page
-     */
-    public void jumpPageEnlish() {
-        System.out.println("jump to English login page");
-        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
-     *
-     * @return Whether to enter the specified page after searching
-     */
-    public boolean login() throws InterruptedException {
-        // login data
-        sendInput(LoginLocator.LOGIN_INPUT_USER, LoginData.USER);
-        sendInput(LoginLocator.LOGIN_INPUT_PASSWORD, LoginData.PASSWORD);
-
-        // click login button
-        clickButton(LoginLocator.LOGIN_BUTTON);
-
-        moveToElement(LoginLocator.LOGIN_BUTTON_MOVE);
-
-        // Whether to enter the specified page after login
-        return ifTitleContains(tenantManageData.getTenantData("tenantTitle"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateProjectPage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateProjectPage.java
deleted file mode 100644
index 5e4ea72..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateProjectPage.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.page.project;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.constant.TestConstant;
-import org.apache.dolphinscheduler.data.project.CreateProjectData;
-import org.apache.dolphinscheduler.locator.project.CreateProjectLocator;
-import org.openqa.selenium.WebDriver;
-
-public class CreateProjectPage extends PageCommon {
-    public CreateProjectPage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * jump to ProjectManagePage
-     */
-    public boolean jumpProjectManagePage() throws InterruptedException {
-        Thread.sleep(TestConstant.THREE_THOUSAND);
-        clickTopElement(CreateProjectLocator.PROJECT_MANAGE);
-        Thread.sleep(TestConstant.ONE_THOUSAND);
-        return ifTitleContains(CreateProjectData.PROJECT_TITLE);
-    }
-
-    /**
-     * create project
-     *
-     * @return Whether to enter the specified page after create project
-     */
-    public boolean createProject() throws InterruptedException {
-        clickElement(CreateProjectLocator.CREATE_PROJECT_BUTTON);
-
-        // input create project data
-        sendInput(CreateProjectLocator.PROJECT_NAME, CreateProjectData.PROJECT_NAME);
-        sendInput(CreateProjectLocator.PROJECT_DESCRIPTION, CreateProjectData.DESCRIPTION);
-
-        // click submit  button
-        clickButton(CreateProjectLocator.SUBMIT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(CreateProjectData.PROJECT_TITLE);
-    }
-
-    /**
-     * delete project
-     *
-     * @return Whether to enter the specified page after delete project
-     */
-    public boolean deleteProject() throws InterruptedException {
-        //click  delete project
-        clickElement(CreateProjectLocator.DELETE_PROJECT_BUTTON);
-
-        //click confirm delete project
-        clickElement(CreateProjectLocator.CONFIRM_DELETE_PROJECT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(CreateProjectData.PROJECT_TITLE);
-    }
-}
\ No newline at end of file
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateWorkflowPage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateWorkflowPage.java
deleted file mode 100644
index cedfe55..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/CreateWorkflowPage.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * 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.page.project;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.constant.TestConstant;
-import org.apache.dolphinscheduler.data.project.CreateWorkflowData;
-import org.apache.dolphinscheduler.locator.project.CreateWorkflowLocator;
-import org.openqa.selenium.WebDriver;
-
-public class CreateWorkflowPage extends PageCommon {
-    public CreateWorkflowPage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * jump create workflow page
-     */
-
-    public boolean jumpWorkflowPage() throws InterruptedException {
-        // click project name
-        clickElement(CreateWorkflowLocator.CLICK_PROJECT_NAME);
-        Thread.sleep(TestConstant.ONE_THOUSAND);
-
-        System.out.println("Click on workflow define to jump to workflow define page");
-        // click workflow define
-        clickElement(CreateWorkflowLocator.CLICK_WORKFLOW_DEFINE);
-
-        return ifTitleContains(CreateWorkflowData.WORKFLOW_TITLE);
-    }
-
-    public boolean createWorkflow() throws InterruptedException {
-        System.out.println("Click create workflow button");
-        // click create workflow button
-        clickElement(CreateWorkflowLocator.CLICK_CREATE_WORKFLOW_BUTTON);
-
-        System.out.println("drag shell task");
-        //drag shell_task
-        dragAndDrop(CreateWorkflowLocator.MOUSE_DOWN_AT_SHELL,CreateWorkflowLocator.MOUSE_MOVE_SHELL_AT_DAG);
-
-        //input shell task _name
-        sendInput(CreateWorkflowLocator.INPUT_SHELL_TASK_NAME , CreateWorkflowData.SHELL_TASK_NAME);
-
-        //click stop run type
-        clickElement(CreateWorkflowLocator.CLICK_STOP_RUN_TYPE);
-
-        //click normal run type
-        clickElement(CreateWorkflowLocator.CLICK_NORMAL_RUN_TYPE);
-
-        //input shell task description
-        sendInput(CreateWorkflowLocator.INPUT_SHELL_TASK_DESCRIPTION , CreateWorkflowData.SHELL_TASK_DESCRIPTION);
-
-        //select task priority
-        clickElement(CreateWorkflowLocator.CLICK_TASK_PRIORITY);
-        clickElement(CreateWorkflowLocator.SELECT_TASK_PRIORITY);
-
-        //select work group
-        clickElement(CreateWorkflowLocator.CLICK_WORK_GROUP);
-        clickElement(CreateWorkflowLocator.SELECT_WORK_GROUP);
-
-        //select number of failed retries
-        clickElement(CreateWorkflowLocator.SELECT_FAIL_RETRIES_NUMBER);
-
-        //select failed retry interval
-        clickElement(CreateWorkflowLocator.SELECT_FAIL_RETRIES_INTERVAL);
-
-        //click timeout alarm
-        clickElement(CreateWorkflowLocator.CLICK_TIMEOUT_ALARM);
-
-        //select timeout fail
-        clickElement(CreateWorkflowLocator.SELECT_TIMEOUT_FAIL);
-
-        //cancel timeout alarm
-        clickElement(CreateWorkflowLocator.CANCEL_TIMEOUT_ALARM);
-
-        //select timeout alarm
-        clickElement(CreateWorkflowLocator.SELECT_TIMEOUT_ALARM);
-
-        //clear timeout
-        clearInput(CreateWorkflowLocator.SELECT_TIMEOUT);
-        clearInput(CreateWorkflowLocator.SELECT_TIMEOUT);
-
-        //input timeout
-        sendInput(CreateWorkflowLocator.SELECT_TIMEOUT, CreateWorkflowData.INPUT_TIMEOUT);
-
-        //click codeMirror and input script
-        inputCodeMirror(CreateWorkflowLocator.CLICK_CODE_MIRROR, CreateWorkflowLocator.INPUT_SCRIPT, CreateWorkflowData.SHELL_SCRIPT);
-        scrollToElementBottom(CreateWorkflowLocator.SCROLL_BOTTOM);
-
-        //click custom parameters
-        clickElement(CreateWorkflowLocator.CLICK_CUSTOM_PARAMETERS);
-
-        //input custom parameters
-        sendInput(CreateWorkflowLocator.INPUT_CUSTOM_PARAMETERS, CreateWorkflowData.INPUT_CUSTOM_PARAMETERS);
-
-        //input custom parameters value
-        sendInput(CreateWorkflowLocator.INPUT_CUSTOM_PARAMETERS_VALUE, CreateWorkflowData.INPUT_CUSTOM_PARAMETERS_VALUE);
-
-        //click add custom parameters
-        clickElement(CreateWorkflowLocator.CLICK_ADD_CUSTOM_PARAMETERS);
-
-        scrollToElementBottom(CreateWorkflowLocator.SCROLL_BOTTOM);
-
-        //input add custom parameters
-        sendInput(CreateWorkflowLocator.INPUT_ADD_CUSTOM_PARAMETERS, CreateWorkflowData.INPUT_ADD_CUSTOM_PARAMETERS);
-
-        //input add custom parameters value
-        sendInput(CreateWorkflowLocator.INPUT_ADD_CUSTOM_PARAMETERS_VALUE, CreateWorkflowData.INPUT_ADD_CUSTOM_PARAMETERS_VALUE);
-
-        //click delete custom parameters
-        clickElement(CreateWorkflowLocator.CLICK_DELETE_CUSTOM_PARAMETERS);
-
-        //click submit button
-        clickElement(CreateWorkflowLocator.CLICK_SUBMIT_BUTTON);
-        Thread.sleep(TestConstant.ONE_THOUSAND);
-        System.out.println("Task node set up successfully");
-        System.out.println("move to Dag Element ");
-        moveToDragElement(CreateWorkflowLocator.MOUSE_MOVE_SHELL_AT_DAG,-300,-100);
-
-        return ifTitleContains(CreateWorkflowData.CREATE_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_THOUSAND);
-
-        //click add button
-        clickButton(CreateWorkflowLocator.CLICK_ADD_BUTTON);
-        System.out.println("submit workflow");
-        return ifTitleContains(CreateWorkflowData.CREATE_WORKFLOW_TITLE);
-    }
-
-    public boolean deleteWorkflow() throws InterruptedException {
-        //click  delete project
-        clickButton(CreateWorkflowLocator.DELETE_WORKFLOW_BOTTOM);
-
-        //click confirm delete project
-        clickButton(CreateWorkflowLocator.CONFIRM_DELETE_WORKFLOW_BOTTOM);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(CreateWorkflowData.WORKFLOW_TITLE);
-    }
-}
\ No newline at end of file
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProcessInstancePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProcessInstancePage.java
deleted file mode 100644
index 04124b4..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProcessInstancePage.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.page.project;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.locator.project.ProcessInstanceLocator;
-import org.openqa.selenium.WebDriver;
-import org.apache.dolphinscheduler.data.project.ProcessInstanceData;
-
-
-public class ProcessInstancePage extends PageCommon {
-    ProcessInstanceData processInstanceData = new ProcessInstanceData();
-
-    public ProcessInstancePage(WebDriver driver) {
-        super(driver);
-    }
-
-
-    /**
-     * rerun workflow page
-     */
-    public boolean rerunWorkflowPage() throws InterruptedException {
-        Thread.sleep(2000);
-        clickTopElement(ProcessInstanceLocator.CLICK_PROCESS_INSTANCE_NAME);
-        locateElement(ProcessInstanceLocator.PROCESS_INSTANCE_SUCCESS_STATE);
-        clickTopElement(ProcessInstanceLocator.CLICK_RERUN_BUTTON);
-        return ifTitleContains(processInstanceData.getProcessInstanceData("processInstanceTitle"));
-    }
-
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProjectPage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProjectPage.java
deleted file mode 100644
index a450ec7..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProjectPage.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.page.project;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.project.ProjectData;
-import org.apache.dolphinscheduler.locator.project.ProjectLocator;
-import org.openqa.selenium.WebDriver;
-
-public class ProjectPage extends PageCommon {
-    ProjectData projectData = new ProjectData();
-
-    public ProjectPage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * jump to ProjectManagePage
-     */
-    public boolean jumpProjectManagePage() throws InterruptedException {
-        clickTopElement(ProjectLocator.PROJECT_MANAGE);
-        return ifTitleContains(projectData.getProjectData("projectTitle"));
-    }
-
-    /**
-     * create project
-     *
-     * @return Whether to enter the specified page after create project
-     */
-    public boolean createProject() throws InterruptedException {
-        ifTextExists(ProjectLocator.CREATE_PROJECT_BUTTON, projectData.getProjectData("createProjectButton"));
-        clickElement(ProjectLocator.CREATE_PROJECT_BUTTON);
-
-        // input create project data
-        sendInput(ProjectLocator.PROJECT_NAME, projectData.getProjectData("projectName"));
-        sendInput(ProjectLocator.PROJECT_DESCRIPTION, projectData.getProjectData("description"));
-
-        // click submit  button
-        clickButton(ProjectLocator.SUBMIT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTextExists(ProjectLocator.LIST_PROJECT_NAME, projectData.getProjectData("projectName"));
-    }
-
-    /**
-     * delete project
-     *
-     * @return Whether to enter the specified page after delete project
-     */
-    public boolean deleteProject() throws InterruptedException {
-        //click  delete project
-        clickElement(ProjectLocator.DELETE_PROJECT_BUTTON);
-
-        //click confirm delete project
-        clickElement(ProjectLocator.CONFIRM_DELETE_PROJECT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(projectData.getProjectData("projectTitle"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/RunWorkflowPage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/RunWorkflowPage.java
deleted file mode 100644
index c4b8a68..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/RunWorkflowPage.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.page.project;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.project.RunWorkflowData;
-import org.apache.dolphinscheduler.data.project.WorkflowDefineData;
-import org.apache.dolphinscheduler.locator.project.RunWorkflowLocator;
-import org.apache.dolphinscheduler.locator.project.WorkflowDefineLocator;
-import org.openqa.selenium.WebDriver;
-
-public class RunWorkflowPage extends PageCommon {
-    RunWorkflowData runWorkflowData = new RunWorkflowData();
-    WorkflowDefineData workflowDefineData = new WorkflowDefineData();
-
-    public RunWorkflowPage(WebDriver driver) {
-        super(driver);
-    }
-
-    public boolean runWorkflow() throws InterruptedException {
-        // Determine whether the workflow status is online
-        ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, runWorkflowData.getRunWorkflowData("online"));
-
-        // click run workflow button
-        System.out.println("Click run workflow button");
-        clickButton(RunWorkflowLocator.CLICK_RUN_WORKFLOW_BUTTON);
-
-        clickElement(RunWorkflowLocator.SELECT_FAILURE_STRATEGY_END);
-        clickElement(RunWorkflowLocator.SELECT_FAILURE_STRATEGY_CONTINUE);
-        clickElement(RunWorkflowLocator.CLICK_NOTICE_STRATEGY);
-        clickElement(RunWorkflowLocator.SELECT_NOTICE_STRATEGY);
-        clickElement(RunWorkflowLocator.CLICK_PROCESS_PRIORITY);
-        clickElement(RunWorkflowLocator.SELECT_PROCESS_PRIORITY_HIGHEST);
-        clickElement(RunWorkflowLocator.CLICK_WORKER_GROUP);
-        clickElement(RunWorkflowLocator.SELECT_WORKER_GROUP);
-        clickElement(RunWorkflowLocator.CLICK_NOTICE_GROUP);
-        clickElement(RunWorkflowLocator.SELECT_NOTICE_GROUP);
-        sendInput(RunWorkflowLocator.INPUT_RECIPIENT, runWorkflowData.getRunWorkflowData("recipient"));
-        sendInput(RunWorkflowLocator.INPUT_Cc, runWorkflowData.getRunWorkflowData("Cc"));
-        clickButton(RunWorkflowLocator.CLICK_RUNNING_BUTTON);
-
-        return ifTitleContains(workflowDefineData.getWorkflowDefineData("workflowDefineTitle"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/TimingPage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/TimingPage.java
deleted file mode 100644
index 37f3fda..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/TimingPage.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * 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.page.project;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.project.TimingData;
-import org.apache.dolphinscheduler.locator.project.TimingLocator;
-import org.apache.dolphinscheduler.locator.project.WorkflowDefineLocator;
-import org.openqa.selenium.WebDriver;
-
-public class TimingPage extends PageCommon {
-    TimingData timingData = new TimingData();
-
-    public TimingPage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * create timing
-     */
-    public boolean createTiming() throws InterruptedException {
-        flushPage();
-        // Determine whether the workflow status is online
-        ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, timingData.getTimingData("online"));
-
-        // click timing button
-        System.out.println("Click timing button");
-        clickButton(TimingLocator.CLICK_TIMING_BUTTON);
-        System.out.println("Click execution timing button");
-        clickButton(TimingLocator.CLICK_EXECUTION_TIMING_BUTTON);
-
-        clickElement(TimingLocator.SELECT_FAILURE_STRATEGY_END);
-        clickElement(TimingLocator.SELECT_FAILURE_STRATEGY_CONTINUE);
-        clickElement(TimingLocator.CLICK_NOTICE_STRATEGY);
-        clickElement(TimingLocator.SELECT_NOTICE_STRATEGY);
-        clickElement(TimingLocator.CLICK_PROCESS_PRIORITY);
-        clickElement(TimingLocator.SELECT_PROCESS_PRIORITY);
-        clickElement(TimingLocator.CLICK_WORKER_GROUP);
-        clickElement(TimingLocator.SELECT_WORKER_GROUP);
-        clickElement(TimingLocator.CLICK_NOTICE_GROUP);
-        clickElement(TimingLocator.SELECT_NOTICE_GROUP);
-        sendInput(TimingLocator.INPUT_RECIPIENT, timingData.getTimingData("recipient"));
-        sendInput(TimingLocator.INPUT_Cc, timingData.getTimingData("Cc"));
-        clickButton(TimingLocator.CLICK_CREATE_BUTTON);
-
-        return ifTextExists(TimingLocator.TIMING_STATE, timingData.getTimingData("offline"));
-    }
-
-    /**
-     * edit timing
-     */
-    public boolean editTiming() throws InterruptedException {
-        // click timing button
-        System.out.println("Click timing  management button");
-        clickButton(TimingLocator.CLICK_TIMING_MANAGEMENT_BUTTON);
-
-        // Determine whether the workflow name exists
-        ifTextExists(TimingLocator.WORKFLOW_NAME, timingData.getTimingData("offline"));
-
-        System.out.println("Click edit timing button");
-        clickButton(TimingLocator.CLICK_EDIT_TIMING_BUTTON);
-        System.out.println("Click execution timing button");
-        clickButton(TimingLocator.CLICK_EXECUTION_TIMING_BUTTON);
-
-        clickElement(TimingLocator.SELECT_FAILURE_STRATEGY_END);
-        clickElement(TimingLocator.SELECT_FAILURE_STRATEGY_CONTINUE);
-        clickElement(TimingLocator.CLICK_NOTICE_STRATEGY);
-        clickElement(TimingLocator.SELECT_NOTICE_STRATEGY);
-        clickElement(TimingLocator.CLICK_PROCESS_PRIORITY);
-        clickElement(TimingLocator.SELECT_PROCESS_PRIORITY);
-        clickElement(TimingLocator.CLICK_WORKER_GROUP);
-        clickElement(TimingLocator.SELECT_WORKER_GROUP);
-        clickElement(TimingLocator.CLICK_NOTICE_GROUP);
-        clickElement(TimingLocator.SELECT_NOTICE_GROUP);
-        sendInput(TimingLocator.INPUT_RECIPIENT, timingData.getTimingData("editRecipient"));
-        sendInput(TimingLocator.INPUT_Cc, timingData.getTimingData("editCc"));
-        clickButton(TimingLocator.CLICK_CREATE_BUTTON);
-
-        return ifTitleContains(timingData.getTimingData("timingTitle"));
-    }
-
-
-    /**
-     * online timing
-     */
-    public boolean onlineTiming() throws InterruptedException {
-        flushPage();
-        // Determine whether the timing is offline
-        ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("offline"));
-
-        // click online timing button
-        System.out.println("Click online timing  button");
-        clickElement(TimingLocator.CLICK_ONLINE_TIMING_BUTTON);
-
-        return ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("online"));
-    }
-
-
-    /**
-     * offline timing
-     */
-    public boolean offlineTiming() throws InterruptedException {
-        flushPage();
-        // Determine whether the timing is online
-        ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("online"));
-
-        // click offline timing button
-        System.out.println("Click offline timing  button");
-        clickElement(TimingLocator.CLICK_OFFLINE_TIMING_BUTTON);
-
-        return ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("offline"));
-    }
-
-
-
-    /**
-     * delete timing
-     */
-    public boolean deleteTiming() throws InterruptedException {
-        // Determine whether the timing is offline
-        ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("offline"));
-
-        // click offline timing button
-        System.out.println("Click delete timing  button");
-        clickButton(TimingLocator.CLICK_DELETE_TIMING_BUTTON);
-        clickButton(TimingLocator.CLICK_CONFIRM_DELETE_TIMING_BUTTON);
-
-        return ifTextExists(TimingLocator.TIMING_STATE, "-");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/WorkflowDefinePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/WorkflowDefinePage.java
deleted file mode 100644
index 72722d8..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/WorkflowDefinePage.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * 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.page.project;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.project.ProjectData;
-import org.apache.dolphinscheduler.data.project.WorkflowDefineData;
-import org.apache.dolphinscheduler.locator.project.ProjectLocator;
-import org.apache.dolphinscheduler.locator.project.WorkflowDefineLocator;
-import org.openqa.selenium.WebDriver;
-
-public class WorkflowDefinePage extends PageCommon {
-    WorkflowDefineData workflowDefineData = new WorkflowDefineData();
-    ProjectData projectData = new ProjectData();
-
-    public WorkflowDefinePage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * jump create workflow page
-     */
-
-    public boolean jumpWorkflowPage() throws InterruptedException {
-        ifTextExists(ProjectLocator.LIST_PROJECT_NAME, projectData.getProjectData("projectName"));
-
-        // click project name
-        clickElement(WorkflowDefineLocator.CLICK_PROJECT_NAME);
-
-        ifTextExists(WorkflowDefineLocator.CLICK_WORKFLOW_DEFINE,workflowDefineData.getWorkflowDefineData("workflowDefine"));
-
-        System.out.println("Click on workflow define to jump to workflow define page");
-        // click workflow define
-        clickElement(WorkflowDefineLocator.CLICK_WORKFLOW_DEFINE);
-
-        return ifTitleContains(workflowDefineData.getWorkflowDefineData("workflowDefineTitle"));
-    }
-
-    public boolean createWorkflow() throws InterruptedException {
-        System.out.println("Click create workflow button");
-        // click create workflow button
-        clickElement(WorkflowDefineLocator.CLICK_CREATE_WORKFLOW_BUTTON);
-
-        System.out.println("drag shell task");
-        //drag shell_task
-        dragAndDrop(WorkflowDefineLocator.MOUSE_DOWN_AT_SHELL, WorkflowDefineLocator.MOUSE_MOVE_SHELL_AT_DAG);
-
-        //input shell task _name
-        sendInput(WorkflowDefineLocator.INPUT_SHELL_TASK_NAME, workflowDefineData.getWorkflowDefineData("shellTaskName"));
-        //click stop run type
-        clickElement(WorkflowDefineLocator.CLICK_STOP_RUN_TYPE);
-
-        //click normal run type
-        clickElement(WorkflowDefineLocator.CLICK_NORMAL_RUN_TYPE);
-
-        //input shell task description
-        sendInput(WorkflowDefineLocator.INPUT_SHELL_TASK_DESCRIPTION, workflowDefineData.getWorkflowDefineData("shellTaskDescription"));
-
-        //select task priority
-        clickElement(WorkflowDefineLocator.CLICK_TASK_PRIORITY);
-        clickElement(WorkflowDefineLocator.SELECT_TASK_PRIORITY);
-
-        //select work group
-        clickElement(WorkflowDefineLocator.CLICK_WORK_GROUP);
-        clickElement(WorkflowDefineLocator.SELECT_WORK_GROUP);
-
-        //select number of failed retries
-        clickElement(WorkflowDefineLocator.SELECT_FAIL_RETRIES_NUMBER);
-
-        //select failed retry interval
-        clickElement(WorkflowDefineLocator.SELECT_FAIL_RETRIES_INTERVAL);
-
-        //click timeout alarm
-        clickElement(WorkflowDefineLocator.CLICK_TIMEOUT_ALARM);
-
-        //select timeout fail
-        clickElement(WorkflowDefineLocator.SELECT_TIMEOUT_FAIL);
-
-        //cancel timeout alarm
-        clickElement(WorkflowDefineLocator.CANCEL_TIMEOUT_ALARM);
-
-        //select timeout alarm
-        clickElement(WorkflowDefineLocator.SELECT_TIMEOUT_ALARM);
-
-        //clear timeout
-        clearInput(WorkflowDefineLocator.SELECT_TIMEOUT);
-        clearInput(WorkflowDefineLocator.SELECT_TIMEOUT);
-
-        //input timeout
-        sendInput(WorkflowDefineLocator.SELECT_TIMEOUT, workflowDefineData.getWorkflowDefineData("taskTimeout"));
-
-        //click codeMirror and input script
-        inputCodeMirror(WorkflowDefineLocator.CLICK_CODE_MIRROR, WorkflowDefineLocator.INPUT_SCRIPT, workflowDefineData.getWorkflowDefineData("shellScript"));
-        scrollToElementBottom(WorkflowDefineLocator.SCROLL_BOTTOM);
-
-        //click custom parameters
-        clickElement(WorkflowDefineLocator.CLICK_CUSTOM_PARAMETERS);
-
-        //input custom parameters
-        sendInput(WorkflowDefineLocator.INPUT_CUSTOM_PARAMETERS, workflowDefineData.getWorkflowDefineData("customParameter1"));
-
-        //input custom parameters value
-        sendInput(WorkflowDefineLocator.INPUT_CUSTOM_PARAMETERS_VALUE, workflowDefineData.getWorkflowDefineData("customParameterValue1"));
-
-        //click add custom parameters
-        clickElement(WorkflowDefineLocator.CLICK_ADD_CUSTOM_PARAMETERS);
-
-        scrollToElementBottom(WorkflowDefineLocator.SCROLL_BOTTOM);
-
-        //input add custom parameters
-        sendInput(WorkflowDefineLocator.INPUT_ADD_CUSTOM_PARAMETERS, workflowDefineData.getWorkflowDefineData("customParameter2"));
-
-        //input add custom parameters value
-        sendInput(WorkflowDefineLocator.INPUT_ADD_CUSTOM_PARAMETERS_VALUE, workflowDefineData.getWorkflowDefineData("customParameterValue2"));
-
-        //click delete custom parameters
-        clickElement(WorkflowDefineLocator.CLICK_DELETE_CUSTOM_PARAMETERS);
-
-        //click submit button
-        clickElement(WorkflowDefineLocator.CLICK_SUBMIT_BUTTON);
-        System.out.println("Task node set up successfully");
-        System.out.println("move to Dag Element ");
-        moveToDragElement(WorkflowDefineLocator.MOUSE_MOVE_SHELL_AT_DAG,-300,-100);
-
-        System.out.println("copy task");
-        mouseRightClickElement(WorkflowDefineLocator.MOUSE_RIGHT_CLICK);
-        clickButton(WorkflowDefineLocator.COPY_TASK);
-        clickButton(WorkflowDefineLocator.CLICK_LINE);
-        mouseMovePosition(WorkflowDefineLocator.LINE_SOURCES_TASK,WorkflowDefineLocator.LINE_TARGET_TASK);
-        return ifTitleContains(workflowDefineData.getWorkflowDefineData("createWorkflowTitle"));
-    }
-
-    /**
-     * save  workflow
-     */
-    public boolean saveWorkflow() throws InterruptedException {
-        System.out.println("start to save workflow ");
-
-        //click save workflow button
-        clickElement(WorkflowDefineLocator.CLICK_SAVE_WORKFLOW_BUTTON);
-
-        //input  workflow name
-        sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_NAME, workflowDefineData.getWorkflowDefineData("workflowName"));
-
-        //input  workflow description
-        sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_DESCRIPTION, workflowDefineData.getWorkflowDefineData("workflowDescription"));
-
-        //select tenant
-        clickElement(WorkflowDefineLocator.CLICK_TENANT);
-        clickElement(WorkflowDefineLocator.SELECT_TENANT);
-
-        //click workflow timeout alarm
-        clickElement(WorkflowDefineLocator.CLICK_WORKFLOW_TIMEOUT_ALARM);
-        clearInput(WorkflowDefineLocator.INPUT_WORKFLOW_TIMEOUT);
-
-        //input workflow timeout
-        sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_TIMEOUT, workflowDefineData.getWorkflowDefineData("workflowTimeout"));
-
-        //click workflow  global parameters
-        clickElement(WorkflowDefineLocator.CLICK_WORKFLOW_GLOBAL_PARAMETERS);
-
-        //input workflow  global parameters
-        sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_GLOBAL_PARAMETERS, workflowDefineData.getWorkflowDefineData("globalParameter1"));
-
-        //input workflow  global parameters value
-        sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_GLOBAL_PARAMETERS_VALUES, workflowDefineData.getWorkflowDefineData("globalParameterValue1"));
-
-        //click to add workflow  global parameters
-        clickElement(WorkflowDefineLocator.CLICK_ADD_WORKFLOW_GLOBAL_PARAMETERS);
-
-        //input to  add workflow  global parameters
-        sendInput(WorkflowDefineLocator.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS, workflowDefineData.getWorkflowDefineData("globalParameter2"));
-
-        //input to add workflow  global parameters value
-        sendInput(WorkflowDefineLocator.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS_VALUES, workflowDefineData.getWorkflowDefineData("globalParameterValue2"));
-
-        //delete workflow  global parameters value
-        clickElement(WorkflowDefineLocator.CLICK_DELETE_WORKFLOW_GLOBAL_PARAMETERS);
-
-        //click add button
-        System.out.println("submit workflow");
-        clickButton(WorkflowDefineLocator.CLICK_ADD_BUTTON);
-
-        return ifTitleContains(workflowDefineData.getWorkflowDefineData("createWorkflowTitle"));
-    }
-
-    public boolean onlineWorkflow() throws InterruptedException {
-        clickElement(WorkflowDefineLocator.CLICK_WORKFLOW_DEFINE);
-
-        // Determine whether the workflow status is offline
-        ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("offline"));
-
-        // click online button
-        System.out.println("Click online workflow button");
-        clickButton(WorkflowDefineLocator.CLICK_ONLINE_WORKFLOW_BUTTON);
-
-        return ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("online"));
-    }
-
-    public boolean offlineWorkflow() throws InterruptedException {
-        clickElement(WorkflowDefineLocator.CLICK_WORKFLOW_DEFINE);
-
-        // Determine whether the workflow status is online
-        ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("online"));
-
-        // click offline button
-        System.out.println("offline workflow");
-        clickButton(WorkflowDefineLocator.CLICK_OFFLINE_WORKFLOW_BUTTON);
-
-        return ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("offline"));
-    }
-
-
-    public boolean deleteWorkflow() throws InterruptedException {
-        //click  delete workflow
-        clickElement(WorkflowDefineLocator.CLICK_WORKFLOW_DEFINE);
-
-        // Determine whether the workflow status is offline
-        ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("offline"));
-
-        clickButton(WorkflowDefineLocator.DELETE_WORKFLOW_BOTTOM);
-
-        //click confirm delete project
-        clickButton(WorkflowDefineLocator.CONFIRM_DELETE_WORKFLOW_BOTTOM);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(workflowDefineData.getWorkflowDefineData("workflowDefineTitle"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java
deleted file mode 100644
index 97e167e..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.page.security;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.security.AlertManageData;
-import org.apache.dolphinscheduler.locator.security.AlertManageLocator;
-import org.openqa.selenium.WebDriver;
-
-public class AlertManagePage extends PageCommon {
-    AlertManageData alertManageData = new AlertManageData();
-
-    /**
-     * Unique constructor
-     * @param driver driver
-     */
-    public AlertManagePage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * create alert
-     *
-     * @return Whether to enter the specified page after create tenant
-     */
-    public boolean createAlert() throws InterruptedException {
-        // click  alert manage
-        System.out.println("start click alert manage button");
-        clickElement(AlertManageLocator.CLICK_ALERT_MANAGE);
-
-        //determine whether the create alert button exists
-        ifTextExists(AlertManageLocator.CLICK_CREATE_ALERT,alertManageData.getAlertData("createAlert"));
-
-        // click  create alert button
-        System.out.println("start click create alert  button");
-        clickElement(AlertManageLocator.CLICK_CREATE_ALERT);
-        // input alert data
-        System.out.println("start input  alert ");
-        sendInput(AlertManageLocator.INPUT_ALERT_NAME, alertManageData.getAlertData("alertName"));
-
-        clickElement(AlertManageLocator.CLICK_ALERT_TYPE);
-
-        clickElement(AlertManageLocator.SELECT_ALERT_EMAIL);
-
-        sendInput(AlertManageLocator.INPUT_ALERT_DESCRIPTION, alertManageData.getAlertData("description"));
-
-        // click  button
-        clickButton(AlertManageLocator.SUBMIT_ALERT);
-
-        // Whether to enter the specified page after submit
-        return ifTextExists(AlertManageLocator.ALERT_NAME, alertManageData.getAlertData("alertName"));
-    }
-
-    public boolean deleteAlert() throws InterruptedException {
-
-        // click  alert manage
-        clickElement(AlertManageLocator.CLICK_ALERT_MANAGE);
-
-        ifTextExists(AlertManageLocator.ALERT_NAME, alertManageData.getAlertData("alertName"));
-
-        // click  delete alert button
-        clickButton(AlertManageLocator.DELETE_ALERT_BUTTON);
-
-        // click confirm delete button
-        clickButton(AlertManageLocator.CONFIRM_DELETE_ALERT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(alertManageData.getAlertData("alertTitle"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java
deleted file mode 100644
index f6a55bb..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.page.security;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.security.QueueManageData;
-import org.apache.dolphinscheduler.locator.security.QueueManageLocator;
-import org.openqa.selenium.WebDriver;
-
-public class QueueManagePage extends PageCommon {
-    QueueManageData queueManageData = new QueueManageData();
-
-    /**
-     * Unique constructor
-     * @param driver driver
-     */
-    public QueueManagePage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * create queue
-     *
-     * @return Whether to enter the specified page after create queue
-     */
-    public boolean createQueue() throws InterruptedException {
-        // click queue manage
-        System.out.println("start click queue manage button");
-        clickElement(QueueManageLocator.CLICK_QUEUE_MANAGE);
-
-        //determine whether the create queue button exists
-        ifTextExists(QueueManageLocator.CLICK_CREATE_QUEUE, queueManageData.getQueueData("createQueueButton"));
-
-        // click  create queue button
-        System.out.println("start click create queue  button");
-        clickButton(QueueManageLocator.CLICK_CREATE_QUEUE);
-
-        // input queue data
-        System.out.println("start input queue");
-        sendInput(QueueManageLocator.INPUT_QUEUE_NAME, queueManageData.getQueueData("queueName"));
-
-        sendInput(QueueManageLocator.INPUT_QUEUE_VALUE, queueManageData.getQueueData("queueValue"));
-
-        // click  button
-        clickButton(QueueManageLocator.SUBMIT_QUEUE);
-
-        // Whether to enter the specified page after submit
-        return ifTextExists(QueueManageLocator.LIST_QUEUE_NAME, queueManageData.getQueueData("queueName"));
-    }
-
-
-    /**
-     * edit queue
-     *
-     * @return Whether to enter the specified page after create queue
-     */
-    public boolean editQueue() throws InterruptedException {
-        // click queue manage
-        clickElement(QueueManageLocator.CLICK_QUEUE_MANAGE);
-
-        ifTextExists(QueueManageLocator.LIST_QUEUE_NAME, queueManageData.getQueueData("queueName"));
-
-        // click  edit queue button
-        clickButton(QueueManageLocator.CLICK_EDIT_QUEUE);
-
-        // input queue data
-        clearSendInput(QueueManageLocator.INPUT_QUEUE_NAME, queueManageData.getQueueData("editQueueName"));
-        clearSendInput(QueueManageLocator.INPUT_QUEUE_VALUE, queueManageData.getQueueData("editQueueValue"));
-
-        // click  button
-        clickButton(QueueManageLocator.SUBMIT_QUEUE);
-
-        // Whether to enter the specified page after submit
-        return ifTextExists(QueueManageLocator.LIST_QUEUE_NAME, queueManageData.getQueueData("editQueueName"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TenantManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TenantManagePage.java
deleted file mode 100644
index d452486..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TenantManagePage.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.page.security;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.security.TenantManageData;
-import org.apache.dolphinscheduler.locator.security.TenantManageLocator;
-import org.openqa.selenium.WebDriver;
-
-public class TenantManagePage extends PageCommon {
-    TenantManageData tenantManageData = new TenantManageData();
-
-    /**
-     * Unique constructor
-     * @param driver driver
-     */
-    public TenantManagePage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * jump security page
-     *
-     * @return Whether to enter the specified page after create tenant
-     */
-    public boolean jumpSecurity() throws InterruptedException {
-        clickTopElement(TenantManageLocator.SECURITY_CENTER);
-        return ifTitleContains(tenantManageData.getTenantData("tenantTitle"));
-    }
-
-    /**
-     * createTenant
-     *
-     * @return Whether to enter the specified page after create tenant
-     */
-    public boolean createTenant() throws InterruptedException {
-        clickButton(TenantManageLocator.TENANT_MANAGE);
-
-        //create tenant
-        clickButton(TenantManageLocator.CREATE_TENANT_BUTTON);
-
-        // tenant data
-        sendInput(TenantManageLocator.TENANT_INPUT_CODE, tenantManageData.getTenantData("tenantCode"));
-        sendInput(TenantManageLocator.QUEUE, tenantManageData.getTenantData("queue"));
-        sendInput(TenantManageLocator.DESCRIPTION, tenantManageData.getTenantData("description"));
-
-        // click  button
-        clickButton(TenantManageLocator.SUBMIT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTextExists(TenantManageLocator.TENANT_CODE_FIRST, tenantManageData.getTenantData("tenantCode"));
-    }
-
-    public boolean deleteTenant() throws InterruptedException {
-        clickElement(TenantManageLocator.TENANT_MANAGE);
-
-        // click delete button
-        clickButton(TenantManageLocator.DELETE_TENANT_BUTTON);
-
-        //click confirm delete button
-        clickButton(TenantManageLocator.CONFIRM_DELETE_TENANT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(tenantManageData.getTenantData("tenantTitle"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java
deleted file mode 100644
index 35a9377..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.page.security;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.security.TokenManageData;
-import org.apache.dolphinscheduler.locator.security.TokenManageLocator;
-import org.openqa.selenium.WebDriver;
-
-public class TokenManagePage extends PageCommon {
-    TokenManageData tokenManageData = new TokenManageData();
-
-    public TokenManagePage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * create token
-     *
-     * @return Whether to enter the specified page after create tenant
-     */
-    public boolean createToken() throws InterruptedException {
-        //create token
-        clickElement(TokenManageLocator.CLICK_TOKEN_MANAGE);
-
-        //determine whether the create token button exists
-        ifTextExists(TokenManageLocator.CLICK_CREATE_TOKEN, tokenManageData.getTokenData("createTokenText"));
-
-        // click  create token button
-        clickButton(TokenManageLocator.CLICK_CREATE_TOKEN);
-
-        ifTextExists(TokenManageLocator.CREATE_TOKEN_POPUP,tokenManageData.getTokenData("createTokenText"));
-
-        clickButton(TokenManageLocator.SELECT_USER);
-
-        clickButton(TokenManageLocator.CLICK_GENERATE_TOKEN_BUTTON);
-        Thread.sleep(2000);
-
-        // click  button
-        clickButton(TokenManageLocator.CLICK_SUBMIT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(tokenManageData.getTokenData("tokenTitle"));
-    }
-
-    /**
-     * edit token
-     *
-     * @return Whether to enter the specified page after edit tenant
-     */
-    public boolean editToken() throws InterruptedException {
-        // edit token
-        ifTextExists(TokenManageLocator.TOKEN, "1");
-
-        // determine the existence of the editing token
-        locateElement(TokenManageLocator.EDIT_TOKEN_BUTTON);
-
-        // click  edit token button
-        clickButton(TokenManageLocator.EDIT_TOKEN_BUTTON);
-
-        clickButton(TokenManageLocator.SELECT_USER);
-
-        clickButton(TokenManageLocator.CLICK_GENERATE_TOKEN_BUTTON);
-        Thread.sleep(2000);
-
-        // click  button
-        clickButton(TokenManageLocator.CLICK_SUBMIT_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(tokenManageData.getTokenData("tokenTitle"));
-    }
-
-
-    //delete token
-    public boolean deleteToken() throws InterruptedException {
-        // click  token manage
-        clickElement(TokenManageLocator.CLICK_TOKEN_MANAGE);
-
-        clickButton(TokenManageLocator.CLICK_DELETE_BUTTON);
-        clickButton(TokenManageLocator.CLICK_CONFIRM_DELETE_BUTTON);
-
-        return ifTitleContains(tokenManageData.getTokenData("tokenTitle"));
-    }
-
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/UserManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/UserManagePage.java
deleted file mode 100644
index b489d12..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/UserManagePage.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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.page.security;
-
-import org.apache.dolphinscheduler.common.PageCommon;
-import org.apache.dolphinscheduler.data.security.UserManageData;
-import org.apache.dolphinscheduler.locator.security.UserManageLocator;
-import org.openqa.selenium.WebDriver;
-
-public class UserManagePage extends PageCommon {
-    UserManageData userManageData = new UserManageData();
-
-    public UserManagePage(WebDriver driver) {
-        super(driver);
-    }
-
-    /**
-     * create user
-     *
-     * @return Whether to enter the specified page after create tenant
-     */
-    public boolean createUser() throws InterruptedException {
-        // click  user manage
-        clickElement(UserManageLocator.CLICK_USER_MANAGE);
-        //determine whether the create user button exists
-        ifTextExists(UserManageLocator.CLICK_CREATE_USER_BUTTON, userManageData.getUserData("createUserButton"));
-
-        // click  create user button
-        clickButton(UserManageLocator.CLICK_CREATE_USER_BUTTON);
-
-        // input user data
-        sendInput(UserManageLocator.INPUT_USERNAME,  userManageData.getUserData("userName"));
-        sendInput(UserManageLocator.INPUT_PASSWORD, userManageData.getUserData("password"));
-        clickButton(UserManageLocator.CLICK_TENANT);
-        clickButton(UserManageLocator.SELECT_TENANT);
-        clickButton(UserManageLocator.CLICK_QUEUE);
-        clickButton(UserManageLocator.SELECT_QUEUE);
-        sendInput(UserManageLocator.INPUT_EMAIL, userManageData.getUserData("email"));
-        sendInput(UserManageLocator.INPUT_PHONE, userManageData.getUserData("phone"));
-        clickElement(UserManageLocator.SELECT_STOP_STATE);
-        clickElement(UserManageLocator.SELECT_ENABLE_STATE);
-
-        // click  button
-        clickButton(UserManageLocator.SUBMIT);
-
-        // Whether to enter the specified page after submit
-        return ifTextExists(UserManageLocator.USERNAME, userManageData.getUserData("userName"));
-    }
-
-    /**
-     * edit general user
-     */
-    public boolean editGeneralUser() throws InterruptedException {
-        //edit general user
-        // click  user manage
-        System.out.println("start edit general user");
-        clickElement(UserManageLocator.CLICK_USER_MANAGE);
-
-        //determine whether the general user exists
-        ifTextExists(UserManageLocator.USERNAME, userManageData.getUserData("userName"));
-
-        // click  edit user button
-        clickButton(UserManageLocator.EDIT_GENERAL_USER_BUTTON );
-
-        // input user data
-        clearSendInput(UserManageLocator.INPUT_USERNAME, userManageData.getUserData("editUserName"));
-        clearSendInput(UserManageLocator.INPUT_PASSWORD, userManageData.getUserData("editPassword"));
-
-        clickButton(UserManageLocator.CLICK_TENANT);
-        clickButton(UserManageLocator.SELECT_TENANT);
-
-        clickButton(UserManageLocator.CLICK_QUEUE);
-        clickButton(UserManageLocator.SELECT_QUEUE);
-
-        clearSendInput(UserManageLocator.INPUT_EMAIL, userManageData.getUserData("editEmail"));
-        clearSendInput(UserManageLocator.INPUT_PHONE, userManageData.getUserData("editPhone"));
-
-        clickElement(UserManageLocator.SELECT_STOP_STATE);
-        clickElement(UserManageLocator.SELECT_ENABLE_STATE);
-
-        // click  button
-        clickButton(UserManageLocator.SUBMIT);
-        System.out.println("end edit general user");
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(userManageData.getUserData("userTitle"));
-    }
-
-    /**
-     * edit admin user
-     */
-    public boolean editAdminUser() throws InterruptedException {
-        //edit admin user
-        // click  user manage
-        System.out.println("start edit admin user");
-        clickElement(UserManageLocator.CLICK_USER_MANAGE);
-
-        //determine whether the general user edit success
-        ifTextExists(UserManageLocator.USER_NAME,userManageData.getUserData("editUserName"));
-
-        // click  edit user button
-        clickButton(UserManageLocator.EDIT_ADMIN_USER_BUTTON );
-
-        // select tenant
-        clickButton(UserManageLocator.CLICK_TENANT);
-
-        clickButton(UserManageLocator.SELECT_TENANT);
-
-        // click  button
-        clickButton(UserManageLocator.SUBMIT);
-        System.out.println("end edit admin user");
-        // Whether to enter the specified page after submit
-        return ifTitleContains(userManageData.getUserData("userTitle"));
-    }
-
-
-    /**
-     * delete user
-     */
-    public boolean deleteUser() throws InterruptedException {
-        System.out.println("jump to user manage");
-        // click  user manage
-        clickElement(UserManageLocator.CLICK_USER_MANAGE);
-
-        // click  delete user button
-        System.out.println("click delete user");
-        clickButton(UserManageLocator.DELETE_USER_BUTTON );
-
-        // click confirm delete button
-        System.out.println("click confirm delete user");
-        clickButton(UserManageLocator.CONFIRM_DELETE_USER_BUTTON);
-
-        // Whether to enter the specified page after submit
-        return ifTitleContains(userManageData.getUserData("userTitle"));
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/TestLogin.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/TestLogin.java
deleted file mode 100644
index 5c491f3..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/TestLogin.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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;
-
-import org.apache.dolphinscheduler.page.LoginPage;
-import org.testng.annotations.Test;
-
-import static org.apache.dolphinscheduler.base.BaseTest.driver;
-
-@Test(groups={"functionTests","login"})
-public class TestLogin {
-    private LoginPage loginPage;
-
-    @Test(description = "TestLogin")
-    public void testLogin() throws InterruptedException {
-        loginPage = new LoginPage(driver);
-        System.out.println("===================================");
-        System.out.println("jump to Chinese login page");
-        loginPage.jumpPageChinese();
-
-        System.out.println("start login");
-        assert  loginPage.login();
-        System.out.println("end login");
-        System.out.println("===================================");
-
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteProjectTest.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteProjectTest.java
deleted file mode 100644
index dc45b6e..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteProjectTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.project.CreateProjectPage;
-import org.testng.annotations.Test;
-
-public class DeleteProjectTest extends BaseTest {
-    private CreateProjectPage createProjectPage;
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","project"},description = "DeleteProjectTest",priority=7)
-    public void testDeleteProject() throws InterruptedException {
-        createProjectPage = new CreateProjectPage(driver);
-        //jump to project manage page
-        System.out.println("jump to the project manage page to delete project");
-        createProjectPage.jumpProjectManagePage();
-
-        //assert tenant manage page
-        System.out.println("start delete project");
-        assert createProjectPage.deleteProject();
-        System.out.println("end delete project");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteTenantTest.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteTenantTest.java
deleted file mode 100644
index 067bc4a..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteTenantTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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",priority=9)
-    public void testDeleteTenant() throws InterruptedException {
-        tenantManagePage = new TenantManagePage(driver);
-        //assert tenant manage page
-        System.out.println("jump to security to delete tenant");
-        tenantManagePage.jumpSecurity();
-
-        System.out.println("start delete tenant");
-        assert tenantManagePage.deleteTenant();
-        System.out.println("end delete tenant");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteUserTest.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteUserTest.java
deleted file mode 100644
index 4507192..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteUserTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.apache.dolphinscheduler.page.security.UserManagePage;
-import org.testng.annotations.Test;
-
-public class DeleteUserTest extends BaseTest {
-    private UserManagePage userManagePage;
-    private TenantManagePage tenantManagePage;
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","user" },description = "DeleteUserTest",priority=8)
-    public void testDeleteUser() throws InterruptedException {
-        tenantManagePage = new TenantManagePage(driver);
-        System.out.println("jump to security to delete user");
-        tenantManagePage.jumpSecurity();
-
-        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("===================================");
-    }
-}
-
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteWorkflowTest.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteWorkflowTest.java
deleted file mode 100644
index 48eb091..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/deleteData/DeleteWorkflowTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.project.CreateProjectPage;
-import org.apache.dolphinscheduler.page.project.CreateWorkflowPage;
-import org.testng.annotations.Test;
-
-public class DeleteWorkflowTest extends BaseTest {
-    private CreateWorkflowPage createWorkflowPage;
-    private CreateProjectPage createProjectPage;
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","workflow"},description = "DeleteWorkflowTest",priority=6)
-    public void testDeleteWorkflow() throws InterruptedException {
-        createProjectPage = new CreateProjectPage(driver);
-        //jump to project manage page
-        System.out.println("jump to the project manage page to delete workflow");
-        createProjectPage.jumpProjectManagePage();
-
-        createWorkflowPage = new CreateWorkflowPage(driver);
-        createWorkflowPage.jumpWorkflowPage();
-        //assert tenant manage page
-        System.out.println("start delete workflow");
-        assert createWorkflowPage.deleteWorkflow();
-        System.out.println("end delete workflow");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteAlert.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteAlert.java
deleted file mode 100644
index 5db107b..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteAlert.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.testDeleteData;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.AlertManagePage;
-import org.apache.dolphinscheduler.page.security.TenantManagePage;
-import org.testng.annotations.Test;
-
-public class TestDeleteAlert extends BaseTest {
-    private AlertManagePage alertManagePage;
-    private TenantManagePage tenantManagePage;
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","alert" },description = "TestDeleteAlert",priority=8)
-    public void testDeleteAlert() throws InterruptedException {
-        tenantManagePage = new TenantManagePage(driver);
-        System.out.println("jump to testSecurity to delete alert");
-        tenantManagePage.jumpSecurity();
-
-        alertManagePage = new AlertManagePage(driver);
-
-        //assert alert manage page
-        System.out.println("start delete alert");
-        assert alertManagePage.deleteAlert();
-        System.out.println("end delete alert");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteProject.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteProject.java
deleted file mode 100644
index 9a1374c..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteProject.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.testDeleteData;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.project.ProjectPage;
-import org.testng.annotations.Test;
-
-public class TestDeleteProject extends BaseTest {
-    private ProjectPage createProjectPage;
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","project"},description = "TestDeleteProject")
-    public void testDeleteProject() throws InterruptedException {
-        createProjectPage = new ProjectPage(driver);
-        //jump to project manage page
-        System.out.println("jump to the project manage page to delete project");
-        createProjectPage.jumpProjectManagePage();
-
-        //assert tenant manage page
-        System.out.println("start delete project");
-        assert createProjectPage.deleteProject();
-        System.out.println("end delete project");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteTenant.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteTenant.java
deleted file mode 100644
index 9b162a4..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteTenant.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.testDeleteData;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.TenantManagePage;
-import org.testng.annotations.Test;
-
-public class TestDeleteTenant extends BaseTest {
-    private TenantManagePage tenantManagePage;
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","createTenant"},description = "TestDeleteTenant")
-    public void testDeleteTenant() throws InterruptedException {
-        tenantManagePage = new TenantManagePage(driver);
-        //assert tenant manage page
-        System.out.println("jump to security to delete tenant");
-        tenantManagePage.jumpSecurity();
-
-        System.out.println("start delete tenant");
-        assert tenantManagePage.deleteTenant();
-        System.out.println("end delete tenant");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteToken.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteToken.java
deleted file mode 100644
index d524f00..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteToken.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.testDeleteData;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.TenantManagePage;
-import org.apache.dolphinscheduler.page.security.TokenManagePage;
-import org.testng.annotations.Test;
-
-public class TestDeleteToken extends BaseTest {
-    private TokenManagePage tokenManagePage;
-    private TenantManagePage tenantManagePage;
-
-
-    @Test(groups = {"functionTests"}, dependsOnGroups = {"login", "token"}, description = "TestDeleteToken")
-    public void testUserManage() throws InterruptedException {
-        tenantManagePage = new TenantManagePage(driver);
-        System.out.println("jump to security to delete token");
-        tenantManagePage.jumpSecurity();
-
-        tokenManagePage = new TokenManagePage(driver);
-        //delete token
-        System.out.println("start delete token");
-        assert tokenManagePage.deleteToken();
-        System.out.println("end delete token");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteUser.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteUser.java
deleted file mode 100644
index cdd226f..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteUser.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.testDeleteData;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.TenantManagePage;
-import org.apache.dolphinscheduler.page.security.UserManagePage;
-import org.testng.annotations.Test;
-
-public class TestDeleteUser extends BaseTest {
-    private UserManagePage userManagePage;
-    private TenantManagePage tenantManagePage;
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","user" },description = "TestDeleteUser")
-    public void testDeleteUser() throws InterruptedException {
-        tenantManagePage = new TenantManagePage(driver);
-        System.out.println("jump to security to delete user");
-        tenantManagePage.jumpSecurity();
-
-        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("===================================");
-    }
-}
-
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteWorkflow.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteWorkflow.java
deleted file mode 100644
index 3544b19..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteWorkflow.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.testDeleteData;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.project.ProjectPage;
-import org.apache.dolphinscheduler.page.project.WorkflowDefinePage;
-import org.testng.annotations.Test;
-
-public class TestDeleteWorkflow extends BaseTest {
-    private WorkflowDefinePage createWorkflowPage;
-    private ProjectPage createProjectPage;
-
-    /**
-     * offline workflow
-     * @throws InterruptedException
-     */
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","workflow"},description = "TestDeleteWorkflow")
-    public void testOfflineWorkflow() throws InterruptedException {
-        createWorkflowPage = new WorkflowDefinePage(driver);
-        System.out.println("start offline workflow");
-        assert createWorkflowPage.offlineWorkflow();
-        System.out.println("end offline workflow");
-        System.out.println("===================================");
-    }
-
-    @Test(groups={"functionTests"},dependsOnGroups = { "login","workflow"},description = "TestDeleteWorkflow")
-    public void testDeleteWorkflow() throws InterruptedException {
-        System.out.println("start delete workflow");
-        assert createWorkflowPage.deleteWorkflow();
-        System.out.println("end delete workflow");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestProcessInstance.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestProcessInstance.java
deleted file mode 100644
index dc77e5f..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestProcessInstance.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.testProject;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.project.ProcessInstancePage;
-import org.testng.annotations.Test;
-
-public class TestProcessInstance extends BaseTest {
-    private ProcessInstancePage processInstancePage;
-
-    @Test(groups={"functionTests","processInstance"},dependsOnGroups = { "login","workflow" },description = "testRerun")
-    public void testRerun() throws InterruptedException {
-        processInstancePage = new ProcessInstancePage(driver);
-        //rerun workflow
-        System.out.println("start rerun  workflow");
-        processInstancePage.rerunWorkflowPage();
-        System.out.println("end rerun  workflow");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestProject.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestProject.java
deleted file mode 100644
index 75c41be..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestProject.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.testProject;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.project.ProjectPage;
-import org.testng.annotations.Test;
-
-public class TestProject extends BaseTest {
-    private ProjectPage projectPage;
-
-    @Test(groups={"functionTests","project"},dependsOnGroups = { "login" },description = "CreateProjectTest")
-    public void testCreateProject() throws InterruptedException {
-        projectPage = new ProjectPage(driver);
-        // enter user manage page
-        System.out.println("jump to the projectManage page to create project ");
-        projectPage.jumpProjectManagePage();
-        //assert user manage page
-        System.out.println("start create project");
-        assert projectPage.createProject();
-        System.out.println("end create project");
-        System.out.println("===================================");
-    }
-
-}
-
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestRunWorkflow.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestRunWorkflow.java
deleted file mode 100644
index 70bb777..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestRunWorkflow.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.testProject;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.project.ProjectPage;
-import org.apache.dolphinscheduler.page.project.WorkflowDefinePage;
-import org.apache.dolphinscheduler.page.project.RunWorkflowPage;
-import org.testng.annotations.Test;
-
-public class TestRunWorkflow extends BaseTest {
-    private WorkflowDefinePage createWorkflowPage;
-    private ProjectPage projectPage;
-    private RunWorkflowPage runWorkflowPage;
-
-
-    @Test(groups={"functionTests","runWorkflow"},dependsOnGroups = { "login","workflow" },description = "TestRunWorkflow")
-    public void testRunWorkflow() throws InterruptedException {
-        runWorkflowPage = new RunWorkflowPage(driver);
-
-        projectPage = new ProjectPage(driver);
-        System.out.println("start run workflow");
-        assert runWorkflowPage.runWorkflow();
-        System.out.println("end run workflow");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestTiming.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestTiming.java
deleted file mode 100644
index dd64c9d..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestTiming.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.testProject;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.project.TimingPage;
-import org.testng.annotations.Test;
-
-public class TestTiming extends BaseTest {
-    private TimingPage timingPage;
-
-    @Test(groups={"functionTests","createTiming"},dependsOnGroups = { "login","workflow"},description = "TestCreateTiming")
-    public void testCreateTiming() throws InterruptedException {
-        timingPage = new TimingPage(driver);
-
-        System.out.println("start create timing");
-        assert timingPage.createTiming();
-        System.out.println("end create timing");
-        System.out.println("===================================");
-
-    }
-    @Test(groups={"functionTests","timing"},dependsOnGroups = { "login","workflow"},description = "TestEditTiming")
-    public void testEditTiming() throws InterruptedException {
-        timingPage = new TimingPage(driver);
-
-        System.out.println("start edit timing");
-        assert timingPage.editTiming();
-        System.out.println("end edit timing");
-        System.out.println("===================================");
-    }
-
-    @Test(groups={"functionTests","timing"},dependsOnGroups = { "login","workflow" },description = "TestOnlineTiming")
-    public void testOnlineTiming() throws InterruptedException {
-        timingPage = new TimingPage(driver);
-
-        System.out.println("start online timing");
-        assert timingPage.onlineTiming();
-        System.out.println("end online timing");
-        System.out.println("===================================");
-    }
-
-    @Test(groups={"functionTests","timing"},dependsOnGroups = { "login","workflow"},description = "TestOfflineTiming")
-    public void testOfflineTiming() throws InterruptedException {
-        timingPage = new TimingPage(driver);
-
-        System.out.println("start offline timing");
-        assert timingPage.offlineTiming();
-        System.out.println("end offline timing");
-        System.out.println("===================================");
-    }
-
-    @Test(groups={"functionTests","timing"},dependsOnGroups = { "login","workflow"},description = "TestDeleteTiming")
-    public void testDeleteTiming() throws InterruptedException {
-        timingPage = new TimingPage(driver);
-
-        System.out.println("start delete timing");
-        assert timingPage.deleteTiming();
-        System.out.println("end delete timing");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestWorkflowDefine.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestWorkflowDefine.java
deleted file mode 100644
index 31df36d..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testProject/TestWorkflowDefine.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.testProject;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.project.ProjectPage;
-import org.apache.dolphinscheduler.page.project.WorkflowDefinePage;
-import org.testng.annotations.Test;
-
-public class TestWorkflowDefine extends BaseTest {
-    private WorkflowDefinePage workflowDefinePage;
-    private ProjectPage projectPage;
-
-    /**
-     * test Create WorkflowDefine
-     * @throws InterruptedException
-     */
-    @Test(groups={"functionTests","workflow"},dependsOnGroups = { "login" },description = "TestWorkflowDefine")
-    public void testCreateWorkflow() throws InterruptedException {
-        projectPage = new ProjectPage(driver);
-        System.out.println("jump to the projectManage page to create workflow");
-        projectPage.jumpProjectManagePage();
-
-        workflowDefinePage = new WorkflowDefinePage(driver);
-        System.out.println("Click on the project name to jump to the project homepage");
-        workflowDefinePage.jumpWorkflowPage();
-
-        System.out.println("start create workflow");
-        assert workflowDefinePage.createWorkflow();
-        assert workflowDefinePage.saveWorkflow();
-        System.out.println("end create workflow");
-        System.out.println("===================================");
-    }
-
-    @Test(groups={"functionTests","workflow"},dependsOnGroups = { "login" },description = "TestOnlineWorkflow")
-    public void testOnlineWorkflow() throws InterruptedException {
-        workflowDefinePage = new WorkflowDefinePage(driver);
-        System.out.println("start online workflow");
-        assert workflowDefinePage.onlineWorkflow();
-        System.out.println("end online workflow");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestAlertManage.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestAlertManage.java
deleted file mode 100644
index 259faf1..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestAlertManage.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.testSecurity;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.AlertManagePage;
-import org.testng.annotations.Test;
-
-public class TestAlertManage extends BaseTest {
-    private AlertManagePage alertManagePage;
-
-    @Test(groups={"functionTests","alert"},dependsOnGroups = { "login" },description = "AlertManagePage")
-    public void testAlertManage() throws InterruptedException {
-        alertManagePage = new AlertManagePage(driver);
-        //assert alert manage page
-        System.out.println("start create alert");
-        assert alertManagePage.createAlert();
-        System.out.println("end create alert");
-        System.out.println("===================================");
-
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestQueueManage.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestQueueManage.java
deleted file mode 100644
index 3e33bb9..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestQueueManage.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.testSecurity;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.QueueManagePage;
-import org.testng.annotations.Test;
-
-
-public class TestQueueManage extends BaseTest {
-    private QueueManagePage queueManagePage;
-
-    @Test(groups={"functionTests","queue"},dependsOnGroups = { "login" },description = "TestQueueManage")
-    public void testTenantManage() throws InterruptedException {
-        queueManagePage = new QueueManagePage(driver);
-        //create queue
-        System.out.println("start create queue");
-        assert queueManagePage.createQueue();
-        System.out.println("end create queue");
-        System.out.println("===================================");
-
-        //edit queue
-        System.out.println("start edit queue");
-        assert queueManagePage.editQueue();
-        System.out.println("end edit queue");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTenantManage.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTenantManage.java
deleted file mode 100644
index 109b817..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTenantManage.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.testSecurity;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.TenantManagePage;
-import org.testng.annotations.Test;
-
-
-public class TestTenantManage extends BaseTest {
-    private TenantManagePage tenantManagePage;
-
-    @Test(groups={"functionTests","createTenant"},dependsOnGroups = { "login" },description = "TestTenantManage")
-    public void testTenantManage() throws InterruptedException {
-        tenantManagePage = new TenantManagePage(driver);
-        //assert tenant manage page
-        System.out.println("start create tenant");
-        assert tenantManagePage.createTenant();
-        System.out.println("end create tenant");
-        System.out.println("===================================");
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTokenManage.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTokenManage.java
deleted file mode 100644
index 816ae64..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTokenManage.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.testSecurity;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.TokenManagePage;
-import org.testng.annotations.Test;
-
-public class TestTokenManage extends BaseTest {
-    private TokenManagePage tokenManagePage;
-
-    @Test(groups={"functionTests","token"},dependsOnGroups = { "login" },description = "TestTokenManage")
-    public void testTokenManage() throws InterruptedException {
-        tokenManagePage = new TokenManagePage(driver);
-        //generate token
-        System.out.println("start create token");
-        assert tokenManagePage.createToken();
-        System.out.println("end create token");
-        System.out.println("===================================");
-
-
-        //edit token
-        System.out.println("start edit token");
-        assert tokenManagePage.editToken();
-        System.out.println("end edit token");
-        System.out.println("===================================");
-
-    }
-}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestUserManage.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestUserManage.java
deleted file mode 100644
index 2adc4e7..0000000
--- a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestUserManage.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.testSecurity;
-
-import org.apache.dolphinscheduler.base.BaseTest;
-import org.apache.dolphinscheduler.page.security.UserManagePage;
-import org.testng.annotations.Test;
-
-public class TestUserManage extends BaseTest {
-    private UserManagePage userManagePage;
-
-    @Test(groups={"functionTests","user"},dependsOnGroups = { "login" },description = "TestCreateUser")
-    public void testCreateUser() throws InterruptedException {
-        userManagePage = new UserManagePage(driver);
-        //create user
-        System.out.println("start create user");
-        assert userManagePage.createUser();
-        System.out.println("end create user");
-        System.out.println("===================================");
-    }
-
-    @Test(groups={"functionTests","user"},dependsOnGroups = { "login" },description = "TestEditUser")
-    public void testEditUser() throws InterruptedException {
-        userManagePage = new UserManagePage(driver);
-        //edit user
-        System.out.println("start edit  user");
-        assert userManagePage.editGeneralUser();
-        assert userManagePage.editAdminUser();
-
-        System.out.println("end edit user");
-        System.out.println("===================================");
-
-    }
-}
diff --git a/e2e/src/test/resources/config/config.properties b/e2e/src/test/resources/config/config.properties
deleted file mode 100644
index 135af0b..0000000
--- a/e2e/src/test/resources/config/config.properties
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# 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.
-#
-
-############### project ##############
-# login url
-LOGIN_URL=http://127.0.0.1:12345/dolphinscheduler/
-#login username
-USER_NAME=admin
-#login password
-PASSWORD=dolphinscheduler123
-
-############### web driver ##############
-# driver path
-driver.chromeDriver=/usr/local/bin/chromedriver
-# implicitly wait(s)
-driver.timeouts.implicitlyWait=30
-# show wait(s)
-driver.timeouts.webDriverWait=30
-# page load timeout(s)
-driver.timeouts.pageLoadTimeout=30
-# JS wait timeouts(s)
-driver.timeouts.setScriptTimeout=30
-
-
-############### redis ##############
-# redis ip
-redis.ip=127.0.0.1
-# redis port
-redis.port=6379
-# redis password
-redis.pwd=
-############### redis pool ##############
-# jedis expireTime(s)
-jedis.expireTime=3600
-# jedis maxTotal
-jedis.pool.maxTotal=3000
-# jedis maxIdle
-jedis.pool.maxIdle=1000
-# jedis maxWaitMillis
-jedis.pool.maxWaitMillis=10000
-# jedis Whether to perform a valid check when calling the borrowObject method
-jedis.pool.testOnBorrow=true
-# jedis Whether to perform a valid check when calling the returnObject method
-jedis.pool.testOnReturn=true
diff --git a/e2e/src/test/resources/testData/security_zh_cn.yml b/e2e/src/test/resources/testData/security_zh_cn.yml
deleted file mode 100644
index 40b41e7..0000000
--- a/e2e/src/test/resources/testData/security_zh_cn.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# 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.
-#
-
-userManage:
-  userName: selenium_user_11111
-  password: 123456qwe
-  email:  123456789@qq.com
-  phone:  '15811112222'
-  createUserButton: 创建用户
-  editUserName:  selenium_user_edit
-  editPassword:  123456qwe@asd
-  editEmail: 123456_edit@qq.com
-  editPhone: '15800001111'
-  userTitle:  用户管理 - DolphinScheduler
-
-tenantManage:
-  tenantCode:  selenium_tenant_code_1
-  queue:  default
-  description:  create tenant test
-  tenantTitle:  租户管理 - DolphinScheduler
-
-alertManage:
-  alertName: selenium_alert_Name
-  createAlert: 创建告警组
-  alertType: 邮件
-  description:  create alert test
-  alertTitle: 告警组管理 - DolphinScheduler
-
-queueManage:
-  queueName: selenium_queue_name
-  queueValue:  selenium_queue_value
-  createQueueButton: 创建队列
-  editQueueName:  selenium_queue_value_edit
-  editQueueValue: selenium_queue_value_edit
-  queueTitle: 队列管理 - DolphinScheduler
-
-tokenManage:
-  tokenTitle: 令牌管理 - DolphinScheduler
-  createTokenText: 创建令牌
-  userName: admin
diff --git a/e2e/src/test/resources/testData/workflow_zh_cn.yml b/e2e/src/test/resources/testData/workflow_zh_cn.yml
deleted file mode 100644
index bb6dea7..0000000
--- a/e2e/src/test/resources/testData/workflow_zh_cn.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# 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.
-#
-
-projectManage:
-  createProjectButton:  创建项目
-  projectName: selenium_project_1
-  description:  test create project description
-  projectTitle:  项目 - DolphinScheduler
-
-workflowDefine:
-  workflowDefine:  工作流定义
-  shellTaskName:  shell_task_selenium_1
-  shellTaskDescription: shell task description test
-  taskTimeout:  '60'
-  shellScript: echo "shell task test"
-  customParameter1:  selenium_parameter
-  customParameterValue1:  selenium_parameter_123
-  customParameter2:  selenium_parameter_delete
-  customParameterValue2:  selenium_parameter_delete_456
-  workflowDefineTitle: 工作流定义 - DolphinScheduler
-  createWorkflowTitle:  创建流程定义 - DolphinScheduler
-  workflowName:  selenium_shell_1
-  workflowDescription:  test selenium_shell_1 description
-  workflowTimeout:  '30'
-  globalParameter1:  selenium_global_parameters_1
-  globalParameterValue1:  selenium_global_parameters_value_1
-  globalParameter2:  selenium_global_parameters_2
-  globalParameterValue2:  selenium_global_parameters_value_2
-  online: 上线
-  offline:  下线
-
-runWorkflow:
-  recipient:  123456789@qq.com
-  Cc: qwe12312sds@qq.com
-  online: 上线
-  offline:  下线
-
-timing:
-  recipient:  test123456@qq.com
-  Cc:  test.123qwe@qq.com
-  editRecipient:  test.edit123456@qq.com
-  editCc:  test.edit123qwe@qq.com
-  timingTitle:  定时任务列表 - DolphinScheduler
-  online: 上线
-  offline:  下线
-
-processInstance:
-  processInstanceTitle: 工作流实例 - DolphinScheduler
-  rerun: 重跑
diff --git a/e2e/testng.xml b/e2e/testng.xml
deleted file mode 100644
index 1a40b95..0000000
--- a/e2e/testng.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!--
-  ~ 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.
-  -->
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="dolphinscheduler_e2e" verbose="1">
-    <test name="dolphinscheduler_test" preserve-order="true">
-        <!-- <groups>
-            <run>
-                <include name="functionTests"/>
-            </run>
-        </groups>
-        <classes>
-            <class name="org.apache.dolphinscheduler.testcase.TestLogin"></class>
-            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestTenantManage"></class>
-
-            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestAlertManage"></class>
-            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestQueueManage"></class>
-            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestTokenManage"></class>
-
-            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestUserManage">
-                <methods>
-                    <include name="testCreateUser" />
-                    <include name="testEditUser" />
-                </methods>
-            </class>
-
-            <class name="org.apache.dolphinscheduler.testcase.testProject.TestProject">
-                <methods>
-                    <include name="createProject" />
-                </methods>
-            </class>
-
-            <class name="org.apache.dolphinscheduler.testcase.testProject.TestWorkflowDefine">
-                <methods>
-                    <include name="testCreateWorkflow" />
-                    <include name="testOnlineWorkflow" />
-                </methods>
-            </class>
-
-            <class name="org.apache.dolphinscheduler.testcase.testProject.TestRunWorkflow"></class> -->
-
-            <!--<class name="org.apache.dolphinscheduler.testcase.testProject.TestTiming">-->
-                <!--<methods>-->
-                    <!--<include name="testCreateTiming" />-->
-                    <!--<include name="testEditTiming" />-->
-                    <!--<include name="testOnlineTiming" />-->
-                    <!--<include name="testOfflineTiming" />-->
-                    <!--<include name="testDeleteTiming" />-->
-                <!--</methods>-->
-            <!--</class>-->
-            <!--<class name="org.apache.dolphinscheduler.testcase.testProject.TestProcessInstance">-->
-                <!--<methods>-->
-                    <!--<include name="testRerun" />-->
-                <!--</methods>-->
-            <!--</class>-->
-
-            <!-- <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteWorkflow">
-                <methods>
-                    <include name="testOfflineWorkflow" />
-                    <include name="testDeleteWorkflow" />
-                </methods>
-            </class>
-
-            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteProject"></class>
-            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteAlert"></class>
-            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteToken"></class>
-            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteUser"></class>
-            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteTenant"></class>
-        </classes> -->
-    </test>
-
-    <listeners>
-        <listener class-name="org.uncommons.reportng.HTMLReporter" />
-        <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
-    </listeners>
-</suite>