iframe.py (1929B)
1 import pytest 2 from tests.support.asserts import assert_success 3 from tests.support.image import png_dimensions 4 from tests.support.screenshot import ( 5 DEFAULT_CONTENT, 6 INNER_IFRAME_STYLE, 7 OUTER_IFRAME_STYLE, 8 REFERENCE_CONTENT, 9 REFERENCE_STYLE, 10 ) 11 12 from . import viewport_dimensions 13 14 15 def take_screenshot(session): 16 return session.transport.send( 17 "GET", "session/{session_id}/screenshot".format(**vars(session))) 18 19 20 def test_always_captures_top_browsing_context(session, inline, iframe): 21 iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT) 22 session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content))) 23 24 response = take_screenshot(session) 25 reference_screenshot = assert_success(response) 26 assert png_dimensions(reference_screenshot) == viewport_dimensions(session) 27 28 frame = session.find.css("iframe", all=False) 29 session.switch_to_frame(frame) 30 31 response = take_screenshot(session) 32 screenshot = assert_success(response) 33 34 assert png_dimensions(screenshot) == png_dimensions(reference_screenshot) 35 assert screenshot == reference_screenshot 36 37 38 @pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"]) 39 def test_source_origin(session, inline, iframe, domain): 40 session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT)) 41 42 response = take_screenshot(session) 43 reference_screenshot = assert_success(response) 44 assert png_dimensions(reference_screenshot) == viewport_dimensions(session) 45 46 iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT) 47 session.url = inline("""{0}{1}""".format( 48 OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain))) 49 50 response = take_screenshot(session) 51 screenshot = assert_success(response) 52 assert png_dimensions(screenshot) == viewport_dimensions(session) 53 54 assert screenshot == reference_screenshot