diff --git a/e2e/pom.xml b/e2e/pom.xml index a5bdf69b41..fffbf8974e 100644 --- a/e2e/pom.xml +++ b/e2e/pom.xml @@ -87,6 +87,16 @@ commons-pool2 ${commons-pool2.version} + + org.jyaml + jyaml + 1.3 + + + org.springframework + spring-core + 5.1.5.RELEASE + diff --git a/e2e/src/main/java/org/apache/dolphinscheduler/util/YmlReader.java b/e2e/src/main/java/org/apache/dolphinscheduler/util/YmlReader.java new file mode 100644 index 0000000000..e2784eb0ff --- /dev/null +++ b/e2e/src/main/java/org/apache/dolphinscheduler/util/YmlReader.java @@ -0,0 +1,45 @@ +/* + * 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> 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 index 23c98b4e46..73a8da2d62 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseDriver.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/base/BaseDriver.java @@ -23,7 +23,6 @@ import org.openqa.selenium.PageLoadStrategy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.remote.CapabilityType; import java.io.IOException; import java.util.concurrent.TimeUnit; diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java index e56df5a448..332b8000b6 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/LoginData.java @@ -28,7 +28,6 @@ public class LoginData { */ public static final String URL = PropertiesReader.getKey("LOGIN_URL"); - /** * Login username */ @@ -38,6 +37,4 @@ public class LoginData { * Login password */ public static final String PASSWORD = PropertiesReader.getKey("PASSWORD"); - - public static final String TENANT = "租户管理 - DolphinScheduler"; } 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 index 7114851d25..fa827f6707 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProcessInstanceData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProcessInstanceData.java @@ -16,10 +16,12 @@ */ package org.apache.dolphinscheduler.data.project; -public class ProcessInstanceData { - //Process Instance page title - public static final String PROCESS_INSTANCE_TITLE = "工作流实例 - DolphinScheduler"; - public static final String RERUN_TYPE= "重跑"; - +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 index 036a6771bd..22b44684bb 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProjectData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/ProjectData.java @@ -16,14 +16,12 @@ */ package org.apache.dolphinscheduler.data.project; -public class ProjectData { - - public static final String CREATE_PROJECT_BUTTON = "创建项目"; +import org.apache.dolphinscheduler.util.YmlReader; - // 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"; +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 index 70112edd7a..7653f5a09d 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/RunWorkflowData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/RunWorkflowData.java @@ -16,17 +16,12 @@ */ package org.apache.dolphinscheduler.data.project; -public class RunWorkflowData { - /** - * run workflow data - */ - //input shell task name - public static final String RECIPIENT = "123456789@qq.com"; - - //input shell task description - public static final String Cc = "qwe12312sds@qq.com"; - - public static final String RUN_WORKFLOW_TITLE = "工作流定义 - DolphinScheduler"; - +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 index e76852dd0c..87fbbd8c03 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/TimingData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/TimingData.java @@ -16,23 +16,12 @@ */ package org.apache.dolphinscheduler.data.project; -public class TimingData { - /** - * timing data - */ - //input shell task name - public static final String RECIPIENT = "test123456@qq.com"; - - //input shell task description - public static final String Cc = "test.123qwe@qq.com"; - - public static final String EDIT_RECIPIENT = "test.edit123456@qq.com"; - - public static final String EDIT_Cc = "test.edit123qwe@qq.com"; +import org.apache.dolphinscheduler.util.YmlReader; - public static final String TIMING_OFFLINE_STATE = "下线"; - - public static final String TIMING_ONLINE_STATE = "上线"; - - public static final String TIMING_TITLE = "定时任务列表 - DolphinScheduler"; +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 index c9eb32e948..41b33e76fc 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/project/WorkflowDefineData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/project/WorkflowDefineData.java @@ -16,74 +16,12 @@ */ package org.apache.dolphinscheduler.data.project; -public class WorkflowDefineData { - /** - * create workflow data - */ - - public static final String workflow_define = "工作流定义"; - - //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"; - - /** - * workflowDefine list - */ - public static final String WORKFLOW_ONLINE_STATE = "上线"; - - public static final String WORKFLOW_OFFLINE_STATE = "下线"; - +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 index ae996a209d..6bb2db4528 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/AlertManageData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/AlertManageData.java @@ -16,17 +16,13 @@ */ package org.apache.dolphinscheduler.data.security; -public class AlertManageData { - //Alert Name - public static final String ALERT_NAME = "selenium_alert_Name"; - public static final String CREATE_ALERT = "创建告警组"; - - // Alert Type - public static final String ALERT_TYPE = "邮件"; +import org.apache.dolphinscheduler.util.YmlReader; - //Alert Description - public static final String DESCRIPTION = "create alert test"; - - public static final String ALERT_MANAGE = "告警组管理 - DolphinScheduler"; +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 index 46f0d834d1..4b721602be 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java @@ -16,29 +16,12 @@ */ package org.apache.dolphinscheduler.data.security; -public class QueueManageData { - /** - * Create Queue Name - */ - public static final String QUEUE_NAME = "selenium_queue_name"; - - public static final String CREATE_QUEUE = "创建队列"; - - /** - * Create Queue Value - */ - public static final String QUEUE_VALUE = "selenium_queue_value"; - - /** - * Edit Queue Name - */ - public static final String EDIT_QUEUE_NAME = "selenium_queue_value_edit"; - - /** - * Edit Queue Value - */ - public static final String EDIT_QUEUE_VALUE = "selenium_queue_value_edit"; - - public static final String QUEUE_MANAGE = "队列管理 - DolphinScheduler"; +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 index 71e50e7150..0c9727799d 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TenantManageData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TenantManageData.java @@ -20,30 +20,12 @@ */ package org.apache.dolphinscheduler.data.security; +import org.apache.dolphinscheduler.util.YmlReader; public class TenantManageData { - /** - * Tenant Code - */ - public static final String TENANT_CODE = "selenium_tenant_code_1"; - - /** - * Tenant Name - */ - public static final String TENANT_NAME = "selenium_tenant_Name"; - - /** - * Queue - */ - public static final String QUEUE = "default"; - - /** - * Description - */ - public static final String DESCRIPTION = "create tenant test"; - - public static final String TENANT_MANAGE = "租户管理 - DolphinScheduler"; - - - + 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 index 9dd625ec25..10fdc25795 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java @@ -16,13 +16,12 @@ */ package org.apache.dolphinscheduler.data.security; -public class TokenManageData { - public static final String TOKEN_MANAGE = "令牌管理 - DolphinScheduler"; - public static final String CREATE_TOKEN = "创建令牌"; - - public static final String DATE = "2038-06-10 00:00:00"; - public static final String NAME = "admin"; - - +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 index ee7fc60bc4..699cce4568 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/UserManageData.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/UserManageData.java @@ -16,29 +16,12 @@ */ package org.apache.dolphinscheduler.data.security; +import org.apache.dolphinscheduler.util.YmlReader; public class UserManageData { - /** - * create user - */ - public static final String USERNAME = "selenium_user_1"; - - public static final String PASSWORD = "123456qwe"; - - public static final String EMAIL = "123456789@qq.com"; - - public static final String PHONE = "15811112222"; - - public static final String USER_MANAGE = "用户管理 - DolphinScheduler"; - - public static final String CREATE_USER_BUTTON = "创建用户"; - - - /** - * edit user - */ - public static final String EDIT_USERNAME = "selenium_user_edit"; - public static final String EDIT_PASSWORD = "123456qwe"; - public static final String EDIT_EMAIL = "123456_edit@qq.com"; - public static final String EDIT_PHONE = "15800001111"; + 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/project/WorkflowDefineLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/WorkflowDefineLocator.java index 01fdb39e4a..c851be3d0d 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/WorkflowDefineLocator.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/locator/project/WorkflowDefineLocator.java @@ -179,6 +179,8 @@ public class WorkflowDefineLocator { //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 */ 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 index d935dd54a0..e85807fa68 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java @@ -24,18 +24,18 @@ public class TokenManageLocator { 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"); - public static final By EDIT_TOKEN_BUTTON = By.xpath("//table/tr[2]/td[7]/button"); - //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"); - public static final By CLICK_EDIT_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[7]/button/i"); //delete token public static final By CLICK_DELETE_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[7]/span/button"); 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 index ecfd285d60..80f9df20c0 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/UserManageLocator.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/UserManageLocator.java @@ -49,6 +49,8 @@ public class UserManageLocator { 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 */ diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java index 39bd152d0a..468938d342 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/LoginPage.java @@ -18,13 +18,14 @@ 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 @@ -33,7 +34,6 @@ public class LoginPage extends PageCommon { super(driver); } - /** * jump page */ @@ -65,6 +65,6 @@ public class LoginPage extends PageCommon { moveToElement(LoginLocator.LOGIN_BUTTON_MOVE); // Whether to enter the specified page after login - return ifTitleContains(LoginData.TENANT); + return ifTitleContains(tenantManageData.getTenantData("tenantTitle")); } } 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 index 8c251afc84..04124b467f 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProcessInstancePage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProcessInstancePage.java @@ -23,6 +23,8 @@ import org.apache.dolphinscheduler.data.project.ProcessInstanceData; public class ProcessInstancePage extends PageCommon { + ProcessInstanceData processInstanceData = new ProcessInstanceData(); + public ProcessInstancePage(WebDriver driver) { super(driver); } @@ -36,7 +38,7 @@ public class ProcessInstancePage extends PageCommon { clickTopElement(ProcessInstanceLocator.CLICK_PROCESS_INSTANCE_NAME); locateElement(ProcessInstanceLocator.PROCESS_INSTANCE_SUCCESS_STATE); clickTopElement(ProcessInstanceLocator.CLICK_RERUN_BUTTON); - return ifTitleContains(ProcessInstanceData.PROCESS_INSTANCE_TITLE); + 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 index 6a93094340..a450ec7121 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProjectPage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/ProjectPage.java @@ -17,12 +17,13 @@ package org.apache.dolphinscheduler.page.project; import org.apache.dolphinscheduler.common.PageCommon; -import org.apache.dolphinscheduler.constant.TestConstant; 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); } @@ -32,7 +33,7 @@ public class ProjectPage extends PageCommon { */ public boolean jumpProjectManagePage() throws InterruptedException { clickTopElement(ProjectLocator.PROJECT_MANAGE); - return ifTitleContains(ProjectData.PROJECT_TITLE); + return ifTitleContains(projectData.getProjectData("projectTitle")); } /** @@ -41,18 +42,18 @@ public class ProjectPage extends PageCommon { * @return Whether to enter the specified page after create project */ public boolean createProject() throws InterruptedException { - ifTextExists(ProjectLocator.CREATE_PROJECT_BUTTON,ProjectData.CREATE_PROJECT_BUTTON); + ifTextExists(ProjectLocator.CREATE_PROJECT_BUTTON, projectData.getProjectData("createProjectButton")); clickElement(ProjectLocator.CREATE_PROJECT_BUTTON); // input create project data - sendInput(ProjectLocator.PROJECT_NAME, ProjectData.PROJECT_NAME); - sendInput(ProjectLocator.PROJECT_DESCRIPTION, ProjectData.DESCRIPTION); + 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.PROJECT_NAME); + return ifTextExists(ProjectLocator.LIST_PROJECT_NAME, projectData.getProjectData("projectName")); } /** @@ -68,6 +69,6 @@ public class ProjectPage extends PageCommon { clickElement(ProjectLocator.CONFIRM_DELETE_PROJECT_BUTTON); // Whether to enter the specified page after submit - return ifTitleContains(ProjectData.PROJECT_TITLE); + 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 index 921e593e44..c4b8a68dee 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/RunWorkflowPage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/RunWorkflowPage.java @@ -24,13 +24,16 @@ 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, WorkflowDefineData.WORKFLOW_ONLINE_STATE); + ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, runWorkflowData.getRunWorkflowData("online")); // click run workflow button System.out.println("Click run workflow button"); @@ -46,10 +49,10 @@ public class RunWorkflowPage extends PageCommon { clickElement(RunWorkflowLocator.SELECT_WORKER_GROUP); clickElement(RunWorkflowLocator.CLICK_NOTICE_GROUP); clickElement(RunWorkflowLocator.SELECT_NOTICE_GROUP); - sendInput(RunWorkflowLocator.INPUT_RECIPIENT, RunWorkflowData.RECIPIENT); - sendInput(RunWorkflowLocator.INPUT_Cc,RunWorkflowData.Cc); + sendInput(RunWorkflowLocator.INPUT_RECIPIENT, runWorkflowData.getRunWorkflowData("recipient")); + sendInput(RunWorkflowLocator.INPUT_Cc, runWorkflowData.getRunWorkflowData("Cc")); clickButton(RunWorkflowLocator.CLICK_RUNNING_BUTTON); - return ifTitleContains(RunWorkflowData.RUN_WORKFLOW_TITLE); + 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 index 3febc545ff..37f3fdab2a 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/TimingPage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/TimingPage.java @@ -18,23 +18,24 @@ package org.apache.dolphinscheduler.page.project; import org.apache.dolphinscheduler.common.PageCommon; import org.apache.dolphinscheduler.data.project.TimingData; -import org.apache.dolphinscheduler.data.project.WorkflowDefineData; 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, WorkflowDefineData.WORKFLOW_ONLINE_STATE); + ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, timingData.getTimingData("online")); // click timing button System.out.println("Click timing button"); @@ -52,11 +53,11 @@ public class TimingPage extends PageCommon { clickElement(TimingLocator.SELECT_WORKER_GROUP); clickElement(TimingLocator.CLICK_NOTICE_GROUP); clickElement(TimingLocator.SELECT_NOTICE_GROUP); - sendInput(TimingLocator.INPUT_RECIPIENT, TimingData.RECIPIENT); - sendInput(TimingLocator.INPUT_Cc,TimingData.Cc); + 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.TIMING_OFFLINE_STATE); + return ifTextExists(TimingLocator.TIMING_STATE, timingData.getTimingData("offline")); } /** @@ -68,7 +69,7 @@ public class TimingPage extends PageCommon { clickButton(TimingLocator.CLICK_TIMING_MANAGEMENT_BUTTON); // Determine whether the workflow name exists - ifTextExists(TimingLocator.WORKFLOW_NAME, WorkflowDefineData.INPUT_WORKFLOW_NAME); + ifTextExists(TimingLocator.WORKFLOW_NAME, timingData.getTimingData("offline")); System.out.println("Click edit timing button"); clickButton(TimingLocator.CLICK_EDIT_TIMING_BUTTON); @@ -85,11 +86,11 @@ public class TimingPage extends PageCommon { clickElement(TimingLocator.SELECT_WORKER_GROUP); clickElement(TimingLocator.CLICK_NOTICE_GROUP); clickElement(TimingLocator.SELECT_NOTICE_GROUP); - sendInput(TimingLocator.INPUT_RECIPIENT, TimingData.EDIT_RECIPIENT); - sendInput(TimingLocator.INPUT_Cc,TimingData.EDIT_Cc); + sendInput(TimingLocator.INPUT_RECIPIENT, timingData.getTimingData("editRecipient")); + sendInput(TimingLocator.INPUT_Cc, timingData.getTimingData("editCc")); clickButton(TimingLocator.CLICK_CREATE_BUTTON); - return ifTitleContains(TimingData.TIMING_TITLE ); + return ifTitleContains(timingData.getTimingData("timingTitle")); } @@ -99,13 +100,13 @@ public class TimingPage extends PageCommon { public boolean onlineTiming() throws InterruptedException { flushPage(); // Determine whether the timing is offline - ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, TimingData.TIMING_OFFLINE_STATE); + 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.TIMING_ONLINE_STATE); + return ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("online")); } @@ -115,13 +116,13 @@ public class TimingPage extends PageCommon { public boolean offlineTiming() throws InterruptedException { flushPage(); // Determine whether the timing is online - ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, TimingData.TIMING_ONLINE_STATE); + 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.TIMING_OFFLINE_STATE); + return ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("offline")); } @@ -131,7 +132,7 @@ public class TimingPage extends PageCommon { */ public boolean deleteTiming() throws InterruptedException { // Determine whether the timing is offline - ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, TimingData.TIMING_OFFLINE_STATE); + ifTextExists(TimingLocator.TIMING_MANAGEMENT_TIMING_STATE, timingData.getTimingData("offline")); // click offline timing button System.out.println("Click delete timing button"); 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 index 8826222189..72722d8f10 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/project/WorkflowDefinePage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/project/WorkflowDefinePage.java @@ -17,7 +17,6 @@ package org.apache.dolphinscheduler.page.project; import org.apache.dolphinscheduler.common.PageCommon; -import org.apache.dolphinscheduler.constant.TestConstant; import org.apache.dolphinscheduler.data.project.ProjectData; import org.apache.dolphinscheduler.data.project.WorkflowDefineData; import org.apache.dolphinscheduler.locator.project.ProjectLocator; @@ -25,6 +24,9 @@ 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); } @@ -34,18 +36,18 @@ public class WorkflowDefinePage extends PageCommon { */ public boolean jumpWorkflowPage() throws InterruptedException { - ifTextExists(ProjectLocator.LIST_PROJECT_NAME, ProjectData.PROJECT_NAME); + ifTextExists(ProjectLocator.LIST_PROJECT_NAME, projectData.getProjectData("projectName")); // click project name clickElement(WorkflowDefineLocator.CLICK_PROJECT_NAME); - ifTextExists(WorkflowDefineLocator.CLICK_WORKFLOW_DEFINE,WorkflowDefineData.workflow_define); + 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.WORKFLOW_TITLE); + return ifTitleContains(workflowDefineData.getWorkflowDefineData("workflowDefineTitle")); } public boolean createWorkflow() throws InterruptedException { @@ -58,8 +60,7 @@ public class WorkflowDefinePage extends PageCommon { dragAndDrop(WorkflowDefineLocator.MOUSE_DOWN_AT_SHELL, WorkflowDefineLocator.MOUSE_MOVE_SHELL_AT_DAG); //input shell task _name - sendInput(WorkflowDefineLocator.INPUT_SHELL_TASK_NAME , WorkflowDefineData.SHELL_TASK_NAME); - + sendInput(WorkflowDefineLocator.INPUT_SHELL_TASK_NAME, workflowDefineData.getWorkflowDefineData("shellTaskName")); //click stop run type clickElement(WorkflowDefineLocator.CLICK_STOP_RUN_TYPE); @@ -67,7 +68,7 @@ public class WorkflowDefinePage extends PageCommon { clickElement(WorkflowDefineLocator.CLICK_NORMAL_RUN_TYPE); //input shell task description - sendInput(WorkflowDefineLocator.INPUT_SHELL_TASK_DESCRIPTION , WorkflowDefineData.SHELL_TASK_DESCRIPTION); + sendInput(WorkflowDefineLocator.INPUT_SHELL_TASK_DESCRIPTION, workflowDefineData.getWorkflowDefineData("shellTaskDescription")); //select task priority clickElement(WorkflowDefineLocator.CLICK_TASK_PRIORITY); @@ -100,20 +101,20 @@ public class WorkflowDefinePage extends PageCommon { clearInput(WorkflowDefineLocator.SELECT_TIMEOUT); //input timeout - sendInput(WorkflowDefineLocator.SELECT_TIMEOUT, WorkflowDefineData.INPUT_TIMEOUT); + sendInput(WorkflowDefineLocator.SELECT_TIMEOUT, workflowDefineData.getWorkflowDefineData("taskTimeout")); //click codeMirror and input script - inputCodeMirror(WorkflowDefineLocator.CLICK_CODE_MIRROR, WorkflowDefineLocator.INPUT_SCRIPT, WorkflowDefineData.SHELL_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.INPUT_CUSTOM_PARAMETERS); + sendInput(WorkflowDefineLocator.INPUT_CUSTOM_PARAMETERS, workflowDefineData.getWorkflowDefineData("customParameter1")); //input custom parameters value - sendInput(WorkflowDefineLocator.INPUT_CUSTOM_PARAMETERS_VALUE, WorkflowDefineData.INPUT_CUSTOM_PARAMETERS_VALUE); + sendInput(WorkflowDefineLocator.INPUT_CUSTOM_PARAMETERS_VALUE, workflowDefineData.getWorkflowDefineData("customParameterValue1")); //click add custom parameters clickElement(WorkflowDefineLocator.CLICK_ADD_CUSTOM_PARAMETERS); @@ -121,10 +122,10 @@ public class WorkflowDefinePage extends PageCommon { scrollToElementBottom(WorkflowDefineLocator.SCROLL_BOTTOM); //input add custom parameters - sendInput(WorkflowDefineLocator.INPUT_ADD_CUSTOM_PARAMETERS, WorkflowDefineData.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.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); @@ -140,7 +141,7 @@ public class WorkflowDefinePage extends PageCommon { clickButton(WorkflowDefineLocator.COPY_TASK); clickButton(WorkflowDefineLocator.CLICK_LINE); mouseMovePosition(WorkflowDefineLocator.LINE_SOURCES_TASK,WorkflowDefineLocator.LINE_TARGET_TASK); - return ifTitleContains(WorkflowDefineData.CREATE_WORKFLOW_TITLE); + return ifTitleContains(workflowDefineData.getWorkflowDefineData("createWorkflowTitle")); } /** @@ -153,10 +154,10 @@ public class WorkflowDefinePage extends PageCommon { clickElement(WorkflowDefineLocator.CLICK_SAVE_WORKFLOW_BUTTON); //input workflow name - sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_NAME, WorkflowDefineData.INPUT_WORKFLOW_NAME); + sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_NAME, workflowDefineData.getWorkflowDefineData("workflowName")); //input workflow description - sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_DESCRIPTION, WorkflowDefineData.INPUT_WORKFLOW_DESCRIPTION); + sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_DESCRIPTION, workflowDefineData.getWorkflowDefineData("workflowDescription")); //select tenant clickElement(WorkflowDefineLocator.CLICK_TENANT); @@ -167,25 +168,25 @@ public class WorkflowDefinePage extends PageCommon { clearInput(WorkflowDefineLocator.INPUT_WORKFLOW_TIMEOUT); //input workflow timeout - sendInput(WorkflowDefineLocator.INPUT_WORKFLOW_TIMEOUT, WorkflowDefineData.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.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.INPUT_WORKFLOW_GLOBAL_PARAMETERS_VALUES); + 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.INPUT_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.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS_VALUES); + sendInput(WorkflowDefineLocator.INPUT_ADD_WORKFLOW_GLOBAL_PARAMETERS_VALUES, workflowDefineData.getWorkflowDefineData("globalParameterValue2")); //delete workflow global parameters value clickElement(WorkflowDefineLocator.CLICK_DELETE_WORKFLOW_GLOBAL_PARAMETERS); @@ -194,33 +195,33 @@ public class WorkflowDefinePage extends PageCommon { System.out.println("submit workflow"); clickButton(WorkflowDefineLocator.CLICK_ADD_BUTTON); - return ifTitleContains(WorkflowDefineData.CREATE_WORKFLOW_TITLE); + 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.WORKFLOW_OFFLINE_STATE); + ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("offline")); // click online button System.out.println("Click online workflow button"); clickButton(WorkflowDefineLocator.CLICK_ONLINE_WORKFLOW_BUTTON); - return ifTitleContains(WorkflowDefineData.WORKFLOW_TITLE); + 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.WORKFLOW_ONLINE_STATE); + ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("online")); // click offline button System.out.println("offline workflow"); clickButton(WorkflowDefineLocator.CLICK_OFFLINE_WORKFLOW_BUTTON); - return ifTitleContains(WorkflowDefineData.WORKFLOW_TITLE); + return ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("offline")); } @@ -229,7 +230,7 @@ public class WorkflowDefinePage extends PageCommon { clickElement(WorkflowDefineLocator.CLICK_WORKFLOW_DEFINE); // Determine whether the workflow status is offline - ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE,WorkflowDefineData.WORKFLOW_OFFLINE_STATE); + ifTextExists(WorkflowDefineLocator.WORKFLOW_STATE, workflowDefineData.getWorkflowDefineData("offline")); clickButton(WorkflowDefineLocator.DELETE_WORKFLOW_BOTTOM); @@ -237,6 +238,6 @@ public class WorkflowDefinePage extends PageCommon { clickButton(WorkflowDefineLocator.CONFIRM_DELETE_WORKFLOW_BOTTOM); // Whether to enter the specified page after submit - return ifTitleContains(WorkflowDefineData.WORKFLOW_TITLE); + 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 index 541251e0db..97e167ec29 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java @@ -22,6 +22,8 @@ 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 @@ -41,26 +43,26 @@ public class AlertManagePage extends PageCommon { clickElement(AlertManageLocator.CLICK_ALERT_MANAGE); //determine whether the create alert button exists - ifTextExists(AlertManageLocator.CLICK_CREATE_ALERT,AlertManageData.CREATE_ALERT); + 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.ALERT_NAME); + sendInput(AlertManageLocator.INPUT_ALERT_NAME, alertManageData.getAlertData("alertName")); clickElement(AlertManageLocator.CLICK_ALERT_TYPE); clickElement(AlertManageLocator.SELECT_ALERT_EMAIL); - sendInput(AlertManageLocator.INPUT_ALERT_DESCRIPTION, AlertManageData.DESCRIPTION); + 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.ALERT_NAME); + return ifTextExists(AlertManageLocator.ALERT_NAME, alertManageData.getAlertData("alertName")); } public boolean deleteAlert() throws InterruptedException { @@ -68,7 +70,7 @@ public class AlertManagePage extends PageCommon { // click alert manage clickElement(AlertManageLocator.CLICK_ALERT_MANAGE); - ifTextExists(AlertManageLocator.ALERT_NAME, AlertManageData.ALERT_NAME); + ifTextExists(AlertManageLocator.ALERT_NAME, alertManageData.getAlertData("alertName")); // click delete alert button clickButton(AlertManageLocator.DELETE_ALERT_BUTTON); @@ -77,6 +79,6 @@ public class AlertManagePage extends PageCommon { clickButton(AlertManageLocator.CONFIRM_DELETE_ALERT_BUTTON); // Whether to enter the specified page after submit - return ifTitleContains(AlertManageData.ALERT_MANAGE); + 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 index 368202e921..f6a55bb73b 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java @@ -22,6 +22,8 @@ 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 @@ -41,7 +43,7 @@ public class QueueManagePage extends PageCommon { clickElement(QueueManageLocator.CLICK_QUEUE_MANAGE); //determine whether the create queue button exists - ifTextExists(QueueManageLocator.CLICK_CREATE_QUEUE,QueueManageData.CREATE_QUEUE); + ifTextExists(QueueManageLocator.CLICK_CREATE_QUEUE, queueManageData.getQueueData("createQueueButton")); // click create queue button System.out.println("start click create queue button"); @@ -49,15 +51,15 @@ public class QueueManagePage extends PageCommon { // input queue data System.out.println("start input queue"); - sendInput(QueueManageLocator.INPUT_QUEUE_NAME, QueueManageData.QUEUE_NAME); + sendInput(QueueManageLocator.INPUT_QUEUE_NAME, queueManageData.getQueueData("queueName")); - sendInput(QueueManageLocator.INPUT_QUEUE_VALUE, QueueManageData.QUEUE_VALUE); + 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.QUEUE_NAME); + return ifTextExists(QueueManageLocator.LIST_QUEUE_NAME, queueManageData.getQueueData("queueName")); } @@ -70,19 +72,19 @@ public class QueueManagePage extends PageCommon { // click queue manage clickElement(QueueManageLocator.CLICK_QUEUE_MANAGE); - ifTextExists(QueueManageLocator.LIST_QUEUE_NAME, QueueManageData.QUEUE_NAME); + 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.EDIT_QUEUE_NAME); - clearSendInput(QueueManageLocator.INPUT_QUEUE_VALUE, QueueManageData.EDIT_QUEUE_VALUE); + 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.EDIT_QUEUE_NAME); + 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 index 40d964fa33..44f45f1d2a 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TenantManagePage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TenantManagePage.java @@ -22,6 +22,8 @@ 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 @@ -37,7 +39,7 @@ public class TenantManagePage extends PageCommon { */ public boolean jumpSecurity() throws InterruptedException { clickTopElement(TenantManageLocator.SECURITY_CENTER); - return ifTitleContains(TenantManageData.TENANT_MANAGE); + return ifTitleContains(tenantManageData.getTenantData("tenantTitle")); } /** @@ -52,16 +54,16 @@ public class TenantManagePage extends PageCommon { clickButton(TenantManageLocator.CREATE_TENANT_BUTTON); // tenant data - sendInput(TenantManageLocator.TENANT_INPUT_CODE, TenantManageData.TENANT_CODE); - sendInput(TenantManageLocator.TENANT_INPUT_NAME, TenantManageData.TENANT_NAME); - sendInput(TenantManageLocator.QUEUE, TenantManageData.QUEUE); - sendInput(TenantManageLocator.DESCRIPTION, TenantManageData.DESCRIPTION); + sendInput(TenantManageLocator.TENANT_INPUT_CODE, tenantManageData.getTenantData("tenantCode")); + sendInput(TenantManageLocator.TENANT_INPUT_NAME, tenantManageData.getTenantData("tenantName")); + 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.TENANT_CODE); + return ifTextExists(TenantManageLocator.TENANT_CODE_FIRST, tenantManageData.getTenantData("tenantCode")); } public boolean deleteTenant() throws InterruptedException { @@ -74,6 +76,6 @@ public class TenantManagePage extends PageCommon { clickButton(TenantManageLocator.CONFIRM_DELETE_TENANT_BUTTON); // Whether to enter the specified page after submit - return ifTitleContains(TenantManageData.TENANT_MANAGE); + 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 index 61fb93c570..35a9377578 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java @@ -22,6 +22,8 @@ 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); } @@ -36,11 +38,13 @@ public class TokenManagePage extends PageCommon { clickElement(TokenManageLocator.CLICK_TOKEN_MANAGE); //determine whether the create token button exists - ifTextExists(TokenManageLocator.CLICK_CREATE_TOKEN,TokenManageData.CREATE_TOKEN); + 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); @@ -50,7 +54,7 @@ public class TokenManagePage extends PageCommon { clickButton(TokenManageLocator.CLICK_SUBMIT_BUTTON); // Whether to enter the specified page after submit - return ifTitleContains(TokenManageData.TOKEN_MANAGE); + return ifTitleContains(tokenManageData.getTokenData("tokenTitle")); } /** @@ -66,7 +70,7 @@ public class TokenManagePage extends PageCommon { locateElement(TokenManageLocator.EDIT_TOKEN_BUTTON); // click edit token button - clickButton(TokenManageLocator.CLICK_EDIT_BUTTON); + clickButton(TokenManageLocator.EDIT_TOKEN_BUTTON); clickButton(TokenManageLocator.SELECT_USER); @@ -77,7 +81,7 @@ public class TokenManagePage extends PageCommon { clickButton(TokenManageLocator.CLICK_SUBMIT_BUTTON); // Whether to enter the specified page after submit - return ifTitleContains(TokenManageData.TOKEN_MANAGE); + return ifTitleContains(tokenManageData.getTokenData("tokenTitle")); } @@ -89,7 +93,7 @@ public class TokenManagePage extends PageCommon { clickButton(TokenManageLocator.CLICK_DELETE_BUTTON); clickButton(TokenManageLocator.CLICK_CONFIRM_DELETE_BUTTON); - return ifTitleContains(TokenManageData.TOKEN_MANAGE); + 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 index 367896a3cf..b489d12621 100644 --- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/UserManagePage.java +++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/UserManagePage.java @@ -22,6 +22,8 @@ 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); } @@ -34,22 +36,21 @@ public class UserManagePage extends PageCommon { 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.CREATE_USER_BUTTON); + 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.USERNAME); - sendInput(UserManageLocator.INPUT_PASSWORD, UserManageData.PASSWORD); + 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.EMAIL); - sendInput(UserManageLocator.INPUT_PHONE, UserManageData.PHONE); + sendInput(UserManageLocator.INPUT_EMAIL, userManageData.getUserData("email")); + sendInput(UserManageLocator.INPUT_PHONE, userManageData.getUserData("phone")); clickElement(UserManageLocator.SELECT_STOP_STATE); clickElement(UserManageLocator.SELECT_ENABLE_STATE); @@ -57,7 +58,7 @@ public class UserManagePage extends PageCommon { clickButton(UserManageLocator.SUBMIT); // Whether to enter the specified page after submit - return ifTitleContains(UserManageData.USER_MANAGE); + return ifTextExists(UserManageLocator.USERNAME, userManageData.getUserData("userName")); } /** @@ -70,14 +71,14 @@ public class UserManagePage extends PageCommon { clickElement(UserManageLocator.CLICK_USER_MANAGE); //determine whether the general user exists - ifTextExists(UserManageLocator.USER_NAME,UserManageData.USERNAME); + ifTextExists(UserManageLocator.USERNAME, userManageData.getUserData("userName")); // click edit user button clickButton(UserManageLocator.EDIT_GENERAL_USER_BUTTON ); // input user data - clearSendInput(UserManageLocator.INPUT_USERNAME, UserManageData.EDIT_USERNAME); - clearSendInput(UserManageLocator.INPUT_PASSWORD, UserManageData.EDIT_PASSWORD); + clearSendInput(UserManageLocator.INPUT_USERNAME, userManageData.getUserData("editUserName")); + clearSendInput(UserManageLocator.INPUT_PASSWORD, userManageData.getUserData("editPassword")); clickButton(UserManageLocator.CLICK_TENANT); clickButton(UserManageLocator.SELECT_TENANT); @@ -85,8 +86,8 @@ public class UserManagePage extends PageCommon { clickButton(UserManageLocator.CLICK_QUEUE); clickButton(UserManageLocator.SELECT_QUEUE); - clearSendInput(UserManageLocator.INPUT_EMAIL, UserManageData.EDIT_EMAIL); - clearSendInput(UserManageLocator.INPUT_PHONE, UserManageData.EDIT_PHONE); + clearSendInput(UserManageLocator.INPUT_EMAIL, userManageData.getUserData("editEmail")); + clearSendInput(UserManageLocator.INPUT_PHONE, userManageData.getUserData("editPhone")); clickElement(UserManageLocator.SELECT_STOP_STATE); clickElement(UserManageLocator.SELECT_ENABLE_STATE); @@ -96,7 +97,7 @@ public class UserManagePage extends PageCommon { System.out.println("end edit general user"); // Whether to enter the specified page after submit - return ifTitleContains(UserManageData.USER_MANAGE); + return ifTitleContains(userManageData.getUserData("userTitle")); } /** @@ -109,7 +110,7 @@ public class UserManagePage extends PageCommon { clickElement(UserManageLocator.CLICK_USER_MANAGE); //determine whether the general user edit success - ifTextExists(UserManageLocator.USER_NAME,UserManageData.EDIT_USERNAME); + ifTextExists(UserManageLocator.USER_NAME,userManageData.getUserData("editUserName")); // click edit user button clickButton(UserManageLocator.EDIT_ADMIN_USER_BUTTON ); @@ -123,7 +124,7 @@ public class UserManagePage extends PageCommon { clickButton(UserManageLocator.SUBMIT); System.out.println("end edit admin user"); // Whether to enter the specified page after submit - return ifTitleContains(UserManageData.USER_MANAGE); + return ifTitleContains(userManageData.getUserData("userTitle")); } @@ -144,6 +145,6 @@ public class UserManagePage extends PageCommon { clickButton(UserManageLocator.CONFIRM_DELETE_USER_BUTTON); // Whether to enter the specified page after submit - return ifTitleContains(UserManageData.USER_MANAGE); + return ifTitleContains(userManageData.getUserData("userTitle")); } } diff --git a/e2e/src/test/resources/testData/security_zh_cn.yml b/e2e/src/test/resources/testData/security_zh_cn.yml new file mode 100644 index 0000000000..89be444df5 --- /dev/null +++ b/e2e/src/test/resources/testData/security_zh_cn.yml @@ -0,0 +1,55 @@ +# +# 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 + tenantName: selenium_tenant_Name + 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 new file mode 100644 index 0000000000..bb6dea7851 --- /dev/null +++ b/e2e/src/test/resources/testData/workflow_zh_cn.yml @@ -0,0 +1,63 @@ +# +# 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 index e08c4da917..8a4791fea6 100644 --- a/e2e/testng.xml +++ b/e2e/testng.xml @@ -56,9 +56,9 @@ + -