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 TestMouseMove(t *testing.T) {
11 BeforeEach(t)
12 defer AfterEach(t)
13 if isWebKit {
14 _, err := page.Evaluate(`() => new Promise(requestAnimationFrame)`)
15 require.NoError(t, err)
16 }
17 require.NoError(t, page.Mouse().Move(100, 100))
18 _, err := page.Evaluate(`() => {
19 window['result'] = [];
20 document.addEventListener('mousemove', event => {
21 window['result'].push([event.clientX, event.clientY]);
22 });
23 }`)
24 require.NoError(t, err)
25 require.NoError(t, page.Mouse().Move(200, 300, playwright.MouseMoveOptions{
26 Steps: playwright.Int(5),
27 }))
28 result, err := page.Evaluate("result")
29 require.NoError(t, err)
30 require.Equal(t, []interface{}([]interface{}{[]interface{}{120, 140}, []interface{}{140, 180}, []interface{}{160, 220}, []interface{}{180, 260}, []interface{}{200, 300}}), result)
31 }
32
33 func TestMouseDown(t *testing.T) {
34 BeforeEach(t)
35 defer AfterEach(t)
36 _, err := page.Goto(server.EMPTY_PAGE)
37 require.NoError(t, err)
38 require.NoError(t, page.SetContent(`<button onmousedown="window.clicked=true"/>`))
39 require.NoError(t, page.Hover("button"))
40 require.NoError(t, page.Mouse().Down())
41 result, err := page.Evaluate("window.clicked")
42 require.NoError(t, err)
43 require.True(t, result.(bool))
44 }
45
46 func TestMouseUp(t *testing.T) {
47 BeforeEach(t)
48 defer AfterEach(t)
49 _, err := page.Goto(server.EMPTY_PAGE)
50 require.NoError(t, err)
51 require.NoError(t, page.SetContent(`<button onmouseup="window.clicked=true"/>`))
52 require.NoError(t, page.Hover("button"))
53 require.NoError(t, page.Mouse().Down())
54 require.NoError(t, page.Mouse().Up())
55 result, err := page.Evaluate("window.clicked")
56 require.NoError(t, err)
57 require.True(t, result.(bool))
58 }
59
60 func TestMouseClick(t *testing.T) {
61 BeforeEach(t)
62 defer AfterEach(t)
63 _, err := page.Goto(server.EMPTY_PAGE)
64 require.NoError(t, err)
65 require.NoError(t, page.SetContent(`<button onclick="window.clicked=true" style="width: 500px; height: 500px;"/>`))
66 require.NoError(t, page.Hover("button"))
67 require.NoError(t, page.Mouse().Click(100, 100))
68 result, err := page.Evaluate("window.clicked")
69 require.NoError(t, err)
70 require.True(t, result.(bool))
71 }
72
73 func TestMouseDblclick(t *testing.T) {
74 BeforeEach(t)
75 defer AfterEach(t)
76 _, err := page.Goto(server.EMPTY_PAGE)
77 require.NoError(t, err)
78 require.NoError(t, page.SetContent(`<button ondblclick="window.clicked=true" style="width: 500px; height: 500px;"/>`))
79 require.NoError(t, page.Hover("button"))
80 require.NoError(t, page.Mouse().Dblclick(100, 100))
81 result, err := page.Evaluate("window.clicked")
82 require.NoError(t, err)
83 require.True(t, result.(bool))
84 }
85
86 func TestKeyboardDown(t *testing.T) {
87 BeforeEach(t)
88 defer AfterEach(t)
89 _, err := page.Goto(server.EMPTY_PAGE)
90 require.NoError(t, err)
91 require.NoError(t, page.SetContent(`<input onkeydown="window.clicked=true"/>`))
92 require.NoError(t, page.Click("input"))
93 require.NoError(t, page.Keyboard().Down("Enter"))
94 result, err := page.Evaluate("window.clicked")
95 require.NoError(t, err)
96 require.True(t, result.(bool))
97 }
98
99 func TestKeyboardUp(t *testing.T) {
100 BeforeEach(t)
101 defer AfterEach(t)
102 _, err := page.Goto(server.EMPTY_PAGE)
103 require.NoError(t, err)
104 require.NoError(t, page.SetContent(`<input onkeyup="window.clicked=true"/>`))
105 require.NoError(t, page.Click("input"))
106 require.NoError(t, page.Keyboard().Up("Enter"))
107 result, err := page.Evaluate("window.clicked")
108 require.NoError(t, err)
109 require.True(t, result.(bool))
110 }
111
112 func TestKeyboardInsertText(t *testing.T) {
113 BeforeEach(t)
114 defer AfterEach(t)
115 _, err := page.Goto(server.EMPTY_PAGE)
116 require.NoError(t, err)
117 require.NoError(t, page.SetContent(`<input oninput="window.clicked=true"/>`))
118 require.NoError(t, page.Click("input"))
119 require.NoError(t, page.Keyboard().InsertText("abc123"))
120 result, err := page.Evaluate("window.clicked")
121 require.NoError(t, err)
122 require.True(t, result.(bool))
123 }
124
125 func TestKeyboardType(t *testing.T) {
126 BeforeEach(t)
127 defer AfterEach(t)
128 _, err := page.Goto(server.EMPTY_PAGE)
129 require.NoError(t, err)
130 require.NoError(t, page.SetContent(`<input oninput="window.clicked=true"/>`))
131 require.NoError(t, page.Click("input"))
132 require.NoError(t, page.Keyboard().Type("abc123"))
133 result, err := page.Evaluate("window.clicked")
134 require.NoError(t, err)
135 require.True(t, result.(bool))
136 }
137
138 func TestElementHandleType(t *testing.T) {
139 BeforeEach(t)
140 defer AfterEach(t)
141 _, err := page.Goto(server.EMPTY_PAGE)
142 require.NoError(t, err)
143 require.NoError(t, page.SetContent(`<input oninput="window.clicked=true"/>`))
144 require.NoError(t, page.Click("input"))
145 inputElement, err := page.QuerySelector("input")
146 require.NoError(t, err)
147 require.NoError(t, inputElement.Type("abc123"))
148 result, err := page.Evaluate("window.clicked")
149 require.NoError(t, err)
150 require.True(t, result.(bool))
151 }
152
153 func TestElementHandleFill(t *testing.T) {
154 BeforeEach(t)
155 defer AfterEach(t)
156 _, err := page.Goto(server.EMPTY_PAGE)
157 require.NoError(t, err)
158 require.NoError(t, page.SetContent(`<input oninput="window.clicked=true"/>`))
159 require.NoError(t, page.Click("input"))
160 inputElement, err := page.QuerySelector("input")
161 require.NoError(t, err)
162 require.NoError(t, inputElement.Fill("abc123"))
163 result, err := page.Evaluate("window.clicked")
164 require.NoError(t, err)
165 require.True(t, result.(bool))
166 }
167
168 func TestKeyboardInsertPress(t *testing.T) {
169 BeforeEach(t)
170 defer AfterEach(t)
171 _, err := page.Goto(server.EMPTY_PAGE)
172 require.NoError(t, err)
173 require.NoError(t, page.SetContent(`<input onkeydown="window.clicked=true"/>`))
174 require.NoError(t, page.Click("input"))
175 require.NoError(t, page.Keyboard().Press("A"))
176 result, err := page.Evaluate("window.clicked")
177 require.NoError(t, err)
178 require.True(t, result.(bool))
179 }
180
181 func TestElementHandlePress(t *testing.T) {
182 BeforeEach(t)
183 defer AfterEach(t)
184 _, err := page.Goto(server.EMPTY_PAGE)
185 require.NoError(t, err)
186 require.NoError(t, page.SetContent(`<input onkeydown="window.clicked=true"/>`))
187 require.NoError(t, page.Click("input"))
188 inputElement, err := page.QuerySelector("input")
189 require.NoError(t, err)
190 require.NoError(t, inputElement.Press("A"))
191 result, err := page.Evaluate("window.clicked")
192 require.NoError(t, err)
193 require.True(t, result.(bool))
194 }
195
196 func TestTouchscreenTap(t *testing.T) {
197 BeforeEach(t)
198 defer AfterEach(t)
199 _, err := page.Goto(server.EMPTY_PAGE)
200 require.NoError(t, err)
201 require.NoError(t, page.SetContent(`<button onclick="window.clicked=true" style="width: 500px; height: 500px;"/>`))
202 require.NoError(t, page.Touchscreen().Tap(100, 100))
203 result, err := page.Evaluate("window.clicked")
204 require.NoError(t, err)
205 require.True(t, result.(bool))
206 }
207
View as plain text