From d3f24edcbc8a0102629423959b36a02ffbd80fae Mon Sep 17 00:00:00 2001 From: jiaojm <13763605353@163.com> Date: Fri, 24 Oct 2025 16:33:20 +0800 Subject: [PATCH] new --- .env.e2e | 13 +++++++++ tests/README.md | 9 ++++++ tests/e2e/devcontainer.test.e2e.ts | 45 +++++++++++++++++++----------- 3 files changed, 51 insertions(+), 16 deletions(-) create mode 100644 .env.e2e create mode 100644 tests/README.md diff --git a/.env.e2e b/.env.e2e new file mode 100644 index 0000000000..f719cc10f4 --- /dev/null +++ b/.env.e2e @@ -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" \ No newline at end of file diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000000..f8710db726 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,9 @@ +使用PLAYWRIGHT测试框架执行test/e2e下的自动测试脚本 + +1.在custom/conf下的app.ini中关闭验证码:ENABLE_CAPTCHA = false +2.在执行脚本前请下载相关依赖:npx playwright install +3.请在.env.e2e文件中配置相关项: +GITEA_URL:devstar实例的url,TEST_USER:测试用户,TEST_REPO_VALID:一个干净的,有合理json配置的仓库,TEST_USER_ADMIN:管理员账号(可以是测试用户),TEST_ADMIN_USER_ID:管理员用户的id(管理后台查看) +4.在项目根目录执行命令source .env.e2e && npx playwright test ,生成的报告在test/e2e下 + + diff --git a/tests/e2e/devcontainer.test.e2e.ts b/tests/e2e/devcontainer.test.e2e.ts index 5ea886bcba..f6e4f2a783 100644 --- a/tests/e2e/devcontainer.test.e2e.ts +++ b/tests/e2e/devcontainer.test.e2e.ts @@ -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('权限设置成功!');