Skip to content

chore: release v5.38.0 (#1058) #322

chore: release v5.38.0 (#1058)

chore: release v5.38.0 (#1058) #322

GitHub Actions / test-report-ui-9.0.8-input failed Feb 6, 2024 in 1s

117 passed, 2 failed and 0 skipped

Tests failed

❌ test-results/junit.xml

119 tests were completed in 1435s with 117 passed, 2 failed and 0 skipped.

Test suite Passed Failed Skipped Time
pytest 117✅ 2❌ 1435s

❌ pytest

test_input_page.chrome_TestInputPage
  ✅ test_inputs_displayed_columns
  ✅ test_inputs_pagination_list
  ✅ test_inputs_pagination
  ✅ test_inputs_sort_functionality
  ✅ test_inputs_filter_functionality_negative
  ✅ test_inputs_filter_functionality_positive
  ✅ test_inputs_default_rows_in_table
  ✅ test_inputs_create_new_input_list_values
  ✅ test_inputs_input_type_list_values
  ✅ test_inputs_more_info
  ✅ test_inputs_enable_disable
  ✅ test_inputs_count
  ✅ test_inputs_title_and_description
  ✅ test_example_input_one_required_field_name
  ✅ test_example_input_one_valid_length_name
  ✅ test_example_input_one_valid_input_name
  ✅ test_example_input_one_list_single_select_group_test
  ✅ test_example_input_one_select_value_single_select_group_test
  ✅ test_example_input_one_search_value_single_select_group_test
  ✅ test_example_input_one_default_value_multiple_select_test
  ✅ test_example_input_one_list_multiple_select_test
  ✅ test_example_input_one_select_value_multiple_select_test
  ✅ test_example_input_one_select_multiple_values_multiple_select_test
  ✅ test_example_input_one_deselect_multiple_select_test
  ✅ test_example_input_one_search_value_multiple_select_test
  ✅ test_example_input_one_default_value_example_checkbox
  ✅ test_example_input_one_unchecked_example_checkbox
  ✅ test_example_input_one_checked_example_checkbox
  ✅ test_example_input_one_default_value_example_radio
  ✅ test_example_input_one_select_value_example_radio
  ✅ test_example_input_one_required_field_interval
  ✅ test_example_input_one_valid_input_interval
  ✅ test_example_input_one_required_field_index
  ✅ test_example_input_one_default_value_index
  ✅ test_example_input_one_required_field_example_account
  ✅ test_example_input_one_required_field_object
  ✅ test_example_input_one_required_field_object_fields
  ✅ test_example_input_one_required_field_order_by
  ✅ test_example_input_one_default_value_order_by
  ✅ test_example_input_one_required_field_textarea
  ✅ test_example_input_one_fields_label_entity
  ✅ test_example_input_two_fields_label_entity
  ✅ test_example_input_one_help_text_entity
  ✅ test_example_input_one_valid_input_query_start_date
  ✅ test_example_input_one_default_value_limit
  ✅ test_example_input_one_help_link
  ✅ test_example_input_one_add_frontend_backend_validation
  ✅ test_example_input_one_edit_uneditable_field_name
  ✅ test_example_input_one_edit_frontend_backend_validation
  ✅ test_example_input_one_clone_default_values
  ✅ test_example_input_one_clone_frontend_backend_validation
  ✅ test_example_input_one_delete_row_frontend_validation
  ✅ test_example_input_one_add_close_entity
  ✅ test_example_input_one_edit_close_entity
  ✅ test_example_input_one_clone_close_entity
  ✅ test_example_input_one_delete_close_entity
  ✅ test_example_input_one_add_cancel_entity
  ✅ test_example_input_one_edit_cancel_entity
  ✅ test_example_input_one_clone_cancel_entity
  ✅ test_example_input_one_delete_cancel_entity
  ✅ test_example_input_one_add_duplicate_names
  ✅ test_example_input_one_clone_duplicate_names
  ✅ test_example_input_one_add_valid_title
  ✅ test_example_input_one_edit_valid_title
  ✅ test_example_input_one_clone_valid_title
  ✅ test_example_input_one_delete_valid_title
  ✅ test_example_input_one_delete_valid_prompt_message
  ✅ test_example_input_two_required_field_name
  ✅ test_example_input_two_valid_length_name
  ✅ test_example_input_two_valid_input_name
  ✅ test_example_input_two_required_field_interval
  ✅ test_example_input_two_valid_input_interval
  ✅ test_example_input_two_required_field_index
  ✅ test_example_input_two_default_value_index
  ✅ test_example_input_two_required_field_example_example_account
  ✅ test_example_input_two_required_field_example_multiple_select
  ✅ test_example_input_two_list_example_multiple_select
  ✅ test_example_input_two_select_select_value_example_multiple_select
  ✅ test_example_input_two_select_multiple_values_example_multiple_select
  ✅ test_example_input_two_help_text_entity
  ✅ test_example_input_two_checked_example_checkbox
  ✅ test_example_input_two_unchecked_example_checkbox
  ✅ test_example_input_two_required_field_example_radio
  ✅ test_example_input_two_select_value_example_radio
  ✅ test_example_input_two_valid_input_query_start_date
  ✅ test_example_input_two_add_frontend_backend_validation
  ✅ test_example_input_two_edit_uneditable_field_name
  ✅ test_example_input_two_edit_frontend_backend_validation
  ✅ test_example_input_two_clone_default_values
  ✅ test_example_input_two_clone_frontend_backend_validation
  ✅ test_example_input_two_delete_row_frontend_backend_validation
  ✅ test_example_input_two_add_close_entity
  ✅ test_example_input_two_edit_close_entity
  ✅ test_example_input_two_clone_close_entity
  ✅ test_example_input_two_delete_close_entity
  ✅ test_example_input_two_add_cancel_entity
  ✅ test_example_input_two_edit_cancel_entity
  ✅ test_example_input_two_clone_cancel_entity
  ✅ test_example_input_two_delete_cancel_entity
  ✅ test_example_input_two_add_duplicate_names
  ✅ test_example_input_two_clone_duplicate_names
  ✅ test_example_input_two_add_valid_title
  ✅ test_example_input_two_edit_valid_title
  ✅ test_example_input_two_clone_valid_title
  ✅ test_example_input_two_delete_valid_title
  ✅ test_example_input_two_delete_valid_prompt_message
  ✅ test_inputs_enable_all_title_message
  ✅ test_inputs_disable_all_title_message
  ✅ test_inputs_enable_all_close
  ✅ test_inputs_disable_all_close
  ✅ test_inputs_enable_all_deny
  ✅ test_inputs_disable_all_deny
  ✅ test_inputs_disable_enable_all
  ✅ test_inputs_disable_all_enable_all_input_one_input_two
  ✅ test_inputs_enable_all_some_already_enabled
  ✅ test_inputs_disable_all_some_already_disabled
  ✅ test_inputs_textarea_height
  ❌ test_inputs_textarea_big_input
	self = <test_input_page.TestInputPage object at 0x7fc322163790>
  ❌ test_inputs_textarea_scroll
	self = <test_input_page.TestInputPage object at 0x7fc32215d450>

Annotations

Check failure on line 0 in test-results/junit.xml

See this annotation in the file changed.

@github-actions github-actions / test-report-ui-9.0.8-input

pytest ► test_input_page.chrome_TestInputPage ► test_inputs_textarea_big_input

Failed test found in:
  test-results/junit.xml
Error:
  self = <test_input_page.TestInputPage object at 0x7fc322163790>
Raw output
self = <test_input_page.TestInputPage object at 0x7fc322163790>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fc32202cb10>
ucc_smartx_rest_helper = <pytest_splunk_addon_ui_smartx.base_test.RestHelper object at 0x7fc322328750>
add_input_one = {'entry': [{'acl': {'app': 'Splunk_TA_UCCExample', 'can_change_perms': True, 'can_list': True, 'can_share_app': True, ...nf-inputs/_reload', 'create': '/servicesNS/nobody/Splunk_TA_UCCExample/configs/conf-inputs/_new'}, 'messages': [], ...}

    @pytest.mark.execute_enterprise_cloud_true
    @pytest.mark.forwarder
    @pytest.mark.input
    def test_inputs_textarea_big_input(
        self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, add_input_one
    ):
        """
        Verifies that textarea can handle big inputs
        """
>       input_page = InputPage(ucc_smartx_selenium_helper, ucc_smartx_rest_helper)

tests/ui/test_input_page.py:2442: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/ui/pages/input_page.py:251: in __init__
    super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page)
../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35: in __init__
    self.open()
tests/ui/pages/input_page.py:304: in open
    self.browser.get(f"{self.splunk_web_url}/en-US/app/{C.ADDON_NAME}/inputs")
../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py:333: in get
    self.execute(Command.GET, {'url': url})
../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py:321: in execute
    self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fc32202c9d0>
response = {'status': 404, 'value': '{"value":{"error":"invalid session id","message":"invalid session id","stacktrace":"#0 0x559...\\n#11 0x55921458369f \\u003Cunknown>\\n#12 0x55921429c8da \\u003Cunknown>\\n#13 0x7fe89e429d90 \\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.InvalidSessionIdException: Message: invalid session id

../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py:242: InvalidSessionIdException

Check failure on line 0 in test-results/junit.xml

See this annotation in the file changed.

@github-actions github-actions / test-report-ui-9.0.8-input

pytest ► test_input_page.chrome_TestInputPage ► test_inputs_textarea_scroll

Failed test found in:
  test-results/junit.xml
Error:
  self = <test_input_page.TestInputPage object at 0x7fc32215d450>
Raw output
self = <test_input_page.TestInputPage object at 0x7fc32215d450>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fc32202cb10>
ucc_smartx_rest_helper = <pytest_splunk_addon_ui_smartx.base_test.RestHelper object at 0x7fc322328750>
add_input_one = {'entry': [{'acl': {'app': 'Splunk_TA_UCCExample', 'can_change_perms': True, 'can_list': True, 'can_share_app': True, ...nf-inputs/_reload', 'create': '/servicesNS/nobody/Splunk_TA_UCCExample/configs/conf-inputs/_new'}, 'messages': [], ...}

    @pytest.mark.execute_enterprise_cloud_true
    @pytest.mark.forwarder
    @pytest.mark.input
    def test_inputs_textarea_scroll(
        self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, add_input_one
    ):
        """
        Verifies that textarea height values
        """
>       input_page = InputPage(ucc_smartx_selenium_helper, ucc_smartx_rest_helper)

tests/ui/test_input_page.py:2462: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/ui/pages/input_page.py:251: in __init__
    super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page)
../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35: in __init__
    self.open()
tests/ui/pages/input_page.py:304: in open
    self.browser.get(f"{self.splunk_web_url}/en-US/app/{C.ADDON_NAME}/inputs")
../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py:333: in get
    self.execute(Command.GET, {'url': url})
../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py:321: in execute
    self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fc32202c9d0>
response = {'status': 404, 'value': '{"value":{"error":"invalid session id","message":"invalid session id","stacktrace":"#0 0x559...\\n#11 0x55921458369f \\u003Cunknown>\\n#12 0x55921429c8da \\u003Cunknown>\\n#13 0x7fe89e429d90 \\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.InvalidSessionIdException: Message: invalid session id

../../../.cache/pypoetry/virtualenvs/splunk-add-on-ucc-framework-rPXMmn5S-py3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py:242: InvalidSessionIdException