Project

General

Profile

« Previous | Next » 

Revision 26e4800d

Added by koszko over 1 year ago

more improvements for abrowser&librewolf

View differences:

test/unit/test_popup.py
20 20
import pytest
21 21
import json
22 22
from selenium.webdriver.support.ui import WebDriverWait
23
from selenium.common.exceptions import ElementNotInteractableException
24 23

  
25 24
from ..extension_crafting import ExtraHTML
26 25
from ..script_loader import load_script
27 26
from .utils import *
28 27

  
29
def reload_with_target(driver, target):
30
    current_url = driver.execute_script('return location.href')
31
    driver.execute_script(
32
        '''
33
        window.location.href = arguments[0];
34
        window.location.reload();
35
        ''',
36
        f'{current_url}#{target}')
37

  
38 28
unprivileged_page_info = {
39 29
    'url': 'https://example_a.com/something',
40 30
    'allow': False
......
145 135
    possible values of page_info object passed in message from the content
146 136
    script.
147 137
    """
148
    reload_with_target(driver, f'mock_page_info-{page_info_key}')
138
    initial_url = driver.current_url
139
    driver.get('about:blank')
140
    driver.get(f'{initial_url}#mock_page_info-{page_info_key}')
149 141

  
150
    def get_nodes_by_id(driver):
151
        by_id = driver.execute_script(
152
            '''
153
            const nodes = [...document.querySelectorAll("[id]")];
154
            const reductor = (ob, node) => Object.assign(ob, {[node.id]: node});
155
            return nodes.reduce(reductor, {});
156
            ''');
157
        return by_id if by_id and 'repo_query_container' in by_id else None
158

  
159
    by_id = WebDriverWait(driver, 10).until(get_nodes_by_id)
142
    by_id = driver.execute_script(
143
        '''
144
        const nodes = [...document.querySelectorAll("[id]")];
145
        const reductor = (ob, node) => Object.assign(ob, {[node.id]: node});
146
        return nodes.reduce(reductor, {});
147
        ''')
160 148

  
161 149
    if page_info_key == '':
162 150
        error_msg = 'Page info not avaialable. Try reloading the page.'
......
218 206
    """
219 207
    Test opening and closing the repo query view in popup.
220 208
    """
221
    reload_with_target(driver, f'mock_page_info-blocked_rule')
209
    initial_url = driver.current_url
210
    driver.get('about:blank')
211
    driver.get(f'{initial_url}#mock_page_info-blocked_rule')
222 212

  
223
    driver.implicitly_wait(10)
224 213
    search_but = driver.find_element_by_id("search_resources_but")
225
    driver.implicitly_wait(0)
226

  
227
    # For unknown reasons waiting for search_but.is_displayed() to return True
228
    # does not guarantee the button will be interactable afterwards under newer
229
    # browsers. Hence, this workaround.
230
    def click_search_but(driver):
231
        try:
232
            search_but.click()
233
            return True
234
        except ElementNotInteractableException:
235
            pass
236

  
237
    WebDriverWait(driver, 10).until(click_search_but)
214
    WebDriverWait(driver, 10).until(lambda d: search_but.is_displayed())
215
    search_but.click()
238 216

  
239 217
    containers = dict([(name, driver.find_element_by_id(f'{name}_container'))
240 218
                       for name in ('page_info', 'repo_query')])

Also available in: Unified diff