cypresschrome-devtools-protocol

Cypress tests against devtools port only


We use some third party enterprise software ("Container App"), which has an embedded Chromium browser, in which our webapp runs.

We use Cypress to test our webapp in a stand-alone browser outside of this container, however we would like to be able to test it inside, as it interacts with the container in various ways through javascript.

The only thing the container exposes is a "remote devtools-url" to the target (our) browser, which can be pasted to a native browser outside of the container and then debugged in devtools. Like this: enter image description here The Container provides 2 different url's for above debugging purposes, and they both work and seemingly similarly. They are something like the following (not precise, unfortunately I am not at work atm):

devtools://...inspector.html?id=xxx
http://ip/...inspector.html?id=xxx

Is it possible to setup Cypress to test "as normal", only having access to this remote devtools-url/port?

The target browser inside the container cannot be started by Cypress, as only the container can start and close it. So the target browser will already be running (with a --remote-debugging-port). I can get the devtools-id dynamically through a call to /json/list.

If not possible, any other way to achieve the goal of testing the browser/app running inside the container?


Solution

  • It is not possible. Testing with Cypress a web page in embedded Chromium running in your application means Cypress needs to connect to already running browser. Cypress doesn't have that possibility.

    The documentation states:

    When you run tests in Cypress, we launch a browser for you. This enables us to:

    • Create a clean, pristine testing environment.
    • Access the privileged browser APIs for automation.

    There is a request in Cypress issue tracker to add the option to connect to already running browser. But there is no response on it from Cypress developers.