forked from GoAdminGroup/go-admin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.go
120 lines (98 loc) · 2.58 KB
/
test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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{})
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"
)