admin / tests /web /test.go
AZLABS's picture
Upload folder using huggingface_hub
530729e verified
package web
import (
"fmt"
"testing"
"time"
"github.com/mgutz/ansi"
_ "github.com/GoAdminGroup/go-admin/adapter/gin"
_ "github.com/GoAdminGroup/go-admin/modules/db/drivers/mysql"
_ "github.com/GoAdminGroup/themes/adminlte"
"github.com/sclevine/agouti"
)
type Testers func(t *testing.T, page *Page)
type ServerStarter func(quit chan struct{})
// UserAcceptanceTestSuit make sure the chromedriver version Is corresponding to the
// chrome version. Using the following link to get the latest version of Chrome and ChromeDriver.
// https://googlechromelabs.github.io/chrome-for-testing/
func UserAcceptanceTestSuit(t *testing.T, testers Testers, serverStarter ServerStarter, local bool, options ...string) {
var quit = make(chan struct{})
go serverStarter(quit)
if len(options) == 0 {
options = []string{
"--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
"--window-size=1500,900",
"--incognito",
"--blink-settings=imagesEnabled=true",
"--no-default-browser-check",
"--ignore-ssl-errors=true",
"--ssl-protocol=any",
"--no-sandbox",
"--disable-breakpad",
"--disable-gpu",
"--disable-logging",
"--no-zygote",
"--allow-running-insecure-content",
}
if !local {
options = append(options, "--headless")
}
}
driver := agouti.ChromeDriver(
agouti.ChromeOptions("args", options),
agouti.Desired(
agouti.Capabilities{
"loggingPrefs": map[string]string{
"performance": "ALL",
},
"acceptSslCerts": true,
"acceptInsecureCerts": true,
},
))
err := driver.Start()
if err != nil {
panic("failed to start driver, error: " + err.Error())
}
page, err := driver.NewPage()
if err != nil {
panic("failed to open page, error: " + err.Error())
}
fmt.Println()
fmt.Println("============================================")
printlnWithColor("User Acceptance Testing", "blue")
fmt.Println("============================================")
fmt.Println()
testers(t, &Page{T: t, Page: page, Driver: driver, Quit: quit})
wait(2)
if !local {
err = page.CloseWindow()
if err != nil {
fmt.Println("failed to close page, error: ", err)
}
err = page.Destroy()
if err != nil {
fmt.Println("failed to destroy page, error: ", err)
}
err = driver.Stop()
if err != nil {
fmt.Println("failed to stop driver, error: ", err)
}
}
quit <- struct{}{}
}
func printlnWithColor(msg string, color string) {
fmt.Println(ansi.Color(msg, color))
}
func printPart(part string) {
printlnWithColor("> "+part, colorBlue)
}
func wait(t int) {
time.Sleep(time.Duration(t) * time.Second)
}
const basePath = "http://localhost:9033"
func url(suffix string) string {
if suffix == "/" {
suffix = ""
}
return basePath + "/admin" + suffix
}
const (
colorBlue = "blue"
colorGreen = "green"
)