diff --git a/tests/e2e/run-e2e-tests.sh b/tests/e2e/run-e2e-tests.sh index b3c614022e..0a1bb3fa47 100755 --- a/tests/e2e/run-e2e-tests.sh +++ b/tests/e2e/run-e2e-tests.sh @@ -66,48 +66,42 @@ echo "" echo "===== [3/3] 启动容器并运行测试... =====" set +e -docker run --rm --init --ipc=host \ +docker run -d --rm --init --ipc=host \ --name e2e-test-runner-container \ - \ - `# 网络模式:host` \ --network host \ - \ - `# 用户权限映射` \ - -u "$CURRENT_UID:$CURRENT_GID" \ - \ - `# 环境变量注入` \ + -u "root" \ -e DEVSTAR_URL="$DEVSTAR_URL" \ -e E2E_SKIP_INSTALL="$E2E_SKIP_INSTALL" \ -e E2E_USERNAME="$E2E_USERNAME" \ -e E2E_PASSWORD="$E2E_PASSWORD" \ -e E2E_MODE="$E2E_MODE" \ -e CI="$CI" \ - \ - `# 挂载 Volume ` \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v "$(pwd)/tests/e2e/reports":/app/playwright-report \ - -v "$(pwd)/tests/e2e/package.json":/app/package.json \ - -v "$(pwd)/playwright.config.ts":/app/playwright.config.ts \ - -v "$(pwd)/tests/e2e/global-setup.ts":/app/global-setup.ts \ - -v "$(pwd)/tests/e2e/specs":/app/specs \ - -v "$(pwd)/tests/e2e/node_modules":/app/node_modules \ - -v "$(pwd)/tests/e2e/package-lock.json":/app/package-lock.json \ - \ - -w /app \ - \ - `# 临时 npm 缓存目录,防止权限问题` \ -e npm_config_cache=/tmp/npm-cache \ -e HOME=/tmp \ - \ - `# 镜像名` \ + -w /app \ + -v /var/run/docker.sock:/var/run/docker.sock \ mcr.microsoft.com/playwright:v1.53.2-jammy \ - `# 运行命令` \ - bash -c "echo '正在安装依赖...' && npm install --no-package-lock&& echo '依赖安装完成,开始测试...' && npx playwright test" - + tail -f /dev/null +echo "容器已启动,正在使用 docker cp 注入代码..." +docker cp "$(pwd)/tests/e2e/package.json" e2e-test-runner-container:/app/package.json +docker cp "$(pwd)/playwright.config.ts" e2e-test-runner-container:/app/playwright.config.ts +docker cp "$(pwd)/tests/e2e/global-setup.ts" e2e-test-runner-container:/app/global-setup.ts +docker cp "$(pwd)/tests/e2e/specs" e2e-test-runner-container:/app/specs +docker exec e2e-test-runner-container bash -c " + # 确保 node_modules 目录存在 + mkdir -p /app/node_modules + + echo '正在安装依赖...' + npm install --no-package-lock + + echo '依赖安装完成,开始测试...' + npx playwright test +" # 捕获 test-runner 的退出码 EXIT_CODE=$? set -e - +docker cp e2e-test-runner-container:/app/playwright-report/. "$(pwd)/tests/e2e/reports/" +docker rm -f e2e-test-runner-container echo "========================================" if [ $EXIT_CODE -eq 0 ]; then echo "测试执行成功!"