Revert "Bug 1977019 - re-enable hw video decoding testing. r=media-playback-reviewers,jolin" for causing win mda failures on test_hw_video_decoding.html
This reverts commit 158474bdc0cf585b701bc47921f0a7d84f7bb84d.
# This Source Code Form is subject to the terms of the Mozilla Public# License, v. 2.0. If a copy of the MPL was not distributed with this# file, You can obtain one at http://mozilla.org/MPL/2.0/.importcontextlibimportosfromurllib.parseimportquotefrommarionette_driverimportBy,errors,expected,Waitfrommarionette_driver.keysimportKeysfrommarionette_driver.marionetteimportAlertfrommarionette_harnessimport(MarionetteTestCase,run_if_manage_instance,WindowManagerMixin,)here=os.path.abspath(os.path.dirname(__file__))BLACK_PIXEL="iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="# noqaRED_PIXEL="iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAAAXRSTlPM0jRW/QAAAApJREFUeJxjYgAAAAYAAzY3fKgAAAAASUVORK5CYII="# noqadefinline(doc):return"data:text/html;charset=utf-8,%s"%quote(doc)definline_image(data):return"data:image/png;base64,%s"%dataclassBaseNavigationTestCase(WindowManagerMixin,MarionetteTestCase):defsetUp(self):super(BaseNavigationTestCase,self).setUp()file_path=os.path.join(here,"data","test.html").replace("\\","/")self.test_page_file_url="file:///{}".format(file_path)self.test_page_frameset=self.marionette.absolute_url("frameset.html")self.test_page_insecure=self.fixtures.where_is("test.html",on="https")self.test_page_not_remote="about:robots"self.test_page_push_state=self.marionette.absolute_url("navigation_pushstate.html")self.test_page_remote=self.marionette.absolute_url("test.html")ifself.marionette.session_capabilities["platformName"]=="mac":self.mod_key=Keys.METAelse:self.mod_key=Keys.CONTROL# Always use a blank new tab for an empty historyself.new_tab=self.open_tab()self.marionette.switch_to_window(self.new_tab)Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(lambda_:self.history_length==1,message="The newly opened tab doesn't have a browser history length of 1",)deftearDown(self):self.marionette.timeout.reset()self.close_all_tabs()super(BaseNavigationTestCase,self).tearDown()@propertydefhistory_length(self):returnself.marionette.execute_script("return window.history.length;")@propertydefis_remote_tab(self):withself.marionette.using_context("chrome"):# TODO: DO NOT USE MOST RECENT WINDOW BUT CURRENT ONEreturnself.marionette.execute_script(""" const { AppConstants } = ChromeUtils.importESModule( "resource://gre/modules/AppConstants.sys.mjs" ); let win = null; if (AppConstants.MOZ_APP_NAME == "fennec") { win = Services.wm.getMostRecentWindow("navigator:browser"); } else { const { BrowserWindowTracker } = ChromeUtils.importESModule( "resource:///modules/BrowserWindowTracker.sys.mjs" ); win = BrowserWindowTracker.getTopWindow(); } let tabBrowser = null; // Fennec if (win.BrowserApp) { tabBrowser = win.BrowserApp.selectedBrowser; // Firefox } else if (win.gBrowser) { tabBrowser = win.gBrowser.selectedBrowser; } else { return null; } return tabBrowser.isRemoteBrowser; """)@propertydefready_state(self):returnself.marionette.execute_script("return window.document.readyState;",sandbox=None)classTestNavigate(BaseNavigationTestCase):deftest_set_location_through_execute_script(self):# To avoid unexpected remoteness changes and a hang in any non-navigation# command (bug 1519354) when navigating via the location bar, already# pre-load a page which causes a remoteness change.self.marionette.navigate(self.test_page_push_state)self.marionette.execute_script("window.location.href = arguments[0];",script_args=(self.test_page_remote,),sandbox=None,)Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(expected.element_present(*(By.ID,"testh1")),message="Target element 'testh1' has not been found",)self.assertEqual(self.test_page_remote,self.marionette.get_url())deftest_navigate_chrome_unsupported_error(self):withself.marionette.using_context("chrome"):self.assertRaises(errors.UnsupportedOperationException,self.marionette.navigate,"about:blank",)self.assertRaises(errors.UnsupportedOperationException,self.marionette.go_back)self.assertRaises(errors.UnsupportedOperationException,self.marionette.go_forward)self.assertRaises(errors.UnsupportedOperationException,self.marionette.refresh)deftest_get_current_url_returns_top_level_browsing_context_url(self):page_iframe=self.marionette.absolute_url("test_iframe.html")self.marionette.navigate(page_iframe)self.assertEqual(page_iframe,self.marionette.get_url())frame=self.marionette.find_element(By.CSS_SELECTOR,"#test_iframe")self.marionette.switch_to_frame(frame)self.assertEqual(page_iframe,self.marionette.get_url())deftest_get_current_url(self):self.marionette.navigate(self.test_page_remote)self.assertEqual(self.test_page_remote,self.marionette.get_url())self.marionette.navigate("about:blank")self.assertEqual("about:blank",self.marionette.get_url())deftest_navigate_in_child_frame_changes_to_top(self):self.marionette.navigate(self.test_page_frameset)frame=self.marionette.find_element(By.NAME,"third")self.marionette.switch_to_frame(frame)self.assertRaises(errors.NoSuchElementException,self.marionette.find_element,By.NAME,"third",)self.marionette.navigate(self.test_page_frameset)self.marionette.find_element(By.NAME,"third")deftest_invalid_url(self):withself.assertRaises(errors.MarionetteException):self.marionette.navigate("foo")withself.assertRaises(errors.MarionetteException):self.marionette.navigate("thisprotocoldoesnotexist://")deftest_find_element_state_complete(self):self.marionette.navigate(self.test_page_remote)self.assertEqual("complete",self.ready_state)self.assertTrue(self.marionette.find_element(By.ID,"mozLink"))deftest_navigate_timeout_error_no_remoteness_change(self):is_remote_before_timeout=self.is_remote_tabself.marionette.timeout.page_load=0.5withself.assertRaises(errors.TimeoutException):self.marionette.navigate(self.marionette.absolute_url("slow"))self.assertEqual(self.is_remote_tab,is_remote_before_timeout)deftest_navigate_timeout_error_remoteness_change(self):self.assertTrue(self.is_remote_tab)self.marionette.navigate("about:robots")self.assertFalse(self.is_remote_tab)self.marionette.timeout.page_load=0.5withself.assertRaises(errors.TimeoutException):self.marionette.navigate(self.marionette.absolute_url("slow"))deftest_navigate_to_same_image_document_twice(self):self.marionette.navigate(self.fixtures.where_is("black.png"))self.assertIn("black.png",self.marionette.title)self.marionette.navigate(self.fixtures.where_is("black.png"))self.assertIn("black.png",self.marionette.title)deftest_navigate_hash_change(self):doc=inline("<p id=foo>")self.marionette.navigate(doc)self.marionette.execute_script("window.visited = true",sandbox=None)self.marionette.navigate("{}#foo".format(doc))self.assertTrue(self.marionette.execute_script("return window.visited",sandbox=None))deftest_navigate_hash_argument_identical(self):test_page="{}#foo".format(inline("<p id=foo>"))self.marionette.navigate(test_page)self.marionette.find_element(By.ID,"foo")self.marionette.navigate(test_page)self.marionette.find_element(By.ID,"foo")deftest_navigate_hash_argument_differnt(self):test_page="{}#Foo".format(inline("<p id=foo>"))self.marionette.navigate(test_page)self.marionette.find_element(By.ID,"foo")self.marionette.navigate(test_page.lower())self.marionette.find_element(By.ID,"foo")deftest_navigate_history_pushstate(self):target_page=self.marionette.absolute_url("navigation_pushstate_target.html")self.marionette.navigate(self.test_page_push_state)self.marionette.find_element(By.ID,"forward").click()# By using pushState() the URL is updated but the target page is not loaded# and as such the element is not displayedself.assertEqual(self.marionette.get_url(),target_page)withself.assertRaises(errors.NoSuchElementException):self.marionette.find_element(By.ID,"target")self.marionette.go_back()self.assertEqual(self.marionette.get_url(),self.test_page_push_state)# The target page still gets not loadedself.marionette.go_forward()self.assertEqual(self.marionette.get_url(),target_page)withself.assertRaises(errors.NoSuchElementException):self.marionette.find_element(By.ID,"target")# Navigating to a different page, and returning to the injected# page, it will be loaded.self.marionette.navigate(self.test_page_remote)self.assertEqual(self.marionette.get_url(),self.test_page_remote)self.marionette.go_back()self.assertEqual(self.marionette.get_url(),target_page)self.marionette.find_element(By.ID,"target")self.marionette.go_back()self.assertEqual(self.marionette.get_url(),self.test_page_push_state)deftest_navigate_file_url(self):self.marionette.navigate(self.test_page_file_url)self.marionette.find_element(By.ID,"file-url")self.marionette.navigate(self.test_page_remote)deftest_navigate_file_url_remoteness_change(self):self.marionette.navigate("about:robots")self.assertFalse(self.is_remote_tab)self.marionette.navigate(self.test_page_file_url)self.assertTrue(self.is_remote_tab)self.marionette.find_element(By.ID,"file-url")self.marionette.navigate("about:robots")self.assertFalse(self.is_remote_tab)deftest_no_such_element_after_remoteness_change(self):self.marionette.navigate(self.test_page_file_url)self.assertTrue(self.is_remote_tab)elem=self.marionette.find_element(By.ID,"file-url")self.marionette.navigate("about:robots")self.assertFalse(self.is_remote_tab)withself.assertRaises(errors.StaleElementException):elem.click()deftest_about_blank_for_new_docshell(self):self.assertEqual(self.marionette.get_url(),"about:blank")self.marionette.navigate("about:blank")deftest_about_newtab(self):withself.marionette.using_prefs({"browser.newtabpage.enabled":True}):self.marionette.navigate("about:newtab")self.marionette.navigate(self.test_page_remote)self.marionette.find_element(By.ID,"testDiv")@run_if_manage_instance("Only runnable if Marionette manages the instance")deftest_focus_after_navigation(self):self.marionette.restart()self.marionette.navigate(inline("<input autofocus>"))# Per spec, autofocus candidates will be# flushed by next paint, so we use rAF here to# ensure the candidates are flushed.self.marionette.execute_async_script(""" const callback = arguments[arguments.length - 1]; window.requestAnimationFrame(function() { window.requestAnimationFrame(callback); }); """)focus_el=self.marionette.find_element(By.CSS_SELECTOR,":focus")self.assertEqual(self.marionette.get_active_element(),focus_el)deftest_no_hang_when_navigating_after_closing_original_tab(self):# Close the start tabself.marionette.switch_to_window(self.start_tab)self.marionette.close()self.marionette.switch_to_window(self.new_tab)self.marionette.navigate(self.test_page_remote)deftest_type_to_non_remote_tab(self):self.marionette.navigate(self.test_page_not_remote)self.assertFalse(self.is_remote_tab)withself.marionette.using_context("chrome"):urlbar=self.marionette.execute_script("return gURLBar.inputField")urlbar.send_keys(self.mod_key+"a")urlbar.send_keys(self.mod_key+"x")urlbar.send_keys("about:support"+Keys.ENTER)Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(lambdamn:mn.get_url()=="about:support",message="'about:support' hasn't been loaded",)self.assertFalse(self.is_remote_tab)deftest_type_to_remote_tab(self):self.assertTrue(self.is_remote_tab)withself.marionette.using_context("chrome"):urlbar=self.marionette.execute_script("return gURLBar.inputField")urlbar.send_keys(self.mod_key+"a")urlbar.send_keys(self.mod_key+"x")urlbar.send_keys(self.test_page_remote+Keys.ENTER)Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(lambdamn:mn.get_url()==self.test_page_remote,message="'{}' hasn't been loaded".format(self.test_page_remote),)self.assertTrue(self.is_remote_tab)deftest_navigate_after_deleting_session(self):self.marionette.delete_session()self.marionette.start_session()self.marionette.navigate(self.test_page_remote)self.assertEqual(self.test_page_remote,self.marionette.get_url())classTestBackForwardNavigation(BaseNavigationTestCase):defrun_bfcache_test(self,test_pages):# Helper method to run simple back and forward testcases.defcheck_page_status(page,expected_history_length):if"alert_text"inpage:self.assertEqual(Alert(self.marionette).text,page["alert_text"])self.assertEqual(self.marionette.get_url(),page["url"])self.assertEqual(self.history_length,expected_history_length)if"is_remote"inpage:self.assertEqual(page["is_remote"],self.is_remote_tab,"'{}' doesn't match expected remoteness state: {}".format(page["url"],page["is_remote"]),)if"callback"inpageandcallable(page["callback"]):page["callback"]()forindex,pageinenumerate(test_pages):if"error"inpage:withself.assertRaises(page["error"]):self.marionette.navigate(page["url"])else:self.marionette.navigate(page["url"])check_page_status(page,index+1)# Now going back in history for all test pages by backward iterating# through the list (-1) and skipping the first entry at the end (-2).forpageintest_pages[-2::-1]:if"error"inpage:withself.assertRaises(page["error"]):self.marionette.go_back()else:self.marionette.go_back()check_page_status(page,len(test_pages))# Now going forward in history by skipping the first entry.forpageintest_pages[1::]:if"error"inpage:withself.assertRaises(page["error"]):self.marionette.go_forward()else:self.marionette.go_forward()check_page_status(page,len(test_pages))deftest_no_history_items(self):# Both methods should not raise a failure if no navigation is possibleself.marionette.go_back()self.marionette.go_forward()deftest_data_urls(self):test_pages=[{"url":inline("<p>foobar</p>")},{"url":self.test_page_remote},{"url":inline("<p>foobar</p>")},]self.run_bfcache_test(test_pages)deftest_same_document_hash_change(self):test_pages=[{"url":"{}#23".format(self.test_page_remote)},{"url":self.test_page_remote},{"url":"{}#42".format(self.test_page_remote)},]self.run_bfcache_test(test_pages)deftest_file_url(self):test_pages=[{"url":self.test_page_remote},{"url":self.test_page_file_url},{"url":self.test_page_remote},]self.run_bfcache_test(test_pages)deftest_frameset(self):test_pages=[{"url":self.marionette.absolute_url("frameset.html")},{"url":self.test_page_remote},{"url":self.marionette.absolute_url("frameset.html")},]self.run_bfcache_test(test_pages)deftest_frameset_after_navigating_in_frame(self):test_element_locator=(By.ID,"email")self.marionette.navigate(self.test_page_remote)self.assertEqual(self.marionette.get_url(),self.test_page_remote)self.assertEqual(self.history_length,1)page=self.marionette.absolute_url("frameset.html")self.marionette.navigate(page)self.assertEqual(self.marionette.get_url(),page)self.assertEqual(self.history_length,2)frame=self.marionette.find_element(By.ID,"fifth")self.marionette.switch_to_frame(frame)link=self.marionette.find_element(By.ID,"linkId")link.click()# We cannot use get_url() to wait until the target page has been loaded,# because it will return the URL of the top browsing context and doesn't# wait for the page load to be complete.Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(expected.element_present(*test_element_locator),message="Target element 'email' has not been found",)self.assertEqual(self.history_length,3)# Go back to the frame the click navigated away fromself.marionette.go_back()self.assertEqual(self.marionette.get_url(),page)withself.assertRaises(errors.NoSuchElementException):self.marionette.find_element(*test_element_locator)# Go back to the non-frameset pageself.marionette.switch_to_parent_frame()self.marionette.go_back()self.assertEqual(self.marionette.get_url(),self.test_page_remote)# Go forward to the frameset pageself.marionette.go_forward()self.assertEqual(self.marionette.get_url(),page)# Go forward to the frame the click navigated to# TODO: See above for automatic browser context switches. Hard to do hereframe=self.marionette.find_element(By.ID,"fifth")self.marionette.switch_to_frame(frame)self.marionette.go_forward()self.marionette.find_element(*test_element_locator)self.assertEqual(self.marionette.get_url(),page)deftest_image_to_html_to_image(self):test_pages=[{"url":self.marionette.absolute_url("black.png")},{"url":self.test_page_remote},{"url":self.marionette.absolute_url("white.png")},]self.run_bfcache_test(test_pages)deftest_image_to_image(self):test_pages=[{"url":self.marionette.absolute_url("black.png")},{"url":self.marionette.absolute_url("white.png")},{"url":inline_image(RED_PIXEL)},{"url":inline_image(BLACK_PIXEL)},{"url":self.marionette.absolute_url("black.png")},]self.run_bfcache_test(test_pages)deftest_remoteness_change(self):test_pages=[{"url":"about:robots","is_remote":False},{"url":self.test_page_remote,"is_remote":True},{"url":"about:robots","is_remote":False},]self.run_bfcache_test(test_pages)deftest_non_remote_about_pages(self):test_pages=[{"url":"about:preferences","is_remote":False},{"url":"about:robots","is_remote":False},{"url":"about:support","is_remote":False},]self.run_bfcache_test(test_pages)deftest_navigate_to_requested_about_page_after_error_page(self):test_pages=[{"url":"about:neterror"},{"url":self.test_page_remote},{"url":"about:blocked"},]self.run_bfcache_test(test_pages)deftest_timeout_error(self):urls=[self.marionette.absolute_url("slow?delay=3"),self.test_page_remote,self.marionette.absolute_url("slow?delay=4"),]# First, load all pages completely to get them added to the cacheforindex,urlinenumerate(urls):self.marionette.navigate(url)self.assertEqual(url,self.marionette.get_url())self.assertEqual(self.history_length,index+1)self.marionette.go_back()self.assertEqual(urls[1],self.marionette.get_url())# Force triggering a timeout errorself.marionette.timeout.page_load=0.5withself.assertRaises(errors.TimeoutException):self.marionette.go_back()self.marionette.timeout.reset()delay=Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(expected.element_present(By.ID,"delay"),message="Target element 'delay' has not been found after timeout in 'back'",)self.assertEqual(delay.text,"3")self.marionette.go_forward()self.assertEqual(urls[1],self.marionette.get_url())# Force triggering a timeout errorself.marionette.timeout.page_load=0.5withself.assertRaises(errors.TimeoutException):self.marionette.go_forward()self.marionette.timeout.reset()delay=Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(expected.element_present(By.ID,"delay"),message="Target element 'delay' has not been found after timeout in 'forward'",)self.assertEqual(delay.text,"4")deftest_certificate_error(self):test_pages=[{"url":self.test_page_insecure,"error":errors.InsecureCertificateException,},{"url":self.test_page_remote},{"url":self.test_page_insecure,"error":errors.InsecureCertificateException,},]self.run_bfcache_test(test_pages)classTestRefresh(BaseNavigationTestCase):deftest_basic(self):self.marionette.navigate(self.test_page_remote)self.assertEqual(self.test_page_remote,self.marionette.get_url())self.marionette.execute_script(""" let elem = window.document.createElement('div'); elem.id = 'someDiv'; window.document.body.appendChild(elem); """)self.marionette.find_element(By.ID,"someDiv")self.marionette.refresh()self.assertEqual(self.test_page_remote,self.marionette.get_url())withself.assertRaises(errors.NoSuchElementException):self.marionette.find_element(By.ID,"someDiv")deftest_refresh_in_child_frame_navigates_to_top(self):self.marionette.navigate(self.test_page_frameset)self.assertEqual(self.test_page_frameset,self.marionette.get_url())frame=self.marionette.find_element(By.NAME,"third")self.marionette.switch_to_frame(frame)self.assertRaises(errors.NoSuchElementException,self.marionette.find_element,By.NAME,"third",)self.marionette.refresh()self.marionette.find_element(By.NAME,"third")deftest_file_url(self):self.marionette.navigate(self.test_page_file_url)self.assertEqual(self.test_page_file_url,self.marionette.get_url())self.marionette.refresh()self.assertEqual(self.test_page_file_url,self.marionette.get_url())deftest_image(self):image=self.marionette.absolute_url("black.png")self.marionette.navigate(image)self.assertEqual(image,self.marionette.get_url())self.marionette.refresh()self.assertEqual(image,self.marionette.get_url())deftest_history_pushstate(self):target_page=self.marionette.absolute_url("navigation_pushstate_target.html")self.marionette.navigate(self.test_page_push_state)self.marionette.find_element(By.ID,"forward").click()# By using pushState() the URL is updated but the target page is not loaded# and as such the element is not displayedself.assertEqual(self.marionette.get_url(),target_page)withself.assertRaises(errors.NoSuchElementException):self.marionette.find_element(By.ID,"target")# Refreshing the target page will trigger a full page load.self.marionette.refresh()self.assertEqual(self.marionette.get_url(),target_page)self.marionette.find_element(By.ID,"target")self.marionette.go_back()self.assertEqual(self.marionette.get_url(),self.test_page_push_state)deftest_timeout_error(self):slow_page=self.marionette.absolute_url("slow?delay=3")self.marionette.navigate(slow_page)self.assertEqual(slow_page,self.marionette.get_url())self.marionette.timeout.page_load=0.5withself.assertRaises(errors.TimeoutException):self.marionette.refresh()self.assertEqual(slow_page,self.marionette.get_url())deftest_insecure_error(self):withself.assertRaises(errors.InsecureCertificateException):self.marionette.navigate(self.test_page_insecure)self.assertEqual(self.marionette.get_url(),self.test_page_insecure)withself.assertRaises(errors.InsecureCertificateException):self.marionette.refresh()classTestTLSNavigation(BaseNavigationTestCase):insecure_tls={"acceptInsecureCerts":True}secure_tls={"acceptInsecureCerts":False}defsetUp(self):super(TestTLSNavigation,self).setUp()self.test_page_insecure=self.fixtures.where_is("test.html",on="https")self.marionette.delete_session()self.capabilities=self.marionette.start_session(self.insecure_tls)deftearDown(self):try:self.marionette.delete_session()self.marionette.start_session()except:passsuper(TestTLSNavigation,self).tearDown()@contextlib.contextmanagerdefsafe_session(self):try:self.capabilities=self.marionette.start_session(self.secure_tls)self.assertFalse(self.capabilities["acceptInsecureCerts"])# Always use a blank new tab for an empty historyself.new_tab=self.open_tab()self.marionette.switch_to_window(self.new_tab)Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(lambda_:self.history_length==1,message="The newly opened tab doesn't have a browser history length of 1",)yieldself.marionettefinally:self.close_all_tabs()self.marionette.delete_session()@contextlib.contextmanagerdefunsafe_session(self):try:self.capabilities=self.marionette.start_session(self.insecure_tls)self.assertTrue(self.capabilities["acceptInsecureCerts"])# Always use a blank new tab for an empty historyself.new_tab=self.open_tab()self.marionette.switch_to_window(self.new_tab)Wait(self.marionette,timeout=self.marionette.timeout.page_load).until(lambda_:self.history_length==1,message="The newly opened tab doesn't have a browser history length of 1",)yieldself.marionettefinally:self.close_all_tabs()self.marionette.delete_session()deftest_navigate_by_command(self):self.marionette.navigate(self.test_page_insecure)self.assertIn("https",self.marionette.get_url())deftest_navigate_by_click(self):link_url=self.test_page_insecureself.marionette.navigate(inline("<a href=%s>https is the future</a>"%link_url))self.marionette.find_element(By.TAG_NAME,"a").click()self.assertIn("https",self.marionette.get_url())deftest_deactivation(self):invalid_cert_url=self.test_page_insecureself.marionette.delete_session()print("with safe session")withself.safe_session()assession:withself.assertRaises(errors.InsecureCertificateException):session.navigate(invalid_cert_url)print("with unsafe session")withself.unsafe_session()assession:session.navigate(invalid_cert_url)print("with safe session again")withself.safe_session()assession:withself.assertRaises(errors.InsecureCertificateException):session.navigate(invalid_cert_url)classTestPageLoadStrategy(BaseNavigationTestCase):defsetUp(self):super(TestPageLoadStrategy,self).setUp()# Test page that delays the response and as such the document to be# loaded. It is used for testing the page load strategy "none".self.test_page_slow=self.marionette.absolute_url("slow")# Similar to "slow" but additionally triggers a cross group navigation# which triggers a replacement of the top-level browsing context.self.test_page_slow_coop=self.marionette.absolute_url("slow-coop")# Test page that contains a slow loading <img> element which delays the# "load" but not the "DOMContentLoaded" event.self.test_page_slow_resource=self.marionette.absolute_url("slow_resource.html")deftearDown(self):self.marionette.delete_session()self.marionette.start_session()super(TestPageLoadStrategy,self).tearDown()deftest_none(self):self.marionette.delete_session()self.marionette.start_session({"pageLoadStrategy":"none"})# Navigate will return immediately. As such wait for the target URL to# be the current location, and the element to exist.self.marionette.navigate(self.test_page_slow)withself.assertRaises(errors.NoSuchElementException):self.marionette.find_element(By.ID,"delay")Wait(self.marionette,ignored_exceptions=errors.NoSuchElementException,timeout=self.marionette.timeout.page_load,).until(lambda_:self.marionette.find_element(By.ID,"delay"))self.assertEqual(self.marionette.get_url(),self.test_page_slow)deftest_none_with_new_session_waits_for_page_loaded(self):self.marionette.delete_session()self.marionette.start_session({"pageLoadStrategy":"none"})# Navigate will return immediately.self.marionette.navigate(self.test_page_slow)# Make sure that when creating a new session right away it waits# until the page has been finished loading.self.marionette.delete_session()self.marionette.start_session()self.assertEqual(self.marionette.get_url(),self.test_page_slow)self.assertEqual(self.ready_state,"complete")self.marionette.find_element(By.ID,"delay")deftest_none_with_new_session_waits_for_page_loaded_remoteness_change(self):self.marionette.delete_session()self.marionette.start_session({"pageLoadStrategy":"none"})# Navigate will return immediately.self.marionette.navigate(self.test_page_slow_coop)# Make sure that when creating a new session right away it waits# until the page has been finished loading.self.marionette.delete_session()self.marionette.start_session()self.assertEqual(self.marionette.get_url(),self.test_page_slow_coop)self.assertEqual(self.ready_state,"complete")self.marionette.find_element(By.ID,"delay")deftest_eager(self):self.marionette.delete_session()self.marionette.start_session({"pageLoadStrategy":"eager"})self.marionette.navigate(self.test_page_slow_resource)self.assertEqual(self.ready_state,"interactive")self.assertEqual(self.marionette.get_url(),self.test_page_slow_resource)self.marionette.find_element(By.ID,"slow")deftest_normal(self):self.marionette.delete_session()self.marionette.start_session({"pageLoadStrategy":"normal"})self.marionette.navigate(self.test_page_slow_resource)self.assertEqual(self.marionette.get_url(),self.test_page_slow_resource)self.assertEqual(self.ready_state,"complete")self.marionette.find_element(By.ID,"slow")deftest_strategy_after_remoteness_change(self):"""Bug 1378191 - Reset of capabilities after listener reload."""self.marionette.delete_session()self.marionette.start_session({"pageLoadStrategy":"eager"})# Trigger a remoteness change which will reload the listener scriptself.assertTrue(self.is_remote_tab,"Initial tab doesn't have remoteness flag set")self.marionette.navigate("about:robots")self.assertFalse(self.is_remote_tab,"Tab has remoteness flag set")self.marionette.navigate(self.test_page_slow_resource)self.assertEqual(self.ready_state,"interactive")