Skip to content

website/docs: update flow context ref (cherry-pick #17723 to version-2025.10)#17732

Merged
BeryJu merged 1 commit intoversion-2025.10from
cherry-pick/17723-to-version-2025.10
Oct 27, 2025
Merged

website/docs: update flow context ref (cherry-pick #17723 to version-2025.10)#17732
BeryJu merged 1 commit intoversion-2025.10from
cherry-pick/17723-to-version-2025.10

Conversation

@authentik-automation
Copy link
Contributor

Cherry-pick of #17723 to version-2025.10 branch.

Original PR: #17723
Original Author: @BeryJu
Cherry-picked commit: 078e308

* website/docs: update flow context ref

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* format

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* Update website/docs/add-secure-apps/flows-stages/flow/context/index.mdx

Co-authored-by: Dominic R <dominic@sdko.org>
Signed-off-by: Jens L. <jens@beryju.org>

* Update website/docs/add-secure-apps/flows-stages/flow/context/index.mdx

Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: Jens L. <jens@beryju.org>

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Signed-off-by: Jens L. <jens@beryju.org>
Co-authored-by: Dominic R <dominic@sdko.org>
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
@netlify
Copy link

netlify bot commented Oct 27, 2025

Deploy Preview for authentik-docs ready!

Name Link
🔨 Latest commit c3b4dd3
🔍 Latest deploy log https://app.netlify.com/projects/authentik-docs/deploys/68ffb6865b586300086f2e8c
😎 Deploy Preview https://deploy-preview-17732--authentik-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Oct 27, 2025

Deploy Preview for authentik-integrations ready!

Name Link
🔨 Latest commit c3b4dd3
🔍 Latest deploy log https://app.netlify.com/projects/authentik-integrations/deploys/68ffb686c273900008649c97
😎 Deploy Preview https://deploy-preview-17732--authentik-integrations.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@codecov
Copy link

codecov bot commented Oct 27, 2025

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
2195 1 2194 2
View the top 1 failed test(s) by shortest run time
tests.e2e.test_provider_proxy_forward.TestProviderProxyForward::test_envoy
Stack Traces | 889s run time
self = <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>
args = (), kwargs = {}

    @wraps(func)
    def wrapper(self: TransactionTestCase, *args, **kwargs):
        """Run test again if we're below max_retries, including tearDown and
        setUp. Otherwise raise the error"""
        nonlocal count
        try:
>           return func(self, *args, **kwargs)

tests/e2e/utils.py:324: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>

    @retry()
    def test_envoy(self):
        """Test envoy"""
        self.run_container(
            image="docker.io/envoyproxy/envoy:v1.25-latest",
            ports={
                "10000": "80",
            },
            volumes={
                f"{Path(__file__).parent / "proxy_forward_auth" / "envoy_single" / "envoy.yaml"}": {
                    "bind": ".../etc/envoy/envoy.yaml",
                }
            },
        )
    
        self.prepare()
    
>       self.driver.get("http:.../localhost/api")

tests/e2e/test_provider_proxy_forward.py:170: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.webdriver.WebDriver (session="a33ce1ce6c2c7cb59c1f957a876dec13")>
url = 'http:.../localhost/api'

    def get(self, url: str) -> None:
        """Navigate the browser to the specified URL in the current window or
        tab.
    
        The method does not return until the page is fully loaded (i.e. the
        onload event has fired).
    
        Parameters:
        -----------
        url : str
            - The URL to be opened by the browser.
            - Must include the protocol (e.g., http://, https://).
    
        Example:
        --------
        >>> driver = webdriver.Chrome()
        >>> driver.get("https://example.com")
        """
>       self.execute(Command.GET, {"url": url})

.venv/lib/python3.13.../webdriver/remote/webdriver.py:473: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.webdriver.WebDriver (session="a33ce1ce6c2c7cb59c1f957a876dec13")>
driver_command = 'get', params = {'url': 'http:.../localhost/api'}

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

.venv/lib/python3.13.../webdriver/remote/webdriver.py:448: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f52dcb8c8a0>
response = {'status': 404, 'value': '{\n  "value": {\n    "message": "Unable to find session with ID: a33ce1ce6c2c7cb59c1f957a876...a:642)\\n\\tat java.base\\u002fjava.lang.Thread.run(Thread.java:1583)\\n",\n    "error": "invalid session id"\n  }\n}'}

    def check_response(self, response: Dict[str, Any]) -> None:
        """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 not status or status == ErrorCode.SUCCESS:
            return
        value = None
        message = response.get("message", "")
        screen: str = response.get("screen", "")
        stacktrace = None
        if isinstance(status, int):
            value_json = response.get("value", None)
            if value_json and isinstance(value_json, str):
                import json
    
                try:
                    value = json.loads(value_json)
                    if len(value) == 1:
                        value = value["value"]
                    status = value.get("error", None)
                    if not status:
                        status = value.get("status", ErrorCode.UNKNOWN_ERROR)
                        message = value.get("value") or value.get("message")
                        if not isinstance(message, str):
                            value = message
                            message = message.get("message")
                    else:
                        message = value.get("message", None)
                except ValueError:
                    pass
    
        exception_class: Type[WebDriverException]
        e = ErrorCode()
        error_codes = [item for item in dir(e) if not item.startswith("__")]
        for error_code in error_codes:
            error_info = getattr(ErrorCode, error_code)
            if isinstance(error_info, list) and status in error_info:
                exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
                break
        else:
            exception_class = WebDriverException
    
        if not value:
            value = response["value"]
        if isinstance(value, str):
            raise exception_class(value)
        if message == "" and "message" in value:
            message = value["message"]
    
        screen = None  # type: ignore[assignment]
        if "screen" in value:
            screen = value["screen"]
    
        stacktrace = None
        st_value = value.get("stackTrace") or value.get("stacktrace")
        if st_value:
            if isinstance(st_value, str):
                stacktrace = st_value.split("\n")
            else:
                stacktrace = []
                try:
                    for frame in st_value:
                        line = frame.get("lineNumber", "")
                        file = frame.get("fileName", "<anonymous>")
                        if line:
                            file = f"{file}:{line}"
                        meth = frame.get("methodName", "<anonymous>")
                        if "className" in frame:
                            meth = f"{frame['className']}.{meth}"
                        msg = "    at %s (%s)"
                        msg = msg % (meth, file)
                        stacktrace.append(msg)
                except TypeError:
                    pass
        if 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)  # type: ignore[call-arg]  # mypy is not smart enough here
>       raise exception_class(message, screen, stacktrace)
E       selenium.common.exceptions.InvalidSessionIdException: Message: Unable to find session with ID: a33ce1ce6c2c7cb59c1f957a876dec13
E       Build info: version: '4.37.0', revision: '3c1da1e342'
E       System info: os.name: 'Linux', os.arch: 'amd64', os.version: '6.11.0-1018-azure', java.version: '21.0.8'
E       Driver info: driver.version: unknown
E       Stacktrace:
E       org.openqa.selenium.NoSuchSessionException: Unable to find session with ID: a33ce1ce6c2c7cb59c1f957a876dec13
E       Build info: version: '4.37.0', revision: '3c1da1e342'
E       System info: os.name: 'Linux', os.arch: 'amd64', os.version: '6.11.0-1018-azure', java.version: '21.0.8'
E       Driver info: driver.version: unknown
E       	at org.openqa.selenium.grid.sessionmap.local.LocalSessionMap.get(LocalSessionMap.java:119)
E       	at org.openqa.selenium.grid.sessionmap.SessionMap.getUri(SessionMap.java:84)
E       	at org.openqa.selenium.grid.router.HandleSession.lambda$loadSessionId$4(HandleSession.java:231)
E       	at org.openqa.selenium.grid.router.HandleSession.execute(HandleSession.java:188)
E       	at org.openqa.selenium.remote.http.Route$PredicatedRoute.handle(Route.java:398)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.http.Route$CombinedRoute.handle(Route.java:361)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.grid.router.Router.execute(Router.java:89)
E       	at org.openqa.selenium.grid.web.EnsureSpecCompliantResponseHeaders.lambda$apply$0(EnsureSpecCompliantResponseHeaders.java:34)
E       	at org.openqa.selenium.remote.http.Filter$1.execute(Filter.java:63)
E       	at org.openqa.selenium.remote.http.Route$CombinedRoute.handle(Route.java:361)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.http.Route$NestedRoute.handle(Route.java:271)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.http.Route$CombinedRoute.handle(Route.java:361)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.AddWebDriverSpecHeaders.lambda$apply$0(AddWebDriverSpecHeaders.java:35)
E       	at org.openqa.selenium.remote.ErrorFilter.lambda$apply$0(ErrorFilter.java:44)
E       	at org.openqa.selenium.remote.http.Filter$1.execute(Filter.java:63)
E       	at org.openqa.selenium.remote.ErrorFilter.lambda$apply$0(ErrorFilter.java:44)
E       	at org.openqa.selenium.remote.http.Filter$1.execute(Filter.java:63)
E       	at org.openqa.selenium.netty.server.SeleniumHandler.lambda$channelRead0$0(SeleniumHandler.java:49)
E       	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
E       	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
E       	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
E       	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
E       	at java.base/java.lang.Thread.run(Thread.java:1583)

.venv/lib/python3.13.../webdriver/remote/errorhandler.py:232: InvalidSessionIdException

During handling of the above exception, another exception occurred:

self = <unittest.case._Outcome object at 0x7f52e3780fc0>
test_case = <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>
subTest = False

    @contextlib.contextmanager
    def testPartExecutor(self, test_case, subTest=False):
        old_success = self.success
        self.success = True
        try:
>           yield

.../hostedtoolcache/Python/3.13.7........./x64/lib/python3.13/unittest/case.py:58: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>
result = <TestCaseFunction test_envoy>

    def run(self, result=None):
        if result is None:
            result = self.defaultTestResult()
            startTestRun = getattr(result, 'startTestRun', None)
            stopTestRun = getattr(result, 'stopTestRun', None)
            if startTestRun is not None:
                startTestRun()
        else:
            stopTestRun = None
    
        result.startTest(self)
        try:
            testMethod = getattr(self, self._testMethodName)
            if (getattr(self.__class__, "__unittest_skip__", False) or
                getattr(testMethod, "__unittest_skip__", False)):
                # If the class or method was skipped.
                skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
                            or getattr(testMethod, '__unittest_skip_why__', ''))
                _addSkip(result, self, skip_why)
                return result
    
            expecting_failure = (
                getattr(self, "__unittest_expecting_failure__", False) or
                getattr(testMethod, "__unittest_expecting_failure__", False)
            )
            outcome = _Outcome(result)
            start_time = time.perf_counter()
            try:
                self._outcome = outcome
    
                with outcome.testPartExecutor(self):
                    self._callSetUp()
                if outcome.success:
                    outcome.expecting_failure = expecting_failure
                    with outcome.testPartExecutor(self):
>                       self._callTestMethod(testMethod)

.../hostedtoolcache/Python/3.13.7........./x64/lib/python3.13/unittest/case.py:651: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>
method = <bound method TestProviderProxyForward.test_envoy of <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>>

    def _callTestMethod(self, method):
>       if method() is not None:

.../hostedtoolcache/Python/3.13.7........./x64/lib/python3.13/unittest/case.py:606: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>
args = (), kwargs = {}

    @wraps(func)
    def wrapper(self: TransactionTestCase, *args, **kwargs):
        """Run test again if we're below max_retries, including tearDown and
        setUp. Otherwise raise the error"""
        nonlocal count
        try:
            return func(self, *args, **kwargs)
    
        except tuple(exceptions) as exc:
            count += 1
            if count > max_retires:
                logger.debug("Exceeded retry count", exc=exc, test=self)
    
                raise exc
            logger.debug("Retrying on error", exc=exc, test=self)
>           self.tearDown()

tests/e2e/utils.py:333: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tests.e2e.test_provider_proxy_forward.TestProviderProxyForward testMethod=test_envoy>

    def tearDown(self):
        if IS_CI:
            print("::endgroup::", file=stderr)
        super().tearDown()
        if IS_CI:
            print("::group::Browser logs")
        # Very verbose way to get browser logs
        # https://github..../selenium/pull/15641
        # for some reason this removes the `get_log` API from Remote Webdriver
        # and only keeps it on the local Chrome web driver, even when using
        # a remote chrome driver...? (nvm the fact this was released as a minor version)
>       for line in self.driver.execute(Command.GET_LOG, {"type": "browser"})["value"]:

tests/e2e/utils.py:203: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.webdriver.WebDriver (session="a33ce1ce6c2c7cb59c1f957a876dec13")>
driver_command = 'getLog', params = {'type': 'browser'}

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

.venv/lib/python3.13.../webdriver/remote/webdriver.py:448: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f52dcb8c8a0>
response = {'status': 404, 'value': '{\n  "value": {\n    "message": "Unable to find session with ID: a33ce1ce6c2c7cb59c1f957a876...a:642)\\n\\tat java.base\\u002fjava.lang.Thread.run(Thread.java:1583)\\n",\n    "error": "invalid session id"\n  }\n}'}

    def check_response(self, response: Dict[str, Any]) -> None:
        """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 not status or status == ErrorCode.SUCCESS:
            return
        value = None
        message = response.get("message", "")
        screen: str = response.get("screen", "")
        stacktrace = None
        if isinstance(status, int):
            value_json = response.get("value", None)
            if value_json and isinstance(value_json, str):
                import json
    
                try:
                    value = json.loads(value_json)
                    if len(value) == 1:
                        value = value["value"]
                    status = value.get("error", None)
                    if not status:
                        status = value.get("status", ErrorCode.UNKNOWN_ERROR)
                        message = value.get("value") or value.get("message")
                        if not isinstance(message, str):
                            value = message
                            message = message.get("message")
                    else:
                        message = value.get("message", None)
                except ValueError:
                    pass
    
        exception_class: Type[WebDriverException]
        e = ErrorCode()
        error_codes = [item for item in dir(e) if not item.startswith("__")]
        for error_code in error_codes:
            error_info = getattr(ErrorCode, error_code)
            if isinstance(error_info, list) and status in error_info:
                exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
                break
        else:
            exception_class = WebDriverException
    
        if not value:
            value = response["value"]
        if isinstance(value, str):
            raise exception_class(value)
        if message == "" and "message" in value:
            message = value["message"]
    
        screen = None  # type: ignore[assignment]
        if "screen" in value:
            screen = value["screen"]
    
        stacktrace = None
        st_value = value.get("stackTrace") or value.get("stacktrace")
        if st_value:
            if isinstance(st_value, str):
                stacktrace = st_value.split("\n")
            else:
                stacktrace = []
                try:
                    for frame in st_value:
                        line = frame.get("lineNumber", "")
                        file = frame.get("fileName", "<anonymous>")
                        if line:
                            file = f"{file}:{line}"
                        meth = frame.get("methodName", "<anonymous>")
                        if "className" in frame:
                            meth = f"{frame['className']}.{meth}"
                        msg = "    at %s (%s)"
                        msg = msg % (meth, file)
                        stacktrace.append(msg)
                except TypeError:
                    pass
        if 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)  # type: ignore[call-arg]  # mypy is not smart enough here
>       raise exception_class(message, screen, stacktrace)
E       selenium.common.exceptions.InvalidSessionIdException: Message: Unable to find session with ID: a33ce1ce6c2c7cb59c1f957a876dec13
E       Build info: version: '4.37.0', revision: '3c1da1e342'
E       System info: os.name: 'Linux', os.arch: 'amd64', os.version: '6.11.0-1018-azure', java.version: '21.0.8'
E       Driver info: driver.version: unknown
E       Stacktrace:
E       org.openqa.selenium.NoSuchSessionException: Unable to find session with ID: a33ce1ce6c2c7cb59c1f957a876dec13
E       Build info: version: '4.37.0', revision: '3c1da1e342'
E       System info: os.name: 'Linux', os.arch: 'amd64', os.version: '6.11.0-1018-azure', java.version: '21.0.8'
E       Driver info: driver.version: unknown
E       	at org.openqa.selenium.grid.sessionmap.local.LocalSessionMap.get(LocalSessionMap.java:119)
E       	at org.openqa.selenium.grid.sessionmap.SessionMap.getUri(SessionMap.java:84)
E       	at org.openqa.selenium.grid.router.HandleSession.lambda$loadSessionId$4(HandleSession.java:231)
E       	at org.openqa.selenium.grid.router.HandleSession.execute(HandleSession.java:188)
E       	at org.openqa.selenium.remote.http.Route$PredicatedRoute.handle(Route.java:398)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.http.Route$CombinedRoute.handle(Route.java:361)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.grid.router.Router.execute(Router.java:89)
E       	at org.openqa.selenium.grid.web.EnsureSpecCompliantResponseHeaders.lambda$apply$0(EnsureSpecCompliantResponseHeaders.java:34)
E       	at org.openqa.selenium.remote.http.Filter$1.execute(Filter.java:63)
E       	at org.openqa.selenium.remote.http.Route$CombinedRoute.handle(Route.java:361)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.http.Route$NestedRoute.handle(Route.java:271)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.http.Route$CombinedRoute.handle(Route.java:361)
E       	at org.openqa.selenium.remote.http.Route.execute(Route.java:69)
E       	at org.openqa.selenium.remote.AddWebDriverSpecHeaders.lambda$apply$0(AddWebDriverSpecHeaders.java:35)
E       	at org.openqa.selenium.remote.ErrorFilter.lambda$apply$0(ErrorFilter.java:44)
E       	at org.openqa.selenium.remote.http.Filter$1.execute(Filter.java:63)
E       	at org.openqa.selenium.remote.ErrorFilter.lambda$apply$0(ErrorFilter.java:44)
E       	at org.openqa.selenium.remote.http.Filter$1.execute(Filter.java:63)
E       	at org.openqa.selenium.netty.server.SeleniumHandler.lambda$channelRead0$0(SeleniumHandler.java:49)
E       	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
E       	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
E       	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
E       	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
E       	at java.base/java.lang.Thread.run(Thread.java:1583)

.venv/lib/python3.13.../webdriver/remote/errorhandler.py:232: InvalidSessionIdException

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@BeryJu BeryJu merged commit f056c08 into version-2025.10 Oct 27, 2025
87 of 89 checks passed
@BeryJu BeryJu deleted the cherry-pick/17723-to-version-2025.10 branch October 27, 2025 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant