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 TestLocatorAllInnerTexts(t *testing.T) {
11 BeforeEach(t)
12 defer AfterEach(t)
13 _, err := page.Goto(server.EMPTY_PAGE)
14 require.NoError(t, err)
15 require.NoError(t, page.SetContent(`<div>A</div><div>B</div><div>C</div>`))
16
17 locator, err := page.Locator("div")
18 require.NoError(t, err)
19 innerHTML, err := locator.AllInnerTexts()
20 require.NoError(t, err)
21 require.ElementsMatch(t, []string{"A", "B", "C"}, innerHTML)
22 }
23
24 func TestLocatorAllTextContents(t *testing.T) {
25 BeforeEach(t)
26 defer AfterEach(t)
27 _, err := page.Goto(server.EMPTY_PAGE)
28 require.NoError(t, err)
29 require.NoError(t, page.SetContent(`<div>A</div><div>B</div><div>C</div>`))
30
31 locator, err := page.Locator("div")
32 require.NoError(t, err)
33 innerHTML, err := locator.AllTextContents()
34 require.NoError(t, err)
35 require.ElementsMatch(t, []string{"A", "B", "C"}, innerHTML)
36 }
37
38 func TestLocatorFill(t *testing.T) {
39 BeforeEach(t)
40 defer AfterEach(t)
41 _, err := page.Goto(server.PREFIX + "/dom.html")
42 require.NoError(t, err)
43
44 locator, err := page.Locator("#input")
45 require.NoError(t, err)
46 require.NoError(t, locator.Fill("input value"))
47 result, err := locator.InputValue()
48 require.NoError(t, err)
49 require.Equal(t, "input value", result)
50 }
51
52 func TestLocatorGetAttribute(t *testing.T) {
53 BeforeEach(t)
54 defer AfterEach(t)
55 _, err := page.Goto(server.PREFIX + "/dom.html")
56 require.NoError(t, err)
57
58 locator, err := page.Locator("#outer")
59 require.NoError(t, err)
60 result, err := locator.GetAttribute("name")
61 require.NoError(t, err)
62 require.Equal(t, "value", result)
63 result, err = locator.GetAttribute("foo")
64 require.NoError(t, err)
65 require.Empty(t, result)
66 }
67
68 func TestLocatorInnerHTML(t *testing.T) {
69 BeforeEach(t)
70 defer AfterEach(t)
71 _, err := page.Goto(server.PREFIX + "/dom.html")
72 require.NoError(t, err)
73
74 locator, err := page.Locator("#outer")
75 require.NoError(t, err)
76 result, err := locator.InnerHTML()
77 require.NoError(t, err)
78 require.Equal(t, "<div id=\"inner\">Text,\nmore text</div>", result)
79 }
80
81 func TestLocatorInnerText(t *testing.T) {
82 BeforeEach(t)
83 defer AfterEach(t)
84 _, err := page.Goto(server.PREFIX + "/dom.html")
85 require.NoError(t, err)
86
87 locator, err := page.Locator("#inner")
88 require.NoError(t, err)
89 result, err := locator.InnerHTML()
90 require.NoError(t, err)
91 require.Equal(t, "Text,\nmore text", result)
92 }
93
94 func TestLocatorInputValue(t *testing.T) {
95 BeforeEach(t)
96 defer AfterEach(t)
97 _, err := page.Goto(server.PREFIX + "/dom.html")
98 require.NoError(t, err)
99 require.NoError(t, page.Fill("#input", "input value"))
100
101 locator, err := page.Locator("#input")
102 require.NoError(t, err)
103 result, err := locator.InputValue()
104 require.NoError(t, err)
105 require.Equal(t, "input value", result)
106 }
107
108 func TestLocatorIsChecked(t *testing.T) {
109 BeforeEach(t)
110 defer AfterEach(t)
111 _, err := page.Goto(server.EMPTY_PAGE)
112 require.NoError(t, err)
113 require.NoError(t, page.SetContent("<input type='checkbox' checked><div>Not a checkbox</div>"))
114
115 locator, err := page.Locator("input")
116 require.NoError(t, err)
117 result, err := locator.IsChecked()
118 require.NoError(t, err)
119 require.True(t, result)
120 }
121
122 func TestLocatorIsDisabled(t *testing.T) {
123 BeforeEach(t)
124 defer AfterEach(t)
125 _, err := page.Goto(server.EMPTY_PAGE)
126 require.NoError(t, err)
127 err = page.SetContent(`
128 <button disabled>button1</button>
129 <button>button2</button>
130 <div>div</div>
131 `)
132 require.NoError(t, err)
133
134 locator, err := page.Locator("div")
135 require.NoError(t, err)
136 result, err := locator.IsDisabled()
137 require.NoError(t, err)
138 require.False(t, result)
139
140 locator, err = page.Locator(":text(\"button1\")")
141 require.NoError(t, err)
142 result, err = locator.IsDisabled()
143 require.NoError(t, err)
144 require.True(t, result)
145
146 locator, err = page.Locator(":text(\"button2\")")
147 require.NoError(t, err)
148 result, err = locator.IsDisabled()
149 require.NoError(t, err)
150 require.False(t, result)
151 }
152
153 func TestLocatorIsEditable(t *testing.T) {
154 BeforeEach(t)
155 defer AfterEach(t)
156 _, err := page.Goto(server.EMPTY_PAGE)
157 require.NoError(t, err)
158 err = page.SetContent(`<input id=input1 disabled><textarea></textarea><input id=input2>
159 `)
160 require.NoError(t, err)
161
162 locator, err := page.Locator("#input1")
163 require.NoError(t, err)
164 result, err := locator.IsEditable()
165 require.NoError(t, err)
166 require.False(t, result)
167
168 locator, err = page.Locator("#input2")
169 require.NoError(t, err)
170 result, err = locator.IsEditable()
171 require.NoError(t, err)
172 require.True(t, result)
173
174 locator, err = page.Locator("textarea")
175 require.NoError(t, err)
176 result, err = locator.IsEditable()
177 require.NoError(t, err)
178 require.True(t, result)
179 }
180
181 func TestLocatorIsEnabled(t *testing.T) {
182 BeforeEach(t)
183 defer AfterEach(t)
184 _, err := page.Goto(server.EMPTY_PAGE)
185 require.NoError(t, err)
186 err = page.SetContent(`
187 <button disabled>button1</button>
188 <button>button2</button>
189 <div>div</div>
190 `)
191 require.NoError(t, err)
192
193 locator, err := page.Locator("div")
194 require.NoError(t, err)
195 result, err := locator.IsEnabled()
196 require.NoError(t, err)
197 require.True(t, result)
198
199 locator, err = page.Locator(":text(\"button1\")")
200 require.NoError(t, err)
201 result, err = locator.IsEnabled()
202 require.NoError(t, err)
203 require.False(t, result)
204
205 locator, err = page.Locator(":text(\"button2\")")
206 require.NoError(t, err)
207 result, err = locator.IsEnabled()
208 require.NoError(t, err)
209 require.True(t, result)
210 }
211
212 func TestLocatorIsHidden(t *testing.T) {
213 BeforeEach(t)
214 defer AfterEach(t)
215 _, err := page.Goto(server.EMPTY_PAGE)
216 require.NoError(t, err)
217 err = page.SetContent(`
218 <details>
219 <summary>click to open</summary>
220 <ul>
221 <li>hidden item 1</li>
222 <li>hidden item 2</li>
223 <li>hidden item 3</li>
224 </ul>
225 </details>`)
226 require.NoError(t, err)
227
228 locator, err := page.Locator("ul")
229 require.NoError(t, err)
230 result, err := locator.IsHidden()
231 require.NoError(t, err)
232 require.True(t, result)
233
234 locator, err = page.Locator("summary")
235 require.NoError(t, err)
236 result, err = locator.IsHidden()
237 require.NoError(t, err)
238 require.False(t, result)
239 }
240
241 func TestLocatorIsVisible(t *testing.T) {
242 BeforeEach(t)
243 defer AfterEach(t)
244 _, err := page.Goto(server.EMPTY_PAGE)
245 require.NoError(t, err)
246 err = page.SetContent(`
247 <details>
248 <summary>click to open</summary>
249 <ul>
250 <li>hidden item 1</li>
251 <li>hidden item 2</li>
252 <li>hidden item 3</li>
253 </ul>
254 </details>`)
255 require.NoError(t, err)
256
257 locator, err := page.Locator("ul")
258 require.NoError(t, err)
259 result, err := locator.IsVisible()
260 require.NoError(t, err)
261 require.False(t, result)
262
263 locator, err = page.Locator("summary")
264 require.NoError(t, err)
265 result, err = locator.IsVisible()
266 require.NoError(t, err)
267 require.True(t, result)
268 }
269
270 func TestLocatorSelectOption(t *testing.T) {
271 BeforeEach(t)
272 defer AfterEach(t)
273 _, err := page.Goto(server.PREFIX + "/dom.html")
274 require.NoError(t, err)
275
276 locator, err := page.Locator("#select")
277 require.NoError(t, err)
278 values := []string{"foo"}
279 result, err := locator.SelectOption(playwright.SelectOptionValues{Values: &values})
280 require.NoError(t, err)
281 require.ElementsMatch(t, []string{"foo"}, result)
282 }
283
284 func TestLocatorTextContent(t *testing.T) {
285 BeforeEach(t)
286 defer AfterEach(t)
287 _, err := page.Goto(server.PREFIX + "/dom.html")
288 require.NoError(t, err)
289
290 locator, err := page.Locator("#inner")
291 require.NoError(t, err)
292 result, err := locator.TextContent()
293 require.NoError(t, err)
294 require.Equal(t, "Text,\nmore text", result)
295 }
296
View as plain text