Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zentaoatf
提交
9324c40e
Z
zentaoatf
项目概览
易企天创
/
zentaoatf
大约 1 年 前同步成功
通知
11
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
3
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zentaoatf
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
3
Issue
3
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9324c40e
编写于
9月 28, 2022
作者:
雨
雨爱无痕
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add server,proxy test script
上级
873190cd
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
708 addition
and
10 deletion
+708
-10
test/helper/zentao/ui/zentao.go
test/helper/zentao/ui/zentao.go
+127
-7
test/ui/ui_interpreter_test.go
test/ui/ui_interpreter_test.go
+15
-0
test/ui/ui_proxy_test.go
test/ui/ui_proxy_test.go
+274
-0
test/ui/ui_run_test.go
test/ui/ui_run_test.go
+10
-2
test/ui/ui_server_test.go
test/ui/ui_server_test.go
+271
-0
ui/src/views/interpreter/interpreterModal.vue
ui/src/views/interpreter/interpreterModal.vue
+1
-0
ui/src/views/proxy/FormProxy.vue
ui/src/views/proxy/FormProxy.vue
+1
-0
ui/src/views/proxy/ProxyNav.vue
ui/src/views/proxy/ProxyNav.vue
+5
-1
ui/src/views/server/FormServer.vue
ui/src/views/server/FormServer.vue
+1
-0
ui/src/views/settings/SettingsModal.vue
ui/src/views/settings/SettingsModal.vue
+3
-0
未找到文件。
test/helper/zentao/ui/zentao.go
浏览文件 @
9324c40e
...
...
@@ -14,8 +14,8 @@ import (
var
page
playwright
.
Page
var
zentaoVersion
=
""
func
Login
()
(
err
error
)
{
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8081/"
,
playwright
.
PageGotoOptions
{
func
Login
(
url
string
)
(
err
error
)
{
if
_
,
err
=
page
.
Goto
(
url
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
return
}
...
...
@@ -172,12 +172,111 @@ func createSuite() (err error) {
return
}
func
goToLastUnitTestResult
()
{
func
getLastUnitTestResult
()
(
results
[]
map
[
string
]
string
,
err
error
)
{
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8081/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
return
}
page
.
Click
(
".nav>>li>>text=测试"
)
iframeName
:=
"app-qa"
iframe
:=
page
.
Frame
(
playwright
.
PageFrameOptions
{
Name
:
&
iframeName
})
results
=
[]
map
[
string
]
string
{}
if
iframe
!=
nil
{
iframe
.
Click
(
".nav>>li>>text=用例"
)
iframe
.
Click
(
"#mainMenu>>a>>text=单元测试"
)
iframe
.
Click
(
"#taskList>>tr>>nth=1>>td>>nth=1>>a"
)
iframe
.
WaitForSelector
(
"#taskList"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
tds
,
err
:=
iframe
.
QuerySelectorAll
(
"table>>tr"
)
if
err
!=
nil
{
return
results
,
err
}
for
index
:=
1
;
index
<
len
(
tds
);
index
++
{
titleNth
:=
"2"
statusNth
:=
"5"
if
index
==
1
{
titleNth
=
"3"
statusNth
=
"6"
}
titleSelector
,
err
:=
iframe
.
QuerySelector
(
"table>>tr>>nth="
+
strconv
.
Itoa
(
index
)
+
">>td>>nth="
+
titleNth
)
if
err
!=
nil
||
titleSelector
==
nil
{
continue
}
title
,
err
:=
titleSelector
.
InnerText
()
if
err
!=
nil
{
continue
}
statusSelector
,
err
:=
iframe
.
QuerySelector
(
"table>>tr>>nth="
+
strconv
.
Itoa
(
index
)
+
">>td>>nth="
+
statusNth
)
if
err
!=
nil
{
continue
}
status
,
err
:=
statusSelector
.
InnerText
()
if
err
!=
nil
{
continue
}
results
=
append
(
results
,
map
[
string
]
string
{
"title"
:
title
,
"status"
:
status
,
})
}
}
else
{
page
.
Hover
(
".nav>>li>>text=用例"
)
page
.
Click
(
".nav>>li>>text=单元测试"
)
page
.
Click
(
"#currentItem"
)
page
.
Click
(
"#dropMenu>>a>>text=公司企业网站建设"
)
page
.
Click
(
"#taskList>>tr>>nth=1>>td>>nth=1>>a"
)
page
.
WaitForSelector
(
"#taskList"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
tds
,
err
:=
page
.
QuerySelectorAll
(
"table>>tr"
)
if
err
!=
nil
{
return
results
,
err
}
for
index
:=
1
;
index
<
len
(
tds
);
index
++
{
titleNth
:=
"2"
statusNth
:=
"5"
if
index
==
1
{
titleNth
=
"3"
statusNth
=
"6"
}
titleSelector
,
err
:=
page
.
QuerySelector
(
"table>>tr>>nth="
+
strconv
.
Itoa
(
index
)
+
">>td>>nth="
+
titleNth
)
if
err
!=
nil
||
titleSelector
==
nil
{
continue
}
title
,
err
:=
titleSelector
.
InnerText
()
if
err
!=
nil
{
continue
}
statusSelector
,
err
:=
page
.
QuerySelector
(
"table>>tr>>nth="
+
strconv
.
Itoa
(
index
)
+
">>td>>nth="
+
statusNth
)
if
err
!=
nil
{
continue
}
status
,
err
:=
statusSelector
.
InnerText
()
if
err
!=
nil
{
continue
}
results
=
append
(
results
,
map
[
string
]
string
{
"title"
:
title
,
"status"
:
status
,
})
}
}
return
results
,
err
}
func
checkUnitTestResult
()
{
func
CheckUnitTestResult
()
bool
{
results
,
err
:=
getLastUnitTestResult
()
if
err
!=
nil
{
return
false
}
titleExist
:=
map
[
string
]
bool
{}
for
_
,
result
:=
range
results
{
titleExist
[
result
[
"title"
]]
=
true
if
result
[
"title"
]
==
"loginFail"
&&
result
[
"status"
]
!=
"通过"
{
return
false
}
if
result
[
"title"
]
==
"loginSuccess"
&&
result
[
"status"
]
!=
"失败"
{
return
false
}
}
return
true
&&
titleExist
[
"loginFail"
]
==
true
&&
titleExist
[
"loginSuccess"
]
==
true
}
func
InstallExt
(
version
,
codeDir
string
)
error
{
...
...
@@ -334,7 +433,7 @@ func InitZentaoData(version string, codeDir string) (err error) {
if
err
!=
nil
{
return
}
err
=
Login
()
err
=
Login
(
"http://127.0.0.1:8081"
)
if
err
!=
nil
{
return
}
...
...
@@ -355,3 +454,24 @@ func InitZentaoData(version string, codeDir string) (err error) {
pw
.
Stop
()
return
}
func
init
()
{
if
page
!=
nil
{
return
}
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
return
}
headless
:=
true
var
slowMo
float64
=
100
runBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
return
}
page
,
err
=
runBrowser
.
NewPage
()
if
err
!=
nil
{
return
}
Login
(
"http://127.0.0.1:8081"
)
}
test/ui/ui_interpreter_test.go
浏览文件 @
9324c40e
...
...
@@ -55,6 +55,11 @@ func CreateInterpreter(t provider.T) {
t
.
Errorf
(
"The Click interpreter nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyTable>>button:has-text('运行环境')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click open interpreter modal fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"text=新建运行环境"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click create interpreter fail: %v"
,
err
)
...
...
@@ -146,6 +151,11 @@ func EditInterpreter(t provider.T) {
t
.
Errorf
(
"The Click interpreter nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyTable>>button:has-text('运行环境')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click open interpreter modal fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#settingModal .z-tbody-tr"
,
playwright
.
PageLocatorOptions
{
HasText
:
"Python"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find python tr fail: %v"
,
err
)
...
...
@@ -245,6 +255,11 @@ func DeleteInterpreter(t provider.T) {
t
.
Errorf
(
"The Click interpreter nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyTable>>button:has-text('运行环境')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click open interpreter modal fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#settingModal .z-tbody-tr"
,
playwright
.
PageLocatorOptions
{
HasText
:
"Python"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find python tr fail: %v"
,
err
)
...
...
test/ui/ui_proxy_test.go
0 → 100644
浏览文件 @
9324c40e
package
main
import
(
"testing"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
playwright
"github.com/playwright-community/playwright-go"
)
var
proxyBrowser
playwright
.
Browser
func
CreateProxy
(
t
provider
.
T
)
{
t
.
ID
(
"5465"
)
t
.
AddParentSuite
(
"设置界面语言"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
if
proxyBrowser
==
nil
||
!
proxyBrowser
.
IsConnected
()
{
proxyBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
}
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web proxyBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
proxyBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
proxyBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
return
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
return
}
}()
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#navbar>>[title=
\"
设置
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click proxy nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#serverTable>>button:has-text('新建执行节点')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click open interpreter modal fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#proxyFormModal input"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find create proxy input fail: %v"
,
err
)
t
.
FailNow
()
}
nameInput
,
err
:=
locator
.
Nth
(
0
)
if
err
!=
nil
{
t
.
Errorf
(
"Find lang select fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
nameInput
.
Fill
(
"测试执行节点"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fill name fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
200
)
pathSelect
,
err
:=
locator
.
Nth
(
1
)
if
err
!=
nil
{
t
.
Errorf
(
"Find path input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
pathSelect
.
Fill
(
"http://127.0.0.1:8085"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil path input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyFormModal>>text=确定"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForSelector
(
"#proxyFormModal"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
page
.
WaitForTimeout
(
1000
)
locator
,
err
=
page
.
Locator
(
"#proxyTable .z-tbody-td >> :scope:has-text('测试执行节点')"
)
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find created proxy fail: %v"
,
err
)
t
.
FailNow
()
}
}
func
EditProxy
(
t
provider
.
T
)
{
t
.
ID
(
"5465"
)
t
.
AddParentSuite
(
"设置界面语言"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
if
proxyBrowser
==
nil
||
!
proxyBrowser
.
IsConnected
()
{
proxyBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
}
defer
proxyBrowser
.
Close
()
defer
pw
.
Stop
()
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web proxyBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
proxyBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
proxyBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
return
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
return
}
}()
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#navbar>>[title=
\"
设置
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click proxy nav fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#proxyTable"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试执行节点"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find 测试执行节点 tr fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
locator
.
Locator
(
"text=编辑"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 测试执行节点 edit btn fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click update site fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
"#proxyFormModal input"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find create proxy input fail: %v"
,
err
)
t
.
FailNow
()
}
nameInput
,
err
:=
locator
.
Nth
(
0
)
if
err
!=
nil
{
t
.
Errorf
(
"Find name select fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
nameInput
.
Fill
(
"测试执行节点-update"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fill name input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyFormModal>>text=确定"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForSelector
(
"#proxyFormModal"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
page
.
WaitForTimeout
(
1000
)
locator
,
err
=
page
.
Locator
(
"#proxyTable .z-tbody-td >> :scope:has-text('测试执行节点')"
)
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find updated proxy fail: %v"
,
err
)
t
.
FailNow
()
}
}
func
DeleteProxy
(
t
provider
.
T
)
{
t
.
ID
(
"5465"
)
t
.
AddParentSuite
(
"设置界面语言"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
if
proxyBrowser
==
nil
||
!
proxyBrowser
.
IsConnected
()
{
proxyBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web proxyBrowser: %v"
,
err
)
t
.
FailNow
()
}
}
page
,
err
:=
proxyBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
proxyBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
return
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
return
}
}()
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#navbar>>[title=
\"
设置
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click proxy nav fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#proxyTable"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试执行节点-update"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find python tr fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
locator
.
Locator
(
"text=删除"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 测试执行节点 del btn fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click update site fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
":nth-match(.modal-action > button, 1)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
locator
,
err
=
page
.
Locator
(
"#settingModal .z-tbody-tr"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试执行节点-update"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
>
0
{
t
.
Errorf
(
"Delete proxy fail: %v"
,
err
)
t
.
FailNow
()
}
}
func
TestUiProxy
(
t
*
testing
.
T
)
{
runner
.
Run
(
t
,
"客户端-创建解析器"
,
CreateProxy
)
runner
.
Run
(
t
,
"客户端-编辑解析器"
,
EditProxy
)
runner
.
Run
(
t
,
"客户端-删除解析器"
,
DeleteProxy
)
}
test/ui/ui_run_test.go
浏览文件 @
9324c40e
...
...
@@ -7,6 +7,7 @@ import (
"testing"
commonTestHelper
"github.com/easysoft/zentaoatf/test/helper/common"
zentaoTestHelper
"github.com/easysoft/zentaoatf/test/helper/zentao/ui"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
playwright
"github.com/playwright-community/playwright-go"
...
...
@@ -1163,7 +1164,11 @@ func RunUnit(t provider.T) {
t
.
FailNow
()
}
}
isSuccess
:=
zentaoTestHelper
.
CheckUnitTestResult
()
if
!
isSuccess
{
t
.
Errorf
(
"Exec testng unit fail"
)
t
.
FailNow
()
}
}
func
createWorkspace
(
t
provider
.
T
,
workspacePath
string
,
page
playwright
.
Page
)
{
...
...
@@ -1218,7 +1223,9 @@ func createWorkspace(t provider.T, workspacePath string, page playwright.Page) {
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
".tree-node-title"
,
playwright
.
PageLocatorOptions
{
HasText
:
"testng工作目录"
})
page
.
WaitForSelector
(
"#workspaceFormModal"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
page
.
WaitForTimeout
(
1000
)
locator
,
err
=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"testng工作目录"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find created workspace fail: %v"
,
err
)
...
...
@@ -1235,4 +1242,5 @@ func TestUiRun(t *testing.T) {
runner
.
Run
(
t
,
"客户端-执行所有的脚本文件"
,
RunAll
)
runner
.
Run
(
t
,
"客户端-右键执行工作目录"
,
RunWorkspace
)
runner
.
Run
(
t
,
"客户端-右键执行文件夹"
,
RunDir
)
runner
.
Run
(
t
,
"客户端-执行TestNG单元测试"
,
RunUnit
)
}
test/ui/ui_server_test.go
0 → 100644
浏览文件 @
9324c40e
package
main
import
(
"testing"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
playwright
"github.com/playwright-community/playwright-go"
)
var
serverBrowser
playwright
.
Browser
func
CreateServer
(
t
provider
.
T
)
{
t
.
ID
(
"5465"
)
t
.
AddParentSuite
(
"设置界面语言"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
if
serverBrowser
==
nil
||
!
serverBrowser
.
IsConnected
()
{
serverBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
}
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web serverBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
serverBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
serverBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
return
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
return
}
}()
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#navbar>>[title=
\"
设置
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click server nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"text=新建服务器"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click create server fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#serverFormModal input"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find create server input fail: %v"
,
err
)
t
.
FailNow
()
}
nameInput
,
err
:=
locator
.
Nth
(
0
)
if
err
!=
nil
{
t
.
Errorf
(
"Find lang select fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
nameInput
.
Fill
(
"测试服务器"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fill name fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
200
)
pathSelect
,
err
:=
locator
.
Nth
(
1
)
if
err
!=
nil
{
t
.
Errorf
(
"Find path input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
pathSelect
.
Fill
(
"http://127.0.0.1:8085"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil path input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#serverFormModal>>text=确定"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
"#settingModal .z-tbody-td"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试服务器"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find created server fail: %v"
,
err
)
t
.
FailNow
()
}
}
func
EditServer
(
t
provider
.
T
)
{
t
.
ID
(
"5465"
)
t
.
AddParentSuite
(
"设置界面语言"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
if
serverBrowser
==
nil
||
!
serverBrowser
.
IsConnected
()
{
serverBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
}
defer
serverBrowser
.
Close
()
defer
pw
.
Stop
()
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web serverBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
serverBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
serverBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
return
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
return
}
}()
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#navbar>>[title=
\"
设置
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click server nav fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#settingModal .z-tbody-tr"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试服务器"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find 测试服务器 tr fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
locator
.
Locator
(
"text=编辑"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 测试服务器 edit btn fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click update site fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
"#serverFormModal input"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find create server input fail: %v"
,
err
)
t
.
FailNow
()
}
nameInput
,
err
:=
locator
.
Nth
(
0
)
if
err
!=
nil
{
t
.
Errorf
(
"Find name select fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
nameInput
.
Fill
(
"测试服务器-update"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fill name input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#serverFormModal>>text=确定"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForSelector
(
"#serverFormModal"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
locator
,
err
=
page
.
Locator
(
"#settingModal .z-tbody-td"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试服务器-update"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find updated server fail: %v"
,
err
)
t
.
FailNow
()
}
}
func
DeleteServer
(
t
provider
.
T
)
{
t
.
ID
(
"5465"
)
t
.
AddParentSuite
(
"设置界面语言"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
if
serverBrowser
==
nil
||
!
serverBrowser
.
IsConnected
()
{
serverBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web serverBrowser: %v"
,
err
)
t
.
FailNow
()
}
}
page
,
err
:=
serverBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
serverBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
return
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
return
}
}()
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#navbar>>[title=
\"
设置
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click server nav fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#settingModal .z-tbody-tr"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试服务器-update"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find python tr fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
locator
.
Locator
(
"text=删除"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 测试服务器 del btn fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click update site fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
":nth-match(.modal-action > button, 1)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
locator
,
err
=
page
.
Locator
(
"#settingModal .z-tbody-tr"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试服务器-update"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
>
0
{
t
.
Errorf
(
"Delete server fail: %v"
,
err
)
t
.
FailNow
()
}
}
func
TestUiServer
(
t
*
testing
.
T
)
{
runner
.
Run
(
t
,
"客户端-创建解析器"
,
CreateServer
)
runner
.
Run
(
t
,
"客户端-编辑解析器"
,
EditServer
)
runner
.
Run
(
t
,
"客户端-删除解析器"
,
DeleteServer
)
}
ui/src/views/interpreter/interpreterModal.vue
浏览文件 @
9324c40e
...
...
@@ -196,6 +196,7 @@ const remove = (item) => {
onOk
:
async
()
=>
{
await
removeInterpreter
(
item
.
value
.
id
,
props
.
proxyInfo
.
path
);
list
();
store
.
dispatch
(
'
proxy/fetchInterpreters
'
,
{})
},
});
};
...
...
ui/src/views/proxy/FormProxy.vue
浏览文件 @
9324c40e
<
template
>
<ZModal
id=
"proxyFormModal"
:showModal=
"showModalRef"
@
onCancel=
"cancel"
@
onOk=
"submit"
...
...
ui/src/views/proxy/ProxyNav.vue
浏览文件 @
9324c40e
<
template
>
<div
class=
"space-left"
>
<div
class=
"space-left
flex-align-center
"
>
<div
class=
"title space"
>
{{
t
(
'
remote_proxy
'
)
}}
:
</div>
<Button
id=
"proxyMenuToggle"
:label=
"currProxy.id == 0 || currProxy.id == undefined ? t('local_proxy') : currProxy.name"
...
...
@@ -59,4 +59,8 @@ const replaceFields = {
<
style
>
.top-line
{
border-top
:
1px
dashed
var
(
--color-green
)}
.flex-align-center
{
display
:
flex
;
align-items
:
center
;
}
</
style
>
ui/src/views/server/FormServer.vue
浏览文件 @
9324c40e
<
template
>
<ZModal
id=
"serverFormModal"
:showModal=
"showModalRef"
@
onCancel=
"cancel"
@
onOk=
"submit"
...
...
ui/src/views/settings/SettingsModal.vue
浏览文件 @
9324c40e
...
...
@@ -23,6 +23,7 @@
</div>
</div>
<Table
id=
"interpreterTable"
v-if=
"interpreters.length > 0"
:columns=
"columns"
:rows=
"interpreters"
...
...
@@ -52,6 +53,7 @@
</Button>
</div>
<Table
id=
"serverTable"
v-if=
"remoteServers.length > 0"
:columns=
"remoteServerColumns"
:rows=
"remoteServers"
...
...
@@ -61,6 +63,7 @@
>
<
template
#remote_proxy=
"record"
>
<Table
id=
"proxyTable"
v-if=
"record.value.proxies!= undefined && record.value.proxies.length > 0"
:columns=
"remoteProxyColumns"
:rows=
"record.value.proxies"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录