1 package playwright_test
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7 )
8
9 func TestJSHandleGetProperty(t *testing.T) {
10 BeforeEach(t)
11 defer AfterEach(t)
12 aHandle, err := page.EvaluateHandle(`() => ({
13 one: 1,
14 two: 2,
15 three: 3
16 })`)
17 require.NoError(t, err)
18 twoHandle, err := aHandle.GetProperty("two")
19 require.NoError(t, err)
20 value, err := twoHandle.JSONValue()
21 require.NoError(t, err)
22 require.Equal(t, value, 2)
23 }
24
25 func TestJSHandleGetProperties(t *testing.T) {
26 BeforeEach(t)
27 defer AfterEach(t)
28 aHandle, err := page.EvaluateHandle(`() => ({
29 one: 1,
30 two: 2,
31 three: 3
32 })`)
33 require.NoError(t, err)
34 twoHandle, err := aHandle.GetProperties()
35 require.NoError(t, err)
36 v1, err := twoHandle["one"].JSONValue()
37 require.NoError(t, err)
38 require.Equal(t, 1, v1)
39
40 v1, err = twoHandle["two"].JSONValue()
41 require.NoError(t, err)
42 require.Equal(t, 2, v1)
43
44 v1, err = twoHandle["three"].JSONValue()
45 require.NoError(t, err)
46 require.Equal(t, 3, v1)
47 }
48
49 func TestJSHandleEvaluate(t *testing.T) {
50 BeforeEach(t)
51 defer AfterEach(t)
52 aHandle, err := page.EvaluateHandle(`() => ({
53 one: 1,
54 two: 2,
55 three: 3
56 })`)
57 require.NoError(t, err)
58 twoHandle, err := aHandle.Evaluate("x => x")
59 require.NoError(t, err)
60 values := twoHandle.(map[string]interface{})
61 require.Equal(t, 1, values["one"])
62 require.Equal(t, 2, values["two"])
63 require.Equal(t, 3, values["three"])
64 }
65
66 func TestJSHandleEvaluateHandle(t *testing.T) {
67 BeforeEach(t)
68 defer AfterEach(t)
69 aHandle, err := page.EvaluateHandle(`() => ({
70 one: 1,
71 two: 2,
72 three: 3
73 })`)
74 require.NoError(t, err)
75 twoHandle, err := aHandle.EvaluateHandle("x => x")
76 require.NoError(t, err)
77 twoHandle, err = twoHandle.GetProperty("two")
78 require.NoError(t, err)
79 value, err := twoHandle.JSONValue()
80 require.NoError(t, err)
81 require.Equal(t, value, 2)
82 }
83
84 func TestJSHandleTypeParsing(t *testing.T) {
85 BeforeEach(t)
86 defer AfterEach(t)
87 aHandle, err := page.EvaluateHandle(`() => ({
88 an_integer: 1,
89 a_float: 2.2222222222,
90 a_string_of_an_integer: "3",
91 })`)
92 require.NoError(t, err)
93 twoHandle, err := aHandle.EvaluateHandle("x => x")
94 require.NoError(t, err)
95
96 integerHandle, err := twoHandle.GetProperty("an_integer")
97 require.NoError(t, err)
98 intV, err := integerHandle.JSONValue()
99 require.NoError(t, err)
100 _, ok := intV.(int)
101 require.True(t, ok)
102 _, ok = intV.(float64)
103 require.False(t, ok)
104
105 floatHandle, err := twoHandle.GetProperty("a_float")
106 require.NoError(t, err)
107 floatV, err := floatHandle.JSONValue()
108 require.NoError(t, err)
109 _, ok = floatV.(float64)
110 require.True(t, ok)
111 _, ok = floatV.(int)
112 require.False(t, ok)
113
114 stringHandle, err := twoHandle.GetProperty("a_string_of_an_integer")
115 require.NoError(t, err)
116 stringV, err := stringHandle.JSONValue()
117 require.NoError(t, err)
118 _, ok = stringV.(string)
119 require.True(t, ok)
120 _, ok = stringV.(int)
121 require.False(t, ok)
122 }
123
View as plain text