簡體   English   中英

硒測試只能在本地進行,而不能在Gitlab CI中進行

[英]Selenium tests works in local but not in Gitlab CI

我目前正在從事Java Spring Boot項目,該項目涉及經典的后端/前端架構。 我正在嘗試使用Selenium WebDriver編寫一些基本的集成測試。

問題是我編寫的測試在本地開發機器上沒有問題通過,但是在通過連續集成設置(Gitlab CI)運行它們時卻沒有通過。

示例測試的代碼如下:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
public class ExampleTest {

    @LocalServerPort 
    private int port;

    WebDriver wd;

    @Test
    public void successfulLogin(){
        String url = "http://localhost:" + port;
        wd = new HtmlUnitDriver();
        wd.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        wd.get(url);
    }


}

相對的gitlab-ci.yml部分為:

stages:
  - test

maven-test:
  image: maven:3.5.0-jdk-8
  stage: test
  script: "mvn test -B -Dmaven.repo.local=/root/.m2/"
  only:
    - master

CI具有並發性為1的單個運行程序(版本9.5.0)。它將docker executor與docker:stable映像一起使用。 我不知道是否需要它,但是它以priviledged模式運行。 在CI環境中運行測試時,測試失敗並顯示以下錯誤:

org.openqa.selenium.TimeoutException: java.net.SocketTimeoutException: Read timed out

我已經嘗試使用url = "http://localhost:" + porturl = InetAddress.getLocalHost().getHostName() + ":" + port兩者都在本地傳遞,沒有在CI環境中傳遞。

我究竟做錯了什么?


編輯:Alfageme建議一種更准確的測試方法。 在運行CI的同一服務器上,我使用git clone克隆了存儲庫,然后運行以下命令:

sudo gitlab-runner exec docker maven-test

測試順利通過,沒有任何問題。 我的想法真的耗盡了,有人有嗎?

我不完全確定為什么,但是清除CI機器上的各種runner-XXXXX-project-21-concurrent-0-cache-XXXXXXXXXXXXXXXXXXX碼頭工人容器似乎已經解決了問題。


編輯:這只是暫時解決了這個問題。 問題再次發生,這一次清除緩存緩沖區沒有幫助。 有人有什么建議嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM