提交 9b5eaf0d 编写于 作者: Z zhaoke

format code

上级 d6e54a21
......@@ -40,6 +40,7 @@ logs/
#test
/test/conf
/test/log
/test/screenshot
/test/cli/product1
/test/ui/docker
/test/ui/log
......@@ -67,3 +68,4 @@ node_modules
/internal/pkg/plugin/zap-plugin
/zap_key
/test/restapi/allure-results/
zentaoatf.exe~
......@@ -210,7 +210,6 @@ func GenBugStepText(step commDomain.StepLog) string {
stepResults := make([]string, 0)
stepId, _ := strconv.Atoi(step.Id)
stepId += 1
stepTxt := fmt.Sprintf("%s%d: %s %s\n", i118Utils.Sprintf("step"), stepId, step.Name, step.Status)
for _, checkpoint := range step.CheckPoints {
text := fmt.Sprintf(
......
......@@ -4,7 +4,6 @@
package shellUtils
import (
"fmt"
"os/exec"
"regexp"
"strconv"
......@@ -44,7 +43,6 @@ func WindowSize() window {
}
func getWindowSizeFromLine(line string, win *window) {
fmt.Println(line)
if strings.Contains(line, "行") || strings.Contains(line, "Lines") {
re := regexp.MustCompile(`\d+`)
rs := re.FindAllString(line, -1)
......
......@@ -92,14 +92,14 @@ func testSet(language string) (ret string) {
if _, err = child.Expect(accountRe, time.Second*5); err != nil {
return fmt.Sprintf("expect %s, actual %s", accountRe, err.Error())
}
if err = child.Send("admin" + constTestHelper.NewLine); err != nil {
if err = child.Send(constTestHelper.ZentaoUsername + constTestHelper.NewLine); err != nil {
return err.Error()
}
if _, err = child.Expect(passwordRe, time.Second*5); err != nil {
return fmt.Sprintf("expect %s, actual %s", passwordRe, err.Error())
}
if err = child.Send("Test123456." + constTestHelper.NewLine); err != nil {
if err = child.Send(constTestHelper.ZentaoPassword + constTestHelper.NewLine); err != nil {
return err.Error()
}
if runtime.GOOS == "windows" {
......
......@@ -3,6 +3,7 @@ package main
import (
"flag"
"fmt"
"strings"
"testing"
commConsts "github.com/easysoft/zentaoatf/internal/pkg/consts"
......@@ -30,6 +31,8 @@ func main() {
uiTest.Close()
}()
if *runFrom == "jenkins" {
constTestHelper.ZentaoSiteUrl = constTestHelper.ZentaoSiteUrl[:strings.LastIndex(constTestHelper.ZentaoSiteUrl, ":")]
err := commonTestHelper.InitZentaoData()
if err != nil {
fmt.Println("Init zentao data fail ", err)
......
......@@ -15,14 +15,12 @@ import (
func Run(version string, codeDir string) (err error) {
versionNumber := strings.ReplaceAll(version, ".", "_")
// codeDir = "/www/zentaopms" + versionNumber
_, err = os.Stat(codeDir)
if os.IsExist(err) {
os.RemoveAll(codeDir)
}
// cmd := exec.Command("docker", "run", "--name", "zentao"+versionNumber, "-p", "8081:80", "-v", codeDir+":/www/zentaopms", "-d", "easysoft/zentao:"+version)
cmd := exec.Command("docker", "run", "--name", "zentao"+versionNumber, "-p",
fmt.Sprintf("%d:80", constTestHelper.ZentaoPort), "-d", "easysoft/zentao:"+version)
fmt.Println(cmd.String())
......@@ -34,6 +32,7 @@ func Run(version string, codeDir string) (err error) {
if strings.Contains(string(output), "exit") {
return errors.New("Run docker fail")
}
return err
}
......@@ -43,6 +42,7 @@ func IsExistContainer(name string) bool {
if err != nil {
return false
}
return strings.Contains(string(output), name)
}
......@@ -52,6 +52,7 @@ func IsRunning(name string) bool {
if err != nil {
return false
}
return strings.Contains(string(output), name)
}
......@@ -61,12 +62,14 @@ func List() []string {
if err != nil {
return nil
}
dockers := strings.Split(string(output), "\n")
for index, dockerName := range dockers {
dockerName = strings.TrimSpace(dockerName)
dockerName = strings.Trim(dockerName, "'")
dockers[index] = dockerName
}
return dockers
}
......@@ -77,26 +80,31 @@ func Start(name string) bool {
if err != nil {
return false
}
return strings.Contains(string(output), name)
}
func StopAll() bool {
dockers := List()
for _, dockerName := range dockers {
if strings.Contains(dockerName, "zentao") {
Stop(dockerName)
}
}
return true
}
func Stop(name string) bool {
cmd := exec.Command("docker", "kill", name)
fmt.Println(cmd.String())
_, err := cmd.CombinedOutput()
if err != nil {
return false
}
return true
}
......@@ -104,17 +112,18 @@ func InitZentao(version string) (err error) {
versionNumber := strings.ReplaceAll(version, ".", "_")
containerName := "zentao" + versionNumber
isExist := IsExistContainer(containerName)
apath, _ := os.Getwd()
codeDir := apath + "/docker/www/zentao" + versionNumber
pwd, _ := os.Getwd()
codeDir := pwd + "/docker/www/zentao" + versionNumber
if runtime.GOOS == "windows" {
codeDir = apath + `\docker\www\zentao` + versionNumber
codeDir = pwd + `\docker\www\zentao` + versionNumber
}
if isExist {
if !IsRunning(containerName) {
StopAll()
Start(containerName)
waitZentaoAccessed()
}
} else {
......@@ -123,8 +132,10 @@ func InitZentao(version string) (err error) {
if err != nil {
return
}
waitZentaoAccessed()
}
err = uiTest.InitZentaoData(version, codeDir)
return
}
......@@ -139,6 +150,7 @@ func waitZentaoAccessed() {
time.AfterFunc(20*time.Second, func() {
isTimeout = true
})
for {
status := uiTest.GetStatus(constTestHelper.ZentaoSiteUrl)
if isTimeout || status {
......
......@@ -31,7 +31,7 @@ func TestCli() (err error) {
fmt.Println(testPath, req.Cmd)
report := ExecUnit(req, "cli")
config := commDomain.WorkspaceConf{Url: constTestHelper.ZentaoSiteUrl + "/", Password: "Test123456.", Username: "admin"}
config := commDomain.WorkspaceConf{Url: constTestHelper.ZentaoSiteUrl + "/", Password: constTestHelper.ZentaoPassword, Username: constTestHelper.ZentaoUsername}
err = zentaoHelper.CommitResult(report, 1, 0, config, nil)
......@@ -42,6 +42,31 @@ func TestCli() (err error) {
return
}
func TestUi() (err error) {
var screenshotPath = fmt.Sprintf("%stest/screenshot", constTestHelper.RootPath)
os.RemoveAll(screenshotPath)
fileUtils.MkDirIfNeeded(screenshotPath)
testPath := fmt.Sprintf(`%stest`, constTestHelper.RootPath)
if runtime.GOOS == "windows" {
testPath = fmt.Sprintf(`%stest`, constTestHelper.RootPath)
}
req := serverDomain.TestSet{
WorkspacePath: testPath,
Cmd: "go test ./ui -v -timeout 10m",
TestTool: commConsts.GoTest,
}
report := ExecUnit(req, "ui")
config := commDomain.WorkspaceConf{Url: constTestHelper.ZentaoSiteUrl + "/", Password: constTestHelper.ZentaoPassword, Username: constTestHelper.ZentaoUsername}
err = zentaoHelper.CommitResult(report, 1, 0, config, nil)
if report.Fail > 0 {
os.Exit(1)
}
return
}
func ExecUnit(req serverDomain.TestSet, unitType string) (report commDomain.ZtfReport) {
if unitType == "ui" {
commConsts.AllureReportDir = "ui/allure-results"
......
......@@ -42,14 +42,17 @@ func BuildCli() (err error) {
func RunServer() (err error) {
ztfPath := GetZtfPath()
var cmd *exec.Cmd
cmd = exec.Command(ztfPath, "-P", "8085", "-uuid=ui_auto_test")
cmd.Dir = constTestHelper.RootPath
fmt.Println(cmd.String())
err = cmd.Start()
if err != nil {
return
}
return
}
......@@ -57,15 +60,18 @@ func RunUi() (err error) {
var cmd *exec.Cmd
cmd = exec.Command("npm", "run", "serve", "-uuid=ui_auto_test")
cmd.Dir = constTestHelper.RootPath + constTestHelper.FilePthSep + "ui"
fmt.Println(cmd.String())
stdout, err := cmd.StdoutPipe()
if err != nil {
return
}
err = cmd.Start()
if err != nil {
return
}
reader1 := bufio.NewReader(stdout)
go func() {
for {
......@@ -75,11 +81,13 @@ func RunUi() (err error) {
if err2 != nil {
return
}
if err != nil || io.EOF == err {
break
}
}
}()
WaitZtfAccessed()
return
}
......@@ -105,11 +113,13 @@ func WaitZtfAccessed() {
time.AfterFunc(120*time.Second, func() {
isTimeout = true
})
for {
status := uiTest.GetStatus(constTestHelper.ZtfUrl)
if isTimeout || status {
return
}
time.Sleep(time.Second)
}
}
......@@ -21,6 +21,8 @@ var (
ZtfUrl = "http://127.0.0.1:8000/"
ZentaoUsername = "admin"
ZentaoPassword = "Test123456."
ZentaoExtUrl = "https://www.zentao.net/file-download-22700.html"
)
func init() {
......
......@@ -23,6 +23,7 @@ func GetStatus(url string) bool {
WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
return false
}
return true
}
......@@ -31,15 +32,17 @@ func Login(url string) (err error) {
WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
return
}
title, _ := page.Title()
if !strings.Contains(title, "用户登录") {
return
}
err = page.Fill(`input[name="account"]`, "admin")
err = page.Fill(`input[name="account"]`, constTestHelper.ZentaoUsername)
if err != nil {
return
}
err = page.Fill(`input[name="password"]`, "Test123456.")
err = page.Fill(`input[name="password"]`, constTestHelper.ZentaoPassword)
if err != nil {
return
}
......@@ -55,6 +58,7 @@ func Login(url string) (err error) {
if err != nil {
return
}
if title == "流程 - 禅道" || title == "地盘-个性化设置 - 禅道" {
err = page.Click(`button:has-text("保存")`)
if err != nil {
......@@ -62,6 +66,7 @@ func Login(url string) (err error) {
}
}
page.WaitForTimeout(1000)
for {
page.WaitForTimeout(100)
isVisible, err := page.IsVisible("#triggerModal")
......@@ -71,10 +76,12 @@ func Login(url string) (err error) {
if !isVisible {
break
}
isVisible, _ = page.IsVisible("#iframe-triggerModal")
if !isVisible {
continue
}
iframeName := "iframe-triggerModal"
iframe := page.Frame(playwright.PageFrameOptions{Name: &iframeName})
isVisible, _ = iframe.IsVisible("footer>>text=下一步")
......@@ -82,13 +89,16 @@ func Login(url string) (err error) {
err = iframe.Click("footer>>text=下一步")
continue
}
isVisible, _ = iframe.IsVisible("footer>>text=关闭")
if isVisible {
err = iframe.Click("footer>>text=关闭")
continue
}
return errors.New("Find close features fail")
}
page.WaitForTimeout(1000)
return
}
......@@ -98,12 +108,16 @@ func createModule() (err error) {
WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
return
}
page.Click(".nav>>li>>text=测试")
iframeName := "app-qa"
iframe := page.Frame(playwright.PageFrameOptions{Name: &iframeName})
if iframe != nil {
iframe.Click(".nav>>li>>text=用例")
iframe.Click("#mainContent>>a>>text=维护模块")
err = iframe.Fill(`input[name="modules\[\]"]>>nth=0`, "module1")
if err != nil {
return
......@@ -122,6 +136,7 @@ func createModule() (err error) {
page.WaitForSelector("#dropMenu>>.list-group", playwright.PageWaitForSelectorOptions{State: playwright.WaitForSelectorStateVisible})
page.Click("#dropMenu>>a:has-text('企业网站建设')")
page.Click("#mainContent>>a>>text=维护模块")
err = page.Fill(`input[name="modules\[\]"]>>nth=0`, "module1")
if err != nil {
return
......@@ -145,9 +160,11 @@ func createSuite() (err error) {
WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
return
}
page.Click(".nav>>li>>text=测试")
iframeName := "app-qa"
iframe := page.Frame(playwright.PageFrameOptions{Name: &iframeName})
if iframe != nil {
iframe.Click(".nav>>li>>text=套件")
iframe.Click("#mainMenu>>text=建套件")
......@@ -159,16 +176,19 @@ func createSuite() (err error) {
if err != nil {
return
}
_, err = iframe.WaitForSelector("#submit", playwright.PageWaitForSelectorOptions{State: playwright.WaitForSelectorStateDetached})
if err != nil {
return
}
iframe.Click("#mainContent>>a[title=\"关联用例\"]")
iframe.Click(`input[name="cases\[\]"]>>nth=-1`)
iframe.Click("#submit:has-text('保存')")
} else {
page.Click(".nav>>li>>text=套件")
page.Click("#mainMenu>>text=建套件")
err = page.Fill(`#name`, "test_suite")
if err != nil {
return
......@@ -177,10 +197,12 @@ func createSuite() (err error) {
if err != nil {
return
}
_, err = page.WaitForSelector("#submit", playwright.PageWaitForSelectorOptions{State: playwright.WaitForSelectorStateDetached})
if err != nil {
return
}
page.Click("#mainContent>>a[title=\"关联用例\"]")
page.Click(`input[name="cases\[\]"]>>nth=-1`)
page.Click("#submit:has-text('保存')")
......@@ -193,10 +215,12 @@ func getLastUnitTestResult() (results []map[string]string, err error) {
WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
return
}
page.Click(".nav>>li>>text=测试")
iframeName := "app-qa"
iframe := page.Frame(playwright.PageFrameOptions{Name: &iframeName})
results = []map[string]string{}
if iframe != nil {
iframe.Click(".nav>>li>>text=用例")
navbarHtml, _ := iframe.InnerHTML("#navbar")
......@@ -206,10 +230,12 @@ func getLastUnitTestResult() (results []map[string]string, err error) {
iframe.Click("#mainMenu>>a>>text=单元测试")
iframe.Click("#taskList>>tr>>nth=1>>td>>nth=1>>a")
iframe.WaitForSelector("#taskList", playwright.PageWaitForSelectorOptions{State: playwright.WaitForSelectorStateDetached})
tds, err := iframe.QuerySelectorAll("table>>tr")
if err != nil {
return results, err
}
for index := 1; index < len(tds); index++ {
titleNth := "2"
statusNth := "5"
......@@ -221,6 +247,7 @@ func getLastUnitTestResult() (results []map[string]string, err error) {
if err != nil || titleSelector == nil {
continue
}
title, err := titleSelector.InnerText()
if err != nil {
continue
......@@ -233,6 +260,7 @@ func getLastUnitTestResult() (results []map[string]string, err error) {
if err != nil {
continue
}
results = append(results, map[string]string{
"title": title,
"status": status,
......@@ -244,7 +272,9 @@ func getLastUnitTestResult() (results []map[string]string, err error) {
page.Click("#currentItem")
page.Click("#dropMenu>>a>>text=公司企业网站建设")
page.Click("#taskList>>tr>>nth=1>>td>>nth=1>>a")
page.WaitForSelector("#taskList", playwright.PageWaitForSelectorOptions{State: playwright.WaitForSelectorStateDetached})
tds, err := page.QuerySelectorAll("table>>tr")
if err != nil {
return results, err
......@@ -264,6 +294,7 @@ func getLastUnitTestResult() (results []map[string]string, err error) {
if err != nil {
continue
}
statusSelector, err := page.QuerySelector("table>>tr>>nth=" + strconv.Itoa(index) + ">>td>>nth=" + statusNth)
if err != nil {
continue
......@@ -272,6 +303,7 @@ func getLastUnitTestResult() (results []map[string]string, err error) {
if err != nil {
continue
}
results = append(results, map[string]string{
"title": title,
"status": status,
......@@ -286,6 +318,7 @@ func CheckUnitTestResult() bool {
if err != nil {
return false
}
titleExist := map[string]bool{}
for _, result := range results {
titleExist[result["title"]] = true
......@@ -296,6 +329,7 @@ func CheckUnitTestResult() bool {
return false
}
}
return titleExist["loginFail"] == true && titleExist["loginSuccess"] == true
}
......@@ -309,54 +343,21 @@ func InstallExt(version, codeDir string) error {
}
func downloadExt(codeDir string) (err error) {
if _, err = page.Goto("https://www.zentao.net/extension-browseRelease-186-front.html", playwright.PageGotoOptions{
WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
return
}
err = page.Click("#siteNav>>a:has-text('登录')")
err = fileUtils.Download(constTestHelper.ZentaoExtUrl, "restful.zip")
if err != nil {
return
}
err = page.Click("#loginModal>>a>>text=密码登录")
if err != nil {
return
}
err = page.Fill("#loginModal>>#account", "wx_62ba567413304")
if err != nil {
return
}
err = page.Fill("#loginModal>>#password", "zhaoke@easycorp.ltd")
if err != nil {
return
}
err = page.Click("#loginModal>>.login-form>>#submit")
if err != nil {
return
}
downloadInfo, err := page.ExpectDownload(func() error {
err = page.Click("td>>a>>text=下载")
return err
})
if err != nil {
return
}
filePath, err := downloadInfo.Path()
if err != nil {
return
}
_, err = fileUtils.CopyFile(filePath, "restful.zip")
if err != nil {
return
}
err = fileUtils.Unzip("restful.zip", "")
if err != nil {
return
}
err = fileUtils.CopyDir("restful"+commConsts.PthSep, codeDir)
if err != nil {
return
}
os.RemoveAll("restful")
os.Remove("restful.zip")
return
......@@ -368,11 +369,13 @@ func InitZentaoData(version string, codeDir string) (err error) {
WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
return
}
title, err := page.Title()
fmt.Println(title)
if err != nil {
return
}
if strings.Contains(title, "欢迎使用禅道") {
err = page.Click("text=开始安装")
if err != nil {
......@@ -384,12 +387,14 @@ func InitZentaoData(version string, codeDir string) (err error) {
if err != nil {
return
}
title, err = page.Title()
fmt.Println(title)
err = page.Click("text=下一步")
if err != nil {
return
}
title, err = page.Title()
fmt.Println(title)
err = page.Fill(`input[name="dbPassword"]`, "123456")
......@@ -408,16 +413,20 @@ func InitZentaoData(version string, codeDir string) (err error) {
if err != nil {
return
}
title, err = page.Title()
fmt.Println(title)
retryCount := 0
for {
title, err = page.Title()
fmt.Println(title)
retryCount++
if retryCount > 20 {
break
}
locator, _ := page.Locator("text=数据库连接失败")
c, _ := locator.Count()
if c > 0 {
......@@ -425,6 +434,7 @@ func InitZentaoData(version string, codeDir string) (err error) {
} else {
break
}
page.WaitForTimeout(1000)
err = page.Fill(`input[name="dbPassword"]`, "123456")
if err != nil {
......@@ -441,6 +451,7 @@ func InitZentaoData(version string, codeDir string) (err error) {
if err != nil {
return
}
title, err = page.Title()
fmt.Println(title)
_, err = page.WaitForSelector(".modal-header>>:has-text('保存配置文件')", playwright.PageWaitForSelectorOptions{State: playwright.WaitForSelectorStateDetached})
......@@ -458,6 +469,7 @@ func InitZentaoData(version string, codeDir string) (err error) {
if strings.Contains(title, "使用模式") {
page.Click("text=使用全生命周期管理模式")
}
title, err = page.Title()
fmt.Println(title)
if strings.Contains(title, "功能介绍") {
......@@ -471,11 +483,11 @@ func InitZentaoData(version string, codeDir string) (err error) {
if err != nil {
return
}
err = page.Fill(`input[name="account"]`, "admin")
err = page.Fill(`input[name="account"]`, constTestHelper.ZentaoUsername)
if err != nil {
return
}
err = page.Fill(`input[name="password"]`, "Test123456.")
err = page.Fill(`input[name="password"]`, constTestHelper.ZentaoPassword)
if err != nil {
return
}
......@@ -491,15 +503,19 @@ func InitZentaoData(version string, codeDir string) (err error) {
if err != nil {
return
}
err = Login(constTestHelper.ZentaoSiteUrl)
if err != nil {
return
}
err = createModule()
if err != nil {
return
}
err = createSuite()
title, err = page.Title()
fmt.Println(title)
if err != nil {
......@@ -508,6 +524,7 @@ func InitZentaoData(version string, codeDir string) (err error) {
if codeDir == "" {
return
}
err = InstallExt(version, codeDir)
if err != nil {
return
......@@ -528,6 +545,7 @@ func init() {
if page != nil {
return
}
var err error
pw, err = playwright.Run(&playwright.RunOptions{
SkipInstallBrowsers: true,
......@@ -536,6 +554,7 @@ func init() {
fmt.Println(err)
return
}
headless := conf.Headless
var slowMo float64 = 100
browser, err := pw.Chromium.Launch(playwright.BrowserTypeLaunchOptions{Headless: &headless, SlowMo: &slowMo})
......@@ -543,10 +562,12 @@ func init() {
fmt.Println(err)
return
}
page, err = browser.NewPage(playwright.BrowserNewContextOptions{Locale: &conf.Locale})
if err != nil {
fmt.Println(err)
return
}
Login(constTestHelper.ZentaoSiteUrl)
}
......@@ -90,8 +90,8 @@ func CreateSite(webpage plwHelper.Webpage) {
locator := webpage.Locator("#siteFormModal input")
locator.FillNth(0, "单元测试站点")
locator.FillNth(1, constTestHelper.ZentaoSiteUrl)
locator.FillNth(2, "admin")
locator.FillNth(3, "Test123456.")
locator.FillNth(2, constTestHelper.ZentaoUsername)
locator.FillNth(3, constTestHelper.ZentaoPassword)
webpage.Click("text=确定")
webpage.WaitForSelector(".list-item-content span:has-text('单元测试站点')")
locator = webpage.Locator(".list-item-content span", playwright.PageLocatorOptions{HasText: "单元测试站点"})
......
......@@ -3,16 +3,18 @@ package main
import (
"flag"
"fmt"
commDomain "github.com/easysoft/zentaoatf/internal/pkg/domain"
zentaoHelper "github.com/easysoft/zentaoatf/internal/pkg/helper/zentao"
serverDomain "github.com/easysoft/zentaoatf/internal/server/modules/v1/domain"
fileUtils "github.com/easysoft/zentaoatf/pkg/lib/file"
"os"
"path/filepath"
"runtime"
"strings"
"testing"
"time"
commDomain "github.com/easysoft/zentaoatf/internal/pkg/domain"
zentaoHelper "github.com/easysoft/zentaoatf/internal/pkg/helper/zentao"
serverDomain "github.com/easysoft/zentaoatf/internal/server/modules/v1/domain"
fileUtils "github.com/easysoft/zentaoatf/pkg/lib/file"
commConsts "github.com/easysoft/zentaoatf/internal/pkg/consts"
execHelper "github.com/easysoft/zentaoatf/internal/pkg/helper/exec"
serverConfig "github.com/easysoft/zentaoatf/internal/server/config"
......@@ -67,6 +69,8 @@ func initTest(version string) (err error) {
func initZentao(runFrom, version string) (err error) {
if runFrom == "jenkins" {
constTestHelper.ZentaoSiteUrl = constTestHelper.ZentaoSiteUrl[:strings.LastIndex(constTestHelper.ZentaoSiteUrl, ":")]
err := commonTestHelper.InitZentaoData()
if err != nil {
fmt.Println("Init zentao data fail ", err)
......@@ -102,7 +106,7 @@ func doTest(testToRun string) (err error) {
report := execSuite(req, "api")
// submit result
config := commDomain.WorkspaceConf{Url: constTestHelper.ZentaoSiteUrl + "/", Password: "Test123456.", Username: "admin"}
config := commDomain.WorkspaceConf{Url: constTestHelper.ZentaoSiteUrl + "/", Password: constTestHelper.ZentaoPassword, Username: constTestHelper.ZentaoUsername}
err = zentaoHelper.CommitResult(report, 1, 0, config, nil)
return
......
......@@ -67,6 +67,16 @@ func (p *Webpage) Close() {
return
}
func (p *Webpage) Goto(url string, options ...playwright.PageGotoOptions) (ret playwright.Response, err error) {
t := p.T
ret, err = p.Page.Goto(url, options...)
if err != nil {
utils.PrintErrOrNot(err, t)
}
return
}
func (p *Webpage) Locator(selector string, options ...playwright.PageLocatorOptions) (ret MyLocator) {
t := p.T
locator, err := p.Page.Locator(selector, options...)
......@@ -137,6 +147,12 @@ func (p *Webpage) WaitForTimeout(timeout float64) {
return
}
func (p *Webpage) Title() string {
title, _ := p.Page.Title()
return title
}
func (p *Webpage) Click(selector string) {
t := p.T
err := p.Page.Click(selector, playwright.PageClickOptions{Timeout: &conf.Timeout})
......
......@@ -3,6 +3,8 @@ package main
import (
"flag"
"fmt"
"os"
"strings"
"testing"
commConsts "github.com/easysoft/zentaoatf/internal/pkg/consts"
......@@ -14,42 +16,62 @@ import (
uiTest "github.com/easysoft/zentaoatf/test/helper/zentao/ui"
)
var (
runFrom, version, testToRun string
flagSet *flag.FlagSet
)
func main() {
commConsts.ExecFrom = commConsts.FromCmd
serverConfig.InitLog()
serverConfig.InitExecLog(constTestHelper.RootPath)
commConsts.ZtfDir = constTestHelper.RootPath
i118Utils.Init("zh-CN", commConsts.AppServer)
var version = flag.String("zentaoVersion", "", "latest")
var runFrom = flag.String("runFrom", "", "cmd")
testing.Init()
flag.Parse()
fmt.Println(*version)
defer func() {
execHelper.KillProcessByUUID("ui_auto_test")
uiTest.Close()
}()
if *runFrom == "jenkins" {
fmt.Println("Init zentao data start ")
flagSet = flag.NewFlagSet("restapi", flag.ContinueOnError)
flagSet.StringVar(&runFrom, "runFrom", "cmd", "")
flagSet.StringVar(&runFrom, "f", "cmd", "")
flagSet.StringVar(&version, "version", "latest", "")
flagSet.StringVar(&version, "v", "latest", "")
flagSet.StringVar(&testToRun, "testToRun", "", "")
flagSet.StringVar(&testToRun, "t", "", "")
testing.Init()
flagSet.Parse(os.Args[1:])
fmt.Println(version)
commConsts.ExecFrom = commConsts.FromCmd
commConsts.ZtfDir = constTestHelper.RootPath
serverConfig.InitLog()
serverConfig.InitExecLog(constTestHelper.RootPath)
i118Utils.Init("zh-CN", commConsts.AppServer)
if runFrom == "jenkins" {
constTestHelper.ZentaoSiteUrl = constTestHelper.ZentaoSiteUrl[:strings.LastIndex(constTestHelper.ZentaoSiteUrl, ":")]
err := commonTestHelper.InitZentaoData()
if err != nil {
fmt.Println("Init zentao data fail ", err)
}
fmt.Println("Init zentao data end ")
} else {
err := commonTestHelper.InitZentao(*version)
err := commonTestHelper.InitZentao(version)
if err != nil {
fmt.Println("Init zentao data fail ", err)
}
err = commonTestHelper.BuildCli()
if err != nil {
fmt.Println("Build cli fail ", err)
}
err = commonTestHelper.RunServer()
if err != nil {
fmt.Println("Build server fail ")
}
err = commonTestHelper.RunUi()
if err != nil {
fmt.Println("Build server fail ")
......
......@@ -24,8 +24,8 @@ func CreateSite(t provider.T) {
locator = webpage.Locator("#siteFormModal input")
locator.FillNth(0, "单元测试站点")
locator.FillNth(1, constTestHelper.ZentaoSiteUrl)
locator.FillNth(2, "admin")
locator.FillNth(3, "Test123456.")
locator.FillNth(2, constTestHelper.ZentaoUsername)
locator.FillNth(3, constTestHelper.ZentaoPassword)
webpage.Click("text=确定")
webpage.WaitForSelector(".list-item-content span:has-text('单元测试站点')")
locator = webpage.Locator(".list-item-content span", playwright.PageLocatorOptions{HasText: "单元测试站点"})
......@@ -54,8 +54,8 @@ func EditSite(t provider.T) {
locator = webpage.Locator("#siteFormModal input")
locator.FillNth(0, "单元测试站点-update")
locator.FillNth(1, constTestHelper.ZentaoSiteUrl)
locator.FillNth(2, "admin")
locator.FillNth(3, "Test123456.")
locator.FillNth(2, constTestHelper.ZentaoUsername)
locator.FillNth(3, constTestHelper.ZentaoPassword)
webpage.Click("#siteFormModal>>.modal-action>>span:has-text(\"确定\")")
webpage.WaitForSelector(".list-item-content span:has-text('单元测试站点-update')")
locator = webpage.Locator(".list-item-content span", playwright.PageLocatorOptions{HasText: "单元测试站点-update"})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册