Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Cannot "augment" selenium driver #9075

Open
bhecquet opened this issue Aug 12, 2024 · 3 comments
Open

[Bug]: Cannot "augment" selenium driver #9075

bhecquet opened this issue Aug 12, 2024 · 3 comments

Comments

@bhecquet
Copy link

Module

Selenium

Testcontainers version

1.19.8

Using the latest Testcontainers version?

Yes

Host OS

Windows

Host Arch

x86

Docker version

λ podman version
Client:       Podman Engine
Version:      5.1.1
API Version:  5.1.1
Go Version:   go1.22.3
Git Commit:   bda6eb03dcbcf12a5b7ae004c1240e38dd056d24
Built:        Tue Jun  4 23:40:05 2024
OS/Arch:      windows/amd64

Server:       Podman Engine
Version:      5.1.1
API Version:  5.1.1
Go Version:   go1.22.3
Built:        Tue Jun  4 02:00:00 2024
OS/Arch:      linux/amd64

What happened?

Hello,

I'm trying to use the Seleium module to execute browser tests inside a quarkus project.
I can successfully create the browser, but when I attempt to augment it through the following code

new Augmenter().augment(driver)

this fails because the reported CDP URL (chrome devtools protocol) is the URL inside the docker network
Augmenting the driver allows to use new features of Selenium like BiDi.

Selenium documentation (https://github.com/SeleniumHQ/docker-selenium?tab=readme-ov-file#grid-url-and-session-timeout) states that the environment variable SE_NODE_GRID_URL must be used in such case. But this is not possible with testcontainer because the URL I need to give to SE_NODE_GRID_URL environment variable must contain the random port that testcontainers provides on start up of container.

I think it's similar to the issue #256 and so, it may be useful to pass this environment variable automatically before selenium container starts

Thanks

Relevant log output

No response

Additional Information

No response

@eddumelendez
Copy link
Member

Thanks for reporting the issue. In the past, I was able to do something like is described here.

@bhecquet
Copy link
Author

Hello @eddumelendez

Thank you for your suggestion
After raising the issue, I managed to augment the selenium driver providing a random port using port binding like

        .withCreateContainerCmdModifier(cmd -> cmd.withHostConfig(
            new HostConfig().withPortBindings(new PortBinding(Ports.Binding.bindPort(randomPortSelenium), new ExposedPort(4444) , Ports.Binding.bindPort(randomPortVnc), new ExposedPort(5900))))
        )

But this only work if VNC is disabled
Enabling VNC is not possible as using such port bindings seems to modify network aliases that the selenium container exposes

@bhecquet
Copy link
Author

Hello,

I've tested with your suggestion, but same problem with VNC, container does not start (I suppose it's due to the fact that we are on a network that the VNC container does not know)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants