@@ -96,18 +96,65 @@ public async Task ShouldProperlySerializeNullFields()
9696        } 
9797
9898        [ Fact ] 
99-         public  async  Task  EvaluateExpressionBigObject ( ) 
99+         public  async  Task  ShouldFailForWindowObjectUsingEvaluateExpression ( ) 
100100        { 
101101            var  window  =  await  Page . EvaluateExpressionAsync ( "window" ) ; 
102102            Assert . Null ( window ) ; 
103103        } 
104104
105105        [ Fact ] 
106-         public  async  Task  EvaluateFunctionBigObject ( ) 
106+         public  async  Task  ShouldFailForWindowObjectUsingEvaluateFunction ( ) 
107107        { 
108108            var  window  =  await  Page . EvaluateFunctionAsync ( "() => window" ) ; 
109109            Assert . Null ( window ) ; 
110110        } 
111+         
112+         [ Fact ] 
113+         public  async  Task  ShouldAcceptElementHandleAsAnArgument ( ) 
114+         { 
115+             await  Page . SetContentAsync ( "<section>42</section>" ) ; 
116+             var  element  =  await  Page . QuerySelectorAsync ( "section" ) ; 
117+             var  text  =  await  Page . EvaluateFunctionAsync < string > ( "e => e.textContent" ,  element ) ; 
118+             Assert . Equal ( "42" ,  text ) ; 
119+         } 
120+ 
121+         [ Fact ] 
122+         public  async  Task  ShouldThrowIfUnderlyingElementWasDisposed ( ) 
123+         { 
124+             await  Page . SetContentAsync ( "<section>39</section>" ) ; 
125+             var  element  =  await  Page . QuerySelectorAsync ( "section" ) ; 
126+             Assert . NotNull ( element ) ; 
127+             await  element . DisposeAsync ( ) ; 
128+             var  exception  =  await  Assert . ThrowsAsync < PuppeteerException > ( ( ) 
129+                 =>  Page . EvaluateFunctionAsync < string > ( "e => e.textContent" ,  element ) ) ; 
130+             Assert . Contains ( "JSHandle is disposed" ,  exception . Message ) ; 
131+         } 
132+ 
133+         [ Fact ] 
134+         public  async  Task  ShouldThrowIfElementHandlesAreFromOtherFrames ( ) 
135+         { 
136+             await  FrameUtils . AttachFrameAsync ( Page ,  "frame1" ,  TestConstants . EmptyPage ) ; 
137+             var  bodyHandle  =  await  Page . Frames [ 1 ] . QuerySelectorAsync ( "body" ) ; 
138+             var  exception  =  await  Assert . ThrowsAsync < PuppeteerException > ( ( ) 
139+                 =>  Page . EvaluateFunctionAsync < string > ( "body => body.innerHTML" ,  bodyHandle ) ) ; 
140+             Assert . Contains ( "JSHandles can be evaluated only in the context they were created" ,  exception . Message ) ; 
141+         } 
142+ 
143+         [ Fact ] 
144+         public  async  Task  ShouldAcceptObjectHandleAsAnArgument ( ) 
145+         { 
146+             var  navigatorHandle  =  await  Page . EvaluateExpressionHandleAsync ( "navigator" ) ; 
147+             var  text  =  await  Page . EvaluateFunctionAsync < string > ( "e => e.userAgent" ,  navigatorHandle ) ; 
148+             Assert . Contains ( "Mozilla" ,  text ) ; 
149+         } 
150+ 
151+         [ Fact ] 
152+         public  async  Task  ShouldAcceptObjectHandleToPrimitiveTypes ( ) 
153+         { 
154+             var  aHandle  =  await  Page . EvaluateExpressionHandleAsync ( "5" ) ; 
155+             var  isFive  =  await  Page . EvaluateFunctionAsync < bool > ( "e => Object.is(e, 5)" ,  aHandle ) ; 
156+             Assert . True ( isFive ) ; 
157+         } 
111158
112159        [ Fact ] 
113160        public  async  Task  ShouldWorkFromInsideAnExposedFunction ( ) 
@@ -122,4 +169,4 @@ await Page.ExposeFunctionAsync("callController", async (int a, int b) =>
122169            Assert . Equal ( 27 ,  result ) ; 
123170        } 
124171    } 
125- } 
172+ } 
0 commit comments