修改了readme,id的问题解决,E2E_NAME的命令格式,一些潜在的sudo问题
This commit is contained in:
2
Makefile
2
Makefile
@@ -935,7 +935,7 @@ endif
|
|||||||
.PHONY: e2e-test
|
.PHONY: e2e-test
|
||||||
e2e-test: $(E2E_DEPS)
|
e2e-test: $(E2E_DEPS)
|
||||||
@echo "正在启动E2E-TEST..."
|
@echo "正在启动E2E-TEST..."
|
||||||
@TARGET_URL=$(TARGET_URL) ./tests/e2e/run-e2e-tests.sh
|
@TARGET_URL=$(TARGET_URL) E2E_USERNAME=$(E2E_USERNAME) E2E_PASSWORD=$(E2E_PASSWORD) ./tests/e2e/run-e2e-tests.sh
|
||||||
|
|
||||||
|
|
||||||
# This endif closes the if at the top of the file
|
# This endif closes the if at the top of the file
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#
|
#
|
||||||
# 这是 "test-runner" 服务的 Dockerfile
|
# 这是 "test-runner" 服务的 Dockerfile
|
||||||
# 它构建了一个包含所有浏览器和我们测试代码的镜像
|
|
||||||
#
|
#
|
||||||
|
|
||||||
# 1. 使用微软官方的 Playwright 镜像
|
# 1. 使用微软官方的 Playwright 镜像
|
||||||
@@ -13,10 +12,10 @@ WORKDIR /app
|
|||||||
# 3. 复制 "依赖清单" 文件
|
# 3. 复制 "依赖清单" 文件
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
|
|
||||||
# 4. 安装我们的 npm 依赖 (即 @playwright/test)
|
# 4. 安装npm 依赖 (即 @playwright/test)
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
# 5. 复制我们所有的测试代码到容器中
|
# 5. 复制所有的测试代码到容器中
|
||||||
# (包括 playwright.config.ts, global-setup.ts 和 specs/ 目录)
|
# (包括 playwright.config.ts, global-setup.ts 和 specs/ 目录)
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
|||||||
@@ -6,15 +6,15 @@ make devstar
|
|||||||
|
|
||||||
public/assets/install.sh start --image=devstar-studio:latest
|
public/assets/install.sh start --image=devstar-studio:latest
|
||||||
|
|
||||||
make e2e-test TAGRET_URL="..." # 使用默认账号testuser 密码12345678
|
make e2e-test TARGET_URL="..." # 使用默认账号testuser 密码12345678
|
||||||
|
|
||||||
E2E_USERNAME="your_name" E2E_PASSWORD="your_password" E2E_ADMIN_ID="your_id" make e2e-test TAGRET_URL="..." # 使用你的账号和密码,id是后台管理账号对应的id
|
make e2e-test TARGET_URL="..." E2E_USERNAME="your_name" E2E_PASSWORD="your_password" # 使用你的账号和密码
|
||||||
``
|
``
|
||||||
|
|
||||||
|
|
||||||
##注意:url不可以是localhost,这样容器无法访问,也无法正常安装webterminal
|
##注意:url不可以是localhost,这样容器无法访问,也无法正常安装webterminal
|
||||||
##说明:目前有两种测试的用法,
|
##说明:目前有两种测试的用法,
|
||||||
1.主要的流程是通过make devstar 本地代码构建镜像,public/assets/install.sh start --image=devstar-studio:latest 通过install.sh脚本创建容器,并在make e2e-test TAGRET_URL="..."中输入devstar容器的url,如果首次安装会执行安装脚本,如果已经安装过,请输入你的账号,密码,id,否则按默认账号和密码登录。
|
1.主要的流程是通过make devstar 本地代码构建镜像,public/assets/install.sh start --image=devstar-studio:latest 通过install.sh脚本创建容器,并在make e2e-test TARGET_URL="..."中输入devstar容器的url,如果首次安装会执行安装脚本,如果已经安装过,请输入你的账号,密码,否则按默认账号和密码登录。
|
||||||
2.单机CI使用make e2e-test,由脚本执行容器的创建,安装和测试,需要docker环境和项目代码。
|
2.单机CI使用make e2e-test,由脚本执行容器的创建,安装和测试,需要docker环境和项目代码。
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,12 +25,12 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
# 等待 devstar 的 "healthcheck" 通过后,才启动
|
# 等待 devstar 的 "healthcheck" 通过后,才启动
|
||||||
|
user: "${CURRENT_UID}:${CURRENT_GID}"
|
||||||
environment:
|
environment:
|
||||||
- DEVSTAR_URL=${DEVSTAR_URL}
|
- DEVSTAR_URL=${DEVSTAR_URL}
|
||||||
- E2E_SKIP_INSTALL=${E2E_SKIP_INSTALL}
|
- E2E_SKIP_INSTALL=${E2E_SKIP_INSTALL}
|
||||||
- E2E_USERNAME=${E2E_USERNAME}
|
- E2E_USERNAME=${E2E_USERNAME}
|
||||||
- E2E_PASSWORD=${E2E_PASSWORD}
|
- E2E_PASSWORD=${E2E_PASSWORD}
|
||||||
- E2E_ADMIN_ID=${E2E_ADMIN_ID}
|
|
||||||
- E2E_MODE=${E2E_MODE}
|
- E2E_MODE=${E2E_MODE}
|
||||||
volumes:
|
volumes:
|
||||||
# 也挂载 Docker Socket
|
# 也挂载 Docker Socket
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ async function globalSetup(config: FullConfig) {
|
|||||||
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('12345678');
|
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('12345678');
|
||||||
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('12345678');
|
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('12345678');
|
||||||
await page.getByRole('button', { name: 'Install Gitea'}).click();
|
await page.getByRole('button', { name: 'Install Gitea'}).click();
|
||||||
|
console.log("安装中,请耐心等待");
|
||||||
await page.waitForTimeout(90000);
|
await page.waitForTimeout(90000);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('[GlobalSetup] "构建模式" 安装失败:', error);
|
console.error('[GlobalSetup] "构建模式" 安装失败:', error);
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ set -e
|
|||||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||||
#
|
#
|
||||||
PROJECT_ROOT=$( cd -- "$SCRIPT_DIR/../.." &> /dev/null && pwd )
|
PROJECT_ROOT=$( cd -- "$SCRIPT_DIR/../.." &> /dev/null && pwd )
|
||||||
|
export CURRENT_UID=$(id -u)
|
||||||
|
export CURRENT_GID=$(id -g)
|
||||||
#
|
#
|
||||||
cd "$PROJECT_ROOT"
|
cd "$PROJECT_ROOT"
|
||||||
echo "===== [1/5] 清理旧的测试环境... ====="
|
echo "===== [1/5] 清理旧的测试环境... ====="
|
||||||
@@ -15,7 +16,7 @@ echo "===== [1/5] 清理旧的测试环境... ====="
|
|||||||
docker compose -f tests/e2e/docker-compose.test.yml down -v --remove-orphans
|
docker compose -f tests/e2e/docker-compose.test.yml down -v --remove-orphans
|
||||||
docker image prune -f
|
docker image prune -f
|
||||||
# 清理并重建报告和数据目录
|
# 清理并重建报告和数据目录
|
||||||
sudo rm -rf ./tests/e2e/reports ./tests/e2e/test-data
|
rm -rf ./tests/e2e/reports ./tests/e2e/test-data
|
||||||
mkdir -p ./tests/e2e/reports/html ./tests/e2e/test-data/devstar_data
|
mkdir -p ./tests/e2e/reports/html ./tests/e2e/test-data/devstar_data
|
||||||
echo "清理完成。"
|
echo "清理完成。"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -25,9 +26,13 @@ echo "===== [2/5] 设置权限... ====="
|
|||||||
chmod -R 777 ./tests/e2e/test-data/devstar_data
|
chmod -R 777 ./tests/e2e/test-data/devstar_data
|
||||||
|
|
||||||
# 【关键】允许容器访问宿主机的 Docker Socket
|
# 【关键】允许容器访问宿主机的 Docker Socket
|
||||||
sudo chmod 666 /var/run/docker.sock
|
if [ -z "$TARGET_URL" ]; then
|
||||||
echo "权限设置完成。"
|
sudo chmod 666 /var/run/docker.sock
|
||||||
echo ""
|
echo "权限设置完成。"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
echo "跳过docker.sock权限修改 ====="
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$TARGET_URL" ]; then
|
if [ -z "$TARGET_URL" ]; then
|
||||||
|
|
||||||
|
|||||||
@@ -146,7 +146,13 @@ test('DevContainer 功能和配置', async ({ page,context }) => {
|
|||||||
test('权限修改相关', async ({ page }) => {
|
test('权限修改相关', async ({ page }) => {
|
||||||
|
|
||||||
console.log('权限配置');
|
console.log('权限配置');
|
||||||
await page.goto(GITEA_URL+ '/-/admin/users/' + TEST_ADMIN_USER_ID + '/edit');
|
await page.getByRole('link', { name: 'Site Administration' }).click();
|
||||||
|
await page.getByText('Identity & Access').click();
|
||||||
|
await page.getByRole('link', { name: 'User Accounts' }).click();
|
||||||
|
await page.getByRole('row')
|
||||||
|
.filter({ hasText: TEST_USER })
|
||||||
|
.getByRole('link', { name: 'Edit' })
|
||||||
|
.click();
|
||||||
const devContainerCheckbox = page.getByLabel(/May Create Devcontainers/i);
|
const devContainerCheckbox = page.getByLabel(/May Create Devcontainers/i);
|
||||||
await devContainerCheckbox.uncheck();
|
await devContainerCheckbox.uncheck();
|
||||||
await page.getByRole('button', { name: 'Update User Account' }).click();
|
await page.getByRole('button', { name: 'Update User Account' }).click();
|
||||||
|
|||||||
Reference in New Issue
Block a user