...

Source file src/github.com/playwright-community/playwright-go/tests/js_handle_test.go

Documentation: github.com/playwright-community/playwright-go/tests

     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