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

Build: #2671 failed

Job: Spaces basic failed

user invites other user to space using client1 that user joins to space using client2 and using client3 he sees that he has joined to new space[1oz 1op 1oc-web GUi-web GUi-RESt]: Test case result

The below summarizes the result of the test " user invites other user to space using client1 that user joins to space using client2 and using client3 he sees that he has joined to new space[1oz 1op 1oc-web GUi-web GUi-RESt]" in build 2,671 of Onedata Products - mixed acceptance pkg - Chrome spaces basic tests.
Description
user invites other user to space using client1 that user joins to space using client2 and using client3 he sees that he has joined to new space[1oz 1op 1oc-web GUi-web GUi-RESt]
Test class
mixed.scenarios.test_spaces_basic
Method
test_user_invites_other_user_to_space_using_client1_that_user_joins_to_space_using_client2_and_using_client3_he_sees_that_he_has_joined_to_new_space[1oz_1op_1oc-web GUI-web GUI-REST]
Duration
1 min
Status
Failed (New Failure)

Error Log

AssertionError: user "user1" not found on space "space1" members list
web_elem_root = <selenium.webdriver.remote.webelement.WebElement (session="97ef43821dec26e58609a8557e286868", element="d7626baa-b9bd-44a0-ba74-f01909c452e3")>
css_sel = '.record-name-general'
err_msg = 'no  item found in MembersItemRow in MembersList in MembersPage in DataPage in Onezone page'

    def find_web_elem(web_elem_root, css_sel, err_msg):
        try:
            _scroll_to_css_sel(web_elem_root, css_sel)
>           item = web_elem_root.find_element_by_css_selector(css_sel)

tests/gui/utils/generic.py:101: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.webelement.WebElement (session="97ef43821dec26e58609a8557e286868", element="d7626baa-b9bd-44a0-ba74-f01909c452e3")>
css_selector = '.record-name-general'

    def find_element_by_css_selector(self, css_selector):
        """Finds element within this element's children by CSS selector.
    
            :Args:
             - css_selector - CSS selector string, ex: 'a.nav#home'
    
            :Returns:
             - WebElement - the element if it was found
    
            :Raises:
             - NoSuchElementException - if the element wasn't found
    
            :Usage:
                element = element.find_element_by_css_selector('#foo')
            """
>       return self.find_element(by=By.CSS_SELECTOR, value=css_selector)

/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webelement.py:430: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.webelement.WebElement (session="97ef43821dec26e58609a8557e286868", element="d7626baa-b9bd-44a0-ba74-f01909c452e3")>
by = 'css selector', value = '.record-name-general'

    def find_element(self, by=By.ID, value=None):
        """
            Find an element given a By strategy and locator. Prefer the find_element_by_* methods when
            possible.
    
            :Usage:
                element = element.find_element(By.ID, 'foo')
    
            :rtype: WebElement
            """
        if self._w3c:
            if by == By.ID:
                by = By.CSS_SELECTOR
                value = '[id="%s"]' % value
            elif by == By.TAG_NAME:
                by = By.CSS_SELECTOR
            elif by == By.CLASS_NAME:
                by = By.CSS_SELECTOR
                value = ".%s" % value
            elif by == By.NAME:
                by = By.CSS_SELECTOR
                value = '[name="%s"]' % value
    
>       return self._execute(Command.FIND_CHILD_ELEMENT,
                             {"using": by, "value": value})['value']

/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webelement.py:653: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.webelement.WebElement (session="97ef43821dec26e58609a8557e286868", element="d7626baa-b9bd-44a0-ba74-f01909c452e3")>
command = 'findChildElement'
params = {'id': 'd7626baa-b9bd-44a0-ba74-f01909c452e3', 'sessionId': '97ef43821dec26e58609a8557e286868', 'using': 'css selector', 'value': '.record-name-general'}

    def _execute(self, command, params=None):
        """Executes a command against the underlying HTML element.
    
            Args:
              command: The name of the command to _execute as a string.
              params: A dictionary of named parameters to send with the command.
    
            Returns:
              The command's JSON response loaded into a dictionary object.
            """
        if not params:
            params = {}
        params['id'] = self._id
>       return self._parent.execute(command, params)

/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webelement.py:628: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.chrome.webdriver.WebDriver (session="97ef43821dec26e58609a8557e286868")>
driver_command = 'findChildElement'
params = {'id': 'd7626baa-b9bd-44a0-ba74-f01909c452e3', 'using': 'css selector', 'value': '.record-name-general'}

    def execute(self, driver_command, params=None):
        """
            Sends a command to be executed by a command.CommandExecutor.
    
            :Args:
             - driver_command: The name of the command to execute as a string.
             - params: A dictionary of named parameters to send with the command.
    
            :Returns:
              The command's JSON response loaded into a dictionary object.
            """
        if self.session_id is not None:
            if not params:
                params = {'sessionId': self.session_id}
            elif 'sessionId' not in params:
                params['sessionId'] = self.session_id
    
        params = self._wrap_value(params)
        response = self.command_executor.execute(driver_command, params)
        if response:
>           self.error_handler.check_response(response)

/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py:320: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fb671cd0730>
response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...\\n#18 0x56120e0f33bf \\u003Cunknown>\\n#19 0x56120e10dabe \\u003Cunknown>\\n#20 0x7f64a9969609 \\u003Cunknown>\\n"}}'}

    def check_response(self, response):
        """
            Checks that a JSON response from the WebDriver does not have an error.
    
            :Args:
             - response - The JSON response from the WebDriver server as a dictionary
               object.
    
            :Raises: If the response contains an error message.
            """
        status = response.get('status', None)
        if status is None or status == ErrorCode.SUCCESS:
            return
        value = None
        message = response.get("message", "")
        screen = response.get("screen", "")
        stacktrace = None
        if isinstance(status, int):
            value_json = response.get('value', None)
            if value_json and isinstance(value_json, basestring):
                import json
                try:
                    value = json.loads(value_json)
                    if len(value.keys()) == 1:
                        value = value['value']
                    status = value.get('error', None)
                    if status is None:
                        status = value["status"]
                        message = value["value"]
                        if not isinstance(message, basestring):
                            value = message
                            message = message.get('message')
                    else:
                        message = value.get('message', None)
                except ValueError:
                    pass
    
        exception_class = ErrorInResponseException
        if status in ErrorCode.NO_SUCH_ELEMENT:
            exception_class = NoSuchElementException
        elif status in ErrorCode.NO_SUCH_FRAME:
            exception_class = NoSuchFrameException
        elif status in ErrorCode.NO_SUCH_WINDOW:
            exception_class = NoSuchWindowException
        elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
            exception_class = StaleElementReferenceException
        elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
            exception_class = ElementNotVisibleException
        elif status in ErrorCode.INVALID_ELEMENT_STATE:
            exception_class = InvalidElementStateException
        elif status in ErrorCode.INVALID_SELECTOR \
                or status in ErrorCode.INVALID_XPATH_SELECTOR \
                or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
            exception_class = InvalidSelectorException
        elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
            exception_class = ElementNotSelectableException
        elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
            exception_class = ElementNotInteractableException
        elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
            exception_class = InvalidCookieDomainException
        elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
            exception_class = UnableToSetCookieException
        elif status in ErrorCode.TIMEOUT:
            exception_class = TimeoutException
        elif status in ErrorCode.SCRIPT_TIMEOUT:
            exception_class = TimeoutException
        elif status in ErrorCode.UNKNOWN_ERROR:
            exception_class = WebDriverException
        elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
            exception_class = UnexpectedAlertPresentException
        elif status in ErrorCode.NO_ALERT_OPEN:
            exception_class = NoAlertPresentException
        elif status in ErrorCode.IME_NOT_AVAILABLE:
            exception_class = ImeNotAvailableException
        elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
            exception_class = ImeActivationFailedException
        elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
            exception_class = MoveTargetOutOfBoundsException
        elif status in ErrorCode.JAVASCRIPT_ERROR:
            exception_class = JavascriptException
        elif status in ErrorCode.SESSION_NOT_CREATED:
            exception_class = SessionNotCreatedException
        elif status in ErrorCode.INVALID_ARGUMENT:
            exception_class = InvalidArgumentException
        elif status in ErrorCode.NO_SUCH_COOKIE:
            exception_class = NoSuchCookieException
        elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
            exception_class = ScreenshotException
        elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
            exception_class = ElementClickInterceptedException
        elif status in ErrorCode.INSECURE_CERTIFICATE:
            exception_class = InsecureCertificateException
        elif status in ErrorCode.INVALID_COORDINATES:
            exception_class = InvalidCoordinatesException
        elif status in ErrorCode.INVALID_SESSION_ID:
            exception_class = InvalidSessionIdException
        elif status in ErrorCode.UNKNOWN_METHOD:
            exception_class = UnknownMethodException
        else:
            exception_class = WebDriverException
        if value == '' or value is None:
            value = response['value']
        if isinstance(value, basestring):
            if exception_class == ErrorInResponseException:
                raise exception_class(response, value)
            raise exception_class(value)
        if message == "" and 'message' in value:
            message = value['message']
    
        screen = None
        if 'screen' in value:
            screen = value['screen']
    
        stacktrace = None
        if 'stackTrace' in value and value['stackTrace']:
            stacktrace = []
            try:
                for frame in value['stackTrace']:
                    line = self._value_or_default(frame, 'lineNumber', '')
                    file = self._value_or_default(frame, 'fileName', '<anonymous>')
                    if line:
                        file = "%s:%s" % (file, line)
                    meth = self._value_or_default(frame, 'methodName', '<anonymous>')
                    if 'className' in frame:
                        meth = "%s.%s" % (frame['className'], meth)
                    msg = "    at %s (%s)"
                    msg = msg % (meth, file)
                    stacktrace.append(msg)
            except TypeError:
                pass
        if exception_class == ErrorInResponseException:
            raise exception_class(response, message)
        elif exception_class == UnexpectedAlertPresentException:
            alert_text = None
            if 'data' in value:
                alert_text = value['data'].get('text')
            elif 'alert' in value:
                alert_text = value['alert'].get('text')
            raise exception_class(message, screen, stacktrace, alert_text)
>       raise exception_class(message, screen, stacktrace)
E       selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".record-name-general"}
E         (Session info: chrome=104.0.5112.79)

/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException

During handling of the above exception, another exception occurred:

selenium = {'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="111ef56177625ffd59619c6f6cff6dd9")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="97ef43821dec26e58609a8557e286868")>}
browser_id = 'user2', option = 'sees', member_name = 'user1'
member_type = 'user', parent_name = 'space1', parent_type = 'space'
oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'>
onepanel = <class 'tests.gui.utils.onepanel.Onepanel'>

    @wt(parsers.re('user of (?P<browser_id>.*) (?P<option>does not see|sees) '
                   '"(?P<member_name>.*)" (?P<member_type>user|group) '
                   'on "(?P<parent_name>.*)" ('
                   '?P<parent_type>user|group|space|cluster) '
                   'members list'))
    @repeat_failed(timeout=WAIT_FRONTEND)
    def assert_member_is_in_parent_members_list(selenium, browser_id, option,
                                                member_name, member_type,
                                                parent_name, parent_type, oz_page,
                                                onepanel):
        driver = selenium[browser_id]
        page = _find_members_page(onepanel, oz_page, driver, parent_type)
    
        try:
            if member_type == 'user':
>               page.users.items[member_name]

tests/gui/steps/onezone/members.py:346: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.gui.utils.core.web_objects.PageObjectsSequence object at 0x7fb671cd02e0>
sel = 'user1'

    def __getitem__(self, sel):
        if isinstance(sel, int):
            item = self._getitem_by_idx(sel)
            if item:
                return self.cls(self.driver, item, self.parent)
            else:
                raise RuntimeError('Index out of bound. Requested item at '
                                   '{idx} while limit is {limit} in '
                                   '{parent}'.format(idx=sel, limit=len(self),
                                                     parent=self.parent))
        elif isinstance(sel, str):
>           item = self._getitem_by_id(sel)

tests/gui/utils/core/web_objects.py:79: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.gui.utils.core.web_objects.PageObjectsSequence object at 0x7fb671cd02e0>
sel = 'user1'

    def _getitem_by_id(self, sel):
        for item in self:
>           if item.id == sel:

tests/gui/utils/core/web_objects.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.gui.utils.core.web_elements.Label object at 0x7fb67289f0d0>
instance = <tests.gui.utils.onezone.members_subpage.MembersItemRow object at 0x7fb671a4e2b0>
owner = <class 'tests.gui.utils.onezone.members_subpage.MembersItemRow'>

    def __get__(self, instance, owner):
>       item = super(Label, self).__get__(instance, owner)

tests/gui/utils/core/web_elements.py:76: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.gui.utils.core.web_elements.Label object at 0x7fb67289f0d0>
instance = <tests.gui.utils.onezone.members_subpage.MembersItemRow object at 0x7fb671a4e2b0>
owner = <class 'tests.gui.utils.onezone.members_subpage.MembersItemRow'>

    def __get__(self, instance, owner):
        if instance is None:
            return self
    
>       return find_web_elem(instance.web_elem, self.css_sel,
                             lambda: self._format_msg('no {item} item found '
                                                      'in {parent}', instance))

tests/gui/utils/core/web_elements.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

web_elem_root = <selenium.webdriver.remote.webelement.WebElement (session="97ef43821dec26e58609a8557e286868", element="d7626baa-b9bd-44a0-ba74-f01909c452e3")>
css_sel = '.record-name-general'
err_msg = 'no  item found in MembersItemRow in MembersList in MembersPage in DataPage in Onezone page'

    def find_web_elem(web_elem_root, css_sel, err_msg):
        try:
            _scroll_to_css_sel(web_elem_root, css_sel)
            item = web_elem_root.find_element_by_css_selector(css_sel)
        except NoSuchElementException:
            with suppress(TypeError):
                err_msg = err_msg()
>           raise RuntimeError(err_msg)
E           RuntimeError: no  item found in MembersItemRow in MembersList in MembersPage in DataPage in Onezone page

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

During handling of the above exception, another exception occurred:

request = <FixtureRequest for <Function 'test_user_invites_other_user_to_space_using_client1_that_user_joins_to_space_using_client2_and_using_client3_he_sees_that_he_has_joined_to_new_space[1oz_1op_1oc-web GUI-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)
tests/mixed/steps/space_basic.py:298: in assert_user_is_member_of_space
    assert_user_is_member_of_space_gui(selenium, user, space_name, oz_page,
tests/gui/meta_steps/onezone/spaces.py:246: in assert_user_is_member_of_space_gui
    assert_member_is_in_parent_members_list(selenium, user, option,
tests/utils/bdd_utils.py:78: in wrapper
    return fun(*ba.args, **ba.kwargs)
<decorator-gen-719>:2: in assert_member_is_in_parent_members_list
    ???
tests/utils/utils.py:95: in wrapper
    return fun(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

selenium = {'user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="111ef56177625ffd59619c6f6cff6dd9")>, 'user2': <selenium.webdriver.chrome.webdriver.WebDriver (session="97ef43821dec26e58609a8557e286868")>}
browser_id = 'user2', option = 'sees', member_name = 'user1'
member_type = 'user', parent_name = 'space1', parent_type = 'space'
oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'>
onepanel = <class 'tests.gui.utils.onepanel.Onepanel'>

    @wt(parsers.re('user of (?P<browser_id>.*) (?P<option>does not see|sees) '
                   '"(?P<member_name>.*)" (?P<member_type>user|group) '
                   'on "(?P<parent_name>.*)" ('
                   '?P<parent_type>user|group|space|cluster) '
                   'members list'))
    @repeat_failed(timeout=WAIT_FRONTEND)
    def assert_member_is_in_parent_members_list(selenium, browser_id, option,
                                                member_name, member_type,
                                                parent_name, parent_type, oz_page,
                                                onepanel):
        driver = selenium[browser_id]
        page = _find_members_page(onepanel, oz_page, driver, parent_type)
    
        try:
            if member_type == 'user':
                page.users.items[member_name]
            else:
                page.groups.items[member_name]
        except RuntimeError:
>           assert option == 'does not see', ('{} "{}" not found on {} "{}" '
                                              'members list'.format(member_type,
                                                                    member_name,
                                                                    parent_type,
                                                                    parent_name))
E           AssertionError: user "user1" not found on space "space1" members list

tests/gui/steps/onezone/members.py:350: AssertionError