Skip to content

Commit

Permalink
WebDriverContainerHolder getHostIp did not get Host ip, but container IP
Browse files Browse the repository at this point in the history
  • Loading branch information
sbglasius committed Nov 25, 2024
1 parent b159b21 commit a36bd7e
Showing 1 changed file with 12 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package grails.plugin.geb

import com.github.dockerjava.api.model.ContainerNetwork
import geb.Browser
import groovy.transform.CompileStatic
import groovy.transform.EqualsAndHashCode
Expand All @@ -25,6 +26,7 @@ import org.spockframework.runtime.extension.IMethodInvocation
import org.spockframework.runtime.model.SpecInfo
import org.testcontainers.Testcontainers
import org.testcontainers.containers.BrowserWebDriverContainer
import org.testcontainers.containers.PortForwardingContainer

import java.time.Duration

Expand Down Expand Up @@ -117,8 +119,16 @@ class WebDriverContainerHolder {
configuration.hostName != ContainerGebConfiguration.DEFAULT_HOSTNAME_FROM_CONTAINER
}

private String getHostIp() {
currentContainer.getContainerInfo().getNetworkSettings().getNetworks().entrySet().first().value.ipAddress
private static String getHostIp() {
try {
PortForwardingContainer.getDeclaredMethod("getNetwork").with {
accessible = true
Optional<ContainerNetwork> network = invoke(PortForwardingContainer.INSTANCE) as Optional<ContainerNetwork>
return network.get().ipAddress
}
} catch (Exception e) {
throw new RuntimeException("Could not access network from PortForwardingContainer", e)
}
}

@CompileStatic
Expand Down

0 comments on commit a36bd7e

Please sign in to comment.