This commit is contained in:
jiaojm
2025-10-24 16:33:20 +08:00
repo.diff.parent a99c05bd6e
repo.diff.commit d3f24edcbc
repo.diff.stats_desc%!(EXTRA int=3, int=51, int=16)

13
.env.e2e Normal file
repo.diff.view_file

@@ -0,0 +1,13 @@
export GITEA_URL="http://192.168.181.128:3000"
export TEST_USER="jiaojunming"
export TEST_PASS="hwyhwy12"
export TEST_REPO_VALID="jiaojunming/test1"
export TEST_REPO_EMPTY="jiaojunming/test2"
export TEST_REPO_INVALID="jiaojunming/test3"
export TEST_USER_ADMIN="jiaojunming"
export TEST_PASS_ADMIN="hwyhwy12"
export TEST_ADMIN_USER_ID="1"
export TEST_REPO_ADMIN="jiaojunming/test1"

9
tests/README.md Normal file
repo.diff.view_file

@@ -0,0 +1,9 @@
使用PLAYWRIGHT测试框架执行test/e2e下的自动测试脚本
1.在custom/conf下的app.ini中关闭验证码ENABLE_CAPTCHA = false
2.在执行脚本前请下载相关依赖npx playwright install
3.请在.env.e2e文件中配置相关项
GITEA_URLdevstar实例的urlTEST_USER测试用户TEST_REPO_VALID一个干净的有合理json配置的仓库TEST_USER_ADMIN管理员账号可以是测试用户TEST_ADMIN_USER_ID管理员用户的id管理后台查看
4.在项目根目录执行命令source .env.e2e && npx playwright test 生成的报告在test/e2e下

repo.diff.view_file

@@ -1,21 +1,34 @@
import { test, expect } from '@playwright/test';
import { link } from 'node:fs';
const baseURL = process.env.GITEA_URL;
if (!baseURL) {
throw new Error("请设置 GITEA_URL 环境变量");
const {
GITEA_URL,
TEST_USER,
TEST_PASS,
TEST_REPO_VALID,
TEST_REPO_EMPTY,
TEST_REPO_INVALID,
TEST_USER_ADMIN,
TEST_PASS_ADMIN,
TEST_ADMIN_USER_ID,
TEST_REPO_ADMIN
} = process.env;
// 检查关键配置是否存在
if (!GITEA_URL || !TEST_USER || !TEST_PASS || !TEST_REPO_VALID) {
  throw new Error("请确保 .env.e2e 配置文件已加载,并包含 GITEA_URL, TEST_USER, TEST_PASS, TEST_REPO_VALID");
}
test('DevContainer 功能和配置', async ({ page,context }) => {
console.log("正在登陆");
await page.goto(baseURL + '/user/login');
await page.fill('#user_name', 'jiaojunming');
await page.fill('#password', 'hwyhwy12');
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(baseURL + '/');
await expect(page).toHaveURL(GITEA_URL + '/');
console.log("登录成功! ");
console.log("进入test1仓库");
await page.goto(baseURL + '/jiaojunming/test1');
await page.goto(GITEA_URL + '/'+ TEST_REPO_VALID);
await page.getByRole('link', { name: 'Dev Container' }).click();
await expect(page.getByText('devcontainer.json')).toBeVisible();
await expect(page.getByRole('button', { name: 'Create Dev Container' })).toBeVisible();
@@ -51,32 +64,32 @@ test('DevContainer 功能和配置', async ({ page,context }) => {
console.log("test1 检查通过!");
console.log("test2仓库");
await page.goto(baseURL + '/jiaojunming/test2');
await page.goto(GITEA_URL + '/'+ TEST_REPO_EMPTY);
await page.getByRole('link', { name: 'Dev Container' }).click();
await expect(page.getByText('Oops, it looks like there is no Dev Container Setting in this repository.')).toBeVisible();
console.log("test2 检查通过");
console.log("test3仓库");
await page.goto(baseURL + '/jiaojunming/test3');
await page.goto(GITEA_URL+ '/' + TEST_REPO_INVALID);
await page.getByRole('link', { name: 'Dev Container' }).click();
await expect(page.getByText(' Invalid Dev Container Configuration')).toBeVisible();
console.log("test3检查通过");
});
test('权限修改相关', async ({ page }) => {
console.log("正在登陆");
await page.goto(baseURL + '/user/login');
await page.fill('#user_name', 'jiaojunming');
await page.fill('#password', 'hwyhwy12');
await page.goto(GITEA_URL + '/user/login');
await page.fill('#user_name', TEST_USER_ADMIN);
await page.fill('#password', TEST_PASS_ADMIN);
await page.getByRole('button', { name: 'Sign In' }).click();
await expect(page).toHaveURL(baseURL + '/');
await expect(page).toHaveURL(GITEA_URL + '/');
console.log("登录成功! ");
console.log('权限配置');
await page.goto(baseURL+'/-/admin/users/1/edit');
await page.goto(GITEA_URL+ '/-/admin/users/' + TEST_ADMIN_USER_ID + '/edit');
const devContainerCheckbox = page.getByLabel(/May Create Devcontainers/i);
await devContainerCheckbox.uncheck();
await page.getByRole('button', { name: 'Update User Account' }).click();
await page.goto(baseURL + '/jiaojunming/test1');
await page.goto(GITEA_URL + '/' + TEST_REPO_ADMIN);
const devContainerLink = page.getByRole('link', { name: 'Dev Container' });
await expect(devContainerLink).toBeHidden({ timeout: 10000 });
console.log('权限设置成功!');