Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zentaoatf
提交
ba04a452
Z
zentaoatf
项目概览
易企天创
/
zentaoatf
9 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
ba04a452
编写于
9月 30, 2022
作者:
雨
雨爱无痕
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix issue
上级
982763ec
变更
16
展开全部
隐藏空白更改
内联
并排
Showing
16 changed file
with
1047 addition
and
1808 deletion
+1047
-1808
test/helper/common/ztf.go
test/helper/common/ztf.go
+8
-0
test/helper/zentao/ui/zentao.go
test/helper/zentao/ui/zentao.go
+1
-1
test/helper/ztf/ztf.go
test/helper/ztf/ztf.go
+237
-0
test/ui/main.go
test/ui/main.go
+31
-0
test/ui/ui_bug_test.go
test/ui/ui_bug_test.go
+33
-6
test/ui/ui_interpreter_test.go
test/ui/ui_interpreter_test.go
+3
-3
test/ui/ui_language_test.go
test/ui/ui_language_test.go
+8
-14
test/ui/ui_product_test.go
test/ui/ui_product_test.go
+2
-2
test/ui/ui_result_test.go
test/ui/ui_result_test.go
+6
-26
test/ui/ui_run_from_result_test.go
test/ui/ui_run_from_result_test.go
+6
-25
test/ui/ui_run_statistic_test.go
test/ui/ui_run_statistic_test.go
+67
-113
test/ui/ui_run_test.go
test/ui/ui_run_test.go
+210
-645
test/ui/ui_server_test.go
test/ui/ui_server_test.go
+16
-7
test/ui/ui_site_test.go
test/ui/ui_site_test.go
+16
-4
test/ui/ui_workspace_filter_test.go
test/ui/ui_workspace_filter_test.go
+241
-0
test/ui/ui_workspace_test.go
test/ui/ui_workspace_test.go
+162
-962
未找到文件。
test/helper/common/ztf.go
浏览文件 @
ba04a452
...
...
@@ -61,3 +61,11 @@ func GetZtfPath() string {
}
return
ztfPath
}
func
GetZtfProductPath
()
string
{
return
fmt
.
Sprintf
(
"%s%s%s%s%s%s%s%s"
,
RootPath
,
"test"
,
FilePthSep
,
"demo"
,
FilePthSep
,
"php"
,
FilePthSep
,
"product1"
)
}
func
GetPhpWorkspacePath
()
string
{
return
fmt
.
Sprintf
(
"%s%s%s%s%s%s%s"
,
RootPath
,
"test"
,
FilePthSep
,
"demo"
,
FilePthSep
,
"php"
,
FilePthSep
)
}
test/helper/zentao/ui/zentao.go
浏览文件 @
ba04a452
...
...
@@ -347,7 +347,7 @@ func InitZentaoData(version string, codeDir string) (err error) {
if
err
!=
nil
{
return
}
headless
:=
tru
e
headless
:=
fals
e
var
slowMo
float64
=
100
runBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
...
...
test/helper/ztf/ztf.go
0 → 100644
浏览文件 @
ba04a452
package
ztfTest
import
(
"fmt"
"strings"
commonTestHelper
"github.com/easysoft/zentaoatf/test/helper/common"
"github.com/playwright-community/playwright-go"
)
var
expandTimes
=
0
func
createTestWorkspace
(
page
playwright
.
Page
)
{
err
:=
page
.
Click
(
`[title="新建工作目录"]`
)
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
"#workspaceFormModal"
)
locator
,
err
:=
page
.
Locator
(
"#workspaceFormModal input"
)
if
err
!=
nil
{
return
}
titleInput
,
err
:=
locator
.
Nth
(
0
)
if
err
!=
nil
{
return
}
err
=
titleInput
.
Fill
(
"单元测试工作目录"
)
if
err
!=
nil
{
return
}
pathInput
,
err
:=
locator
.
Nth
(
1
)
if
err
!=
nil
{
return
}
workspacePath
:=
fmt
.
Sprintf
(
"%stest%sdemo%sphp"
,
commonTestHelper
.
RootPath
,
commonTestHelper
.
FilePthSep
,
commonTestHelper
.
FilePthSep
)
err
=
pathInput
.
Fill
(
workspacePath
)
if
err
!=
nil
{
return
}
locator
,
err
=
page
.
Locator
(
"#workspaceFormModal select"
)
if
err
!=
nil
{
return
}
typeInput
,
err
:=
locator
.
Nth
(
0
)
if
err
!=
nil
{
return
}
_
,
err
=
typeInput
.
SelectOption
(
playwright
.
SelectOptionValues
{
Values
:
&
[]
string
{
"ztf"
}})
if
err
!=
nil
{
return
}
langInput
,
err
:=
locator
.
Nth
(
1
)
if
err
!=
nil
{
return
}
_
,
err
=
langInput
.
SelectOption
(
playwright
.
SelectOptionValues
{
Values
:
&
[]
string
{
"php"
}})
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
"#workspaceFormModal>>.modal-action>>span:has-text(
\"
确定
\"
)"
)
if
err
!=
nil
{
return
}
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
{
return
}
}
func
RunScript
(
page
playwright
.
Page
,
scriptName
string
)
{
locator
,
err
:=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
createTestWorkspace
(
page
)
}
locator
,
err
=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
=
locator
.
Count
()
err
=
locator
.
Click
()
if
err
!=
nil
{
return
}
scriptLocator
,
err
:=
locator
.
Locator
(
"text="
+
scriptName
)
if
err
!=
nil
{
return
}
err
=
scriptLocator
.
Click
(
playwright
.
PageClickOptions
{
Button
:
playwright
.
MouseButtonRight
})
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
".tree-context-menu>>text=执行"
)
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
if
err
!=
nil
{
return
}
element
,
err
:=
page
.
QuerySelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
innerText
,
err
:=
element
.
InnerText
()
if
err
!=
nil
{
return
}
if
!
strings
.
Contains
(
innerText
,
"1(100.0%) 失败"
)
{
return
}
resultTitleElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-title"
)
if
err
!=
nil
{
return
}
resultTitle
,
err
:=
resultTitleElement
.
InnerText
()
if
err
!=
nil
||
resultTitle
!=
scriptName
{
return
}
timeElement
,
err
:=
page
.
QuerySelector
(
"#log-list .item .time"
)
if
err
!=
nil
{
return
}
logTime
,
err
:=
timeElement
.
InnerText
()
if
err
!=
nil
{
return
}
resultTimeElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-trailing-text"
)
if
err
!=
nil
{
return
}
resultTime
,
err
:=
resultTimeElement
.
InnerText
()
if
err
!=
nil
||
logTime
[
:
5
]
!=
resultTime
{
return
}
}
func
SelectSite
(
page
playwright
.
Page
)
(
err
error
)
{
locator
,
err
:=
page
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
return
}
err
=
locator
.
Click
()
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
"#navbar .list-item"
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
".list-item-title>>text=单元测试站点"
)
if
err
!=
nil
{
return
}
var
waitTimeOut
float64
=
5000
_
,
err
=
page
.
WaitForSelector
(
"#siteMenuToggle:has-text('单元测试站点')"
,
playwright
.
PageWaitForSelectorOptions
{
Timeout
:
&
waitTimeOut
})
if
err
!=
nil
{
return
}
return
nil
}
func
ExpandWorspace
(
page
playwright
.
Page
)
(
err
error
)
{
var
waitTimeOut
float64
=
5000
_
,
err
=
page
.
WaitForSelector
(
".tree-node:has-text('单元测试工作目录')"
,
playwright
.
PageWaitForSelectorOptions
{
Timeout
:
&
waitTimeOut
})
if
err
!=
nil
{
createTestWorkspace
(
page
)
}
selector
,
_
:=
page
.
QuerySelector
(
".tree-node:has-text('单元测试工作目录')"
)
className
,
_
:=
selector
.
GetAttribute
(
"class"
)
if
!
strings
.
Contains
(
className
,
"collapsed"
)
{
return
}
err
=
page
.
Click
(
".tree-node-title:has-text(
\"
单元测试工作目录
\"
)"
)
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node-item>>div:has-text('1_string_match.php')"
,
playwright
.
PageWaitForSelectorOptions
{
Timeout
:
&
waitTimeOut
})
if
err
!=
nil
{
if
expandTimes
>
5
{
expandTimes
=
0
return
err
}
expandTimes
++
ExpandWorspace
(
page
)
return
}
return
nil
}
func
ExpandProduct
(
page
playwright
.
Page
)
(
err
error
)
{
ExpandWorspace
(
page
)
var
waitTimeOut
float64
=
5000
_
,
err
=
page
.
WaitForSelector
(
".tree-node-item:has-text('product1')"
,
playwright
.
PageWaitForSelectorOptions
{
Timeout
:
&
waitTimeOut
})
if
err
!=
nil
{
return
}
selector
,
err
:=
page
.
QuerySelector
(
".tree-node-root .tree-node:has-text('product1')"
)
className
,
err
:=
selector
.
GetAttribute
(
"class"
)
if
!
strings
.
Contains
(
className
,
"collapsed"
)
{
return
}
page
.
Click
(
".tree-node-item:has-text('product1')"
)
page
.
WaitForTimeout
(
100
)
selector
,
err
=
page
.
QuerySelector
(
".tree-node-root .tree-node:has-text('product1')"
)
className
,
err
=
selector
.
GetAttribute
(
"class"
)
if
strings
.
Contains
(
className
,
"collapsed"
)
{
if
expandTimes
>
5
{
expandTimes
=
0
return
err
}
expandTimes
++
ExpandProduct
(
page
)
return
}
return
nil
}
func
DeleteWorkspace
(
page
playwright
.
Page
,
workspaceName
string
)
{
locator
,
err
:=
page
.
Locator
(
".tree-node-item"
,
playwright
.
PageLocatorOptions
{
HasText
:
workspaceName
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
return
}
err
=
locator
.
Hover
()
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
`[title="删除"]`
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
".modal-action>>span:has-text(
\"
确定
\"
)"
)
if
err
!=
nil
{
return
}
page
.
WaitForTimeout
(
1000
)
}
test/ui/main.go
浏览文件 @
ba04a452
...
...
@@ -8,6 +8,8 @@ import (
commConsts
"github.com/easysoft/zentaoatf/internal/pkg/consts"
serverConfig
"github.com/easysoft/zentaoatf/internal/server/config"
commonTestHelper
"github.com/easysoft/zentaoatf/test/helper/common"
ztfTest
"github.com/easysoft/zentaoatf/test/helper/ztf"
"github.com/playwright-community/playwright-go"
)
func
main
()
{
...
...
@@ -39,3 +41,32 @@ func main() {
}
commonTestHelper
.
TestUi
()
}
func
init
()
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
return
}
headless
:=
true
var
slowMo
float64
=
100
browser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
return
}
page
,
err
:=
browser
.
NewPage
()
if
err
!=
nil
{
return
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
return
}
ztfTest
.
SelectSite
(
page
)
ztfTest
.
ExpandWorspace
(
page
)
if
err
=
browser
.
Close
();
err
!=
nil
{
return
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
return
}
}
test/ui/ui_bug_test.go
浏览文件 @
ba04a452
...
...
@@ -47,12 +47,38 @@ func ScriptBug(t provider.T) {
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-nod
e"
)
locator
,
err
:=
page
.
Locator
(
"#siteMenuToggl
e"
)
if
err
!=
nil
{
t
.
Errorf
(
"
Wait tree-node fail
: %v"
,
err
)
t
.
Errorf
(
"
The siteMenuToggle is missing
: %v"
,
err
)
t
.
FailNow
()
return
}
locator
,
err
:=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click is fail: %v"
,
err
)
t
.
FailNow
()
return
}
_
,
err
=
page
.
WaitForSelector
(
"#mainContent .tree"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait for workspace list nav fail: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
page
.
Click
(
".list-item-title>>text=单元测试站点"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click workspace nav fail: %v"
,
err
)
t
.
FailNow
()
return
}
_
,
err
=
page
.
WaitForSelector
(
"#mainContent .tree:has-text('单元测试工作目录')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait for workspace list fail: %v"
,
err
)
t
.
FailNow
()
return
}
page
.
WaitForTimeout
(
100
)
locator
,
err
=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find workspace fail: %v"
,
err
)
...
...
@@ -63,7 +89,7 @@ func ScriptBug(t provider.T) {
t
.
Errorf
(
"Click node fail: %v"
,
err
)
t
.
FailNow
()
}
scriptLocator
,
err
:=
locator
.
Locator
(
"text=1_string_match.php
"
)
scriptLocator
,
err
:=
page
.
Locator
(
".tree-node-title:has-text('1_string_match.php')
"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 1_string_match.php fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -125,10 +151,11 @@ func ScriptsBug(t provider.T) {
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"
.tree-nod
e"
)
_
,
err
=
page
.
WaitForSelector
(
"
#mainContent .tre
e"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait
tree-node
fail: %v"
,
err
)
t
.
Errorf
(
"Wait
for workspace list nav
fail: %v"
,
err
)
t
.
FailNow
()
return
}
locator
,
err
:=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
locator
.
Count
()
...
...
test/ui/ui_interpreter_test.go
浏览文件 @
ba04a452
...
...
@@ -55,7 +55,7 @@ func CreateInterpreter(t provider.T) {
t
.
Errorf
(
"The Click interpreter nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyTable>>button:has-text('运行环境')"
)
err
=
page
.
Click
(
"#proxyTable>>
tr:has-text('本地节点')>>
button:has-text('运行环境')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click open interpreter modal fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -151,7 +151,7 @@ func EditInterpreter(t provider.T) {
t
.
Errorf
(
"The Click interpreter nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyTable>>button:has-text('运行环境')"
)
err
=
page
.
Click
(
"#proxyTable>>
tr:has-text('本地节点')>>
button:has-text('运行环境')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click open interpreter modal fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -255,7 +255,7 @@ func DeleteInterpreter(t provider.T) {
t
.
Errorf
(
"The Click interpreter nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#proxyTable>>button:has-text('运行环境')"
)
err
=
page
.
Click
(
"#proxyTable>>
tr:has-text('本地节点')>>
button:has-text('运行环境')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click open interpreter modal fail: %v"
,
err
)
t
.
FailNow
()
...
...
test/ui/ui_language_test.go
浏览文件 @
ba04a452
...
...
@@ -20,9 +20,7 @@ func SwitchLanguage(t provider.T) {
}
headless
:=
true
var
slowMo
float64
=
100
if
languageBrowser
==
nil
||
!
languageBrowser
.
IsConnected
()
{
languageBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
}
languageBrowser
,
err
=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web languageBrowser: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -34,7 +32,7 @@ func SwitchLanguage(t provider.T) {
}
defer
func
()
{
if
err
=
languageBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The
workspac
eBrowser cannot be closed: %v"
,
err
)
t
.
Errorf
(
"The
languag
eBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
return
}
...
...
@@ -56,29 +54,25 @@ func SwitchLanguage(t provider.T) {
t
.
FailNow
()
}
err
=
page
.
Click
(
`input[type="radio"]>>nth=1`
)
locator
,
err
:=
page
.
Locator
(
".t-card-toolbar div"
)
locator
,
err
:=
page
.
Locator
(
".t-card-toolbar div
>>nth=2
"
)
interpreterTitle
,
err
:=
locator
.
InnerText
()
if
interpreterTitle
!=
"
Interpret
er"
{
t
.
Error
(
"Switch language fail"
)
if
interpreterTitle
!=
"
Remote Serv
er"
{
t
.
Error
(
"Switch language fail
, find interpreter fail
"
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
".t-card-toolbar button"
)
CreateInterpreterTitle
,
err
:=
locator
.
InnerText
()
if
CreateInterpreterTitle
!=
"Create
Interpret
er"
{
t
.
Error
(
"Switch language fail"
)
if
CreateInterpreterTitle
!=
"Create
Remote Serv
er"
{
t
.
Error
(
"Switch language fail
, find create remote server btn fail
"
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
"#settingModal .modal-title"
)
modalTitle
,
err
:=
locator
.
InnerText
()
if
modalTitle
!=
"Settings"
{
t
.
Error
(
"Switch language fail"
)
t
.
Error
(
"Switch language fail
, find modalTitle fail
"
)
t
.
FailNow
()
}
err
=
page
.
Click
(
`input[type="radio"]>>nth=0`
)
if
err
=
languageBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The languageBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
}
func
TestUiLanguage
(
t
*
testing
.
T
)
{
...
...
test/ui/ui_product_test.go
浏览文件 @
ba04a452
...
...
@@ -83,10 +83,10 @@ func SwitchProduct(t provider.T) {
t
.
Errorf
(
"Wait for product list nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#navbar .list-item>>text=
test
"
)
err
=
page
.
Click
(
"#navbar .list-item>>text=
企业内部工时管理系统
"
)
page
.
WaitForTimeout
(
100
)
productName
,
err
:=
page
.
InnerText
(
"#productMenuToggle>>span"
)
if
productName
!=
"
test
"
{
if
productName
!=
"
企业内部工时管理系统
"
{
t
.
Error
(
"Switch product fail"
)
t
.
FailNow
()
}
...
...
test/ui/ui_result_test.go
浏览文件 @
ba04a452
...
...
@@ -4,6 +4,7 @@ import (
"strings"
"testing"
ztfTest
"github.com/easysoft/zentaoatf/test/helper/ztf"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
playwright
"github.com/playwright-community/playwright-go"
...
...
@@ -54,31 +55,9 @@ func Detail(t provider.T) {
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click is fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#navbar .list-item"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait for site list nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".list-item-title>>text=单元测试站点"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click site nav fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
ztfTest
.
SelectSite
(
page
)
ztfTest
.
ExpandProduct
(
page
)
ztfTest
.
RunScript
(
page
,
"1_string_match.php"
)
err
=
page
.
Click
(
"#rightPane .result-list-item .list-item-title>>nth=0"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click first result fail: %v"
,
err
)
...
...
@@ -89,7 +68,7 @@ func Detail(t provider.T) {
t
.
Errorf
(
"Wait result tabpage fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
".page-result .single small"
)
locator
,
err
:
=
page
.
Locator
(
".page-result .single small"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find result percent locator fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -409,6 +388,7 @@ func SubmitBugTwoStep(t provider.T) {
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
ztfTest
.
RunScript
(
page
,
"1_string_match.php"
)
err
=
page
.
Click
(
"#rightPane .result-list-item .list-item-title>>nth=0"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click first result fail: %v"
,
err
)
...
...
test/ui/ui_run_from_result_test.go
浏览文件 @
ba04a452
...
...
@@ -4,6 +4,7 @@ import (
"strings"
"testing"
ztfTestHelper
"github.com/easysoft/zentaoatf/test/helper/ztf"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
playwright
"github.com/playwright-community/playwright-go"
...
...
@@ -48,11 +49,6 @@ func RunReExecFailCase(t provider.T) {
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
...
...
@@ -74,11 +70,6 @@ func RunReExecFailCase(t provider.T) {
t
.
Errorf
(
"The Click site nav fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#rightPane .result-list-item .list-item-title>>nth=0"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click first result fail: %v"
,
err
)
...
...
@@ -175,12 +166,6 @@ func RunReExecAllCase(t provider.T) {
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
page
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
...
...
@@ -201,11 +186,7 @@ func RunReExecAllCase(t provider.T) {
t
.
Errorf
(
"The Click site nav fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
ztfTestHelper
.
RunScript
(
page
,
"1_string_match.php"
)
err
=
page
.
Click
(
"#rightPane .result-list-item .list-item-title>>nth=0"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click first result fail: %v"
,
err
)
...
...
@@ -214,12 +195,12 @@ func RunReExecAllCase(t provider.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Click re-exec failed case btn fail: %v"
,
err
)
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行
3
个用例,耗时')"
)
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行
1
个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec script result fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
"#log-list>>code:has-text('执行
3
个用例,耗时')"
)
locator
,
err
=
page
.
Locator
(
"#log-list>>code:has-text('执行
1
个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find exec script log fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -229,7 +210,7 @@ func RunReExecAllCase(t provider.T) {
t
.
Errorf
(
"Find exec script result fail: %v"
,
err
)
t
.
FailNow
()
}
if
!
strings
.
Contains
(
innerText
,
"
2(66.0%) 通过,1(33
.0%) 失败"
)
{
if
!
strings
.
Contains
(
innerText
,
"
0(0.0%) 通过,1(100
.0%) 失败"
)
{
t
.
Errorf
(
"Exec failed case fail: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -239,7 +220,7 @@ func RunReExecAllCase(t provider.T) {
t
.
FailNow
()
}
resultTitle
,
err
:=
resultTitleElement
.
InnerText
()
if
err
!=
nil
||
resultTitle
!=
"
单元测试工作目录(3)
"
{
if
err
!=
nil
||
resultTitle
!=
"
1_string_match.php
"
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
...
...
test/ui/ui_run_statistic_test.go
浏览文件 @
ba04a452
...
...
@@ -9,49 +9,23 @@ import (
playwright
"github.com/playwright-community/playwright-go"
)
var
runStatisticPage
playwright
.
Page
func
RunFailStatistic
(
t
provider
.
T
)
{
t
.
ID
(
"5487"
)
t
.
AddParentSuite
(
"执行脚本"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
runBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web runBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
runBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
runBrowser
.
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
{
if
_
,
err
:=
runStatisticPage
.
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
=
p
age
.
WaitForSelector
(
".tree-node"
)
_
,
err
:=
runStatisticP
age
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
p
age
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
locator
,
err
:=
runStatisticP
age
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find workspace fail: %v"
,
err
)
...
...
@@ -72,23 +46,23 @@ func RunFailStatistic(t provider.T) {
t
.
Errorf
(
"Click script fail: %v"
,
err
)
t
.
FailNow
()
}
elements
,
_
:=
p
age
.
QuerySelectorAll
(
".statistic>>span"
)
elements
,
_
:=
runStatisticP
age
.
QuerySelectorAll
(
".statistic>>span"
)
runTimes
,
_
:=
elements
[
0
]
.
InnerText
()
failTimes
,
_
:=
elements
[
2
]
.
InnerText
()
runTimesInt
,
_
:=
strconv
.
Atoi
(
runTimes
)
failTimesInt
,
_
:=
strconv
.
Atoi
(
failTimes
)
err
=
p
age
.
Click
(
".tabs-nav-toolbar>>[title=
\"
Run
\"
]"
)
err
=
runStatisticP
age
.
Click
(
".tabs-nav-toolbar>>[title=
\"
Run
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click run fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
p
age
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
_
,
err
=
runStatisticP
age
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec result fail: %v"
,
err
)
t
.
FailNow
()
}
p
age
.
WaitForTimeout
(
200
)
elements
,
_
=
p
age
.
QuerySelectorAll
(
".statistic>>span"
)
runStatisticP
age
.
WaitForTimeout
(
200
)
elements
,
_
=
runStatisticP
age
.
QuerySelectorAll
(
".statistic>>span"
)
runTimes2
,
_
:=
elements
[
0
]
.
InnerText
()
failTimes2
,
_
:=
elements
[
2
]
.
InnerText
()
runTimes2Int
,
_
:=
strconv
.
Atoi
(
runTimes2
)
...
...
@@ -102,46 +76,18 @@ func RunFailStatistic(t provider.T) {
func
RunSuccessStatistic
(
t
provider
.
T
)
{
t
.
ID
(
"5487"
)
t
.
AddParentSuite
(
"执行脚本"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
runBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web runBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
runBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
runBrowser
.
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
{
if
_
,
err
:=
runStatisticPage
.
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
=
p
age
.
WaitForSelector
(
".tree-node"
)
_
,
err
:=
runStatisticP
age
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
p
age
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
locator
,
err
:=
runStatisticP
age
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find workspace fail: %v"
,
err
)
...
...
@@ -152,9 +98,9 @@ func RunSuccessStatistic(t provider.T) {
t
.
Errorf
(
"Click node fail: %v"
,
err
)
t
.
FailNow
()
}
scriptLocator
,
err
:=
locator
.
Locator
(
"text=
2_webpage_extract
.php"
)
scriptLocator
,
err
:=
locator
.
Locator
(
"text=
3_http_interface_call
.php"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find
2_webpage_extract
.php fail: %v"
,
err
)
t
.
Errorf
(
"Find
3_http_interface_call
.php fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
scriptLocator
.
Click
()
...
...
@@ -162,23 +108,23 @@ func RunSuccessStatistic(t provider.T) {
t
.
Errorf
(
"Click script fail: %v"
,
err
)
t
.
FailNow
()
}
elements
,
_
:=
p
age
.
QuerySelectorAll
(
".statistic>>span"
)
elements
,
_
:=
runStatisticP
age
.
QuerySelectorAll
(
".statistic>>span"
)
runTimes
,
_
:=
elements
[
0
]
.
InnerText
()
succTimes
,
_
:=
elements
[
1
]
.
InnerText
()
runTimesInt
,
_
:=
strconv
.
Atoi
(
runTimes
)
succTimesInt
,
_
:=
strconv
.
Atoi
(
succTimes
)
err
=
p
age
.
Click
(
".tabs-nav-toolbar>>[title=
\"
Run
\"
]"
)
err
=
runStatisticP
age
.
Click
(
".tabs-nav-toolbar>>[title=
\"
Run
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click run fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
p
age
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
_
,
err
=
runStatisticP
age
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec result fail: %v"
,
err
)
t
.
FailNow
()
}
p
age
.
WaitForTimeout
(
200
)
elements
,
_
=
p
age
.
QuerySelectorAll
(
".statistic>>span"
)
runStatisticP
age
.
WaitForTimeout
(
200
)
elements
,
_
=
runStatisticP
age
.
QuerySelectorAll
(
".statistic>>span"
)
runTimes2
,
_
:=
elements
[
0
]
.
InnerText
()
succTimes2
,
_
:=
elements
[
1
]
.
InnerText
()
runTimes2Int
,
_
:=
strconv
.
Atoi
(
runTimes2
)
...
...
@@ -192,46 +138,18 @@ func RunSuccessStatistic(t provider.T) {
func
RunBugStatistic
(
t
provider
.
T
)
{
t
.
ID
(
"5487"
)
t
.
AddParentSuite
(
"执行脚本"
)
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
true
var
slowMo
float64
=
100
runBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web runBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
runBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
defer
func
()
{
if
err
=
runBrowser
.
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
{
if
_
,
err
:=
runStatisticPage
.
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
=
p
age
.
WaitForSelector
(
".tree-node"
)
_
,
err
:=
runStatisticP
age
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
:=
p
age
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
locator
,
err
:=
runStatisticP
age
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find workspace fail: %v"
,
err
)
...
...
@@ -252,16 +170,16 @@ func RunBugStatistic(t provider.T) {
t
.
Errorf
(
"Click script fail: %v"
,
err
)
t
.
FailNow
()
}
p
age
.
WaitForTimeout
(
200
)
elements
,
_
:=
p
age
.
QuerySelectorAll
(
".statistic>>span"
)
runStatisticP
age
.
WaitForTimeout
(
200
)
elements
,
_
:=
runStatisticP
age
.
QuerySelectorAll
(
".statistic>>span"
)
bugTimes
,
_
:=
elements
[
3
]
.
InnerText
()
bugTimesInt
,
_
:=
strconv
.
Atoi
(
bugTimes
)
err
=
p
age
.
Click
(
".statistic>>span>>nth=3"
)
err
=
runStatisticP
age
.
Click
(
".statistic>>span>>nth=3"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click bug btn fail: %v"
,
err
)
t
.
FailNow
()
}
elements
,
_
=
p
age
.
QuerySelectorAll
(
"#bugsModal>>tr"
)
elements
,
_
=
runStatisticP
age
.
QuerySelectorAll
(
"#bugsModal>>tr"
)
bugTimes2Int
:=
len
(
elements
)
if
bugTimes2Int
-
1
!=
bugTimesInt
{
...
...
@@ -270,8 +188,44 @@ func RunBugStatistic(t provider.T) {
}
}
func
TestUiRunToolbar
(
t
*
testing
.
T
)
{
func
TestUiRunStatistic
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
return
}
headless
:=
true
var
slowMo
float64
=
100
browser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web browser: %v"
,
err
)
t
.
FailNow
()
return
}
runStatisticPage
,
err
=
browser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
return
}
if
_
,
err
=
runStatisticPage
.
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
()
return
}
runner
.
Run
(
t
,
"客户端-确认执行统计成功数据"
,
RunSuccessStatistic
)
runner
.
Run
(
t
,
"客户端-确认执行统计失败数据"
,
RunFailStatistic
)
runner
.
Run
(
t
,
"客户端-确认执行统计bug数据"
,
RunBugStatistic
)
if
err
=
browser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The browser 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
}
}
test/ui/ui_run_test.go
浏览文件 @
ba04a452
此差异已折叠。
点击以展开。
test/ui/ui_server_test.go
浏览文件 @
ba04a452
...
...
@@ -92,6 +92,11 @@ func CreateServer(t provider.T) {
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#settingModal .z-tbody-td:has-text('测试服务器')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait created server 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
{
...
...
@@ -146,12 +151,7 @@ func EditServer(t provider.T) {
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=编辑"
)
locator
,
err
:=
page
.
Locator
(
"#settingModal .z-tbody-tr:has-text('测试服务器')>>td>>nth=-1>>text=编辑"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 测试服务器 edit btn fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -182,6 +182,11 @@ func EditServer(t provider.T) {
t
.
FailNow
()
}
page
.
WaitForSelector
(
"#serverFormModal"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
_
,
err
=
page
.
WaitForSelector
(
"#settingModal .z-tbody-td:has-text('测试服务器-update')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait updated server fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
"#settingModal .z-tbody-td"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试服务器-update"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
...
...
@@ -255,7 +260,11 @@ func DeleteServer(t provider.T) {
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
_
,
err
=
page
.
WaitForSelector
(
"#settingModal .z-tbody-td:has-text('测试服务器-update')"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
if
err
!=
nil
{
t
.
Errorf
(
"Wait updated server fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
"#settingModal .z-tbody-tr"
,
playwright
.
PageLocatorOptions
{
HasText
:
"测试服务器-update"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
>
0
{
...
...
test/ui/ui_site_test.go
浏览文件 @
ba04a452
...
...
@@ -126,7 +126,11 @@ func CreateSite(t provider.T) {
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
_
,
err
=
page
.
WaitForSelector
(
".list-item-content span:has-text('单元测试站点')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait created site fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
".list-item-content span"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
...
...
@@ -262,8 +266,12 @@ func EditSite(t provider.T) {
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
locator
,
err
=
page
.
Locator
(
".list-item-content"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点-update"
})
_
,
err
=
page
.
WaitForSelector
(
".list-item-content span:has-text('单元测试站点-update')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait updated site fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
".list-item-content span"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点-update"
})
c
,
err
=
locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find update site fail: %v"
,
err
)
...
...
@@ -347,7 +355,11 @@ func DeleteSite(t provider.T) {
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
_
,
err
=
page
.
WaitForSelector
(
".list-item-content span:has-text('单元测试站点')"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
if
err
!=
nil
{
t
.
Errorf
(
"Wait updated site fail: %v"
,
err
)
t
.
FailNow
()
}
locator
,
err
=
page
.
Locator
(
".list-item-content"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点"
})
c
,
err
:=
locator
.
Count
()
if
err
!=
nil
||
c
>
0
{
...
...
test/ui/ui_workspace_filter_test.go
0 → 100644
浏览文件 @
ba04a452
package
main
import
(
"testing"
ztfTestHelper
"github.com/easysoft/zentaoatf/test/helper/ztf"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
playwright
"github.com/playwright-community/playwright-go"
)
var
workspaceFilterPage
playwright
.
Page
func
FilterDir
(
t
provider
.
T
)
{
t
.
ID
(
"5494"
)
t
.
AddParentSuite
(
"管理禅道站点下工作目录"
)
locator
,
err
:=
workspaceFilterPage
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click is fail: %v"
,
err
)
t
.
FailNow
()
return
}
_
,
err
=
workspaceFilterPage
.
WaitForSelector
(
"#navbar .list-item"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait for workspace list nav fail: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
workspaceFilterPage
.
Click
(
".list-item-title>>text=单元测试站点"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click workspace nav fail: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
workspaceFilterPage
.
Click
(
`[title="筛选"]`
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click create workspace fail: %v"
,
err
)
t
.
FailNow
()
return
}
_
,
err
=
workspaceFilterPage
.
WaitForSelector
(
"#filterModal"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait filter modal fail: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
workspaceFilterPage
.
Click
(
"#filterModal>>.list-item-title:has-text(
\"
单元测试工作目录
\"
)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click php filter fail: %v"
,
err
)
t
.
FailNow
()
return
}
eleArr
,
err
:=
workspaceFilterPage
.
QuerySelectorAll
(
"#leftPane .tree .tree-node"
)
if
len
(
eleArr
)
<
1
{
t
.
Errorf
(
"Filter valid fail: %v"
,
err
)
t
.
FailNow
()
return
}
}
func
FilterSuite
(
t
provider
.
T
)
{
t
.
ID
(
"5495"
)
t
.
AddParentSuite
(
"管理禅道站点下工作目录"
)
err
:=
workspaceFilterPage
.
Click
(
`[title="筛选"]`
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click create workspace fail: %v"
,
err
)
t
.
FailNow
()
return
}
_
,
err
=
workspaceFilterPage
.
WaitForSelector
(
"#filterModal"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait filter modal fail: %v"
,
err
)
t
.
FailNow
()
return
}
workspaceFilterPage
.
WaitForTimeout
(
1000
)
err
=
workspaceFilterPage
.
Click
(
"#filterModal>>.tab-nav:has-text(
\"
按套件
\"
)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click by suite fail: %v"
,
err
)
t
.
FailNow
()
return
}
workspaceFilterPage
.
WaitForSelector
(
"#filterModal>>.list-item-title:has-text(
\"
test_suite
\"
)"
)
err
=
workspaceFilterPage
.
Click
(
"#filterModal>>.list-item-title:has-text(
\"
test_suite
\"
)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click test_suite filter fail: %v"
,
err
)
t
.
FailNow
()
return
}
workspaceFilterPage
.
WaitForTimeout
(
200
)
workspaceFilterPage
.
WaitForSelector
(
".toolbar:has-text(
\"
按套件
\"
)"
)
ztfTestHelper
.
ExpandWorspace
(
workspaceFilterPage
)
workspaceFilterPage
.
WaitForTimeout
(
200
)
scriptLocator
,
err
:=
workspaceFilterPage
.
Locator
(
".tree-node>>text=1_string_match.php"
)
c
,
err
:=
scriptLocator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Filter suite fail: %v"
,
err
)
t
.
FailNow
()
return
}
}
func
ByModule
(
t
provider
.
T
)
{
t
.
ID
(
"5493"
)
t
.
AddParentSuite
(
"管理禅道站点下工作目录"
)
err
:=
workspaceFilterPage
.
Click
(
"#displayByMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click byModule btn fail: %v"
,
err
)
t
.
FailNow
()
}
workspaceFilterPage
.
WaitForTimeout
(
1000
)
err
=
workspaceFilterPage
.
Click
(
".dropdown-menu>>.list-item-content:has-text(
\"
按模块
\"
)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click by module fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
workspaceFilterPage
.
Click
(
".tree-node-title:has-text(
\"
module1
\"
)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click module1 dir fail: %v"
,
err
)
t
.
FailNow
()
}
// scriptLocator, err := workspaceFilterPage.Locator(".tree-node>>:has-text(\"check string matches pattern\")")
// c, err := scriptLocator.Count()
// if err != nil || c == 0 {
// t.Errorf("Filter suite fail: %v", err)
// t.FailNow()
// }
}
func
FilterTask
(
t
provider
.
T
)
{
t
.
ID
(
"5496"
)
t
.
AddParentSuite
(
"管理禅道站点下工作目录"
)
locator
,
err
:=
workspaceFilterPage
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click is fail: %v"
,
err
)
t
.
FailNow
()
return
}
_
,
err
=
workspaceFilterPage
.
WaitForSelector
(
"#navbar .list-item"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait for workspace list nav fail: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
workspaceFilterPage
.
Click
(
".list-item-title>>text=单元测试站点"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click workspace nav fail: %v"
,
err
)
t
.
FailNow
()
return
}
err
=
workspaceFilterPage
.
Click
(
`[title="筛选"]`
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click create workspace fail: %v"
,
err
)
t
.
FailNow
()
return
}
_
,
err
=
workspaceFilterPage
.
WaitForSelector
(
"#filterModal"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait filter modal fail: %v"
,
err
)
t
.
FailNow
()
return
}
workspaceFilterPage
.
WaitForTimeout
(
1000
)
err
=
workspaceFilterPage
.
Click
(
"#filterModal>>.tab-nav:has-text(
\"
按测试单
\"
)"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click by suite fail: %v"
,
err
)
t
.
FailNow
()
return
}
workspaceFilterPage
.
WaitForSelector
(
"#filterModal>>.list-item-title:has-text(
\"
企业网站第一期测试任务
\"
)"
)
err
=
workspaceFilterPage
.
Click
(
"#filterModal>>.list-item-title:has-text(
\"
企业网站第一期测试任务
\"
)"
)
workspaceFilterPage
.
WaitForTimeout
(
200
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click test_task filter fail: %v"
,
err
)
t
.
FailNow
()
return
}
workspaceFilterPage
.
WaitForSelector
(
".toolbar:has-text(
\"
按测试单
\"
)"
)
ztfTestHelper
.
ExpandWorspace
(
workspaceFilterPage
)
scriptLocator
,
err
:=
workspaceFilterPage
.
Locator
(
".tree-node>>text=1_string_match.php"
)
c
,
err
:=
scriptLocator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Filter task fail: %v"
,
err
)
t
.
FailNow
()
return
}
}
func
TestUiWorkspaceFilter
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
return
}
headless
:=
true
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web workspaceBrowser: %v"
,
err
)
t
.
FailNow
()
return
}
workspaceFilterPage
,
err
=
workspaceBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
return
}
if
_
,
err
:=
workspaceFilterPage
.
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
()
return
}
ztfTestHelper
.
ExpandWorspace
(
workspaceFilterPage
)
runner
.
Run
(
t
,
"客户端-按目录过滤禅道用例脚本"
,
FilterDir
)
runner
.
Run
(
t
,
"客户端-按套件过滤禅道用例脚本"
,
FilterSuite
)
runner
.
Run
(
t
,
"客户端-按测试单过滤禅道用例脚本"
,
FilterTask
)
runner
.
Run
(
t
,
"客户端-按模块展示禅道用例脚本"
,
ByModule
)
if
err
=
workspaceBrowser
.
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
}
}
test/ui/ui_workspace_test.go
浏览文件 @
ba04a452
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录