[英]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:" + port
和url = 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.