diff --git a/.gitea/workflows/devstar-studio-e2e.yaml b/.gitea/workflows/devstar-studio-e2e.yaml index 78843f6023..13fba1403d 100644 --- a/.gitea/workflows/devstar-studio-e2e.yaml +++ b/.gitea/workflows/devstar-studio-e2e.yaml @@ -13,8 +13,8 @@ jobs: - name: 1.5 Clean Up Old Data & Containers run: | echo "正在清理旧环境..." + public/assets/install.sh clean docker volume rm devstar_data_vol || true - - name: 2. Deploy DevStar Container run: | @@ -23,7 +23,8 @@ jobs: # 在 CI 环境中,这会导致严重的权限问题 。 # 解决方案:动态修改脚本副本,强制将其替换为 Docker 命名卷 。 # 这种修改仅在本次 CI 运行中生效,不会影响源码仓库。 - + + sed -i 's|~/devstar_data|devstar_data_vol|g' public/assets/install.sh public/assets/install.sh start --image=devstar-studio:latest - name: 2.5. Create Report Directory @@ -39,13 +40,9 @@ jobs: CONTAINER_NAME=$(docker ps -a --filter "ancestor=devstar-studio:latest" --format "{{.Names}}" | head -n 1) echo "Found Container Name: $CONTAINER_NAME" - # 2. 获取容器内部 IP (例如 172.17.0.2) DEVSTAR_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $CONTAINER_NAME) echo "Found DevStar Internal IP: $DEVSTAR_IP" - TARGET_URL="http://$DEVSTAR_IP:3000" - echo "Target URL set to: $TARGET_URL" - sleep 30 - name: 3. Run E2E Tests run: | diff --git a/tests/e2e/Dockerfile b/tests/e2e/Dockerfile index be31e6415f..cc1086dde2 100644 --- a/tests/e2e/Dockerfile +++ b/tests/e2e/Dockerfile @@ -11,7 +11,6 @@ WORKDIR /app # 3. 复制 "依赖清单" 文件 COPY tests/e2e/package*.json ./ -COPY playwright.config.ts ./ # 4. 安装npm 依赖 (即 @playwright/test) RUN npm install diff --git a/tests/e2e/docker-compose.test.yml b/tests/e2e/docker-compose.test.yml index b57dfd335e..44cd15528d 100644 --- a/tests/e2e/docker-compose.test.yml +++ b/tests/e2e/docker-compose.test.yml @@ -36,6 +36,7 @@ services: - E2E_MODE=${E2E_MODE} volumes: # 也挂载 Docker Socket + - ../../playwright.config.ts:/app/playwright.config.ts - /var/run/docker.sock:/var/run/docker.sock # 将测试报告写回到宿主机的 ./reports 目录 - ./reports:/app/playwright-report diff --git a/tests/e2e/global-setup.ts b/tests/e2e/global-setup.ts index 706c036857..1dd7bc0bc0 100644 --- a/tests/e2e/global-setup.ts +++ b/tests/e2e/global-setup.ts @@ -12,8 +12,12 @@ async function globalSetup(config: FullConfig) { if (!baseURL) { throw new Error('[GlobalSetup] 致命错误: baseURL 或 storageState 未定义!'); } - const browser = await chromium.launch(); - const page = await browser.newPage(); + const browser = await chromium.launch(); + const context = await browser.newContext({ + locale: 'zh-CN', // 强制中文 + timezoneId: 'Asia/Shanghai', // 强制时区 + }); + const page = await context.newPage(); if (mode === 'url') { try { const url1=env.DEVSTAR_URL; @@ -28,6 +32,7 @@ async function globalSetup(config: FullConfig) { await page.getByRole('textbox', { name: '管理员密码', exact: true }).fill('12345678'); await page.getByRole('textbox', { name: '确认密码' }).fill('12345678'); await page.getByRole('button', { name: '立即安装'}).click(); + console.log("安装中,请耐心等待"); await page.waitForTimeout(90000); } catch (error) { console.error('[GlobalSetup] "URL 模式" 登录失败:', error); @@ -64,5 +69,6 @@ async function globalSetup(config: FullConfig) { } else { throw new Error(`[GlobalSetup] 未知的 E2E_MODE: "${mode}"`); } + await browser.close(); } export default globalSetup; \ No newline at end of file