Acceptance tests using different clients concurrently. Environment deployed from packages.

Build: #2649 failed

Job: Permission POSIX multi failed

user1 creates file using client0 and user2 fails to change its permission using client2[1oz 1op 2oc-RESt-web GUi-RESt]: 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-RESt-web GUi-RESt]" in build 2,649 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-RESt-web GUi-RESt]
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-REST-web GUI-REST]
Jira Issue
Duration
8 mins
Status
Failed (New Failure)

Error Log

RuntimeError: cannot click on button btn in Edit permission tab
selenium = {'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c7e2ab46")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="56af1e19ee0432ea7f47d97b7454c1ff")>}
browser_id = 'user2', 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': {'...ffda5f40>}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}})
modals = <class 'tests.gui.utils.common.modals.Modals'>
popups = <class 'tests.gui.utils.common.popups.Popups'>

    @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, popups):
        modal_name = 'Details modal'
        close_button = 'X'
        try:
            click_modal_button(selenium, browser_id, close_button, modal_name,
                               modals)
>           _assert_posix_permissions(selenium, browser_id, space, path, perm,
                                      oz_page, op_container, tmp_memory,
                                      modals, popups)

tests/gui/meta_steps/oneprovider/permissions.py:64: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

selenium = {'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c7e2ab46")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="56af1e19ee0432ea7f47d97b7454c1ff")>}
browser_id = 'user2', 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': {'...ffda5f40>}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}})
modals = <class 'tests.gui.utils.common.modals.Modals'>
popups = <class 'tests.gui.utils.common.popups.Popups'>

    def _assert_posix_permissions(selenium, browser_id, space, path, perm,
                                  oz_page, op_container, tmp_memory,
                                  modals, popups):
        modal_name = 'Details modal'
        close_button = 'X'
>       open_permission_modal(selenium, browser_id, path, space, tmp_memory, modals,
                              oz_page, op_container, 'posix', popups)

tests/gui/meta_steps/oneprovider/permissions.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

selenium = {'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c7e2ab46")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="56af1e19ee0432ea7f47d97b7454c1ff")>}
browser_id = 'user2', path = 'file1', space = 'space1'
tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...ffda5f40>}, 'browser': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'modal': None}}})
modals = <class 'tests.gui.utils.common.modals.Modals'>
oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'>
op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'>
permission_type = 'posix'
popups = <class 'tests.gui.utils.common.popups.Popups'>

    def open_permission_modal(selenium, browser_id, path, space, tmp_memory, modals,
                              oz_page, op_container, permission_type, popups):
        option = 'Permissions'
        modal_name = 'Details modal'
    
        _click_menu_for_elem_somewhere_in_file_browser(selenium, browser_id, path,
                                                       space, tmp_memory, oz_page,
                                                       op_container)
        click_option_in_data_row_menu_in_browser(selenium, browser_id, option,
                                                 popups)
        assert_tab_in_modal(selenium, browser_id, option, modals, modal_name)
    
>       select_permission_type(selenium, browser_id, permission_type, modals)

tests/gui/meta_steps/oneprovider/permissions.py:41: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

args = ({'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c7e2ab46")>, 'user2': <sel...river (session="56af1e19ee0432ea7f47d97b7454c1ff")>}, 'user2', 'posix', <class 'tests.gui.utils.common.modals.Modals'>)
kwargs = {}
ba = <BoundArguments (selenium={'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c...7d97b7454c1ff")>}, browser_id='user2', permission_type='posix', modals=<class 'tests.gui.utils.common.modals.Modals'>)>
param = <Parameter "modals">, 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:78: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

selenium = {'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c7e2ab46")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="56af1e19ee0432ea7f47d97b7454c1ff")>}
browser_id = 'user2', permission_type = 'posix'
modals = <class 'tests.gui.utils.common.modals.Modals'>

>   ???

<decorator-gen-849>:2: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

fun = <function select_permission_type at 0x7fac00580040>
args = ({'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c7e2ab46")>, 'user2': <sel...river (session="56af1e19ee0432ea7f47d97b7454c1ff")>}, 'user2', 'posix', <class 'tests.gui.utils.common.modals.Modals'>)
kwargs = {}, now = 1669059980.725744, limit = 1669059984.725744
i = 1669059985.0115478

    @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:95: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

selenium = {'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="c884e81a7c91bdc40bc69615c7e2ab46")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="56af1e19ee0432ea7f47d97b7454c1ff")>}
browser_id = 'user2', permission_type = 'posix'
modals = <class 'tests.gui.utils.common.modals.Modals'>

    @wt(parsers.parse('user of {browser_id} selects "{permission_type}" '
                      'permission type in edit permissions panel'))
    @repeat_failed(timeout=WAIT_FRONTEND)
    def select_permission_type(selenium, browser_id, permission_type, modals):
        driver = selenium[browser_id]
        button_name = f'{permission_type.lower()}_button'
>       getattr(modals(driver).details_modal.edit_permissions,
                button_name).click()

tests/gui/steps/oneprovider/permissions.py:36: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.gui.utils.core.web_objects.ButtonPageObject object at 0x7fabffd94ac0>

    def click(self):
>       click_on_web_elem(self.driver, self._click_area,
                          lambda: 'cannot click on {}'.format(self))

tests/gui/utils/core/base.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

driver = <selenium.webdriver.chrome.webdriver.WebDriver (session="56af1e19ee0432ea7f47d97b7454c1ff")>
web_elem = <selenium.webdriver.remote.webelement.WebElement (session="56af1e19ee0432ea7f47d97b7454c1ff", element="582fb026-fd09-427c-8c6b-325c10984208")>
err_msg = 'cannot click on button btn in Edit permission tab', delay = True

    def click_on_web_elem(driver, web_elem, err_msg, delay=True):
        disabled = 'disabled' in web_elem.get_attribute('class')
        # scroll to make the element visible
        if not web_elem.is_displayed():
            web_elem.location_once_scrolled_into_view
        if web_elem.is_enabled() and web_elem.is_displayed() and not disabled:
            # TODO VFS-7484 make optional sleep and localize only those tests that need it or find better alternative
            # currently checking if elem is enabled not always work (probably after striping disabled from web elem
            # elem is not immediately clickable)
            if delay:
                sleep(delay if isinstance(delay, float) else 0.25)
            action = ActionChains(driver)
            action.move_to_element(web_elem).click_and_hold(web_elem).release(web_elem)
            action.perform()
        else:
            with suppress(TypeError):
                err_msg = err_msg()
>           raise RuntimeError(err_msg)
E           RuntimeError: cannot click on button btn in Edit permission tab

tests/gui/utils/generic.py:137: RuntimeError

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-REST-web GUI-REST]'>>

    @pytest.mark.usefixtures(*function_args)
    def scenario_wrapper(request):
>       _execute_scenario(feature, scenario, request, encoding)

/usr/local/lib/python3.8/dist-packages/pytest_bdd/scenario.py:227: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.8/dist-packages/pytest_bdd/scenario.py:189: in _execute_scenario
    _execute_step_function(request, scenario, step, step_func)
/usr/local/lib/python3.8/dist-packages/pytest_bdd/scenario.py:130: in _execute_step_function
    step_func(**kwargs)
tests/utils/bdd_utils.py:78: in wrapper
    return fun(*ba.args, **ba.kwargs)
<decorator-gen-889>:2: in assert_posix_permissions_in_op
    ???
tests/utils/utils.py:95: in wrapper
    return fun(*args, **kwargs)
tests/mixed/steps/data_permissions.py:102: in assert_posix_permissions_in_op
    assert_posix_permissions_in_op_gui(selenium, user, space, item_path,
<decorator-gen-877>:2: in assert_posix_permissions_in_op_gui
    ???
tests/utils/utils.py:95: in wrapper
    return fun(*args, **kwargs)
tests/gui/meta_steps/oneprovider/permissions.py:68: in assert_posix_permissions_in_op_gui
    _assert_posix_permissions(selenium, browser_id, space, path, perm,
tests/gui/meta_steps/oneprovider/permissions.py:49: in _assert_posix_permissions
    open_permission_modal(selenium, browser_id, path, space, tmp_memory, modals,
tests/gui/meta_steps/oneprovider/permissions.py:41: in open_permission_modal
    select_permission_type(selenium, browser_id, permission_type, modals)
tests/utils/bdd_utils.py:78: in wrapper
    return fun(*ba.args, **ba.kwargs)
<decorator-gen-849>:2: in select_permission_type
    ???
tests/utils/utils.py:95: in wrapper
    return fun(*args, **kwargs)
tests/gui/steps/oneprovider/permissions.py:36: in select_permission_type
    getattr(modals(driver).details_modal.edit_permissions,
tests/gui/utils/core/base.py:81: in click
    click_on_web_elem(self.driver, self._click_area,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

driver = <selenium.webdriver.chrome.webdriver.WebDriver (session="56af1e19ee0432ea7f47d97b7454c1ff")>
web_elem = <selenium.webdriver.remote.webelement.WebElement (session="56af1e19ee0432ea7f47d97b7454c1ff", element="4b567f07-dc11-4958-89b2-943c59b282ce")>
err_msg = 'cannot click on button btn in Edit permission tab', delay = True

    def click_on_web_elem(driver, web_elem, err_msg, delay=True):
        disabled = 'disabled' in web_elem.get_attribute('class')
        # scroll to make the element visible
        if not web_elem.is_displayed():
            web_elem.location_once_scrolled_into_view
        if web_elem.is_enabled() and web_elem.is_displayed() and not disabled:
            # TODO VFS-7484 make optional sleep and localize only those tests that need it or find better alternative
            # currently checking if elem is enabled not always work (probably after striping disabled from web elem
            # elem is not immediately clickable)
            if delay:
                sleep(delay if isinstance(delay, float) else 0.25)
            action = ActionChains(driver)
            action.move_to_element(web_elem).click_and_hold(web_elem).release(web_elem)
            action.perform()
        else:
            with suppress(TypeError):
                err_msg = err_msg()
>           raise RuntimeError(err_msg)
E           RuntimeError: cannot click on button btn in Edit permission tab

tests/gui/utils/generic.py:137: RuntimeError