diff --git a/webdriver/tests/classic/execute_async_script/promise.py b/webdriver/tests/classic/execute_async_script/promise.py index d726d0d7128303..4f718cee683b9c 100644 --- a/webdriver/tests/classic/execute_async_script/promise.py +++ b/webdriver/tests/classic/execute_async_script/promise.py @@ -116,3 +116,29 @@ def test_promise_reject_timeout(session): resolve(promise); """) assert_error(response, "script timeout") + + +def test_returned_promise_fulfilled_over_callback(session): + session.timeouts.script = 1 + response = execute_async_script(session, """ + let resolve = arguments[0]; + setTimeout(() => resolve('callback'), 200); + return Promise.resolve('promise'); + """) + assert_success(response, "promise") + + +def test_returned_promise_rejected_over_callback(session): + session.timeouts.script = 1 + response = execute_async_script(session, """ + return Promise.reject(new Error('my error')); + """) + assert_error(response, "javascript error") + + +def test_returned_poisoned_thenable(session): + session.timeouts.script = .1 + response = execute_async_script(session, """ + return { get then() { thow new Error('my error'); } }; + """) + assert_error(response, "javascript error") diff --git a/webdriver/tests/classic/execute_script/promise.py b/webdriver/tests/classic/execute_script/promise.py index c206674baefc75..fc9027e8595018 100644 --- a/webdriver/tests/classic/execute_script/promise.py +++ b/webdriver/tests/classic/execute_script/promise.py @@ -100,3 +100,11 @@ def test_promise_reject_timeout(session): ); """) assert_error(response, "script timeout") + + +def test_returned_poisoned_thenable(session): + session.timeouts.script = .1 + response = execute_script(session, """ + return { get then() { thow new Error('my error'); } }; + """) + assert_error(response, "javascript error")