1from tests.support.asserts import assert_error, assert_success 2 3 4def execute_script(session, script, args=None): 5 if args is None: 6 args = [] 7 body = {"script": script, "args": args} 8 9 return session.transport.send( 10 "POST", "/session/{session_id}/execute/sync".format( 11 session_id=session.session_id), 12 body) 13 14 15def test_promise_resolve(session): 16 response = execute_script(session, """ 17 return Promise.resolve('foobar'); 18 """) 19 assert_success(response, "foobar") 20 21 22def test_promise_resolve_delayed(session): 23 response = execute_script(session, """ 24 return new Promise( 25 (resolve) => setTimeout( 26 () => resolve('foobar'), 27 50 28 ) 29 ); 30 """) 31 assert_success(response, "foobar") 32 33 34def test_promise_all_resolve(session): 35 response = execute_script(session, """ 36 return Promise.all([ 37 Promise.resolve(1), 38 Promise.resolve(2) 39 ]); 40 """) 41 assert_success(response, [1, 2]) 42 43 44def test_await_promise_resolve(session): 45 response = execute_script(session, """ 46 let res = await Promise.resolve('foobar'); 47 return res; 48 """) 49 assert_success(response, "foobar") 50 51 52def test_promise_resolve_timeout(session): 53 session.timeouts.script = .1 54 response = execute_script(session, """ 55 return new Promise( 56 (resolve) => setTimeout( 57 () => resolve(), 58 1000 59 ) 60 ); 61 """) 62 assert_error(response, "script timeout") 63 64 65def test_promise_reject(session): 66 response = execute_script(session, """ 67 return Promise.reject(new Error('my error')); 68 """) 69 assert_error(response, "javascript error") 70 71 72def test_promise_reject_delayed(session): 73 response = execute_script(session, """ 74 return new Promise( 75 (resolve, reject) => setTimeout( 76 () => reject(new Error('my error')), 77 50 78 ) 79 ); 80 """) 81 assert_error(response, "javascript error") 82 83 84def test_promise_all_reject(session): 85 response = execute_script(session, """ 86 return Promise.all([ 87 Promise.resolve(1), 88 Promise.reject(new Error('error')) 89 ]); 90 """) 91 assert_error(response, "javascript error") 92 93 94def test_await_promise_reject(session): 95 response = execute_script(session, """ 96 await Promise.reject(new Error('my error')); 97 return 'foo'; 98 """) 99 assert_error(response, "javascript error") 100 101 102def test_promise_reject_timeout(session): 103 session.timeouts.script = .1 104 response = execute_script(session, """ 105 return new Promise( 106 (resolve, reject) => setTimeout( 107 () => reject(new Error('my error')), 108 1000 109 ) 110 ); 111 """) 112 assert_error(response, "script timeout") 113