This commit is contained in:
jiaojm
2025-11-14 09:53:34 +08:00
repo.diff.parent 446e343eab
repo.diff.commit 8d1f62028c
repo.diff.stats_desc%!(EXTRA int=4, int=18, int=12)

repo.diff.view_file

@@ -1,7 +1,16 @@
##E2E端到端测试流程
1.运行E2E测试流程
准备工作make devstar 构建本地代码的devstar镜像public/assets/install.sh start --image=devstar-studio:latest启动devstar容器
请将devstar对应的url填写为TARGET_URL,执行make e2e-test TAGRET_URL="...."会自动化安装并测试注意这里的url绝对不可以是localhost
如果有已存在的实例需要测试请额外在命令行输入E2E_USERNAME="my-admin" E2E_PASSWORD="my-pass" E2E_ADMIN_ID=""(后台管理可见账号对应的id make devstar TARGET_URL="...."
注意make e2e-test命令会依赖make devstar创建容器所以如果已经启动了devstar容器请务必加上TARGET_URL参数
```
make devstar
public/assets/install.sh start --image=devstar-studio:latest
make e2e-test TAGRET_URL="..." # 使用默认账号testuser 密码12345678
E2E_USERNAME="your_name" E2E_PASSWORD="your_password" E2E_ADMIN_ID="your_id" make e2e-test TAGRET_URL="..." # 使用你的账号和密码id是后台管理账号对应的id
``
##注意Url不可以是localhost这样容器无法访问也无法正常安装webterminal

repo.diff.view_file

@@ -17,8 +17,7 @@ async function globalSetup(config: FullConfig) {
if (mode === 'url') {
try {
const url1=env.DEVSTAR_URL;
const url2 = `http://${url1}`;
await page.goto(url2, { timeout: 15000 });
await page.goto(url1, { timeout: 15000 });
console.log('[GlobalSetup] 检测到安装界面!正在开始自动化安装...');
// (你提供的所有 "testuser" 安装步骤...)
await page.getByText('Server and Third-Party Service Settings').click();

repo.diff.view_file

@@ -9,8 +9,7 @@ const DEFAULT_E2E_PASS = '12345678';
const DEFAULT_ADMIN_ID = '1';
const isAlreadyInstalled = env.E2E_SKIP_INSTALL === 'true';
const url1=env.DEVSTAR_URL;
const url2 = `http://${url1}`;
const GITEA_URL = (env.E2E_MODE === 'url') ? url2 : 'http://devstar:3000';
const GITEA_URL = (env.E2E_MODE === 'url') ? url1 : 'http://devstar:3000';
const TEST_USER = isAlreadyInstalled ? (env.E2E_USERNAME || DEFAULT_E2E_USER) : DEFAULT_E2E_USER;
const TEST_PASS = isAlreadyInstalled ? (env.E2E_PASSWORD || DEFAULT_E2E_PASS) : DEFAULT_E2E_PASS;
const TEST_ADMIN_USER_ID = isAlreadyInstalled ? (env.E2E_ADMIN_ID || DEFAULT_ADMIN_ID) : DEFAULT_ADMIN_ID;

repo.diff.view_file

@@ -14,7 +14,6 @@ let password: string | undefined;
let wasUsingDefault = false;
if(mode === 'url'){
const url1=env.DEVSTAR_URL;
const url2 = `http://${url1}`;
if (isInstalled) {
// 【"已安装" 模式
@@ -32,7 +31,7 @@ if(mode === 'url'){
console.log(` "刚安装"模式, 尝试用 ${username} 登录...`);
}
try {
await page.goto(url2 + '/user/login');
await page.goto(url1 + '/user/login');
const captchaInput = page.locator('input[name="captcha"]');
if (await captchaInput.isVisible()) {
throw new Error('检测到验证码 (CAPTCHA)! E2E 测试无法继续。');
@@ -40,7 +39,7 @@ if(mode === 'url'){
await page.fill('#user_name',username);
await page.fill('#password', password);
await page.getByRole('button', { name: 'Sign In' }).click();
await expect(page).toHaveURL(url2 + '/');
await expect(page).toHaveURL(url1+ '/');
console.log(`[LoginHelper] 用户 [${username}] 登录成功!`);
} catch (error) {
console.error(`[LoginHelper] 登录失败! 原始错误: ${error.message}`);