Revision ad69f9c8
Added by koszko over 1 year ago
test/unit/test_item_preview.py | ||
---|---|---|
19 | 19 |
|
20 | 20 |
import pytest |
21 | 21 |
from selenium.webdriver.support.ui import WebDriverWait |
22 |
from selenium.common.exceptions import NoSuchWindowException |
|
22 | 23 |
|
23 | 24 |
from ..extension_crafting import ExtraHTML |
24 | 25 |
from ..script_loader import load_script |
... | ... | |
138 | 139 |
|
139 | 140 |
@pytest.mark.ext_data({ |
140 | 141 |
'background_script': broker_js, |
141 |
'extra_html': ExtraHTML('html/item_preview.html', {}), |
|
142 |
'extra_html': [ |
|
143 |
ExtraHTML('html/item_preview.html', {}), |
|
144 |
ExtraHTML('html/file_preview.html', {}, wrap_into_htmldoc=False) |
|
145 |
], |
|
142 | 146 |
'navigate_to': 'html/item_preview.html' |
143 | 147 |
}) |
144 | 148 |
@pytest.mark.usefixtures('webextension') |
... | ... | |
148 | 152 |
referenced file to be previewed. |
149 | 153 |
""" |
150 | 154 |
execute_in_page(load_script('html/item_preview.js')) |
151 |
# Mock dialog |
|
152 |
execute_in_page('dialog.error = (...args) => window.error_args = args;') |
|
153 | 155 |
|
154 | 156 |
sample_data = make_complete_sample_data() |
155 | 157 |
sample_data['mappings'] = {} |
... | ... | |
162 | 164 |
|
163 | 165 |
execute_in_page( |
164 | 166 |
''' |
165 |
let resource_preview_object = |
|
166 |
resource_preview(arguments[0], undefined, "dummy dialog ctx"); |
|
167 |
let resource_preview_object = resource_preview(arguments[0], undefined); |
|
167 | 168 |
document.body.append(resource_preview_object.main_div); |
168 | 169 |
''', |
169 | 170 |
sample_resource) |
170 | 171 |
|
171 | 172 |
window0 = driver.window_handles[0] |
172 | 173 |
driver.find_element_by_link_text('hello.js').click() |
173 |
WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) > 1) |
|
174 |
window1 = [wh for wh in driver.window_handles if wh != window0][0] |
|
175 |
driver.switch_to.window(window1) |
|
176 |
assert sample_files['hello.js']['contents'] in driver.page_source |
|
177 | 174 |
|
175 |
def blob_url_navigated(driver): |
|
176 |
if len(driver.window_handles) < 2: |
|
177 |
return |
|
178 |
window1 = [wh for wh in driver.window_handles if wh != window0][0] |
|
179 |
driver.switch_to.window(window1) |
|
180 |
try: |
|
181 |
return driver.current_url.startswith('blob') |
|
182 |
except NoSuchWindowException: |
|
183 |
pass |
|
184 |
|
|
185 |
WebDriverWait(driver, 10).until(blob_url_navigated) |
|
186 |
|
|
187 |
assert sample_files['hello.js']['contents'].strip() \ |
|
188 |
in driver.find_element_by_tag_name("pre").text |
|
189 |
|
|
190 |
driver.close() |
|
178 | 191 |
driver.switch_to.window(window0) |
192 |
|
|
179 | 193 |
driver.find_element_by_link_text('bye.js').click() |
180 |
assert driver.execute_script('return window.error_args;') == [ |
|
181 |
'dummy dialog ctx', |
|
182 |
"File missing from Haketilo's internal database :(" |
|
183 |
] |
|
194 |
|
|
195 |
def get_error_span(driver): |
|
196 |
if len(driver.window_handles) < 2: |
|
197 |
return |
|
198 |
window1 = [wh for wh in driver.window_handles if wh != window0][0] |
|
199 |
driver.switch_to.window(window1) |
|
200 |
try: |
|
201 |
return driver.find_element_by_id('error_msg') |
|
202 |
except NoSuchWindowException: |
|
203 |
pass |
|
204 |
|
|
205 |
error_span = WebDriverWait(driver, 10).until(get_error_span) |
|
206 |
assert error_span.is_displayed() |
|
207 |
assert "Couldn't find file in Haketilo's internal database :(" \ |
|
208 |
in error_span.text |
Also available in: Unified diff
add support for testing with other browsers (especially Abrowser and Librewolf)
There are still some spurious failures when running under those newer browsers. Those will be systematically investigated and fixed.