last
This commit is contained in:
@@ -14,7 +14,7 @@ E2E_USERNAME="your_name" E2E_PASSWORD="your_password" E2E_ADMIN_ID="your_id" mak
|
||||
|
||||
##注意:url不可以是localhost,这样容器无法访问,也无法正常安装webterminal
|
||||
##说明:目前有两种测试的用法,
|
||||
主要的流程是通过make devstar 本地代码构建镜像,public/assets/install.sh start --image=devstar-studio:latest 通过install.sh脚本创建容器,并在make e2e-test TAGRET_URL="..."中输入devstar容器的url,如果首次安装会执行安装脚本,如果已经安装过,请输入你的账号,密码,id,否则按默认账号和密码登录。
|
||||
单机部署CI使用make e2e-test,由脚本执行容器的创建,安装和测试,需要docker环境和项目代码。
|
||||
1.主要的流程是通过make devstar 本地代码构建镜像,public/assets/install.sh start --image=devstar-studio:latest 通过install.sh脚本创建容器,并在make e2e-test TAGRET_URL="..."中输入devstar容器的url,如果首次安装会执行安装脚本,如果已经安装过,请输入你的账号,密码,id,否则按默认账号和密码登录。
|
||||
2.单机CI使用make e2e-test,由脚本执行容器的创建,安装和测试,需要docker环境和项目代码。
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ async function globalSetup(config: FullConfig) {
|
||||
const url1=env.DEVSTAR_URL;
|
||||
await page.goto(url1, { timeout: 15000 });
|
||||
console.log('[GlobalSetup] 检测到安装界面!正在开始自动化安装...');
|
||||
// (你提供的所有 "testuser" 安装步骤...)
|
||||
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();
|
||||
@@ -46,7 +45,6 @@ async function globalSetup(config: FullConfig) {
|
||||
console.log('[GlobalSetup] 检测到安装界面!正在开始自动化安装...');
|
||||
await page.getByRole('textbox', { name: 'Server Domain *' }).fill(serverDomain);
|
||||
await page.getByRole('textbox', { name: 'Gitea Base URL *' }).fill(giteaBaseURL);
|
||||
// (你提供的所有 "testuser" 安装步骤...)
|
||||
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();
|
||||
|
||||
@@ -21,7 +21,7 @@ echo "清理完成。"
|
||||
echo ""
|
||||
|
||||
echo "===== [2/5] 设置权限... ====="
|
||||
# 容器内的用户(通常 UID 1000)需要写入数据目录
|
||||
# 容器内的用户需要写入数据目录
|
||||
chmod -R 777 ./tests/e2e/test-data/devstar_data
|
||||
|
||||
# 【关键】允许容器访问宿主机的 Docker Socket
|
||||
@@ -85,12 +85,12 @@ else
|
||||
# --- [B] 构建模式 ---
|
||||
echo "==> 模式: [构建模式]. 正在本地启动 devstar..."
|
||||
|
||||
# 1. 导出内部 URL (这会成为 compose 里的默认值)
|
||||
# 1. 导出内部 URL
|
||||
export DEVSTAR_URL="http://devstar:3000"
|
||||
export E2E_MODE="compose"
|
||||
export E2E_SKIP_INSTALL="false"
|
||||
echo "即将执行: docker compose -f tests/e2e/docker-compose.test.yml up --build --wait --exit-code-from test-runner"
|
||||
# 2. [关键] 运行你原来的命令, 启动所有服务
|
||||
# 2. 启动所有服务
|
||||
command docker compose \
|
||||
-f tests/e2e/docker-compose.test.yml \
|
||||
-f tests/e2e/docker-compose.override.yml \
|
||||
@@ -110,5 +110,4 @@ ls -l ./tests/e2e/reports/html
|
||||
echo ""
|
||||
|
||||
# 以 test-runner 的退出码退出
|
||||
# 这将告诉 CI (或你自己) 测试是成功还是失败
|
||||
exit $EXIT_CODE
|
||||
|
||||
@@ -20,12 +20,6 @@ test.beforeEach(async ({ page }) => {
|
||||
await Login(page);
|
||||
});
|
||||
test('DevContainer 功能和配置', async ({ page,context }) => {
|
||||
//console.log("正在登陆");
|
||||
//await page.goto(GITEA_URL + '/user/login');
|
||||
//await page.fill('#user_name',TEST_USER);
|
||||
//await page.fill('#password', TEST_PASS);
|
||||
//await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
//await expect(page).toHaveURL(GITEA_URL + '/');
|
||||
|
||||
console.log(`正在创建新仓库: ${repoName}`);
|
||||
await page.goto(GITEA_URL + '/repo/create');
|
||||
@@ -45,66 +39,66 @@ test('DevContainer 功能和配置', async ({ page,context }) => {
|
||||
|
||||
console.log("模板已创建. 正在点击 'Edit' 按钮...");
|
||||
await expect(page.getByText('devcontainer.json')).toBeVisible();
|
||||
//await page.getByRole('link', { name: 'Edit' }).click();
|
||||
await page.getByRole('link', { name: 'Edit' }).click();
|
||||
await page.waitForTimeout(5000);
|
||||
//console.log("已跳转到编辑器. 正在修改内容");
|
||||
//const newJsonAsObject = {
|
||||
//"name": "Gitea DevContainer",
|
||||
//"image": "mcr.microsoft.com/devcontainers/go:1.24-bookworm",
|
||||
//"features": {
|
||||
//"ghcr.io/devcontainers/features/node:1": {
|
||||
//"version": "lts"
|
||||
//},
|
||||
// "ghcr.io/devcontainers/features/git-lfs:1.2.2": {},
|
||||
// "ghcr.io/devcontainers-extra/features/poetry:2": {},
|
||||
// "ghcr.io/devcontainers/features/python:1": {
|
||||
// "version": "3.12"
|
||||
// },
|
||||
//"ghcr.io/warrenbuckley/codespace-features/sqlite:1": {}
|
||||
//},
|
||||
//"customizations": {
|
||||
// "vscode": {
|
||||
// "settings": {},
|
||||
// "extensions": [
|
||||
// "editorconfig.editorconfig",
|
||||
// "dbaeumer.vscode-eslint",
|
||||
// "golang.go",
|
||||
// "stylelint.vscode-stylelint",
|
||||
/// "DavidAnson.vscode-markdownlint",
|
||||
// "Vue.volar",
|
||||
// "ms-azuretools.vscode-docker",
|
||||
//// "vitest.explorer",
|
||||
// "cweijan.vscode-database-client2",
|
||||
// "GitHub.vscode-pull-request-github",
|
||||
// "Azurite.azurite"
|
||||
//]
|
||||
// }
|
||||
//},
|
||||
//"portsAttributes": {
|
||||
//"3000": {
|
||||
// "label": "Gitea Web",
|
||||
// "onAutoForward": "notify"
|
||||
// }
|
||||
// },
|
||||
//"postCreateCommand": "make deps"
|
||||
// };
|
||||
console.log("已跳转到编辑器. 正在修改内容");
|
||||
const newJsonAsObject = {
|
||||
"name": "Gitea DevContainer",
|
||||
"image": "mcr.microsoft.com/devcontainers/go:1.24-bookworm",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"version": "lts"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/git-lfs:1.2.2": {},
|
||||
"ghcr.io/devcontainers-extra/features/poetry:2": {},
|
||||
"ghcr.io/devcontainers/features/python:1": {
|
||||
"version": "3.12"
|
||||
},
|
||||
"ghcr.io/warrenbuckley/codespace-features/sqlite:1": {}
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {},
|
||||
"extensions": [
|
||||
"editorconfig.editorconfig",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"golang.go",
|
||||
"stylelint.vscode-stylelint",
|
||||
"DavidAnson.vscode-markdownlint",
|
||||
"Vue.volar",
|
||||
"ms-azuretools.vscode-docker",
|
||||
"vitest.explorer",
|
||||
"cweijan.vscode-database-client2",
|
||||
"GitHub.vscode-pull-request-github",
|
||||
"Azurite.azurite"
|
||||
]
|
||||
}
|
||||
},
|
||||
"portsAttributes": {
|
||||
"3000": {
|
||||
"label": "Gitea Web",
|
||||
"onAutoForward": "notify"
|
||||
}
|
||||
},
|
||||
"postCreateCommand": "make deps"
|
||||
};
|
||||
|
||||
// 转换为JSON 字符串
|
||||
//const newJsonString = JSON.stringify(newJsonAsObject);
|
||||
//转换为JSON 字符串
|
||||
const newJsonString = JSON.stringify(newJsonAsObject);
|
||||
|
||||
// 设置焦点
|
||||
// await page.locator('.view-lines > div:nth-child(20)').click();
|
||||
// console.log("正在手动删除模板内容 ");
|
||||
//for (let i = 0; i < 500; i++) {
|
||||
// await page.keyboard.press('Backspace');
|
||||
// }
|
||||
/// 粘贴字符串
|
||||
//console.log("正在粘贴JSON 内容...");
|
||||
// await page.keyboard.insertText(newJsonString);
|
||||
//await page.getByRole('button', { name: 'Commit Changes' }).click();
|
||||
//console.log("devcontainer.json 修改并提交成功.");
|
||||
//console.log("正在导航回 Dev Container 标签页进行验证...");
|
||||
//await page.getByRole('link', { name: 'Dev Container' }).click();
|
||||
await page.locator('.view-lines > div:nth-child(20)').click();
|
||||
console.log("正在手动删除模板内容 ");
|
||||
for (let i = 0; i < 500; i++) {
|
||||
await page.keyboard.press('Backspace');
|
||||
}
|
||||
//粘贴字符串
|
||||
console.log("正在粘贴JSON 内容...");
|
||||
await page.keyboard.insertText(newJsonString);
|
||||
await page.getByRole('button', { name: 'Commit Changes' }).click();
|
||||
console.log("devcontainer.json 修改并提交成功.");
|
||||
console.log("正在导航回 Dev Container 标签页进行验证...");
|
||||
await page.getByRole('link', { name: 'Dev Container' }).click();
|
||||
|
||||
console.log("创建开发容器");
|
||||
await page.getByRole('button', { name: 'Create Dev Container' }).click();
|
||||
@@ -150,13 +144,6 @@ test('DevContainer 功能和配置', async ({ page,context }) => {
|
||||
//console.log("test3检查通过");
|
||||
});
|
||||
test('权限修改相关', async ({ page }) => {
|
||||
//console.log("正在登陆");
|
||||
//await page.goto(GITEA_URL + '/user/login');
|
||||
//await page.fill('#user_name', TEST_USER);
|
||||
//await page.fill('#password', TEST_PASS);
|
||||
//await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
//await expect(page).toHaveURL(GITEA_URL + '/');
|
||||
//console.log("登录成功! ");
|
||||
|
||||
console.log('权限配置');
|
||||
await page.goto(GITEA_URL+ '/-/admin/users/' + TEST_ADMIN_USER_ID + '/edit');
|
||||
|
||||
@@ -15,7 +15,7 @@ let wasUsingDefault = false;
|
||||
if(mode === 'url'){
|
||||
const url1=env.DEVSTAR_URL;
|
||||
if (isInstalled) {
|
||||
// 【"已安装" 模式
|
||||
// "已安装" 模式
|
||||
|
||||
username = env.E2E_USERNAME || DEFAULT_E2E_USER;
|
||||
password = env.E2E_PASSWORD || DEFAULT_E2E_PASS;
|
||||
@@ -24,7 +24,7 @@ if(mode === 'url'){
|
||||
}
|
||||
console.log(`"已安装"模式, 尝试用 ${username} 登录...`);
|
||||
} else {
|
||||
// 【"未安装" 模式】
|
||||
// "未安装" 模式
|
||||
username = DEFAULT_E2E_USER;
|
||||
password = DEFAULT_E2E_PASS;
|
||||
wasUsingDefault=true;
|
||||
|
||||
Reference in New Issue
Block a user