blob: 16bdcdd1dea5f27753cc525a754dffae3b589005 [file] [log] [blame]
from tests.support.asserts import assert_error, assert_same_element, assert_success
from tests.support.inline import inline
def execute_script(session, script, args=None):
if args is None:
args = []
body = {"script": script, "args": args}
return session.transport.send(
"POST", "/session/{session_id}/execute/sync".format(
session_id=session.session_id),
body)
def test_array(session):
response = execute_script(session, """
let arr = [];
arr.push(arr);
return arr;
""")
assert_error(response, "javascript error")
def test_object(session):
response = execute_script(session, """
let obj = {};
obj.reference = obj;
return obj;
""")
assert_error(response, "javascript error")
def test_array_in_object(session):
response = execute_script(session, """
let arr = [];
arr.push(arr);
return {'arrayValue': arr};
""")
assert_error(response, "javascript error")
def test_object_in_array(session):
response = execute_script(session, """
let obj = {};
obj.reference = obj;
return [obj];
""")
assert_error(response, "javascript error")
def test_element_in_collection(session):
session.url = inline("<div></div>")
divs = session.find.css("div")
response = execute_script(session, """
let div = document.querySelector("div");
div.reference = div;
return [div];
""")
value = assert_success(response)
for expected, actual in zip(divs, value):
assert_same_element(session, expected, actual)
def test_element_in_object(session):
session.url = inline("<div></div>")
div = session.find.css("div", all=False)
response = execute_script(session, """
let div = document.querySelector("div");
div.reference = div;
return {foo: div};
""")
value = assert_success(response)
assert_same_element(session, div, value["foo"])