Как подключить контейнер селена к локальной сети с тестовыми контейнерами? - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь интегрировать селен в тестовый конвейер моего приложения с весенней загрузкой.

Во время теста я запускаю приложение (используя тест с пружинной загрузкой), после чего тестконтейнеры запускают селен. После этого селеновый контейнер должен запустить тест.

Проблема: селен не может подключиться к сети хоста.

  @SpringBootTest(
    classes = [StatisticServer::class],
    webEnvironment = RANDOM_PORTq)
  @ContextConfiguration(initializers =     [DbTextContextInitializer::class])
  @ActiveProfiles("local", "no-security")
  @Sql(executionPhase = AFTER_TEST_METHOD, scripts = ["classpath:/sql/clear_db.sql"])
class SeleniumParentTest {

@LocalServerPort
protected var port=0

class KWebDriverContainer(dockerImage: String) : BrowserWebDriverContainer<KWebDriverContainer>(dockerImage)

var chrome: BrowserWebDriverContainer<*> = KWebDriverContainer("selenium/standalone-chrome-debug:latest")
        .withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL, File("build"))
        .withCapabilities(ChromeOptions().setAcceptInsecureCerts(true))
        .withEnv("http_host", "http://192.168.5.46:8080")
        .withNetworkMode("host")


@BeforeEach
fun setUp() {
    chrome.start()
    val driver = chrome.getWebDriver()
    WebDriverRunner.setWebDriver(driver)
}

@AfterEach
fun tearDown() {
    WebDriverRunner.closeWebDriver();
}

@Test
fun shouldSuccessfullyPassThisTestUsingTheRemoteDriver() {
    open("https://127.0.0.1:9200/swagger-ui.html");
    // open("https://host.docker.internal:$port/swagger-ui.html");
    `$`(By.className("info")).value
    val link = `$`("#res .g", 0).find("a")

Я пробовал несколько способов решения такой проблемы, как добавление режима сети, используйте внутреннее docker имя хоста.

Во время выполнения теста я получаю снимок экрана с текстом «Этот сайт недоступен»

Я не могу использовать getTestHostIpAdress (), потому что я использую центы.

Итак, мой вопрос: как правильно настроить тестконтейнеры для локального запуска тестового веб-приложения?

1 Ответ

2 голосов
/ 25 января 2020

См. Предоставление портов хоста контейнеру .

. Позволяет предоставить ваш локальный порт, чтобы контейнеры могли получить к нему доступ на host.testcontainers.internal. * 1008. *

...