提交 b471aaa2 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

helper methods for automated testing

上级 be1314e5
package conf package conf
func SetExitOnError(val bool) { func SetExitOnError(val bool) {
ExitOnError = val ExitAllOnError = val
} }
func GetExitOnError() bool { func GetExitOnError() bool {
return ExitOnError return ExitAllOnError
} }
package conf package conf
var ( var (
ExitOnError = false ExitAllOnError = false
) )
package main
import (
"github.com/easysoft/zentaoatf/test/ui/conf"
plw "github.com/easysoft/zentaoatf/test/ui/helper"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
"testing"
)
func Demo(t provider.T) {
webpage, _ := plw.OpenUrl("https://baidu.com", t)
defer func() { plw.Close(t) }()
webpage.GetLocator("//*[@id=\"kw1\"]", t).Click(t)
}
func TestDemo(t *testing.T) {
conf.ExitAllOnError = true
runner.Run(t, "设置界面语言", Demo)
}
package helper package plw
import ( import (
"errors"
"fmt"
"github.com/easysoft/zentaoatf/test/ui/utils"
"github.com/ozontech/allure-go/pkg/framework/provider"
playwright "github.com/playwright-community/playwright-go" playwright "github.com/playwright-community/playwright-go"
) )
var ( var (
browser playwright.Browser
pw *playwright.Playwright
page playwright.Page page playwright.Page
) )
func OpenUrl(url string) (err error) { func OpenUrl(url string, t provider.T) (ret Webpage, err error) {
pw, err := playwright.Run() pw, err = playwright.Run()
if err != nil { utils.PrintErrOrNot(err, t)
panic(err)
} headless := false
headless := true
var slowMo float64 = 100 var slowMo float64 = 100
runBrowser, err := pw.Chromium.Launch(playwright.BrowserTypeLaunchOptions{Headless: &headless, SlowMo: &slowMo})
if err != nil { browser, err = pw.Chromium.Launch(playwright.BrowserTypeLaunchOptions{Headless: &headless, SlowMo: &slowMo})
panic(err) utils.PrintErrOrNot(err, t)
page, err = browser.NewPage()
utils.PrintErrOrNot(err, t)
if _, err = page.Goto(url, playwright.PageGotoOptions{WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil {
utils.PrintErrOrNot(err, t)
} }
page, err = runBrowser.NewPage()
if err != nil { ret = Webpage{
panic(err) Page: page,
} }
if _, err = page.Goto(url, playwright.PageGotoOptions{WaitUntil: playwright.WaitUntilStateDomcontentloaded}); err != nil { return
}
func Close(t provider.T) {
if browser != nil {
if err := browser.Close(); err != nil {
t.Errorf("The resultBrowser cannot be closed: %v", err)
t.FailNow()
}
}
if pw != nil {
if err := pw.Stop(); err != nil {
t.Errorf("The playwright cannot be stopped: %v", err)
t.FailNow()
}
}
return
}
func (p *Webpage) GetLocator(selector string, t provider.T) (ret MyLocator) {
locator, err := p.Page.Locator(selector)
c, err := locator.Count()
if err == nil && c == 0 {
err = errors.New("not found")
}
err = errors.New(fmt.Sprintf("%s: %s", selector, err.Error()))
utils.PrintErrOrNot(err, t)
ret = MyLocator{
Locator: locator,
Selector: selector,
}
return
}
func (p *Webpage) GetLocatorByOptions(selector string, options ...playwright.PageLocatorOptions) (elem MyLocator) {
locator, err := p.Page.Locator(selector, options...)
c, err := locator.Count()
if err != nil || c == 0 {
panic(err) panic(err)
} }
elem = MyLocator{
Locator: locator,
}
return return
} }
package helper package plw
import ( import (
"github.com/playwright-community/playwright-go" "github.com/playwright-community/playwright-go"
...@@ -8,20 +8,7 @@ type Webpage struct { ...@@ -8,20 +8,7 @@ type Webpage struct {
Page playwright.Page Page playwright.Page
} }
type Element struct { type MyLocator struct {
Selector string
Locator playwright.Locator Locator playwright.Locator
} }
func (p *Webpage) GetElement(selector string, options ...playwright.PageLocatorOptions) (elem Element) {
locator, err := p.Page.Locator(selector, options...)
c, err := locator.Count()
if err != nil || c == 0 {
panic(err)
}
elem = Element{
Locator: locator,
}
return
}
package helper package plw
import ( import (
"errors"
"fmt"
"github.com/easysoft/zentaoatf/test/ui/utils" "github.com/easysoft/zentaoatf/test/ui/utils"
"github.com/ozontech/allure-go/pkg/framework/provider"
) )
func (e *Element) Click() { func (l MyLocator) Click(t provider.T) (err error) {
err := e.Locator.Click() err = l.Locator.Click()
utils.PrintErr(err) err = errors.New(fmt.Sprintf("%s: %s", l.Selector, err.Error()))
utils.PrintErrOrNot(err, t)
return
} }
...@@ -8,8 +8,6 @@ import ( ...@@ -8,8 +8,6 @@ import (
playwright "github.com/playwright-community/playwright-go" playwright "github.com/playwright-community/playwright-go"
) )
var bugBrowser playwright.Browser
func ScriptBug(t provider.T) { func ScriptBug(t provider.T) {
pw, err := playwright.Run() pw, err := playwright.Run()
if err != nil { if err != nil {
......
...@@ -1438,4 +1438,5 @@ func TestUiWorkspace(t *testing.T) { ...@@ -1438,4 +1438,5 @@ func TestUiWorkspace(t *testing.T) {
runner.Run(t, "客户端-按模块展示禅道用例脚本", ByModule) runner.Run(t, "客户端-按模块展示禅道用例脚本", ByModule)
runner.Run(t, "客户端-删除禅道工作目录", DeleteWorkspace) runner.Run(t, "客户端-删除禅道工作目录", DeleteWorkspace)
runner.Run(t, "客户端-创建禅道工作目录", CreateWorkspace) runner.Run(t, "客户端-创建禅道工作目录", CreateWorkspace)
} }
...@@ -2,13 +2,26 @@ package utils ...@@ -2,13 +2,26 @@ package utils
import ( import (
"github.com/easysoft/zentaoatf/test/ui/conf" "github.com/easysoft/zentaoatf/test/ui/conf"
"github.com/ozontech/allure-go/pkg/framework/provider"
"log" "log"
) )
func PrintErr(err error) { func PrintErrOrNot(err error, t provider.T) {
if err != nil && conf.ExitOnError { if err != nil {
log.Panic(err) if conf.ExitAllOnError {
log.Panicln(err)
} else { } else {
log.Println(err) log.Println(err)
} }
}
}
func PrintErrMsg(err string, t provider.T) {
if err != "" {
if conf.ExitAllOnError {
log.Panicln(err)
} else {
log.Println(err)
}
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册