diff --git a/Makefile b/Makefile index bcb3e639db..fb9a53d859 100644 --- a/Makefile +++ b/Makefile @@ -196,7 +196,6 @@ go-check: fi .PHONY: git-check - make e2e-test TARGET_URL="192.168" git-check: @if git lfs >/dev/null 2>&1 ; then : ; else \ echo "Gitea requires git with lfs support to run tests." ; \ @@ -919,7 +918,6 @@ generate-manpage: ## generate manpage .PHONY: devstar devstar: docker build -t devstar-studio:latest -f docker/Dockerfile.devstar . - .PHONY: docker docker: docker build -t devstar.cn/devstar/webterminal:latest -f docker/Dockerfile.webTerminal . diff --git a/tests/e2e/docker-compose.test.yml b/tests/e2e/docker-compose.test.yml index fa14509aff..a79a2a5cda 100644 --- a/tests/e2e/docker-compose.test.yml +++ b/tests/e2e/docker-compose.test.yml @@ -28,6 +28,7 @@ services: environment: # 将 DevStar 的 URL 传给 Playwright - DEVSTAR_URL=${DEVSTAR_URL:-http://devstar:3000} + - DOCKER_HOST_GATEWAY=${DOCKER_HOST_GATEWAY} volumes: # 也挂载 Docker Socket - /var/run/docker.sock:/var/run/docker.sock diff --git a/tests/e2e/global-setup.ts b/tests/e2e/global-setup.ts index 11163b7e89..8b9e46b327 100644 --- a/tests/e2e/global-setup.ts +++ b/tests/e2e/global-setup.ts @@ -8,7 +8,10 @@ throw new Error('baseURL is not defined in playwright.config.ts'); } - + const hostGateway = process.env.DOCKER_HOST_GATEWAY || '172.17.0.1'; + + const giteaBaseURL = `http://${hostGateway}:80`; + const serverDomain = hostGateway; const browser = await chromium.launch(); const page = await browser.newPage(); @@ -18,9 +21,9 @@ console.log('[GlobalSetup] 检测到安装界面!正在开始自动化安装...'); await page.getByRole('textbox', { name: 'Server Domain *' }).click(); - await page.getByRole('textbox', { name: 'Server Domain *' }).fill('172.17.0.1'); + await page.getByRole('textbox', { name: 'Server Domain *' }).fill(hostGateway); await page.getByRole('textbox', { name: 'Gitea Base URL *' }).click(); - await page.getByRole('textbox', { name: 'Gitea Base URL *' }).fill('http://172.17.0.1:80'); + await page.getByRole('textbox', { name: 'Gitea Base URL *' }).fill(giteaBaseURL); await page.getByText('Server and Third-Party Service Settings').click(); await page.getByRole('checkbox', { name: 'Enable user sign-in via Wechat QR Code.' }).uncheck(); await page.getByRole('checkbox', { name: 'Require a CAPTCHA for user' }).uncheck(); diff --git a/tests/e2e/run-e2e-tests.sh b/tests/e2e/run-e2e-tests.sh index 16f14e216e..1a01c7b7b1 100755 --- a/tests/e2e/run-e2e-tests.sh +++ b/tests/e2e/run-e2e-tests.sh @@ -31,9 +31,25 @@ echo "" echo "===== [3/5] 构建/拉取依赖镜像... =====" #现在make devstar 处理镜像的构建 +docker pull mengning997/webterminal:latest +docker tag mengning997/webterminal:latest devstar.cn/devstar/webterminal:latest + +echo "===== 现在检测Docker宿主机网关=====" +DOCKER_HOST_GATEWAY="172.17.0.1" +if [ "$OS_TYPE" = "Darwin" ]; then + DOCKER_HOST_GATEWAY="host.docker.internal" +elif [ "$OS_TYPE" = "Linux" ]; then + LINUX_IP=$(ip addr show docker0 | grep -Po 'inet \K[\d\.]+') + if [ -n "$LINUX_IP" ]; then + DOCKER_HOST_GATEWAY=$LINUX_IP + else + echo "警告: 无法动态检测 'docker0' IP, 回退到 172.17.0.1" + fi +fi +echo "==> 宿主机网关被设置为: $DOCKER_HOST_GATEWAY" +export DOCKER_HOST_GATEWAY echo "===== [4/5] 启动并运行测试... =====" - # 检查从 Makefile 传来的 TARGET_URL 变量是否为空 if [ -n "$TARGET_URL" ]; then # --- [A] URL 模式 ---