NewLife/Stardust

README.md
# StarWeb 端到端测试(Stardust.E2ETests) 基于 xUnit + Microsoft.Playwright 的 StarWeb(魔方 MVC 管理后台)全站冒烟测试。 ## 覆盖内容 | 用例 | 说明 | |---|---| | 登录后进入管理后台 | 真实 UI 以 admin 登录,验证跳转与管理后台标题 | | 未登录访问业务页面被重定向到登录页 | 无会话上下文访问 `/Configs/AppConfig`,应跳转登录或被 401/403 拒绝 | | 全部菜单页面可正常访问 | 从 `Membership` 库读取全部可见菜单页面,逐页访问并断言:HTTP 200、无服务端错误标记、无 JS 未捕获异常、非空白页;失败自动截图 | ## 运行前提 1. 先构建站点:`dotnet build 星尘.slnx -c Release`(夹具使用 `Bin/Web` 产物) 2. 首次使用 Playwright 需安装浏览器:`pwsh Stardust.E2ETests/bin/Release/net10.0/playwright.ps1 install chromium` (或全局已安装到 `%LOCALAPPDATA%\ms-playwright`) ## 运行 ```powershell dotnet test Stardust.E2ETests/Stardust.E2ETests.csproj -c Release ``` 默认行为:把自己的 `Bin/Web` 复制到系统临时目录,改写 `appsettings.json` 连接到临时 SQLite 库 (`Stardust/StardustData/Membership`),用随机端口启动真实 Kestrel 站点,测试结束后清理。 **不会读写 `Bin/Data` 下的开发数据库。** 接入已运行的站点(例如调试中实例): ```powershell $env:STARWEB_BASE_URL = "http://127.0.0.1:6680" $env:STARWEB_MEMBERSHIP_DB = "C:\X\Stardust\Bin\Data\Membership.db" $env:STARWEB_USER = "admin" $env:STARWEB_PASS = "admin" dotnet test Stardust.E2ETests/Stardust.E2ETests.csproj -c Release ``` ## 输出 - `TestResults/starweb-pages.md`:逐页巡检报告(状态、耗时、JS 错误数、标题、结果) - `TestResults/starweb-screenshots/*.png`:失败页面截图 ## 已知问题 - `/Cube/Area`(区域地图):百度地图 AK 未授权(`getscript` 返回 `unauth=1`),ECharts bmap 抛 `r.getAxesOnZeroOf is not a function`。测试按"已知外部问题"告警,不计入回归失败;更新有效 AK 后可移除豁免。 ## 注意 本工程**未加入** `星尘.slnx`,因此不会随 `dotnet test 星尘.slnx` 在 CI 中执行(CI 无 Chrome 浏览器与站点启动条件)。