GUI acceptance tests using environment deployed from packages.
Build: #1681 failed
Job: Onezone groups basic failed
user sees and modifies privileges to group which is nested in his parent group[1oz 1op deployed]: Test case result
The below summarizes the result of the test " user sees and modifies privileges to group which is nested in his parent group[1oz 1op deployed]" in build 1,681 of Onedata Products - gui acceptance pkg - Chrome onezone groups basic tests.
- Description
- user sees and modifies privileges to group which is nested in his parent group[1oz 1op deployed]
- Test class
- gui.scenarios.test_onezone_groups_basic
- Method
- test_user_sees_and_modifies_privileges_to_group_which_is_nested_in_his_parent_group[1oz_1op_deployed]
- Duration
- 1 min
- Status
- Failed (New Failure)
Error Log
RuntimeError: no with "Save" text found in MembersItemHeader in MembersItemRow in MembersList in MembersPage in DataPage in Onezone page selenium = {'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="e2fa408b2cb75ac95ba0df65875c768f")>} browser_id = 'browser', member_name = 'group2', member_type = 'group' where = 'space', config = 'User management:\n granted: True' onepanel = <class 'tests.gui.utils.onepanel.Onepanel'> oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'> @wt(parsers.re('user of (?P<browser_id>.*) sets following privileges for ' '"(?P<member_name>.*)" (?P<member_type>user|group) ' 'in (?P<where>space|group|harvester|cluster) members subpage:' r'\n(?P<config>(.|\s)*)')) def set_privileges_in_members_subpage(selenium, browser_id, member_name, member_type, where, config, onepanel, oz_page): try: assert_privileges_in_members_subpage(selenium, browser_id, member_name, member_type, where, config, > onepanel, oz_page) tests/gui/steps/onezone/members.py:515: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = ({'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="e2fa408b2cb75ac95ba0df65875c768f")>}, 'browser', 'group2', 'group', 'space', 'User management:\n granted: True', ...) kwargs = {} ba = <BoundArguments (selenium={'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="e2fa408b2cb75ac95ba0df6...ed: True', onepanel=<class 'tests.gui.utils.onepanel.Onepanel'>, oz_page=<class 'tests.gui.utils.onezone.OZLoggedIn'>)> param = <Parameter "oz_page">, 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 = {'browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="e2fa408b2cb75ac95ba0df65875c768f")>} browser_id = 'browser', member_name = 'group2', member_type = 'groups' where = 'space', config = 'User management:\n granted: True' onepanel = <class 'tests.gui.utils.onepanel.Onepanel'> oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'> @wt(parsers.re('user of (?P<browser_id>.*) sees following privileges of ' '"(?P<member_name>.*)" (?P<member_type>user|group) ' 'in (?P<where>space|group|harvester|cluster) members subpage:' '\n(?P<config>(.|\s)*)')) def assert_privileges_in_members_subpage(selenium, browser_id, member_name, member_type, where, config, onepanel, oz_page): member_type = member_type + 's' privileges = yaml.load(config) tree = get_privilege_tree(selenium, browser_id, onepanel, oz_page, where, member_type, member_name) > tree.assert_privileges(privileges) tests/gui/steps/onezone/members.py:566: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.gui.utils.common.privilege_tree.PrivilegeTree object at 0x7f665d21d080> privileges = {'User management': {'granted': True}} def assert_privileges(self, privileges): """Assert privileges according to given config. For this method only dict should be passed! Config format given in earlier in yaml is as follow: privilege_type: granted: True/False/Partially privilege subtypes: ---> always and only when granted is Partially privilege_subtype: True/False ... Space management: granted: Partially privilege subtypes: Modify space: True Remove space: False User management: granted: False """ > self._assert_privileges(privileges) tests/gui/utils/common/privilege_tree.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.gui.utils.common.privilege_tree.PrivilegeTree object at 0x7f665d21d080> privileges = {'User management': {'granted': True}} def _assert_privileges(self, privileges): for privilege_name, privilege_group in privileges.items(): > self._assert_privilege_group(privilege_group, privilege_name) tests/gui/utils/common/privilege_tree.py:121: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.gui.utils.common.privilege_tree.PrivilegeTree object at 0x7f665d21d080> group = {'granted': True}, name = 'User management' def _assert_privilege_group(self, group, name): privilege_row = self.privilege_groups[name] granted = group['granted'] if granted == 'Partially': sub_privileges = group['privilege subtypes'] privilege_row.expand() for sub_name, sub_granted in sub_privileges.items(): sub_row = privilege_row.get_sub_privilege_row(sub_name) sub_row.assert_privilege_granted(sub_granted) privilege_row.collapse() > privilege_row.assert_privilege_granted(granted) tests/gui/utils/common/privilege_tree.py:133: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.gui.utils.common.privilege_tree.PrivilegeGroup object at 0x7f665d21def0> granted = True def assert_privilege_granted(self, granted): if granted == 'Partially': msg = f'{self.name} should be partially granted but is not' assert self.toggle.is_partial_checked(), msg elif granted: msg = f'{self.name} should be granted but is not' > assert self.toggle.is_checked(), msg E AssertionError: User management should be granted but is not tests/gui/utils/common/privilege_tree.py:82: AssertionError During handling of the above exception, another exception occurred: request = <FixtureRequest for <Function 'test_user_sees_and_modifies_privileges_to_group_which_is_nested_in_his_parent_group[1oz_1op_deployed]'>> @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:78: in wrapper return fun(*ba.args, **ba.kwargs) tests/gui/steps/onezone/members.py:525: in set_privileges_in_members_subpage member_type, onepanel) tests/utils/bdd_utils.py:78: in wrapper return fun(*ba.args, **ba.kwargs) <decorator-gen-751>:2: in click_button_on_element_header_in_members ??? tests/utils/utils.py:90: in wrapper return fun(*args, **kwargs) tests/gui/steps/onezone/members.py:593: in click_button_on_element_header_in_members getattr(header, 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="e2fa408b2cb75ac95ba0df65875c768f", element="8c5bc93a-0c83-44c9-8784-fcafaaee7635")> css_sel = '.save-btn', text = 'Save' err_msg = 'no with "Save" text found in MembersItemHeader in MembersItemRow in MembersList in MembersPage 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 "Save" text found in MembersItemHeader in MembersItemRow in MembersList in MembersPage in DataPage in Onezone page tests/gui/utils/generic.py:111: RuntimeError