summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/marionette/test_restore_loading_tab.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /browser/components/sessionstore/test/marionette/test_restore_loading_tab.py
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/components/sessionstore/test/marionette/test_restore_loading_tab.py')
-rw-r--r--browser/components/sessionstore/test/marionette/test_restore_loading_tab.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/marionette/test_restore_loading_tab.py b/browser/components/sessionstore/test/marionette/test_restore_loading_tab.py
new file mode 100644
index 0000000000..f053081b02
--- /dev/null
+++ b/browser/components/sessionstore/test/marionette/test_restore_loading_tab.py
@@ -0,0 +1,69 @@
+# 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/.
+
+from urllib.parse import quote
+
+from marionette_harness import MarionetteTestCase, WindowManagerMixin
+
+
+def inline(doc):
+ return "data:text/html;charset=utf-8,{}".format(quote(doc))
+
+
+class TestRestoreLoadingPage(WindowManagerMixin, MarionetteTestCase):
+ def setUp(self):
+ super(TestRestoreLoadingPage, self).setUp()
+ self.delayed_page = self.marionette.absolute_url("slow")
+
+ def do_test(self, html, is_restoring_expected):
+ self.marionette.navigate(inline(html.format(self.delayed_page)))
+ link = self.marionette.find_element("id", "link")
+ link.click()
+
+ self.marionette.restart(in_app=True)
+
+ with self.marionette.using_context("chrome"):
+ urls = self.marionette.execute_script(
+ "return gBrowser.tabs.map(t => t.linkedBrowser.currentURI.spec);"
+ )
+
+ if is_restoring_expected:
+ self.assertEqual(
+ len(urls),
+ 2,
+ msg="The tab opened should be restored",
+ )
+ self.assertEqual(
+ urls[1],
+ self.delayed_page,
+ msg="The tab restored is correct",
+ )
+ else:
+ self.assertEqual(
+ len(urls),
+ 1,
+ msg="The tab opened should not be restored",
+ )
+
+ self.close_all_tabs()
+
+ def test_target_blank(self):
+ self.do_test("<a id='link' href='{}' target='_blank'>click</a>", True)
+
+ def test_target_other(self):
+ self.do_test("<a id='link' href='{}' target='other'>click</a>", False)
+
+ def test_by_script(self):
+ self.do_test(
+ """
+ <a id='link'>click</a>
+ <script>
+ document.getElementById("link").addEventListener(
+ "click",
+ () => window.open("{}", "_blank");
+ )
+ </script>
+ """,
+ False,
+ )