github.com/kotovmak/go-admin@v1.1.1/tests/web/page.go (about) 1 package web 2 3 import ( 4 "fmt" 5 "runtime/debug" 6 "strings" 7 "testing" 8 "time" 9 10 "github.com/sclevine/agouti" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 type Page struct { 15 *agouti.Page 16 T *testing.T 17 Driver *agouti.WebDriver 18 Quit chan struct{} 19 } 20 21 func (page *Page) Destroy() { 22 if r := recover(); r != nil { 23 debug.PrintStack() 24 fmt.Println("Recovered in f", r) 25 _ = page.Page.Destroy() 26 _ = page.Driver.Stop() 27 page.T.Fail() 28 page.Quit <- struct{}{} 29 } 30 } 31 32 func (page *Page) Wait(t int) { 33 time.Sleep(time.Duration(t) * time.Second) 34 } 35 36 func (page *Page) Contain(s string) { 37 content, err := page.HTML() 38 assert.Equal(page.T, err, nil) 39 assert.Equal(page.T, strings.Contains(content, s), true) 40 } 41 42 func (page *Page) NoContain(s string) { 43 content, err := page.HTML() 44 assert.Equal(page.T, err, nil) 45 assert.Equal(page.T, strings.Contains(content, s), false) 46 } 47 48 func (page *Page) Css(xpath, css, res string) { 49 style, err := page.FindByXPath(xpath).CSS(css) 50 assert.Equal(page.T, err, nil) 51 assert.Equal(page.T, style, res) 52 } 53 54 func (page *Page) CssS(s *agouti.Selection, css, res string) { 55 style, err := s.CSS(css) 56 assert.Equal(page.T, err, nil) 57 assert.Equal(page.T, style, res) 58 } 59 60 func (page *Page) Text(xpath, text string) { 61 mli1, err := page.FindByXPath(xpath).Text() 62 assert.Equal(page.T, err, nil) 63 assert.Equal(page.T, mli1, text) 64 } 65 66 func (page *Page) MoveMouseBy(xOffset, yOffset int) { 67 assert.Equal(page.T, page.Page.MoveMouseBy(xOffset, yOffset), nil) 68 } 69 70 func (page *Page) Display(xpath string) { 71 page.Css(xpath, "display", "block") 72 } 73 74 func (page *Page) Nondisplay(xpath string) { 75 page.Css(xpath, "display", "none") 76 } 77 78 func (page *Page) Value(xpath, value string) { 79 val, err := page.FindByXPath(xpath).Attribute("value") 80 assert.Equal(page.T, err, nil) 81 assert.Equal(page.T, val, value) 82 } 83 84 func (page *Page) Click(xpath string, intervals ...int) { 85 assert.Equal(page.T, page.FindByXPath(xpath).Click(), nil) 86 interval := 1 87 if len(intervals) > 0 { 88 interval = intervals[0] 89 } 90 page.Wait(interval) 91 } 92 93 func (page *Page) ClickS(s *agouti.Selection, intervals ...int) { 94 assert.Equal(page.T, s.Click(), nil) 95 interval := 1 96 if len(intervals) > 0 { 97 interval = intervals[0] 98 } 99 page.Wait(interval) 100 } 101 102 func (page *Page) Attr(s *agouti.Selection, attr, res string) { 103 style, err := s.Attribute(attr) 104 assert.Equal(page.T, err, nil) 105 assert.Equal(page.T, style, res) 106 } 107 108 func (page *Page) Fill(xpath, content string) { 109 assert.Equal(page.T, page.FindByXPath(xpath).Fill(content), nil) 110 } 111 112 func (page *Page) NavigateTo(path string) { 113 assert.Equal(page.T, page.Navigate(path), nil) 114 page.Wait(2) 115 }