Project

General

Profile

« Previous | Next » 

Revision ad69f9c8

Added by koszko over 1 year ago

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.

View differences:

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