Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zentaoatf
提交
b8e1b6fe
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 搜索 >>
提交
b8e1b6fe
编写于
9月 20, 2022
作者:
雨
雨爱无痕
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add init zentao data
上级
f0471f82
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
212 addition
and
28 deletion
+212
-28
test/helper/common/docker.go
test/helper/common/docker.go
+45
-18
test/helper/zentao/ui/zentao.go
test/helper/zentao/ui/zentao.go
+167
-10
未找到文件。
test/helper/common/docker.go
浏览文件 @
b8e1b6fe
package
commonTest
import
(
"errors"
"flag"
"fmt"
"os"
"os/exec"
"runtime"
...
...
@@ -13,44 +13,71 @@ import (
)
var
version
=
flag
.
String
(
"version"
,
""
,
""
)
var
isRuning
=
false
func
Run
(
version
string
)
(
err
error
)
{
versionNumber
:=
strings
.
ReplaceAll
(
version
,
"."
,
""
)
apath
,
_
:=
os
.
Getwd
()
fmt
.
Println
(
apath
)
codeDir
:=
apath
+
"/docker/www"
if
runtime
.
GOOS
==
"windows"
{
codeDir
=
apath
+
`\docker\www`
}
_
,
err
=
os
.
Stat
(
codeDir
)
if
os
.
IsNotExist
(
err
)
{
err
=
os
.
MkdirAll
(
codeDir
,
os
.
ModePerm
)
if
err
!=
nil
{
return
}
if
os
.
IsExist
(
err
)
{
os
.
RemoveAll
(
codeDir
)
}
//docker run --name zentao -p 8081:80 --network=zentaonet -v D:\docker\www\zentaopms:/www/zentaopms -v D:\docker\mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.3.3
cmd
:=
exec
.
Command
(
"docker"
,
"run"
,
"--name"
,
"zentao"
+
versionNumber
,
"-p"
,
"8081:80"
,
"-v"
,
codeDir
+
":/www/zentaopms"
,
"-e"
,
"MYSQL_ROOT_PASSWORD=123456"
,
"-d"
,
"easysoft/zentao:"
+
version
)
fmt
.
Println
(
cmd
.
String
())
output
,
err
:=
cmd
.
CombinedOutput
()
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
}
if
strings
.
Contains
(
string
(
output
),
"exit"
)
{
return
errors
.
New
(
"Run docker fail"
)
}
fmt
.
Println
(
string
(
output
))
return
err
}
func
IsExistContainer
(
name
string
)
bool
{
cmd
:=
exec
.
Command
(
"docker"
,
"ps"
,
"-a"
,
"--format"
,
"'{{.Names}}'"
)
output
,
err
:=
cmd
.
CombinedOutput
()
if
err
!=
nil
{
return
false
}
return
strings
.
Contains
(
string
(
output
),
name
)
}
func
IsRuning
(
name
string
)
bool
{
cmd
:=
exec
.
Command
(
"docker"
,
"ps"
,
"--format"
,
"'{{.Names}}'"
)
output
,
err
:=
cmd
.
CombinedOutput
()
if
err
!=
nil
{
return
false
}
return
strings
.
Contains
(
string
(
output
),
name
)
}
func
Start
(
name
string
)
bool
{
cmd
:=
exec
.
Command
(
"docker"
,
"start"
,
name
)
output
,
err
:=
cmd
.
CombinedOutput
()
if
err
!=
nil
{
return
false
}
return
strings
.
Contains
(
string
(
output
),
name
)
}
func
InitZentao
()
{
if
isRuning
{
return
versionNumber
:=
strings
.
ReplaceAll
(
*
version
,
"."
,
""
)
containerName
:=
"zentao"
+
versionNumber
isExist
:=
IsExistContainer
(
containerName
)
if
isExist
{
if
!
IsRuning
(
containerName
)
{
Start
(
containerName
)
time
.
Sleep
(
time
.
Second
*
30
)
}
}
else
{
Run
(
*
version
)
time
.
Sleep
(
time
.
Second
*
120
)
}
flag
.
Parse
()
isRuning
=
true
fmt
.
Println
(
*
version
)
Run
(
*
version
)
time
.
Sleep
(
time
.
Minute
)
uiTest
.
InitZentaoData
()
}
test/helper/zentao/ui/zentao.go
浏览文件 @
b8e1b6fe
package
uiTest
import
(
"strings"
playwright
"github.com/playwright-community/playwright-go"
)
func
login
()
{
var
page
playwright
.
Page
func
Login
()
(
err
error
)
{
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8081/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="account"]`
,
"admin"
)
if
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="password"]`
,
"123456."
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
`button:has-text("登录")`
)
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
"#login"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
if
err
!=
nil
{
return
}
title
,
err
:=
page
.
Title
()
if
err
!=
nil
{
return
}
if
title
==
"流程 - 禅道"
{
err
=
page
.
Click
(
`button:has-text("保存")`
)
if
err
!=
nil
{
return
}
}
return
}
func
CreateModule
()
(
err
error
)
{
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8081/index.php?m=tree&f=browse&productID=1&view=case"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="modules\[\]"]>>nth=0`
,
"module1"
)
if
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="modules\[\]"]>>nth=1`
,
"module2"
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
`#submit`
)
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
"#modulesTree>>:has-text('module')"
)
if
err
!=
nil
{
return
}
return
}
func
CreateSuite
()
(
err
error
)
{
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8081/index.php?m=testsuite&f=create&product=1"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`#name`
,
"test_suite"
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
`#submit`
)
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
"#submit"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
if
err
!=
nil
{
return
}
return
}
func
goToLastUnitTestResult
()
{
...
...
@@ -17,24 +95,103 @@ func checkUnitTestResult() {
}
func
InitZentaoData
()
(
err
error
)
{
pw
,
err
:=
playwright
.
Run
()
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8081/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
return
}
title
,
err
:=
page
.
Title
()
if
err
!=
nil
{
return
}
headless
:=
true
var
slowMo
float64
=
100
runBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
strings
.
Contains
(
title
,
"欢迎使用禅道"
)
{
err
=
page
.
Click
(
"text=开始安装"
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
"text=下一步"
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
"text=下一步"
)
if
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="dbPassword"]`
,
"123456"
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
`input[name="clearDB\[\]"]`
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
"text=保存"
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
"text=下一步"
)
if
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="company"]`
,
"test"
)
if
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="account"]`
,
"admin"
)
if
err
!=
nil
{
return
}
err
=
page
.
Fill
(
`input[name="password"]`
,
"123456."
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
`input[name="importDemoData\[\]"]`
)
if
err
!=
nil
{
return
}
err
=
page
.
Click
(
"text=保存"
)
if
err
!=
nil
{
return
}
_
,
err
=
page
.
WaitForSelector
(
"text=保存"
,
playwright
.
PageWaitForSelectorOptions
{
State
:
playwright
.
WaitForSelectorStateDetached
})
if
err
!=
nil
{
return
}
err
=
Login
()
if
err
!=
nil
{
return
}
err
=
CreateModule
()
if
err
!=
nil
{
return
}
err
=
CreateSuite
()
if
err
!=
nil
{
return
}
}
return
}
func
init
()
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
return
}
page
,
err
:=
runBrowser
.
NewPage
()
runBrowser
,
err
:=
pw
.
Chromium
.
Launch
()
if
err
!=
nil
{
return
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8081/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
});
err
!=
nil
{
defer
func
()
{
// if err = runBrowser.Close(); err != nil {
// return
// }
// if err = pw.Stop(); err != nil {
// return
// }
}()
page
,
err
=
runBrowser
.
NewPage
()
if
err
!=
nil
{
return
}
page
.
WaitForTimeout
(
10000000
)
return
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录