Acceptance tests using different clients concurrently. Environment deployed from packages.
Build: #1554 failed
Job: Permission POSIX multi failed
user1 creates file using client0 and user2 fails to change its permission using client2[1oz 1op 2oc-web GUi-RESt-oneclient1]: Test case result
The below summarizes the result of the test " user1 creates file using client0 and user2 fails to change its permission using client2[1oz 1op 2oc-web GUi-RESt-oneclient1]" in build 1,554 of Onedata Products - mixed acceptance pkg - Chrome permission POSIX multi tests.
- Description
- user1 creates file using client0 and user2 fails to change its permission using client2[1oz 1op 2oc-web GUi-RESt-oneclient1]
- Test class
- mixed.scenarios.test_permission_posix_multi
- Method
- test_user1_creates_file_using_client0_and_user2_fails_to_change_its_permission_using_client2[1oz_1op_2oc-web GUI-REST-oneclient1]
- Duration
- 3 mins
- Status
- Failed (New Failure)
Error Log
RuntimeError: no with "Files" text found in Space in DataPage in Onezone page selenium = {'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="c3559aa549ec7fa35658fba9eecea1e7")>, 'user1': <se...fba9eecea1e7")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="79208555a13601f258041349a3dd198f")>} browser_id = 'user1', space = 'space1', path = 'file1', perm = '664' oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'> op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'> tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...l': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}) modals = <class 'tests.gui.utils.common.modals.Modals'> @repeat_failed(timeout=WAIT_BACKEND) def assert_posix_permissions_in_op_gui(selenium, browser_id, space, path, perm, oz_page, op_container, tmp_memory, modals): try: wt_click_on_confirmation_btn_in_modal(selenium, browser_id, "Cancel", > tmp_memory) tests/gui/meta_steps/oneprovider/permissions.py:57: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = ({'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="c3559aa549ec7fa35658fba9eecea1e7")>, 'user1': <s...': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}})) kwargs = {} ba = <BoundArguments (selenium={'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c3559aa549ec7fa35658fba9e...: None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}))> param = <Parameter "tmp_memory">, ann = <class 'inspect._empty'> @wraps(fun) def wrapper(*args, **kwargs): ba = sig.bind(*args, **kwargs) ba.apply_defaults() for param in parameters.values(): ann = param.annotation if ann is not inspect.Parameter.empty: value = ba.arguments[param.name] try: if not isinstance(value, ann): ba.arguments[param.name] = ann(value) except Exception as ex: msg = f"Cannot cast '{param.name}' <{value}> to {ann}" raise ValueError(msg) from ex > return fun(*ba.args, **ba.kwargs) tests/utils/bdd_utils.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ selenium = {'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="c3559aa549ec7fa35658fba9eecea1e7")>, 'user1': <se...fba9eecea1e7")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="79208555a13601f258041349a3dd198f")>} browser_id = 'user1', button_name = 'Cancel' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...l': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}) @wt(parsers.re(r'user of (?P<browser_id>\w+) clicks "(?P<button_name>.*)" ' '(confirmation )?button in displayed modal')) def wt_click_on_confirmation_btn_in_modal(selenium, browser_id, button_name, tmp_memory): driver = selenium[browser_id] _click_on_confirmation_btn_in_modal(driver, browser_id, button_name, > tmp_memory) tests/gui/steps/modal.py:157: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ driver = <selenium.webdriver.chrome.webdriver.WebDriver (session="c3559aa549ec7fa35658fba9eecea1e7")> browser_id = 'user1', button_name = 'cancel' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...l': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}) def _click_on_confirmation_btn_in_modal(driver, browser_id, button_name, tmp_memory): @repeat_failed(attempts=WAIT_BACKEND, timeout=True) def click_on_btn(d, elem, msg): click_on_web_elem(d, elem, msg) button_name = button_name.lower() modal = tmp_memory[browser_id]['window']['modal'] > buttons = modal.find_elements_by_css_selector('button') E AttributeError: 'NoneType' object has no attribute 'find_elements_by_css_selector' tests/gui/steps/modal.py:141: AttributeError During handling of the above exception, another exception occurred: selenium = {'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="c3559aa549ec7fa35658fba9eecea1e7")>, 'user1': <se...fba9eecea1e7")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="79208555a13601f258041349a3dd198f")>} browser_id = 'user1', path = 'file1', space = 'space1' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...l': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}) oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'> op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'> def _click_menu_for_elem_somewhere_in_file_browser(selenium, browser_id, path, space, tmp_memory, oz_page, op_container): item_name, _ = get_item_name_and_containing_dir_path(path) try: go_to_path_without_last_elem(browser_id, tmp_memory, path) > click_menu_for_elem_in_file_browser(browser_id, item_name, tmp_memory) tests/gui/meta_steps/oneprovider/data.py:37: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = ('user1', 'file1', defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz...': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}})) kwargs = {} ba = <BoundArguments (browser_id='user1', item_name='file1', tmp_memory=defaultdict(<class 'dict'>, {'user1': {'shares': {}...: None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}))> param = <Parameter "tmp_memory">, ann = <class 'inspect._empty'> @wraps(fun) def wrapper(*args, **kwargs): ba = sig.bind(*args, **kwargs) ba.apply_defaults() for param in parameters.values(): ann = param.annotation if ann is not inspect.Parameter.empty: value = ba.arguments[param.name] try: if not isinstance(value, ann): ba.arguments[param.name] = ann(value) except Exception as ex: msg = f"Cannot cast '{param.name}' <{value}> to {ann}" raise ValueError(msg) from ex > return fun(*ba.args, **ba.kwargs) tests/utils/bdd_utils.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = ('user1', 'file1', defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz...': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}})) kwargs = {} ba = <BoundArguments (browser_id='user1', item_name='file1', tmp_memory=defaultdict(<class 'dict'>, {'user1': {'shares': {}...: None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}))> param = <Parameter "tmp_memory">, ann = <class 'inspect._empty'> @wraps(fun) def wrapper(*args, **kwargs): ba = sig.bind(*args, **kwargs) ba.apply_defaults() for param in parameters.values(): ann = param.annotation if ann is not inspect.Parameter.empty: value = ba.arguments[param.name] try: if not isinstance(value, ann): ba.arguments[param.name] = ann(value) except Exception as ex: msg = f"Cannot cast '{param.name}' <{value}> to {ann}" raise ValueError(msg) from ex > return fun(*ba.args, **ba.kwargs) tests/utils/bdd_utils.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ browser_id = 'user1', item_name = 'file1' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...l': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}) > ??? <decorator-gen-493>:2: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fun = <function click_menu_for_elem_in_file_browser at 0x7f6abeb511e0> args = ('user1', 'file1', defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz...': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}})) kwargs = {}, now = 1621605983.5593388, limit = 1621605987.5593388 i = 1621605987.5974576 @decorator def wrapper(fun, *args, **kwargs): now = time() limit, i = (now + timeout, now) if timeout else (attempts, 0) while i < limit: try: result = fun(*args, **kwargs) except exceptions: sleep(interval) i = time() if timeout else i+1 continue else: return result > return fun(*args, **kwargs) tests/utils/utils.py:90: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ browser_id = 'user1', item_name = 'file1' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...l': None}}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}}) @wt(parsers.parse('user of {browser_id} clicks on menu ' 'for "{item_name}" directory in file browser')) @wt(parsers.parse('user of {browser_id} clicks on menu ' 'for "{item_name}" file in file browser')) @repeat_failed(timeout=WAIT_FRONTEND) def click_menu_for_elem_in_file_browser(browser_id, item_name, tmp_memory): > browser = tmp_memory[browser_id]['file_browser'] E KeyError: 'file_browser' tests/gui/steps/oneprovider/file_browser.py:348: KeyError During handling of the above exception, another exception occurred: request = <FixtureRequest for <Function 'test_user1_creates_file_using_client0_and_user2_fails_to_change_its_permission_using_client2[1oz_1op_2oc-web GUI-REST-oneclient1]'>> @pytest.mark.usefixtures(*function_args) def scenario_wrapper(request): > _execute_scenario(feature, scenario, request, encoding) /usr/local/lib/python3.6/dist-packages/pytest_bdd/scenario.py:227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/local/lib/python3.6/dist-packages/pytest_bdd/scenario.py:189: in _execute_scenario _execute_step_function(request, scenario, step, step_func) /usr/local/lib/python3.6/dist-packages/pytest_bdd/scenario.py:130: in _execute_step_function step_func(**kwargs) tests/utils/bdd_utils.py:77: in wrapper return fun(*ba.args, **ba.kwargs) <decorator-gen-771>:2: in assert_posix_permissions_in_op ??? tests/utils/utils.py:90: in wrapper return fun(*args, **kwargs) tests/mixed/steps/data_permissions.py:103: in assert_posix_permissions_in_op tmp_memory, modals) <decorator-gen-763>:2: in assert_posix_permissions_in_op_gui ??? tests/utils/utils.py:90: in wrapper return fun(*args, **kwargs) tests/gui/meta_steps/oneprovider/permissions.py:64: in assert_posix_permissions_in_op_gui modals) tests/gui/meta_steps/oneprovider/permissions.py:45: in _assert_posix_permissions oz_page, op_container, 'posix') tests/gui/meta_steps/oneprovider/permissions.py:36: in open_permission_modal oz_page, op_container) tests/gui/meta_steps/oneprovider/data.py:406: in open_modal_for_file_browser_item op_container) tests/gui/meta_steps/oneprovider/data.py:40: in _click_menu_for_elem_somewhere_in_file_browser tmp_memory, space) tests/utils/bdd_utils.py:77: in wrapper return fun(*ba.args, **ba.kwargs) tests/gui/meta_steps/oneprovider/data.py:396: in go_to_filebrowser oz_page) tests/utils/bdd_utils.py:77: in wrapper return fun(*ba.args, **ba.kwargs) <decorator-gen-635>:2: in click_on_option_of_space_on_left_sidebar_menu ??? tests/utils/utils.py:90: in wrapper return fun(*args, **kwargs) tests/gui/steps/onezone/spaces.py:272: in click_on_option_of_space_on_left_sidebar_menu transform(option)).click() tests/gui/utils/core/web_elements.py:58: in __get__ elem = super(WebItem, self).__get__(instance, owner) tests/gui/utils/core/web_elements.py:52: in __get__ lambda: self._format_msg(err_msg, instance, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ web_elem_root = <selenium.webdriver.remote.webelement.WebElement (session="c3559aa549ec7fa35658fba9eecea1e7", element="75a7424f-938a-43a8-b644-1022c5042370")> css_sel = '.one-list-level-2 .item-header', text = 'Files' err_msg = 'no with "Files" text found in Space in DataPage in Onezone page' def find_web_elem_with_text(web_elem_root, css_sel, text, err_msg): items = web_elem_root.find_elements_by_css_selector(css_sel) _scroll_to_css_sel(web_elem_root, css_sel) for item in items: if item.text.lower() == text.lower(): return item else: with suppress(TypeError): err_msg = err_msg() > raise RuntimeError(err_msg) E RuntimeError: no with "Files" text found in Space in DataPage in Onezone page tests/gui/utils/generic.py:111: RuntimeError