Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zentaoatf
提交
36f5c51c
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 搜索 >>
提交
36f5c51c
编写于
8月 25, 2022
作者:
雨
雨爱无痕
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* Add result test case
上级
4e8bf632
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
424 addition
and
174 deletion
+424
-174
internal/pkg/helper/script/generator.go
internal/pkg/helper/script/generator.go
+1
-0
test/ui_interpreter_test.go
test/ui_interpreter_test.go
+3
-40
test/ui_result_test.go
test/ui_result_test.go
+210
-0
test/ui_run_test.go
test/ui_run_test.go
+194
-47
test/ui_site_test.go
test/ui_site_test.go
+3
-65
test/ui_workspace_test.go
test/ui_workspace_test.go
+11
-22
ui/src/views/result/FormBug.vue
ui/src/views/result/FormBug.vue
+1
-0
ui/src/views/result/FormResult.vue
ui/src/views/result/FormResult.vue
+1
-0
未找到文件。
internal/pkg/helper/script/generator.go
浏览文件 @
36f5c51c
...
...
@@ -108,6 +108,7 @@ func GenEmptyScript(name, lang, pth string, productId int) {
info
:=
make
([]
string
,
0
)
info
=
append
(
info
,
fmt
.
Sprintf
(
"title=%s"
,
name
))
info
=
append
(
info
,
fmt
.
Sprintf
(
"timeout=%d"
,
0
))
info
=
append
(
info
,
fmt
.
Sprintf
(
"cid=%d"
,
0
))
info
=
append
(
info
,
fmt
.
Sprintf
(
"pid=%d"
,
productId
))
...
...
test/ui_interpreter_test.go
浏览文件 @
36f5c51c
...
...
@@ -13,7 +13,6 @@ func CreateInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
...
...
@@ -23,39 +22,32 @@ func CreateInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web interpreterBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
interpreterBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
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 interpreter nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"text=新建运行环境"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click create interpreter fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
:=
page
.
Locator
(
"#interpreterFormModal select"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find create interpreter input fail: %v"
,
err
)
t
.
FailNow
()
}
langSelect
,
err
:=
Locator
.
Nth
(
0
)
if
err
!=
nil
{
...
...
@@ -72,20 +64,17 @@ func CreateInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Find address input fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
pathSelect
.
SelectOption
(
playwright
.
SelectOptionValues
{
Indexes
:
&
[]
int
{
1
}})
if
err
!=
nil
{
t
.
Errorf
(
"Fil address input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#interpreterFormModal>>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
:
"Python"
})
c
,
err
:=
Locator
.
Count
()
...
...
@@ -99,7 +88,6 @@ func EditInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
...
...
@@ -111,51 +99,42 @@ func EditInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web interpreterBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
interpreterBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
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 interpreter nav 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
)
t
.
FailNow
()
}
Locator
,
err
=
Locator
.
Locator
(
"text=编辑"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find python 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
(
"#interpreterFormModal select"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find create interpreter input fail: %v"
,
err
)
t
.
FailNow
()
}
langSelect
,
err
:=
Locator
.
Nth
(
0
)
if
err
!=
nil
{
...
...
@@ -172,20 +151,17 @@ func EditInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Find address input fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
pathSelect
.
SelectOption
(
playwright
.
SelectOptionValues
{
Indexes
:
&
[]
int
{
1
}})
if
err
!=
nil
{
t
.
Errorf
(
"Fil address input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#interpreterFormModal>>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
:
"Python"
})
c
,
err
:=
Locator
.
Count
()
...
...
@@ -199,7 +175,6 @@ func DeleteInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
...
...
@@ -211,52 +186,43 @@ func DeleteInterpreter(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web interpreterBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
interpreterBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
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 interpreter nav 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
)
t
.
FailNow
()
}
Locator
,
err
=
Locator
.
Locator
(
"text=删除"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find python edit 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
:
"Python"
})
...
...
@@ -264,18 +230,15 @@ func DeleteInterpreter(t *testing.T) {
if
err
!=
nil
||
c
>
0
{
t
.
Errorf
(
"Delete interpreter fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
interpreterBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The interpreterBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
...
...
test/ui_result_test.go
0 → 100644
浏览文件 @
36f5c51c
package
main
import
(
"testing"
playwright
"github.com/playwright-community/playwright-go"
)
var
resultBrowser
playwright
.
Browser
func
SubmitResult
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
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
()
}
page
,
err
:=
workspaceBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
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
.
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
)
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
()
}
err
=
page
.
Click
(
"#rightPane .result-list-item .list-item-title>>nth=0"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click first result fail: %v"
,
err
)
}
err
=
page
.
Click
(
".result-action .btn:has-text('提交结果到禅道')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click re-exec failed case btn fail: %v"
,
err
)
}
_
,
err
=
page
.
WaitForSelector
(
"#syncToZentaoModal"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait syncToZentaoModal fail: %v"
,
err
)
t
.
FailNow
()
}
titleInput
,
err
:=
page
.
Locator
(
"#syncToZentaoModal>>.form-item:has-text('或输入新任务标题')>>input"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find title input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
titleInput
.
Fill
(
"单元测试任务"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil title input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#syncToZentaoModal>>text=确定"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#syncToZentaoModal"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateHidden
})
if
err
!=
nil
{
t
.
Errorf
(
"Wait syncToZentaoModal hide fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
=
page
.
Locator
(
".toast-notification-container"
,
playwright
.
PageLocatorOptions
{
HasText
:
"提交成功"
})
c
,
err
:=
Locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Submit result to zentao fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
SubmitBug
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
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
()
}
page
,
err
:=
workspaceBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
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
.
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
)
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
()
}
err
=
page
.
Click
(
"#rightPane .result-list-item .list-item-title>>nth=0"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click first result fail: %v"
,
err
)
}
err
=
page
.
Click
(
".page-result .btn:has-text('提交缺陷到禅道')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click re-exec failed case btn fail: %v"
,
err
)
}
_
,
err
=
page
.
WaitForSelector
(
"#submitBugModal"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait submitBugModal fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#submitBugModal>>text=确定"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#submitBugModal"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateHidden
})
if
err
!=
nil
{
t
.
Errorf
(
"Wait submitBugModal hide fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
=
page
.
Locator
(
".toast-notification-container"
,
playwright
.
PageLocatorOptions
{
HasText
:
"提交成功"
})
c
,
err
:=
Locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Submit bug to zentao fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
TestUiResult
(
t
*
testing
.
T
)
{
t
.
Run
(
"SubmitResult"
,
SubmitResult
)
t
.
Run
(
"SubmitBug"
,
SubmitBug
)
}
test/ui_run_test.go
浏览文件 @
36f5c51c
...
...
@@ -15,7 +15,7 @@ func RunScript(t *testing.T) {
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
fals
e
headless
:=
tru
e
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
...
...
@@ -28,8 +28,7 @@ func RunScript(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -82,26 +81,32 @@ func RunScript(t *testing.T) {
resultTitleElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-title"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log title in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTitle
,
err
:=
resultTitleElement
.
InnerText
()
if
err
!=
nil
||
resultTitle
!=
"1_string_match.php"
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
timeElement
,
err
:=
page
.
QuerySelector
(
"#log-list .item .time"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
logTime
,
err
:=
timeElement
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTimeElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-trailing-text"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTime
,
err
:=
resultTimeElement
.
InnerText
()
if
err
!=
nil
||
logTime
[
:
5
]
!=
resultTime
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
...
...
@@ -120,7 +125,7 @@ func RunSelectedScripts(t *testing.T) {
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
fals
e
headless
:=
tru
e
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
...
...
@@ -133,8 +138,7 @@ func RunSelectedScripts(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -212,26 +216,32 @@ func RunSelectedScripts(t *testing.T) {
resultTitleElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-title"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log title in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTitle
,
err
:=
resultTitleElement
.
InnerText
()
if
err
!=
nil
||
resultTitle
!=
"单元测试工作目录(2)"
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
timeElement
,
err
:=
page
.
QuerySelector
(
"#log-list .item .time"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
logTime
,
err
:=
timeElement
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTimeElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-trailing-text"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTime
,
err
:=
resultTimeElement
.
InnerText
()
if
err
!=
nil
||
logTime
[
:
5
]
!=
resultTime
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
...
...
@@ -249,7 +259,7 @@ func RunOpenedAndLast(t *testing.T) {
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
fals
e
headless
:=
tru
e
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
...
...
@@ -262,8 +272,7 @@ func RunOpenedAndLast(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -276,7 +285,6 @@ func RunOpenedAndLast(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
Locator
.
Click
()
if
err
!=
nil
{
...
...
@@ -287,7 +295,6 @@ func RunOpenedAndLast(t *testing.T) {
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
{
...
...
@@ -324,21 +331,23 @@ func RunOpenedAndLast(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Click batchRunMenuToggle fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".list-item-content:has-text('执行打开文件')"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click Run opened scripts fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行2个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec opened scripts result fail: %v"
,
err
)
t
.
FailNow
()
}
element
,
err
:=
page
.
QuerySelector
(
"#log-list>>.msg-span>>:has-text('执行2个用例,耗时')"
)
innerText
,
err
:=
element
.
InnerText
()
Locator
,
err
=
page
.
Locator
(
"#log-list>>code:has-text('执行2个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find exec opened scripts result fail: %v"
,
err
)
t
.
FailNow
()
}
innerText
,
err
:=
Locator
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find exec opened scripts result fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -356,9 +365,10 @@ func RunOpenedAndLast(t *testing.T) {
if
err
!=
nil
||
resultTitle
!=
"单元测试工作目录(2)"
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
}
timeElement
,
err
:=
page
.
QuerySelector
(
"#log-list .item .time
"
)
timeElement
,
err
:=
Locator
.
Locator
(
".time>>span
"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
Errorf
(
"Find log time element in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
logTime
,
err
:=
timeElement
.
InnerText
()
if
err
!=
nil
{
...
...
@@ -377,21 +387,19 @@ func RunOpenedAndLast(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Click batchRunMenuToggle fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".list-item-content:has-text('执行上次')"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click Run last time fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行2个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec last time result fail: %v"
,
err
)
t
.
FailNow
()
}
element
,
err
=
page
.
QuerySelector
(
"#log-list>>.msg-span>>
:has-text('执行2个用例,耗时')"
)
innerText
,
err
=
element
.
InnerText
()
Locator
,
err
=
page
.
Locator
(
"#log-list>>code
:has-text('执行2个用例,耗时')"
)
innerText
,
err
=
Locator
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find exec last time result fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -403,26 +411,32 @@ func RunOpenedAndLast(t *testing.T) {
resultTitleElement
,
err
=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-title"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log title in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTitle
,
err
=
resultTitleElement
.
InnerText
()
if
err
!=
nil
||
resultTitle
!=
"单元测试工作目录(2)"
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
timeElement
,
err
=
page
.
QuerySelector
(
"#log-list .item .time
"
)
timeElement
,
err
=
Locator
.
Locator
(
".time>>span
"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
Errorf
(
"Find log time element in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
logTime
,
err
=
timeElement
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTimeElement
,
err
=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-trailing-text"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTime
,
err
=
resultTimeElement
.
InnerText
()
if
err
!=
nil
||
logTime
[
:
5
]
!=
resultTime
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
...
...
@@ -440,7 +454,7 @@ func RunAll(t *testing.T) {
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
fals
e
headless
:=
tru
e
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
...
...
@@ -453,8 +467,7 @@ func RunAll(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -467,7 +480,6 @@ func RunAll(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
Locator
.
Click
()
if
err
!=
nil
{
...
...
@@ -478,7 +490,6 @@ func RunAll(t *testing.T) {
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
{
...
...
@@ -501,21 +512,23 @@ func RunAll(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Click batchRunMenuToggle fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".list-item-content:has-text('执行所有文件')"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click Run all scripts fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行3个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec all scripts result fail: %v"
,
err
)
t
.
FailNow
()
}
element
,
err
:=
page
.
QuerySelector
(
"#log-list>>.msg-span>>:has-text('执行3个用例,耗时')"
)
innerText
,
err
:=
element
.
InnerText
()
Locator
,
err
=
page
.
Locator
(
"#log-list>>code:has-text('执行3个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find exec all scripts result fail: %v"
,
err
)
t
.
FailNow
()
}
innerText
,
err
:=
Locator
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find exec all scripts result fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -527,22 +540,27 @@ func RunAll(t *testing.T) {
resultTitleElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-title"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log title in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTitle
,
err
:=
resultTitleElement
.
InnerText
()
if
err
!=
nil
||
resultTitle
!=
"单元测试工作目录(3)"
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
timeElement
,
err
:=
page
.
QuerySelector
(
"#log-list .item .time
"
)
timeElement
,
err
:=
Locator
.
Locator
(
".time>>span
"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
Errorf
(
"Find log time element in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
logTime
,
err
:=
timeElement
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTimeElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-trailing-text"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTime
,
err
:=
resultTimeElement
.
InnerText
()
if
err
!=
nil
||
logTime
[
:
5
]
!=
resultTime
{
...
...
@@ -564,7 +582,7 @@ func RunReExecFailCase(t *testing.T) {
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
fals
e
headless
:=
tru
e
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
...
...
@@ -577,8 +595,7 @@ func RunReExecFailCase(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -592,7 +609,6 @@ func RunReExecFailCase(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
Locator
.
Click
()
if
err
!=
nil
{
...
...
@@ -603,7 +619,6 @@ func RunReExecFailCase(t *testing.T) {
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
{
...
...
@@ -628,8 +643,12 @@ func RunReExecFailCase(t *testing.T) {
t
.
Errorf
(
"Wait exec script result fail: %v"
,
err
)
t
.
FailNow
()
}
element
,
err
:=
page
.
QuerySelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
innerText
,
err
:=
element
.
InnerText
()
Locator
,
err
=
page
.
Locator
(
"#log-list>>code:has-text('执行1个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find exec script log fail: %v"
,
err
)
t
.
FailNow
()
}
innerText
,
err
:=
Locator
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find exec script result fail: %v"
,
err
)
t
.
FailNow
()
...
...
@@ -641,26 +660,153 @@ func RunReExecFailCase(t *testing.T) {
resultTitleElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-title"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log title in logPane fail: %v"
,
err
)
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
()
}
timeElement
,
err
:=
page
.
QuerySelector
(
"#log-list .item .time"
)
timeElement
,
err
:=
Locator
.
Locator
(
".time>>span"
)
if
err
!=
nil
||
resultTitle
!=
"1_string_match.php"
{
t
.
Errorf
(
"Find log time element in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
logTime
,
err
:=
timeElement
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTimeElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-trailing-text"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTime
,
err
:=
resultTimeElement
.
InnerText
()
if
err
!=
nil
||
logTime
[
:
5
]
!=
resultTime
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
RunReExecAllCase
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
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
()
}
page
,
err
:=
workspaceBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
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
.
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
)
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
()
}
err
=
page
.
Click
(
"#rightPane .result-list-item .list-item-title>>nth=0"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click first result fail: %v"
,
err
)
}
err
=
page
.
Click
(
".result-action .btn:has-text('重新执行所有用例')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click re-exec failed case btn fail: %v"
,
err
)
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行3个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec script result fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
=
page
.
Locator
(
"#log-list>>code:has-text('执行3个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find exec script log fail: %v"
,
err
)
t
.
FailNow
()
}
innerText
,
err
:=
Locator
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find exec script result fail: %v"
,
err
)
t
.
FailNow
()
}
if
!
strings
.
Contains
(
innerText
,
"2(66.0%) 通过,1(33.0%) 失败"
)
{
t
.
Errorf
(
"Exec failed case fail: %v"
,
err
)
t
.
FailNow
()
}
resultTitleElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-title"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log title in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTitle
,
err
:=
resultTitleElement
.
InnerText
()
if
err
!=
nil
||
resultTitle
!=
"单元测试工作目录(3)"
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
timeElement
,
err
:=
Locator
.
Locator
(
".time>>span"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time element in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
logTime
,
err
:=
timeElement
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTimeElement
,
err
:=
page
.
QuerySelector
(
"#rightPane .result-list-item .list-item-trailing-text"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find log time in logPane fail: %v"
,
err
)
t
.
FailNow
()
}
resultTime
,
err
:=
resultTimeElement
.
InnerText
()
if
err
!=
nil
||
logTime
[
:
5
]
!=
resultTime
{
t
.
Errorf
(
"Find result in rightPane fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
...
...
@@ -673,9 +819,10 @@ func RunReExecFailCase(t *testing.T) {
}
func
TestUiRun
(
t
*
testing
.
T
)
{
// t.Run("RunScript", RunScript)
// t.Run("RunSelectedScripts", RunSelectedScripts)
// t.Run("RunOpenedAndLast", RunOpenedAndLast)
// t.Run("RunAll", RunAll)
t
.
Run
(
"RunScript"
,
RunScript
)
t
.
Run
(
"RunSelectedScripts"
,
RunSelectedScripts
)
t
.
Run
(
"RunOpenedAndLast"
,
RunOpenedAndLast
)
t
.
Run
(
"RunAll"
,
RunAll
)
t
.
Run
(
"RunReExecAllCase"
,
RunReExecAllCase
)
t
.
Run
(
"RunReExecFailCase"
,
RunReExecFailCase
)
}
test/ui_site_test.go
浏览文件 @
36f5c51c
...
...
@@ -13,7 +13,6 @@ func CreateSite(t *testing.T) {
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
...
...
@@ -23,112 +22,93 @@ func CreateSite(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web siteBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
siteBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
// page.WaitForSelector(".tree")
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
(
"text=禅道站点管理"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click site nav fail: %v"
,
err
)
t
.
FailNow
()
}
// page.WaitForSelector(".modal-title")
err
=
page
.
Click
(
"text=新建站点"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click create site fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
=
page
.
Locator
(
"#siteFormModal input"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find create site input fail: %v"
,
err
)
t
.
FailNow
()
}
titleInput
,
err
:=
Locator
.
Nth
(
0
)
if
err
!=
nil
{
t
.
Errorf
(
"Find title input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
titleInput
.
Fill
(
"单元测试站点"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil title input fail: %v"
,
err
)
t
.
FailNow
()
}
addressInput
,
err
:=
Locator
.
Nth
(
1
)
if
err
!=
nil
{
t
.
Errorf
(
"Find address input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
addressInput
.
Fill
(
"http://127.0.0.1/zentao/"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil address input fail: %v"
,
err
)
t
.
FailNow
()
}
nameInput
,
err
:=
Locator
.
Nth
(
2
)
if
err
!=
nil
{
t
.
Errorf
(
"Find name input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
nameInput
.
Fill
(
"admin"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil name input fail: %v"
,
err
)
t
.
FailNow
()
}
pwdInput
,
err
:=
Locator
.
Nth
(
3
)
if
err
!=
nil
{
t
.
Errorf
(
"Find passwd input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
pwdInput
.
Fill
(
"123456."
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil passwd input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"text=确定"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click submit form fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
Locator
,
err
=
page
.
Locator
(
".list-item-content span"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点"
})
...
...
@@ -136,18 +116,15 @@ func CreateSite(t *testing.T) {
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find created site fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
siteBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The siteBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
EditSite
(
t
*
testing
.
T
)
{
...
...
@@ -156,7 +133,6 @@ func EditSite(t *testing.T) {
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
...
...
@@ -166,38 +142,31 @@ func EditSite(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web siteBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
siteBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
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
(
"text=禅道站点管理"
)
if
err
!=
nil
{
...
...
@@ -212,79 +181,66 @@ func EditSite(t *testing.T) {
CreateSite
(
t
)
EditSite
(
t
)
return
}
Locator
,
err
=
page
.
Locator
(
".list-item"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find test site fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"text=编辑"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click update site fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
=
page
.
Locator
(
"#siteFormModal input"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find update site input fail: %v"
,
err
)
t
.
FailNow
()
}
titleInput
,
err
:=
Locator
.
Nth
(
0
)
if
err
!=
nil
{
t
.
Errorf
(
"Find title input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
titleInput
.
Fill
(
"单元测试站点-update"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil title input fail: %v"
,
err
)
t
.
FailNow
()
}
addressInput
,
err
:=
Locator
.
Nth
(
1
)
if
err
!=
nil
{
t
.
Errorf
(
"Find address input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
addressInput
.
Fill
(
"http://127.0.0.1/zentao/"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil address input fail: %v"
,
err
)
t
.
FailNow
()
}
nameInput
,
err
:=
Locator
.
Nth
(
2
)
if
err
!=
nil
{
t
.
Errorf
(
"Find name input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
nameInput
.
Fill
(
"admin"
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil name input fail: %v"
,
err
)
t
.
FailNow
()
}
pwdInput
,
err
:=
Locator
.
Nth
(
3
)
if
err
!=
nil
{
t
.
Errorf
(
"Find passwd input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
pwdInput
.
Fill
(
"123456."
)
if
err
!=
nil
{
t
.
Errorf
(
"Fil passwd input fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#siteFormModal>>.modal-action>>span:has-text(
\"
确定
\"
)"
)
if
err
!=
nil
{
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"
})
...
...
@@ -292,18 +248,15 @@ func EditSite(t *testing.T) {
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find update site fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
siteBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The siteBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
DeleteSite
(
t
*
testing
.
T
)
{
...
...
@@ -311,7 +264,6 @@ func DeleteSite(t *testing.T) {
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
...
...
@@ -321,65 +273,54 @@ func DeleteSite(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web siteBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
siteBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
// page.WaitForSelector(".tree")
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
(
"text=禅道站点管理"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click site nav fail: %v"
,
err
)
t
.
FailNow
()
}
// page.WaitForSelector(".modal-title")
Locator
,
err
=
page
.
Locator
(
".list-item"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点"
})
if
err
!=
nil
{
t
.
Errorf
(
"Find test site fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"text=删除"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click delete site fail: %v"
,
err
)
t
.
FailNow
()
}
page
.
WaitForTimeout
(
1000
)
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
(
".list-item-content"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点"
})
...
...
@@ -387,18 +328,15 @@ func DeleteSite(t *testing.T) {
if
err
!=
nil
||
c
>
0
{
t
.
Errorf
(
"Delete site fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
siteBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The siteBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
...
...
test/ui_workspace_test.go
浏览文件 @
36f5c51c
...
...
@@ -31,8 +31,7 @@ func CreateWorkspace(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -161,8 +160,7 @@ func SyncFromZentao(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -239,8 +237,7 @@ func SyncToZentao(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -305,8 +302,7 @@ func Copy(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -402,8 +398,7 @@ func DeleteScript(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -479,8 +474,7 @@ func DeleteDir(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -557,8 +551,7 @@ func DeleteWorkspace(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -624,8 +617,7 @@ func Clip(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -722,8 +714,7 @@ func FilterDir(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -797,8 +788,7 @@ func FilterSuite(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
@@ -883,8 +873,7 @@ func FilterTask(t *testing.T) {
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
...
...
ui/src/views/result/FormBug.vue
浏览文件 @
36f5c51c
<
template
>
<ZModal
id=
"submitBugModal"
:showModal=
"showModalRef"
@
onCancel=
"close"
@
onOk=
"submit"
...
...
ui/src/views/result/FormResult.vue
浏览文件 @
36f5c51c
<
template
>
<ZModal
id=
"syncToZentaoModal"
:showModal=
"showModalRef"
@
onCancel=
"close"
@
onOk=
"submit"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录