Skip to content

Commit 6bf5976

Browse files
authored
Merge pull request #149 from mozilla/sl/reader-view-close-sidebar
Reader View Close From Sidebar
2 parents fbb62bd + d9ca8e1 commit 6bf5976

File tree

4 files changed

+110
-1
lines changed

4 files changed

+110
-1
lines changed

modules/browser_object.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from modules.browser_object_image_context_menu import *
99
from modules.browser_object_navigation import *
1010
from modules.browser_object_panel_ui import *
11+
from modules.browser_object_reader_view import *
1112
from modules.browser_object_search_bar_context_menu import *
1213
from modules.browser_object_tab_context_menu import *
1314
from modules.browser_object_tabbar import *

modules/browser_object_reader_view.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from selenium.webdriver import Keys
2+
13
from modules.page_base import BasePage
24

35

@@ -7,3 +9,71 @@ class ReaderView(BasePage):
79
"""
810

911
URL_TEMPLATE = ""
12+
13+
def open_reader_view_searchbar(self) -> BasePage:
14+
"""
15+
Opens the reader view using the search bar
16+
"""
17+
before_page_source = self.driver.page_source
18+
with self.driver.context(self.driver.CONTEXT_CHROME):
19+
self.get_element("reader-view-button").click()
20+
self.wait.until(lambda _: self.driver.page_source != before_page_source)
21+
self.wait_for_reader_view_open()
22+
return self
23+
24+
def open_reader_view_keys(self) -> BasePage:
25+
"""
26+
Opens the reader view using keys
27+
"""
28+
before_page_source = self.driver.page_source
29+
with self.driver.context(self.driver.CONTEXT_CHROME):
30+
if self.sys_platform() == "Darwin":
31+
self.perform_key_combo(Keys.COMMAND, Keys.ALT, "r")
32+
elif self.sys_platform() == "Linux":
33+
self.perform_key_combo(Keys.CONTROL, Keys.ALT, "r")
34+
else:
35+
self.perform_key_combo(Keys.F9)
36+
self.wait.until(lambda _: self.driver.page_source != before_page_source)
37+
self.wait_for_reader_view_open()
38+
return self
39+
40+
def close_reader_view_searchbar(self) -> BasePage:
41+
"""
42+
Closes the reader view using the search bar
43+
"""
44+
before_page_source = self.driver.page_source
45+
with self.driver.context(self.driver.CONTEXT_CHROME):
46+
self.get_element("reader-view-button").click()
47+
self.wait.until(lambda _: self.driver.page_source != before_page_source)
48+
self.wait_for_reader_view_closed()
49+
return self
50+
51+
def close_reader_view_keys(self) -> BasePage:
52+
"""
53+
Closes the reader view using keys
54+
"""
55+
before_page_source = self.driver.page_source
56+
with self.driver.context(self.driver.CONTEXT_CHROME):
57+
if self.sys_platform() == "Darwin":
58+
self.perform_key_combo(Keys.COMMAND, Keys.ALT, "r")
59+
elif self.sys_platform() == "Linux":
60+
self.perform_key_combo(Keys.CONTROL, Keys.ALT, "r")
61+
else:
62+
self.perform_key_combo(Keys.F9)
63+
self.wait.until(lambda _: self.driver.page_source != before_page_source)
64+
self.wait_for_reader_view_closed()
65+
return self
66+
67+
def wait_for_reader_view_open(self) -> BasePage:
68+
"""
69+
Checks to see if the reader view toolbar is present demonstrating that the reader view is open.
70+
"""
71+
self.element_exists("reader-toolbar")
72+
return self
73+
74+
def wait_for_reader_view_closed(self) -> BasePage:
75+
"""
76+
Checks to see if the reader view toolbar is not present, demonstrating that reader view is not open.
77+
"""
78+
self.element_does_not_exist("reader-toolbar")
79+
return self
Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,19 @@
1-
{}
1+
{
2+
"reader-view-button": {
3+
"selectorData": "reader-mode-button",
4+
"strategy": "id",
5+
"groups": []
6+
},
7+
8+
"reader-toolbar": {
9+
"selectorData": "div[class='toolbar reader-toolbar']",
10+
"strategy": "css",
11+
"groups": []
12+
},
13+
14+
"reader-toolbar-close": {
15+
"selectorData": "button[class='close-button toolbar-button']",
16+
"strategy": "css",
17+
"groups": []
18+
}
19+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from selenium.webdriver import Firefox
2+
3+
from modules.browser_object import ReaderView
4+
from modules.page_object import GenericPage
5+
6+
READER_VIEW_URL = (
7+
"https://support.mozilla.org/en-US/kb/firefox-reader-view-clutter-free-web-pages"
8+
)
9+
10+
11+
def test_reader_view_close_from_sidebar(driver: Firefox):
12+
"""
13+
C130912: Ensures that the reader view can be closed from the sidebar toolbar.
14+
"""
15+
wiki_page = GenericPage(driver, url=READER_VIEW_URL)
16+
reader_view = ReaderView(driver)
17+
18+
wiki_page.open()
19+
reader_view.open_reader_view_searchbar()
20+
reader_view.close_reader_view_searchbar()

0 commit comments

Comments
 (0)