Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
DolphinScheduler
提交
20dd0c12
DolphinScheduler
项目概览
apache
/
DolphinScheduler
上一次同步 1 年多
通知
705
Star
9572
Fork
3514
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
DolphinScheduler
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
20dd0c12
编写于
3月 10, 2022
作者:
X
xiangzihao
提交者:
GitHub
3月 10, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[E2E] Restore security center e2e test cases in ui-next (#8815)
上级
e466f54c
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
434 addition
and
274 deletion
+434
-274
.github/workflows/e2e.yml
.github/workflows/e2e.yml
+22
-23
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/EnvironmentE2ETest.java
...apache/dolphinscheduler/e2e/cases/EnvironmentE2ETest.java
+5
-3
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/FileManageE2ETest.java
.../apache/dolphinscheduler/e2e/cases/FileManageE2ETest.java
+14
-14
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/FunctionManageE2ETest.java
...che/dolphinscheduler/e2e/cases/FunctionManageE2ETest.java
+22
-22
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/QueueE2ETest.java
...a/org/apache/dolphinscheduler/e2e/cases/QueueE2ETest.java
+3
-1
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/TokenE2ETest.java
...a/org/apache/dolphinscheduler/e2e/cases/TokenE2ETest.java
+4
-4
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UdfManageE2ETest.java
...g/apache/dolphinscheduler/e2e/cases/UdfManageE2ETest.java
+14
-14
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UserE2ETest.java
...va/org/apache/dolphinscheduler/e2e/cases/UserE2ETest.java
+27
-26
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/WorkerGroupE2ETest.java
...apache/dolphinscheduler/e2e/cases/WorkerGroupE2ETest.java
+1
-1
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/LoginPage.java
...java/org/apache/dolphinscheduler/e2e/pages/LoginPage.java
+18
-6
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java
.../apache/dolphinscheduler/e2e/pages/common/NavBarPage.java
+18
-18
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/EnvironmentPage.java
.../dolphinscheduler/e2e/pages/security/EnvironmentPage.java
+73
-20
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/QueuePage.java
...apache/dolphinscheduler/e2e/pages/security/QueuePage.java
+21
-6
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/SecurityPage.java
...che/dolphinscheduler/e2e/pages/security/SecurityPage.java
+24
-19
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TenantPage.java
...pache/dolphinscheduler/e2e/pages/security/TenantPage.java
+23
-16
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TokenPage.java
...apache/dolphinscheduler/e2e/pages/security/TokenPage.java
+43
-22
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/UserPage.java
.../apache/dolphinscheduler/e2e/pages/security/UserPage.java
+74
-35
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/WorkerGroupPage.java
.../dolphinscheduler/e2e/pages/security/WorkerGroupPage.java
+22
-18
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/resources/docker/basic/docker-compose.yaml
...-case/src/test/resources/docker/basic/docker-compose.yaml
+4
-2
dolphinscheduler-e2e/dolphinscheduler-e2e-core/src/main/java/org/apache/dolphinscheduler/e2e/core/DolphinSchedulerExtension.java
.../dolphinscheduler/e2e/core/DolphinSchedulerExtension.java
+0
-1
dolphinscheduler-ui-next/src/layouts/content/components/sidebar/index.tsx
...-ui-next/src/layouts/content/components/sidebar/index.tsx
+1
-0
dolphinscheduler-ui-next/src/layouts/content/index.tsx
dolphinscheduler-ui-next/src/layouts/content/index.tsx
+1
-0
pom.xml
pom.xml
+0
-3
未找到文件。
.github/workflows/e2e.yml
浏览文件 @
20dd0c12
...
...
@@ -64,7 +64,6 @@ jobs:
retention-days
:
1
e2e
:
name
:
${{ matrix.case.name }}
if
:
false
needs
:
build
runs-on
:
ubuntu-latest
strategy
:
...
...
@@ -76,34 +75,34 @@ jobs:
class
:
org.apache.dolphinscheduler.e2e.cases.UserE2ETest
-
name
:
WorkerGroup
class
:
org.apache.dolphinscheduler.e2e.cases.WorkerGroupE2ETest
-
name
:
Project
class
:
org.apache.dolphinscheduler.e2e.cases.ProjectE2ETest
#
- name: Project
#
class: org.apache.dolphinscheduler.e2e.cases.ProjectE2ETest
-
name
:
Queue
class
:
org.apache.dolphinscheduler.e2e.cases.QueueE2ETest
-
name
:
Environment
class
:
org.apache.dolphinscheduler.e2e.cases.EnvironmentE2ETest
-
name
:
Token
class
:
org.apache.dolphinscheduler.e2e.cases.TokenE2ETest
-
name
:
Workflow
class
:
org.apache.dolphinscheduler.e2e.cases.WorkflowE2ETest
-
name
:
WorkflowForSwitch
class
:
org.apache.dolphinscheduler.e2e.cases.WorkflowSwitchE2ETest
-
name
:
FileManage
class
:
org.apache.dolphinscheduler.e2e.cases.FileManageE2ETest
-
name
:
UdfManage
class
:
org.apache.dolphinscheduler.e2e.cases.UdfManageE2ETest
-
name
:
FunctionManage
class
:
org.apache.dolphinscheduler.e2e.cases.FunctionManageE2ETest
-
name
:
MysqlDataSource
class
:
org.apache.dolphinscheduler.e2e.cases.MysqlDataSourceE2ETest
-
name
:
ClickhouseDataSource
class
:
org.apache.dolphinscheduler.e2e.cases.ClickhouseDataSourceE2ETest
-
name
:
PostgresDataSource
class
:
org.apache.dolphinscheduler.e2e.cases.PostgresDataSourceE2ETest
-
name
:
SqlServerDataSource
class
:
org.apache.dolphinscheduler.e2e.cases.SqlServerDataSourceE2ETest
-
name
:
HiveDataSource
class
:
org.apache.dolphinscheduler.e2e.cases.HiveDataSourceE2ETest
#
- name: Workflow
#
class: org.apache.dolphinscheduler.e2e.cases.WorkflowE2ETest
#
- name: WorkflowForSwitch
#
class: org.apache.dolphinscheduler.e2e.cases.WorkflowSwitchE2ETest
#
- name: FileManage
#
class: org.apache.dolphinscheduler.e2e.cases.FileManageE2ETest
#
- name: UdfManage
#
class: org.apache.dolphinscheduler.e2e.cases.UdfManageE2ETest
#
- name: FunctionManage
#
class: org.apache.dolphinscheduler.e2e.cases.FunctionManageE2ETest
#
- name: MysqlDataSource
#
class: org.apache.dolphinscheduler.e2e.cases.MysqlDataSourceE2ETest
#
- name: ClickhouseDataSource
#
class: org.apache.dolphinscheduler.e2e.cases.ClickhouseDataSourceE2ETest
#
- name: PostgresDataSource
#
class: org.apache.dolphinscheduler.e2e.cases.PostgresDataSourceE2ETest
#
- name: SqlServerDataSource
#
class: org.apache.dolphinscheduler.e2e.cases.SqlServerDataSourceE2ETest
#
- name: HiveDataSource
#
class: org.apache.dolphinscheduler.e2e.cases.HiveDataSourceE2ETest
env
:
RECORDING_PATH
:
/tmp/recording-${{ matrix.case.name }}
steps
:
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/EnvironmentE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -44,12 +44,12 @@ class EnvironmentE2ETest {
private
static
final
String
environmentName
=
"test_environment_name"
;
private
static
final
String
environmentConfig
=
"test_environment_config"
;
private
static
final
String
environmentDesc
=
"test_environment_desc"
;
private
static
final
String
environmentWorkerGroup
=
"
[\"default\"]
"
;
private
static
final
String
environmentWorkerGroup
=
"
default
"
;
private
static
final
String
editEnvironmentName
=
"edit_environment_name"
;
private
static
final
String
editEnvironmentConfig
=
"edit_environment_config"
;
private
static
final
String
editEnvironmentDesc
=
"edit_environment_desc"
;
private
static
final
String
editEnvironmentWorkerGroup
=
"
[\"default\"]
"
;
private
static
final
String
editEnvironmentWorkerGroup
=
"
default
"
;
private
static
RemoteWebDriver
browser
;
...
...
@@ -118,7 +118,9 @@ class EnvironmentE2ETest {
assertThat
(
page
.
environmentList
()
).
noneMatch
(
)
.
as
(
"Environment list should not contain deleted environment"
)
.
noneMatch
(
it
->
it
.
getText
().
contains
(
environmentName
)
||
it
.
getText
().
contains
(
editEnvironmentName
)
);
});
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/FileManageE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -84,20 +84,20 @@ public class FileManageE2ETest {
@BeforeAll
public
static
void
setup
()
{
TenantPage
tenantPage
=
new
LoginPage
(
browser
)
.
login
(
user
,
password
)
.
create
(
tenant
);
await
().
untilAsserted
(()
->
assertThat
(
tenantPage
.
tenantList
())
.
as
(
"Tenant list should contain newly-created tenant"
)
.
extracting
(
WebElement:
:
getText
)
.
anyMatch
(
it
->
it
.
contains
(
tenant
)));
tenantPage
.
goToNav
(
SecurityPage
.
class
)
.
goToTab
(
UserPage
.
class
)
.
update
(
user
,
user
,
password
,
email
,
phone
)
.
goToNav
(
ResourcePage
.
class
)
.
goToTab
(
FileManagePage
.
class
);
//
TenantPage tenantPage = new LoginPage(browser)
//
.login(user, password)
//
.create(tenant);
//
//
await().untilAsserted(() -> assertThat(tenantPage.tenantList())
//
.as("Tenant list should contain newly-created tenant")
//
.extracting(WebElement::getText)
//
.anyMatch(it -> it.contains(tenant)));
//
//
tenantPage.goToNav(SecurityPage.class)
//
.goToTab(UserPage.class)
//
.update(user, user, password, email, phone)
//
.goToNav(ResourcePage.class)
//
.goToTab(FileManagePage.class);
}
@AfterAll
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/FunctionManageE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -83,28 +83,28 @@ public class FunctionManageE2ETest {
@BeforeAll
@SneakyThrows
public
static
void
setup
()
{
TenantPage
tenantPage
=
new
LoginPage
(
browser
)
.
login
(
user
,
password
)
.
create
(
tenant
);
await
().
untilAsserted
(()
->
assertThat
(
tenantPage
.
tenantList
())
.
as
(
"Tenant list should contain newly-created tenant"
)
.
extracting
(
WebElement:
:
getText
)
.
anyMatch
(
it
->
it
.
contains
(
tenant
)));
downloadFile
(
"https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/3.1.2/hive-jdbc-3.1.2.jar"
,
testUploadUdfFilePath
.
toFile
().
getAbsolutePath
());
UdfManagePage
udfManagePage
=
tenantPage
.
goToNav
(
SecurityPage
.
class
)
.
goToTab
(
UserPage
.
class
)
.
update
(
user
,
user
,
password
,
email
,
phone
)
.
goToNav
(
ResourcePage
.
class
)
.
goToTab
(
UdfManagePage
.
class
)
.
uploadFile
(
testUploadUdfFilePath
.
toFile
().
getAbsolutePath
());
new
WebDriverWait
(
browser
,
10
).
until
(
ExpectedConditions
.
invisibilityOfElementLocated
(
By
.
id
(
"fileUpdateDialog"
)));
udfManagePage
.
goToNav
(
ResourcePage
.
class
)
.
goToTab
(
FunctionManagePage
.
class
);
//
TenantPage tenantPage = new LoginPage(browser)
//
.login(user, password)
//
.create(tenant);
//
//
await().untilAsserted(() -> assertThat(tenantPage.tenantList())
//
.as("Tenant list should contain newly-created tenant")
//
.extracting(WebElement::getText)
//
.anyMatch(it -> it.contains(tenant)));
//
//
downloadFile("https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/3.1.2/hive-jdbc-3.1.2.jar", testUploadUdfFilePath.toFile().getAbsolutePath());
//
//
UdfManagePage udfManagePage = tenantPage.goToNav(SecurityPage.class)
//
.goToTab(UserPage.class)
//
.update(user, user, password, email, phone)
//
.goToNav(ResourcePage.class)
//
.goToTab(UdfManagePage.class)
//
.uploadFile(testUploadUdfFilePath.toFile().getAbsolutePath());
//
//
new WebDriverWait(browser, 10).until(ExpectedConditions.invisibilityOfElementLocated(By.id("fileUpdateDialog")));
//
//
udfManagePage.goToNav(ResourcePage.class)
//
.goToTab(FunctionManagePage.class);
}
@AfterAll
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/QueueE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -86,7 +86,8 @@ class QueueE2ETest {
@Test
@Order
(
30
)
void
testEditQueue
()
{
final
QueuePage
page
=
new
QueuePage
(
browser
);
QueuePage
page
=
new
QueuePage
(
browser
);
page
.
update
(
queueName
,
editQueueName
,
editQueueValue
);
await
().
untilAsserted
(()
->
{
...
...
@@ -97,4 +98,5 @@ class QueueE2ETest {
.
anyMatch
(
it
->
it
.
contains
(
editQueueName
));
});
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/TokenE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -52,8 +52,8 @@ public class TokenE2ETest {
@Test
@Order
(
10
)
void
testCreateToken
()
{
final
TokenPage
page
=
new
TokenPage
(
browser
);
page
.
create
();
TokenPage
page
=
new
TokenPage
(
browser
);
page
.
create
(
userName
);
await
().
untilAsserted
(()
->
{
browser
.
navigate
().
refresh
();
...
...
@@ -68,7 +68,7 @@ public class TokenE2ETest {
@Test
@Order
(
30
)
void
testEditToken
()
{
final
TokenPage
page
=
new
TokenPage
(
browser
);
TokenPage
page
=
new
TokenPage
(
browser
);
String
oldToken
=
page
.
getToken
(
userName
);
page
.
update
(
userName
);
...
...
@@ -85,7 +85,7 @@ public class TokenE2ETest {
@Test
@Order
(
40
)
void
testDeleteToken
()
{
final
TokenPage
page
=
new
TokenPage
(
browser
);
TokenPage
page
=
new
TokenPage
(
browser
);
page
.
delete
(
userName
);
await
().
untilAsserted
(()
->
{
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UdfManageE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -80,20 +80,20 @@ public class UdfManageE2ETest {
@BeforeAll
public
static
void
setup
()
{
TenantPage
tenantPage
=
new
LoginPage
(
browser
)
.
login
(
user
,
password
)
.
create
(
tenant
);
await
().
untilAsserted
(()
->
assertThat
(
tenantPage
.
tenantList
())
.
as
(
"Tenant list should contain newly-created tenant"
)
.
extracting
(
WebElement:
:
getText
)
.
anyMatch
(
it
->
it
.
contains
(
tenant
)));
tenantPage
.
goToNav
(
SecurityPage
.
class
)
.
goToTab
(
UserPage
.
class
)
.
update
(
user
,
user
,
password
,
email
,
phone
)
.
goToNav
(
ResourcePage
.
class
)
.
goToTab
(
UdfManagePage
.
class
);
//
TenantPage tenantPage = new LoginPage(browser)
//
.login(user, password)
//
.create(tenant);
//
//
await().untilAsserted(() -> assertThat(tenantPage.tenantList())
//
.as("Tenant list should contain newly-created tenant")
//
.extracting(WebElement::getText)
//
.anyMatch(it -> it.contains(tenant)));
//
//
tenantPage.goToNav(SecurityPage.class)
//
.goToTab(UserPage.class)
//
.update(user, user, password, email, phone)
//
.goToNav(ResourcePage.class)
//
.goToTab(UdfManagePage.class);
}
@AfterAll
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/UserE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -42,14 +42,14 @@ import org.openqa.selenium.remote.RemoteWebDriver;
class
UserE2ETest
{
private
static
final
String
tenant
=
System
.
getProperty
(
"user.name"
);
private
static
final
String
user
=
"test_user"
;
private
static
final
String
password
=
"test
_u
ser123"
;
private
static
final
String
email
=
"test
_u
ser@gmail.com"
;
private
static
final
String
phone
=
"158
00000000
"
;
private
static
final
String
password
=
"test
U
ser123"
;
private
static
final
String
email
=
"test
U
ser@gmail.com"
;
private
static
final
String
phone
=
"158
12389765
"
;
private
static
final
String
editUser
=
"edit_test_user"
;
private
static
final
String
editPassword
=
"edit
_test_u
ser123"
;
private
static
final
String
editEmail
=
"edit
_test_u
ser@gmail.com"
;
private
static
final
String
editPhone
=
"158
00000001
"
;
private
static
final
String
editPassword
=
"edit
TestU
ser123"
;
private
static
final
String
editEmail
=
"edit
TestU
ser@gmail.com"
;
private
static
final
String
editPhone
=
"158
12389780
"
;
private
static
RemoteWebDriver
browser
;
...
...
@@ -83,7 +83,7 @@ class UserE2ETest {
void
testCreateUser
()
{
final
UserPage
page
=
new
UserPage
(
browser
);
page
.
create
(
user
,
password
,
email
,
phone
);
page
.
create
(
user
,
password
,
email
,
phone
,
tenant
);
await
().
untilAsserted
(()
->
{
browser
.
navigate
().
refresh
();
...
...
@@ -100,7 +100,7 @@ class UserE2ETest {
void
testCreateDuplicateUser
()
{
final
UserPage
page
=
new
UserPage
(
browser
);
page
.
create
(
user
,
password
,
email
,
phone
);
page
.
create
(
user
,
password
,
email
,
phone
,
tenant
);
await
().
untilAsserted
(()
->
assertThat
(
browser
.
findElement
(
By
.
tagName
(
"body"
)).
getText
())
...
...
@@ -113,7 +113,8 @@ class UserE2ETest {
@Test
@Order
(
30
)
void
testEditUser
()
{
final
UserPage
page
=
new
UserPage
(
browser
);
UserPage
page
=
new
UserPage
(
browser
);
page
.
update
(
user
,
editUser
,
editPassword
,
editEmail
,
editPhone
);
await
().
untilAsserted
(()
->
{
...
...
@@ -126,21 +127,21 @@ class UserE2ETest {
}
@Test
@Order
(
40
)
void
testDeleteUser
()
{
final
UserPage
page
=
new
UserPage
(
browser
);
page
.
delete
(
editUser
);
await
().
untilAsserted
(()
->
{
browser
.
navigate
().
refresh
();
assertThat
(
page
.
userList
()
).
noneMatch
(
it
->
it
.
getText
().
contains
(
user
)
||
it
.
getText
().
contains
(
editUser
)
);
});
}
//
@Test
//
@Order(40)
//
void testDeleteUser() {
//
final UserPage page = new UserPage(browser);
//
//
page.delete(editUser);
//
//
await().untilAsserted(() -> {
//
browser.navigate().refresh();
//
//
assertThat(
//
page.userList()
//
).noneMatch(
//
it -> it.getText().contains(user) || it.getText().contains(editUser)
//
);
//
});
//
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/cases/WorkerGroupE2ETest.java
浏览文件 @
20dd0c12
...
...
@@ -58,7 +58,7 @@ class WorkerGroupE2ETest {
final
WorkerGroupPage
page
=
new
WorkerGroupPage
(
browser
);
new
WebDriverWait
(
page
.
driver
(),
10
)
.
until
(
ExpectedConditions
.
urlContains
(
"/
#/security/worker-groups
"
));
.
until
(
ExpectedConditions
.
urlContains
(
"/
security/worker-group-manage
"
));
page
.
create
(
workerGroupName
);
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/LoginPage.java
浏览文件 @
20dd0c12
...
...
@@ -25,6 +25,7 @@ import org.apache.dolphinscheduler.e2e.pages.security.TenantPage;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
import
org.openqa.selenium.support.FindBys
;
import
org.openqa.selenium.support.ui.ExpectedConditions
;
import
org.openqa.selenium.support.ui.WebDriverWait
;
...
...
@@ -33,28 +34,39 @@ import lombok.SneakyThrows;
@Getter
public
final
class
LoginPage
extends
NavBarPage
{
@FindBy
(
id
=
"inputUsername"
)
@FindBys
({
@FindBy
(
className
=
"input-user-name"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputUsername
;
@FindBy
(
id
=
"inputPassword"
)
@FindBys
(
{
@FindBy
(
className
=
"input-password"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputPassword
;
@FindBy
(
id
=
"btnL
ogin"
)
@FindBy
(
className
=
"btn-l
ogin"
)
private
WebElement
buttonLogin
;
@FindBy
(
className
=
"n-switch__button"
)
private
WebElement
buttonSwitchLanguage
;
public
LoginPage
(
RemoteWebDriver
driver
)
{
super
(
driver
);
}
@SneakyThrows
public
TenantPage
login
(
String
username
,
String
password
)
{
public
NavBarPage
login
(
String
username
,
String
password
)
{
buttonSwitchLanguage
().
click
();
inputUsername
().
sendKeys
(
username
);
inputPassword
().
sendKeys
(
password
);
buttonLogin
().
click
();
new
WebDriverWait
(
driver
,
10
)
.
until
(
ExpectedConditions
.
urlContains
(
"/
#/security
"
));
.
until
(
ExpectedConditions
.
urlContains
(
"/
home
"
));
return
new
Tenant
Page
(
driver
);
return
new
NavBar
Page
(
driver
);
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/common/NavBarPage.java
浏览文件 @
20dd0c12
...
...
@@ -28,6 +28,7 @@ import org.openqa.selenium.JavascriptExecutor;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
import
org.openqa.selenium.support.FindBys
;
import
org.openqa.selenium.support.PageFactory
;
import
org.openqa.selenium.support.ui.ExpectedConditions
;
import
org.openqa.selenium.support.ui.WebDriverWait
;
...
...
@@ -38,18 +39,21 @@ import lombok.Getter;
public
class
NavBarPage
{
protected
final
RemoteWebDriver
driver
;
@FindBy
(
id
=
"tabProjec
t"
)
@FindBy
(
css
=
".tab-horizontal .n-menu-item:nth-child(2) > .n-menu-item-conten
t"
)
private
WebElement
projectTab
;
@FindBy
(
id
=
"tabSecurity"
)
private
WebElement
securityTab
;
@FindBy
(
id
=
"tabResource"
)
@FindBy
(
css
=
".tab-horizontal .n-menu-item:nth-child(3) > .n-menu-item-content"
)
private
WebElement
resourceTab
;
@FindBy
(
id
=
"tabDataSource"
)
@FindBy
(
css
=
".tab-horizontal .n-menu-item:nth-child(4) > .n-menu-item-content"
)
private
WebElement
dataQualityTab
;
@FindBy
(
css
=
".tab-horizontal .n-menu-item:nth-child(5) > .n-menu-item-content"
)
private
WebElement
dataSourceTab
;
@FindBy
(
css
=
".tab-horizontal .n-menu-item:nth-child(7) > .n-menu-item-content"
)
private
WebElement
securityTab
;
public
NavBarPage
(
RemoteWebDriver
driver
)
{
this
.
driver
=
driver
;
...
...
@@ -58,30 +62,26 @@ public class NavBarPage {
public
<
T
extends
NavBarItem
>
T
goToNav
(
Class
<
T
>
nav
)
{
if
(
nav
==
ProjectPage
.
class
)
{
WebElement
projectTabElement
=
new
WebDriverWait
(
driver
,
60
)
.
until
(
ExpectedConditions
.
elementToBeClickable
(
projectTab
));
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
projectTabElement
);
new
WebDriverWait
(
driver
,
60
).
until
(
ExpectedConditions
.
elementToBeClickable
(
projectTab
));
projectTab
.
click
();
return
nav
.
cast
(
new
ProjectPage
(
driver
));
}
if
(
nav
==
SecurityPage
.
class
)
{
WebElement
securityTabElement
=
new
WebDriverWait
(
driver
,
60
)
.
until
(
ExpectedConditions
.
elementToBeClickable
(
securityTab
));
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
securityTabElement
);
new
WebDriverWait
(
driver
,
60
).
until
(
ExpectedConditions
.
elementToBeClickable
(
securityTab
));
securityTab
.
click
();
return
nav
.
cast
(
new
SecurityPage
(
driver
));
}
if
(
nav
==
ResourcePage
.
class
)
{
WebElement
resourceTabElement
=
new
WebDriverWait
(
driver
,
60
)
.
until
(
ExpectedConditions
.
elementToBeClickable
(
resourceTab
));
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
resourceTabElement
);
new
WebDriverWait
(
driver
,
60
).
until
(
ExpectedConditions
.
elementToBeClickable
(
resourceTab
));
resourceTab
.
click
();
return
nav
.
cast
(
new
ResourcePage
(
driver
));
}
if
(
nav
==
DataSourcePage
.
class
)
{
WebElement
dataSourceTabElement
=
new
WebDriverWait
(
driver
,
60
)
.
until
(
ExpectedConditions
.
elementToBeClickable
(
dataSourceTab
));
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
dataSourceTabElement
);
new
WebDriverWait
(
driver
,
60
).
until
(
ExpectedConditions
.
elementToBeClickable
(
dataSourceTab
));
dataSourceTab
.
click
();
return
nav
.
cast
(
new
DataSourcePage
(
driver
));
}
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/EnvironmentPage.java
浏览文件 @
20dd0c12
...
...
@@ -24,6 +24,8 @@ import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
import
java.util.List
;
import
org.openqa.selenium.By
;
import
org.openqa.selenium.JavascriptExecutor
;
import
org.openqa.selenium.Keys
;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
...
...
@@ -31,20 +33,22 @@ import org.openqa.selenium.support.FindBys;
import
org.openqa.selenium.support.PageFactory
;
import
lombok.Getter
;
import
org.openqa.selenium.support.ui.ExpectedConditions
;
import
org.openqa.selenium.support.ui.WebDriverWait
;
@Getter
public
final
class
EnvironmentPage
extends
NavBarPage
implements
SecurityPage
.
Tab
{
@FindBy
(
id
=
"btnCreateE
nvironment"
)
@FindBy
(
className
=
"btn-create-e
nvironment"
)
private
WebElement
buttonCreateEnvironment
;
@FindBy
(
className
=
"items"
)
private
List
<
WebElement
>
environmentList
;
@FindBys
({
@FindBy
(
className
=
"el-popconfirm
"
),
@FindBy
(
className
=
"el-button--primary
"
),
@FindBy
(
className
=
"n-popconfirm__action
"
),
@FindBy
(
className
=
"n-button--primary-type
"
),
})
private
List
<
WebElement
>
buttonConfirm
;
private
WebElement
buttonConfirm
;
private
final
EnvironmentForm
createEnvironmentForm
;
private
final
EnvironmentForm
editEnvironmentForm
;
...
...
@@ -60,7 +64,18 @@ public final class EnvironmentPage extends NavBarPage implements SecurityPage.Ta
createEnvironmentForm
().
inputEnvironmentName
().
sendKeys
(
name
);
createEnvironmentForm
().
inputEnvironmentConfig
().
sendKeys
(
config
);
createEnvironmentForm
().
inputEnvironmentDesc
().
sendKeys
(
desc
);
createEnvironmentForm
().
inputWorkerGroup
().
sendKeys
(
workerGroup
);
editEnvironmentForm
().
btnSelectWorkerGroupDropdown
().
click
();
new
WebDriverWait
(
driver
,
5
).
until
(
ExpectedConditions
.
visibilityOfElementLocated
(
new
By
.
ByClassName
(
"n-base-select-option__content"
)));
editEnvironmentForm
().
selectWorkerGroupList
()
.
stream
()
.
filter
(
it
->
it
.
getText
().
contains
(
workerGroup
))
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
String
.
format
(
"No %s in worker group dropdown list"
,
workerGroup
)))
.
click
();
createEnvironmentForm
().
buttonSubmit
().
click
();
return
this
;
}
...
...
@@ -68,17 +83,39 @@ public final class EnvironmentPage extends NavBarPage implements SecurityPage.Ta
public
EnvironmentPage
update
(
String
oldName
,
String
name
,
String
config
,
String
desc
,
String
workerGroup
)
{
environmentList
()
.
stream
()
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"environment
N
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
oldName
))
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"environment
-n
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
oldName
))
.
flatMap
(
it
->
it
.
findElements
(
By
.
className
(
"edit"
)).
stream
())
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No edit button in environment list"
))
.
click
();
editEnvironmentForm
().
inputEnvironmentName
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editEnvironmentForm
().
inputEnvironmentName
().
sendKeys
(
Keys
.
BACK_SPACE
);
editEnvironmentForm
().
inputEnvironmentName
().
sendKeys
(
name
);
editEnvironmentForm
().
inputEnvironmentConfig
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editEnvironmentForm
().
inputEnvironmentConfig
().
sendKeys
(
Keys
.
BACK_SPACE
);
editEnvironmentForm
().
inputEnvironmentConfig
().
sendKeys
(
config
);
editEnvironmentForm
().
inputEnvironmentDesc
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editEnvironmentForm
().
inputEnvironmentDesc
().
sendKeys
(
Keys
.
BACK_SPACE
);
editEnvironmentForm
().
inputEnvironmentDesc
().
sendKeys
(
desc
);
editEnvironmentForm
().
inputWorkerGroup
().
sendKeys
(
workerGroup
);
if
(
editEnvironmentForm
().
selectedWorkerGroup
().
getAttribute
(
"innerHTML"
).
equals
(
workerGroup
))
{
editEnvironmentForm
().
btnSelectWorkerGroupDropdown
().
click
();
new
WebDriverWait
(
driver
,
5
).
until
(
ExpectedConditions
.
visibilityOfElementLocated
(
new
By
.
ByClassName
(
"n-base-select-option__content"
)));
editEnvironmentForm
().
selectWorkerGroupList
()
.
stream
()
.
filter
(
it
->
it
.
getText
().
contains
(
workerGroup
))
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
String
.
format
(
"No %s in worker group dropdown list"
,
workerGroup
)))
.
click
();
}
editEnvironmentForm
().
buttonSubmit
().
click
();
return
this
;
...
...
@@ -94,12 +131,7 @@ public final class EnvironmentPage extends NavBarPage implements SecurityPage.Ta
.
orElseThrow
(()
->
new
RuntimeException
(
"No delete button in environment list"
))
.
click
();
buttonConfirm
()
.
stream
()
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No confirm button when deleting"
))
.
click
();
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
buttonConfirm
());
return
this
;
}
...
...
@@ -110,22 +142,43 @@ public final class EnvironmentPage extends NavBarPage implements SecurityPage.Ta
PageFactory
.
initElements
(
driver
,
this
);
}
@FindBy
(
id
=
"inputEnvironmentName"
)
@FindBys
({
@FindBy
(
className
=
"input-environment-name"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputEnvironmentName
;
@FindBy
(
id
=
"inputEnvironmentConfig"
)
@FindBys
({
@FindBy
(
className
=
"input-environment-config"
),
@FindBy
(
tagName
=
"textarea"
),
})
private
WebElement
inputEnvironmentConfig
;
@FindBy
(
id
=
"inputEnvironmentDesc"
)
@FindBys
({
@FindBy
(
className
=
"input-environment-desc"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputEnvironmentDesc
;
@FindBy
(
id
=
"inputEnvironmentWorkerGroup"
)
private
WebElement
inputWorkerGroup
;
@FindBys
({
@FindBy
(
className
=
"input-environment-worker-group"
),
@FindBy
(
className
=
"n-base-selection"
),
})
private
WebElement
btnSelectWorkerGroupDropdown
;
@FindBy
(
className
=
"n-base-select-option__content"
)
private
List
<
WebElement
>
selectWorkerGroupList
;
@FindBys
({
@FindBy
(
className
=
"n-base-selection-tags"
),
@FindBy
(
className
=
"n-tag__content"
),
})
private
WebElement
selectedWorkerGroup
;
@FindBy
(
id
=
"btnS
ubmit"
)
@FindBy
(
className
=
"btn-s
ubmit"
)
private
WebElement
buttonSubmit
;
@FindBy
(
id
=
"btnC
ancel"
)
@FindBy
(
className
=
"btn-c
ancel"
)
private
WebElement
buttonCancel
;
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/QueuePage.java
浏览文件 @
20dd0c12
...
...
@@ -21,19 +21,22 @@ package org.apache.dolphinscheduler.e2e.pages.security;
import
org.apache.dolphinscheduler.e2e.pages.common.NavBarPage
;
import
java.security.Key
;
import
java.util.List
;
import
org.openqa.selenium.By
;
import
org.openqa.selenium.Keys
;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
import
org.openqa.selenium.support.FindBys
;
import
org.openqa.selenium.support.PageFactory
;
import
lombok.Getter
;
@Getter
public
final
class
QueuePage
extends
NavBarPage
implements
SecurityPage
.
Tab
{
@FindBy
(
id
=
"btnCreateQ
ueue"
)
@FindBy
(
className
=
"btn-create-q
ueue"
)
private
WebElement
buttonCreateQueue
;
@FindBy
(
className
=
"items"
)
...
...
@@ -59,15 +62,21 @@ public final class QueuePage extends NavBarPage implements SecurityPage.Tab {
public
QueuePage
update
(
String
queueName
,
String
editQueueName
,
String
editQueueValue
)
{
queueList
()
.
stream
()
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"queue
N
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
queueName
))
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"queue
-n
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
queueName
))
.
flatMap
(
it
->
it
.
findElements
(
By
.
className
(
"edit"
)).
stream
())
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No edit button in queue list"
))
.
click
();
editQueueForm
().
inputQueueName
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editQueueForm
().
inputQueueName
().
sendKeys
(
Keys
.
BACK_SPACE
);
editQueueForm
().
inputQueueName
().
sendKeys
(
editQueueName
);
editQueueForm
().
inputQueueValue
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editQueueForm
().
inputQueueValue
().
sendKeys
(
Keys
.
BACK_SPACE
);
editQueueForm
().
inputQueueValue
().
sendKeys
(
editQueueValue
);
editQueueForm
().
buttonSubmit
().
click
();
return
this
;
...
...
@@ -79,16 +88,22 @@ public final class QueuePage extends NavBarPage implements SecurityPage.Tab {
PageFactory
.
initElements
(
driver
,
this
);
}
@FindBy
(
id
=
"inputQueueName"
)
@FindBys
({
@FindBy
(
className
=
"input-queue-name"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputQueueName
;
@FindBy
(
id
=
"inputQueueValue"
)
@FindBys
({
@FindBy
(
className
=
"input-queue-value"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputQueueValue
;
@FindBy
(
id
=
"btnS
ubmit"
)
@FindBy
(
className
=
"btn-s
ubmit"
)
private
WebElement
buttonSubmit
;
@FindBy
(
id
=
"btnC
ancel"
)
@FindBy
(
className
=
"btn-c
ancel"
)
private
WebElement
buttonCancel
;
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/SecurityPage.java
浏览文件 @
20dd0c12
...
...
@@ -27,6 +27,7 @@ import org.openqa.selenium.JavascriptExecutor;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
import
org.openqa.selenium.support.FindBys
;
import
org.openqa.selenium.support.ui.ExpectedConditions
;
import
org.openqa.selenium.support.ui.WebDriverWait
;
...
...
@@ -34,67 +35,71 @@ import lombok.Getter;
@Getter
public
class
SecurityPage
extends
NavBarPage
implements
NavBarItem
{
@FindBy
(
className
=
"tab-tenant-manage"
)
@FindBy
(
css
=
".tab-vertical > .n-menu-item:nth-child(1) > .n-menu-item-content"
)
private
WebElement
menuTenantManage
;
@FindBy
(
c
lassName
=
"tab-user-manage
"
)
@FindBy
(
c
ss
=
".tab-vertical > .n-menu-item:nth-child(2) > .n-menu-item-content
"
)
private
WebElement
menUserManage
;
@FindBy
(
c
lassName
=
"tab-worker-group-manage
"
)
@FindBy
(
c
ss
=
".tab-vertical > .n-menu-item:nth-child(5) > .n-menu-item-content
"
)
private
WebElement
menWorkerGroupManage
;
@FindBy
(
c
lassName
=
"tab-queue-manage
"
)
@FindBy
(
c
ss
=
".tab-vertical > .n-menu-item:nth-child(6) > .n-menu-item-content
"
)
private
WebElement
menuQueueManage
;
@FindBy
(
c
lassName
=
"tab-environment-manage
"
)
@FindBy
(
c
ss
=
".tab-vertical > .n-menu-item:nth-child(7) > .n-menu-item-content
"
)
private
WebElement
menuEnvironmentManage
;
@FindBy
(
className
=
"tab-token-manage"
)
private
WebElement
menuTokenManage
;
@FindBy
(
className
=
"tab-namespace-manage"
)
@FindBy
(
css
=
".tab-vertical > .n-menu-item:nth-child(8) > .n-menu-item-content"
)
private
WebElement
menuNamespaceManage
;
@FindBy
(
css
=
".tab-vertical > .n-menu-item:nth-child(9) > .n-menu-item-content"
)
private
WebElement
menuTokenManage
;
public
SecurityPage
(
RemoteWebDriver
driver
)
{
super
(
driver
);
}
public
<
T
extends
SecurityPage
.
Tab
>
T
goToTab
(
Class
<
T
>
tab
)
{
if
(
tab
==
TenantPage
.
class
)
{
WebElement
menuTenantManageElement
=
new
WebDriverWait
(
driver
,
60
)
.
until
(
ExpectedConditions
.
elementToBeClickable
(
menuTenantManage
));
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
menuTenantManageElement
);
new
WebDriverWait
(
driver
,
60
).
until
(
ExpectedConditions
.
elementToBeClickable
(
menuTenantManage
));
menuTenantManage
.
click
();
return
tab
.
cast
(
new
TenantPage
(
driver
));
}
if
(
tab
==
UserPage
.
class
)
{
WebElement
menUserManageElement
=
new
WebDriverWait
(
driver
,
60
)
.
until
(
ExpectedConditions
.
elementToBeClickable
(
menUserManage
));
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
menUserManageElement
);
new
WebDriverWait
(
driver
,
25
).
until
(
ExpectedConditions
.
urlContains
(
"/#/security/users"
));
new
WebDriverWait
(
driver
,
60
).
until
(
ExpectedConditions
.
elementToBeClickable
(
menUserManage
));
menUserManage
.
click
();
return
tab
.
cast
(
new
UserPage
(
driver
));
}
if
(
tab
==
WorkerGroupPage
.
class
)
{
WebElement
menWorkerGroupManageElement
=
new
WebDriverWait
(
driver
,
60
)
.
until
(
ExpectedConditions
.
elementToBeClickable
(
menWorkerGroupManage
));
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
menWorkerGroupManageElement
);
new
WebDriverWait
(
driver
,
60
).
until
(
ExpectedConditions
.
elementToBeClickable
(
menWorkerGroupManage
));
menWorkerGroupManage
.
click
();
return
tab
.
cast
(
new
WorkerGroupPage
(
driver
));
}
if
(
tab
==
QueuePage
.
class
)
{
menuQueueManage
().
click
();
return
tab
.
cast
(
new
QueuePage
(
driver
));
}
if
(
tab
==
EnvironmentPage
.
class
)
{
menuEnvironmentManage
().
click
();
return
tab
.
cast
(
new
EnvironmentPage
(
driver
));
}
if
(
tab
==
TokenPage
.
class
)
{
menuTokenManage
().
click
();
return
tab
.
cast
(
new
TokenPage
(
driver
));
}
if
(
tab
==
NamespacePage
.
class
)
{
menuNamespaceManage
().
click
();
return
tab
.
cast
(
new
NamespacePage
(
driver
));
}
throw
new
UnsupportedOperationException
(
"Unknown tab: "
+
tab
.
getName
());
}
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TenantPage.java
浏览文件 @
20dd0c12
...
...
@@ -24,6 +24,8 @@ import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
import
java.util.List
;
import
org.openqa.selenium.By
;
import
org.openqa.selenium.JavascriptExecutor
;
import
org.openqa.selenium.Keys
;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
...
...
@@ -34,19 +36,19 @@ import lombok.Getter;
@Getter
public
final
class
TenantPage
extends
NavBarPage
implements
SecurityPage
.
Tab
{
@FindBy
(
id
=
"btnCreateT
enant"
)
@FindBy
(
className
=
"btn-create-t
enant"
)
private
WebElement
buttonCreateTenant
;
@FindBy
(
className
=
"items"
)
private
List
<
WebElement
>
tenantList
;
@FindBys
({
@FindBy
(
className
=
"
el-popconfirm
"
),
@FindBy
(
className
=
"
el-button--primary
"
),
@FindBy
(
className
=
"
n-popconfirm__action
"
),
@FindBy
(
className
=
"
n-button--primary-type
"
),
})
private
WebElement
buttonConfirm
;
@FindBy
(
className
=
"tenant
C
ode"
)
@FindBy
(
className
=
"tenant
-c
ode"
)
private
WebElement
tenantCode
;
private
final
TenantForm
tenantForm
;
...
...
@@ -74,18 +76,17 @@ public final class TenantPage extends NavBarPage implements SecurityPage.Tab {
public
TenantPage
update
(
String
tenant
,
String
description
)
{
tenantList
().
stream
()
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"tenant
C
ode"
)).
getAttribute
(
"innerHTML"
).
contains
(
tenant
))
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"tenant
-c
ode"
)).
getAttribute
(
"innerHTML"
).
contains
(
tenant
))
.
flatMap
(
it
->
it
.
findElements
(
By
.
className
(
"edit"
)).
stream
())
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No edit button in tenant list"
))
.
click
();
TenantForm
editTenantForm
=
new
TenantForm
();
editTenantForm
.
inputDescription
().
clear
();
editTenantForm
.
inputDescription
().
sendKeys
(
description
);
editTenantForm
.
buttonSubmit
().
click
();
editTenantForm
().
inputDescription
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editTenantForm
().
inputDescription
().
sendKeys
(
Keys
.
BACK_SPACE
);
editTenantForm
().
inputDescription
().
sendKeys
(
description
);
editTenantForm
().
buttonSubmit
().
click
();
return
this
;
}
...
...
@@ -100,7 +101,7 @@ public final class TenantPage extends NavBarPage implements SecurityPage.Tab {
.
orElseThrow
(()
->
new
RuntimeException
(
"No delete button in user list"
))
.
click
();
buttonConfirm
().
click
(
);
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
buttonConfirm
()
);
return
this
;
}
...
...
@@ -111,19 +112,25 @@ public final class TenantPage extends NavBarPage implements SecurityPage.Tab {
PageFactory
.
initElements
(
driver
,
this
);
}
@FindBy
(
id
=
"inputTenantCode"
)
@FindBys
({
@FindBy
(
className
=
"input-tenant-code"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputTenantCode
;
@FindBy
(
id
=
"selectQ
ueue"
)
@FindBy
(
className
=
"select-q
ueue"
)
private
WebElement
selectQueue
;
@FindBy
(
id
=
"inputDescription"
)
@FindBys
({
@FindBy
(
className
=
"input-description"
),
@FindBy
(
tagName
=
"textarea"
),
})
private
WebElement
inputDescription
;
@FindBy
(
id
=
"btnS
ubmit"
)
@FindBy
(
className
=
"btn-s
ubmit"
)
private
WebElement
buttonSubmit
;
@FindBy
(
id
=
"btnC
ancel"
)
@FindBy
(
className
=
"btn-c
ancel"
)
private
WebElement
buttonCancel
;
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TokenPage.java
浏览文件 @
20dd0c12
...
...
@@ -25,6 +25,7 @@ import org.apache.dolphinscheduler.e2e.pages.security.SecurityPage.Tab;
import
java.util.List
;
import
org.openqa.selenium.By
;
import
org.openqa.selenium.JavascriptExecutor
;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
...
...
@@ -39,19 +40,19 @@ import com.google.common.base.Strings;
@Getter
public
final
class
TokenPage
extends
NavBarPage
implements
Tab
{
@FindBy
(
id
=
"btnCreateT
oken"
)
@FindBy
(
className
=
"btn-create-t
oken"
)
private
WebElement
buttonCreateToken
;
@FindBy
(
className
=
"items"
)
private
List
<
WebElement
>
tokenList
;
@FindBys
({
@FindBy
(
className
=
"
el-popconfirm
"
),
@FindBy
(
className
=
"
el-button--primary
"
),
@FindBy
(
className
=
"
n-popconfirm__action
"
),
@FindBy
(
className
=
"
n-button--primary-type
"
),
})
private
List
<
WebElement
>
buttonConfirm
;
private
WebElement
buttonConfirm
;
@FindBy
(
className
=
"user
N
ame"
)
@FindBy
(
className
=
"user
n
ame"
)
private
List
<
WebElement
>
userName
;
@FindBy
(
className
=
"token"
)
...
...
@@ -64,34 +65,50 @@ public final class TokenPage extends NavBarPage implements Tab {
super
(
driver
);
}
public
TokenPage
create
()
{
public
TokenPage
create
(
String
userName
)
{
buttonCreateToken
().
click
();
new
WebDriverWait
(
driver
,
5
).
until
(
ExpectedConditions
.
elementToBeClickable
(
createTokenForm
().
selectUserNameDropdown
()));
createTokenForm
().
selectUserNameDropdown
().
click
();
new
WebDriverWait
(
driver
,
5
).
until
(
ExpectedConditions
.
visibilityOfElementLocated
(
new
By
.
ByClassName
(
"n-base-select-option__content"
)));
createTokenForm
().
selectUserNameList
()
.
stream
()
.
filter
(
it
->
it
.
getText
().
contains
(
userName
))
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
String
.
format
(
"No %s in token dropdown list"
,
userName
)))
.
click
();
createTokenForm
().
buttonGenerateToken
().
click
();
new
WebDriverWait
(
driver
,
10
).
until
(
ExpectedConditions
.
elementToBeClickable
(
createTokenForm
.
buttonGenerateToken
));
new
WebDriverWait
(
driver
,
10
).
until
(
ExpectedConditions
.
elementToBeClickable
(
createTokenForm
().
buttonGenerateToken
()));
createTokenForm
().
buttonSubmit
().
click
();
return
this
;
}
public
TokenPage
update
(
String
userName
)
{
tokenList
().
stream
()
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"user
N
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
userName
))
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"user
n
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
userName
))
.
flatMap
(
it
->
it
.
findElements
(
By
.
className
(
"edit"
)).
stream
())
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No edit button in token list"
))
.
click
();
TokenForm
editTokenForm
=
new
TokenForm
();
new
WebDriverWait
(
driver
,
5
).
until
(
ExpectedConditions
.
elementToBeClickable
(
editTokenForm
().
buttonGenerateToken
()));
editTokenForm
().
buttonGenerateToken
().
click
();
new
WebDriverWait
(
driver
,
10
).
until
(
ExpectedConditions
.
elementToBeClickable
(
editTokenForm
().
buttonGenerateToken
()));
editTokenForm
().
buttonSubmit
().
click
();
editTokenForm
.
buttonGenerateToken
().
click
();
new
WebDriverWait
(
driver
,
10
).
until
(
ExpectedConditions
.
elementToBeClickable
(
createTokenForm
.
buttonGenerateToken
));
editTokenForm
.
buttonSubmit
().
click
();
return
this
;
}
public
String
getToken
(
String
userName
)
{
return
tokenList
().
stream
()
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"user
N
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
userName
))
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"user
n
ame"
)).
getAttribute
(
"innerHTML"
).
contains
(
userName
))
.
flatMap
(
it
->
it
.
findElements
(
By
.
className
(
"token"
)).
stream
())
.
filter
(
it
->
!
Strings
.
isNullOrEmpty
(
it
.
getAttribute
(
"innerHTML"
)))
.
map
(
it
->
it
.
getAttribute
(
"innerHTML"
))
...
...
@@ -109,12 +126,7 @@ public final class TokenPage extends NavBarPage implements Tab {
.
orElseThrow
(()
->
new
RuntimeException
(
"No delete button in token list"
))
.
click
();
buttonConfirm
()
.
stream
()
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No confirm button when deleting"
))
.
click
();
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
buttonConfirm
());
return
this
;
}
...
...
@@ -125,13 +137,22 @@ public final class TokenPage extends NavBarPage implements Tab {
PageFactory
.
initElements
(
driver
,
this
);
}
@FindBy
(
id
=
"btnGenerateToken"
)
@FindBys
({
@FindBy
(
className
=
"input-username"
),
@FindBy
(
className
=
"n-base-selection"
),
})
private
WebElement
selectUserNameDropdown
;
@FindBy
(
className
=
"n-base-select-option__content"
)
private
List
<
WebElement
>
selectUserNameList
;
@FindBy
(
className
=
"btn-generate-token"
)
private
WebElement
buttonGenerateToken
;
@FindBy
(
id
=
"btnS
ubmit"
)
@FindBy
(
className
=
"btn-s
ubmit"
)
private
WebElement
buttonSubmit
;
@FindBy
(
id
=
"btnC
ancel"
)
@FindBy
(
className
=
"btn-c
ancel"
)
private
WebElement
buttonCancel
;
}
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/UserPage.java
浏览文件 @
20dd0c12
...
...
@@ -24,6 +24,8 @@ import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
import
java.util.List
;
import
org.openqa.selenium.By
;
import
org.openqa.selenium.JavascriptExecutor
;
import
org.openqa.selenium.Keys
;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
...
...
@@ -31,20 +33,22 @@ import org.openqa.selenium.support.FindBys;
import
org.openqa.selenium.support.PageFactory
;
import
lombok.Getter
;
import
org.openqa.selenium.support.ui.ExpectedConditions
;
import
org.openqa.selenium.support.ui.WebDriverWait
;
@Getter
public
final
class
UserPage
extends
NavBarPage
implements
SecurityPage
.
Tab
{
@FindBy
(
id
=
"btnCreateU
ser"
)
@FindBy
(
className
=
"btn-create-u
ser"
)
private
WebElement
buttonCreateUser
;
@FindBy
(
className
=
"items"
)
private
List
<
WebElement
>
userList
;
@FindBys
({
@FindBy
(
className
=
"
el-popconfirm
"
),
@FindBy
(
className
=
"
el-button--primary
"
),
@FindBy
(
className
=
"
n-popconfirm__action
"
),
@FindBy
(
className
=
"
n-button--primary-type
"
),
})
private
List
<
WebElement
>
buttonConfirm
;
private
WebElement
buttonConfirm
;
private
final
UserForm
createUserForm
=
new
UserForm
();
private
final
UserForm
editUserForm
=
new
UserForm
();
...
...
@@ -54,11 +58,24 @@ public final class UserPage extends NavBarPage implements SecurityPage.Tab {
super
(
driver
);
}
public
UserPage
create
(
String
user
,
String
password
,
String
email
,
String
phone
)
{
public
UserPage
create
(
String
user
,
String
password
,
String
email
,
String
phone
,
String
tenant
)
{
buttonCreateUser
().
click
();
createUserForm
().
inputUserName
().
sendKeys
(
user
);
createUserForm
().
inputUserPassword
().
sendKeys
(
password
);
createUserForm
().
btnSelectTenantDropdown
().
click
();
new
WebDriverWait
(
driver
,
5
).
until
(
ExpectedConditions
.
visibilityOfElementLocated
(
new
By
.
ByClassName
(
"n-base-select-option__content"
)));
createUserForm
().
selectTenant
()
.
stream
()
.
filter
(
it
->
it
.
getText
().
contains
(
tenant
))
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
String
.
format
(
"No %s in tenant dropdown list"
,
tenant
)))
.
click
();
createUserForm
().
inputEmail
().
sendKeys
(
email
);
createUserForm
().
inputPhone
().
sendKeys
(
phone
);
createUserForm
().
buttonSubmit
().
click
();
...
...
@@ -67,8 +84,7 @@ public final class UserPage extends NavBarPage implements SecurityPage.Tab {
}
public
UserPage
update
(
String
user
,
String
editUser
,
String
editPassword
,
String
editEmail
,
String
editPhone
)
{
List
<
WebElement
>
userList
=
driver
.
findElementsByClassName
(
"items"
);
userList
.
stream
()
userList
().
stream
()
.
filter
(
it
->
it
.
findElement
(
By
.
className
(
"name"
)).
getAttribute
(
"innerHTML"
).
contains
(
user
))
.
flatMap
(
it
->
it
.
findElements
(
By
.
className
(
"edit"
)).
stream
())
.
filter
(
WebElement:
:
isDisplayed
)
...
...
@@ -76,17 +92,21 @@ public final class UserPage extends NavBarPage implements SecurityPage.Tab {
.
orElseThrow
(()
->
new
RuntimeException
(
"No edit button in user list"
))
.
click
();
UserForm
editUserForm
=
new
UserForm
();
editUserForm
().
inputUserName
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editUserForm
().
inputUserName
().
sendKeys
(
Keys
.
BACK_SPACE
);
editUserForm
().
inputUserName
().
sendKeys
(
editUser
);
editUserForm
().
inputUserPassword
().
sendKeys
(
editPassword
);
editUserForm
.
inputUserName
().
clear
(
);
editUserForm
.
inputUserName
().
sendKeys
(
editUser
);
editUserForm
.
inputUserPassword
().
clear
(
);
editUserForm
.
inputUserPassword
().
sendKeys
(
editPassword
);
editUserForm
.
inputEmail
().
clear
(
);
editUserForm
.
inputEmail
().
sendKeys
(
editEmail
);
editUserForm
.
inputPhone
().
clear
(
);
editUserForm
.
inputPhone
().
sendKeys
(
editPhone
);
editUserForm
.
buttonSubmit
().
click
();
editUserForm
().
inputEmail
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editUserForm
().
inputEmail
().
sendKeys
(
Keys
.
BACK_SPACE
);
editUserForm
().
inputEmail
().
sendKeys
(
editEmail
);
editUserForm
().
inputPhone
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editUserForm
().
inputPhone
().
sendKeys
(
Keys
.
BACK_SPACE
);
editUserForm
().
inputPhone
().
sendKeys
(
editPhone
);
editUserForm
()
.
buttonSubmit
().
click
();
return
this
;
}
...
...
@@ -101,12 +121,7 @@ public final class UserPage extends NavBarPage implements SecurityPage.Tab {
.
orElseThrow
(()
->
new
RuntimeException
(
"No delete button in user list"
))
.
click
();
buttonConfirm
()
.
stream
()
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No confirm button when deleting"
))
.
click
();
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
buttonConfirm
());
return
this
;
}
...
...
@@ -117,34 +132,58 @@ public final class UserPage extends NavBarPage implements SecurityPage.Tab {
PageFactory
.
initElements
(
driver
,
this
);
}
@FindBy
(
id
=
"inputUserName"
)
@FindBys
({
@FindBy
(
className
=
"input-username"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputUserName
;
@FindBy
(
id
=
"inputUserPassword"
)
@FindBys
({
@FindBy
(
className
=
"input-password"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputUserPassword
;
@FindBy
(
id
=
"selectTenant"
)
private
WebElement
selectTenant
;
@FindBys
({
@FindBy
(
className
=
"select-tenant"
),
@FindBy
(
className
=
"n-base-selection"
),
})
private
WebElement
btnSelectTenantDropdown
;
@FindBy
(
className
=
"n-base-select-option__content"
)
private
List
<
WebElement
>
selectTenant
;
@FindBys
({
@FindBy
(
className
=
"select-queue"
),
@FindBy
(
className
=
"n-base-selection"
),
})
private
WebElement
btnSelectQueueDropdown
;
@FindBy
(
id
=
"selectQueue
"
)
private
WebElement
selectQueue
;
@FindBy
(
className
=
"n-base-select-option__content
"
)
private
List
<
WebElement
>
selectQueue
;
@FindBy
(
id
=
"inputEmail"
)
@FindBys
({
@FindBy
(
className
=
"input-email"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputEmail
;
@FindBy
(
id
=
"inputPhone"
)
@FindBys
({
@FindBy
(
className
=
"input-phone"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputPhone
;
@FindBy
(
id
=
"radioStateE
nable"
)
@FindBy
(
className
=
"radio-state-e
nable"
)
private
WebElement
radioStateEnable
;
@FindBy
(
id
=
"radioStateD
isable"
)
@FindBy
(
className
=
"radio-state-d
isable"
)
private
WebElement
radioStateDisable
;
@FindBy
(
id
=
"btnS
ubmit"
)
@FindBy
(
className
=
"btn-s
ubmit"
)
private
WebElement
buttonSubmit
;
@FindBy
(
id
=
"btnC
ancel"
)
@FindBy
(
className
=
"btn-c
ancel"
)
private
WebElement
buttonCancel
;
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/WorkerGroupPage.java
浏览文件 @
20dd0c12
...
...
@@ -22,6 +22,8 @@ package org.apache.dolphinscheduler.e2e.pages.security;
import
lombok.Getter
;
import
org.apache.dolphinscheduler.e2e.pages.common.NavBarPage
;
import
org.openqa.selenium.By
;
import
org.openqa.selenium.JavascriptExecutor
;
import
org.openqa.selenium.Keys
;
import
org.openqa.selenium.WebElement
;
import
org.openqa.selenium.remote.RemoteWebDriver
;
import
org.openqa.selenium.support.FindBy
;
...
...
@@ -33,17 +35,17 @@ import java.util.List;
@Getter
public
final
class
WorkerGroupPage
extends
NavBarPage
implements
SecurityPage
.
Tab
{
@FindBy
(
id
=
"btnCreateWorkerG
roup"
)
@FindBy
(
className
=
"btn-create-worker-g
roup"
)
private
WebElement
buttonCreateWorkerGroup
;
@FindBy
(
className
=
"items"
)
private
List
<
WebElement
>
workerGroupList
;
@FindBys
({
@FindBy
(
className
=
"
el-popconfirm
"
),
@FindBy
(
className
=
"
el-button--primary
"
),
@FindBy
(
className
=
"
n-popconfirm__action
"
),
@FindBy
(
className
=
"
n-button--primary-type
"
),
})
private
List
<
WebElement
>
buttonConfirm
;
private
WebElement
buttonConfirm
;
private
final
WorkerGroupForm
createWorkerForm
=
new
WorkerGroupForm
();
private
final
WorkerGroupForm
editWorkerForm
=
new
WorkerGroupForm
();
...
...
@@ -58,7 +60,7 @@ public final class WorkerGroupPage extends NavBarPage implements SecurityPage.Ta
buttonCreateWorkerGroup
().
click
();
createWorkerForm
().
inputWorkerGroupName
().
sendKeys
(
workerGroupName
);
createWorkerForm
().
s
electWorkerAddress
().
click
();
createWorkerForm
().
btnS
electWorkerAddress
().
click
();
createWorkerForm
().
workerAddressList
().
click
();
createWorkerForm
().
buttonSubmit
().
click
();
...
...
@@ -76,7 +78,8 @@ public final class WorkerGroupPage extends NavBarPage implements SecurityPage.Ta
.
orElseThrow
(()
->
new
RuntimeException
(
"No edit button in workerGroup list"
))
.
click
();
editWorkerForm
().
inputWorkerGroupName
().
clear
();
editWorkerForm
().
inputWorkerGroupName
().
sendKeys
(
Keys
.
CONTROL
+
"a"
);
editWorkerForm
().
inputWorkerGroupName
().
sendKeys
(
Keys
.
BACK_SPACE
);
editWorkerForm
().
inputWorkerGroupName
().
sendKeys
(
editWorkerGroupName
);
editWorkerForm
().
buttonSubmit
().
click
();
...
...
@@ -95,12 +98,7 @@ public final class WorkerGroupPage extends NavBarPage implements SecurityPage.Ta
.
orElseThrow
(()
->
new
RuntimeException
(
"No delete button in workerGroup list"
))
.
click
();
buttonConfirm
()
.
stream
()
.
filter
(
WebElement:
:
isDisplayed
)
.
findFirst
()
.
orElseThrow
(()
->
new
RuntimeException
(
"No confirm button when deleting"
))
.
click
();
((
JavascriptExecutor
)
driver
).
executeScript
(
"arguments[0].click();"
,
buttonConfirm
());
return
this
;
}
...
...
@@ -111,19 +109,25 @@ public final class WorkerGroupPage extends NavBarPage implements SecurityPage.Ta
PageFactory
.
initElements
(
driver
,
this
);
}
@FindBy
(
id
=
"inputWorkerGroupName"
)
@FindBys
({
@FindBy
(
className
=
"input-worker-group-name"
),
@FindBy
(
tagName
=
"input"
),
})
private
WebElement
inputWorkerGroupName
;
@FindBy
(
id
=
"selectWorkerAddress"
)
private
WebElement
selectWorkerAddress
;
@FindBys
({
@FindBy
(
className
=
"select-worker-address"
),
@FindBy
(
className
=
"n-base-selection"
),
})
private
WebElement
btnSelectWorkerAddress
;
@FindBy
(
className
=
"
vue-treeselect__menu
"
)
@FindBy
(
className
=
"
n-base-select-option__content
"
)
private
WebElement
workerAddressList
;
@FindBy
(
id
=
"btnS
ubmit"
)
@FindBy
(
className
=
"btn-s
ubmit"
)
private
WebElement
buttonSubmit
;
@FindBy
(
id
=
"btnC
ancel"
)
@FindBy
(
className
=
"btn-c
ancel"
)
private
WebElement
buttonCancel
;
}
}
dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/resources/docker/basic/docker-compose.yaml
浏览文件 @
20dd0c12
...
...
@@ -23,8 +23,10 @@ services:
environment
:
MASTER_MAX_CPU_LOAD_AVG
:
100
WORKER_TENANT_AUTO_CREATE
:
'
true'
expose
:
-
12345
# expose:
# - 12345
ports
:
-
12345:12345
networks
:
-
e2e
healthcheck
:
...
...
dolphinscheduler-e2e/dolphinscheduler-e2e-core/src/main/java/org/apache/dolphinscheduler/e2e/core/DolphinSchedulerExtension.java
浏览文件 @
20dd0c12
...
...
@@ -53,7 +53,6 @@ import org.testcontainers.containers.ContainerState;
import
org.testcontainers.containers.DockerComposeContainer
;
import
org.testcontainers.containers.Network
;
import
org.testcontainers.containers.wait.strategy.Wait
;
import
org.testcontainers.shaded.org.apache.commons.lang.SystemUtils
;
import
org.testcontainers.shaded.org.awaitility.Awaitility
;
import
com.google.common.base.Strings
;
...
...
dolphinscheduler-ui-next/src/layouts/content/components/sidebar/index.tsx
浏览文件 @
20dd0c12
...
...
@@ -60,6 +60,7 @@ const Sidebar = defineComponent({
onExpand
=
{
()
=>
(
this
.
collapsedRef
=
false
)
}
>
<
NMenu
class
=
"tab-vertical"
value
=
{
this
.
sideKey
}
options
=
{
this
.
sideMenuOptions
}
defaultExpandedKeys
=
{
this
.
defaultExpandedKeys
}
...
...
dolphinscheduler-ui-next/src/layouts/content/index.tsx
浏览文件 @
20dd0c12
...
...
@@ -103,6 +103,7 @@ const Content = defineComponent({
<
NLayout
style
=
'height: 100%'
>
<
NLayoutHeader
style
=
'height: 65px'
>
<
NavBar
class
=
"tab-horizontal"
onHandleMenuClick
=
{
this
.
getSideMenuOptions
}
headerMenuOptions
=
{
this
.
headerMenuOptions
}
localesOptions
=
{
this
.
localesOptions
}
...
...
pom.xml
浏览文件 @
20dd0c12
...
...
@@ -1034,9 +1034,6 @@
</goals>
<configuration>
<skip>
${docker.build.skip}
</skip>
<environmentVariables>
<DOCKER_BUILDKIT>
1
</DOCKER_BUILDKIT>
</environmentVariables>
<executable>
docker
</executable>
<workingDirectory>
${project.basedir}
</workingDirectory>
<arguments>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录