1 package playwright_test
2
3 import (
4 "testing"
5
6 "github.com/playwright-community/playwright-go"
7 "github.com/stretchr/testify/require"
8 )
9
10 func TestBrowserIsConnected(t *testing.T) {
11 BeforeEach(t)
12 defer AfterEach(t)
13 require.True(t, browser.IsConnected())
14 }
15
16 func TestBrowserVersion(t *testing.T) {
17 BeforeEach(t)
18 defer AfterEach(t)
19 require.Greater(t, len(browser.Version()), 2)
20 }
21
22 func TestBrowserNewContext(t *testing.T) {
23 BeforeEach(t)
24 defer AfterEach(t)
25 require.Equal(t, 1, len(context.Pages()))
26 }
27
28 func TestBrowserNewContextWithExtraHTTPHeaders(t *testing.T) {
29 newContextWithOptions(t, playwright.BrowserNewContextOptions{
30 ExtraHttpHeaders: map[string]string{"extra-http": "42"},
31 })
32 defer AfterEach(t)
33 require.Equal(t, 1, len(context.Pages()))
34 intercepted := make(chan bool, 1)
35 err := page.Route("**/empty.html", func(route playwright.Route, request playwright.Request) {
36 v, ok := request.Headers()["extra-http"]
37 require.True(t, ok)
38 require.Equal(t, "42", v)
39 require.NoError(t, route.Continue())
40 intercepted <- true
41 })
42 require.NoError(t, err)
43 _, err = page.Goto(server.EMPTY_PAGE)
44 require.NoError(t, err)
45 <-intercepted
46 }
47
48 func TestBrowserNewPage(t *testing.T) {
49 BeforeEach(t)
50 defer AfterEach(t)
51 require.Equal(t, 1, len(browser.Contexts()))
52 page, err := browser.NewPage()
53 require.NoError(t, err)
54 require.Equal(t, 2, len(browser.Contexts()))
55 require.False(t, page.IsClosed())
56 require.NoError(t, page.Close())
57 require.True(t, page.IsClosed())
58 require.Equal(t, 1, len(browser.Contexts()))
59 }
60
61 func TestBrowserNewPageWithExtraHTTPHeaders(t *testing.T) {
62 BeforeEach(t)
63 defer AfterEach(t)
64 require.Equal(t, 1, len(browser.Contexts()))
65 page, err := browser.NewPage(playwright.BrowserNewContextOptions{
66 ExtraHttpHeaders: map[string]string{
67 "extra-http": "42",
68 },
69 })
70 require.NoError(t, err)
71 require.Equal(t, 2, len(browser.Contexts()))
72 require.False(t, page.IsClosed())
73
74 intercepted := make(chan bool, 1)
75 err = page.Route("**/empty.html", func(route playwright.Route, request playwright.Request) {
76 v, ok := request.Headers()["extra-http"]
77 require.True(t, ok)
78 require.Equal(t, "42", v)
79 require.NoError(t, route.Continue())
80 intercepted <- true
81 })
82 require.NoError(t, err)
83 _, err = page.Goto(server.EMPTY_PAGE)
84 require.NoError(t, err)
85 <-intercepted
86
87 require.NoError(t, page.Close())
88 require.True(t, page.IsClosed())
89 require.Equal(t, 1, len(browser.Contexts()))
90 }
91
92 func TestBrowserShouldErrorUponSecondCreateNewPage(t *testing.T) {
93 BeforeEach(t)
94 defer AfterEach(t)
95 page, err := browser.NewPage()
96 require.NoError(t, err)
97 _, err = page.Context().NewPage()
98 require.Error(t, err)
99 require.Equal(t, "Please use browser.NewContext()", err.Error())
100 require.NoError(t, page.Close())
101 }
102
103 func TestNewBrowserCDPSession(t *testing.T) {
104 BeforeEach(t)
105 defer AfterEach(t)
106 cdpSession, err := browser.NewBrowserCDPSession()
107 if isChromium {
108 require.NoError(t, err)
109 require.NoError(t, cdpSession.Detach())
110 } else {
111 require.Error(t, err)
112 }
113 }
114
115 func TestBrowserClose(t *testing.T) {
116 browser, err := browserType.Launch()
117 require.NoError(t, err)
118 onCloseWasCalled := make(chan bool, 1)
119 onClose := func() {
120 onCloseWasCalled <- true
121 }
122 browser.On("disconnected", onClose)
123 require.True(t, browser.IsConnected())
124 require.NoError(t, browser.Close())
125 <-onCloseWasCalled
126 require.False(t, browser.IsConnected())
127 }
128
View as plain text