ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Macro测试策略全解:vitest+Playwright+Rust集成测试三层防线

Macro测试策略全解:vitest+Playwright+Rust集成测试三层防线 Macro测试策略全解vitestPlaywrightRust集成测试三层防线【免费下载链接】macroMacro is a unified workspace for teams: email, chat, docs, tasks, agents, calls, and CRM — -linked together with shared AI memory.项目地址: https://gitcode.com/GitHub_Trending/macro3/macroMacro 是一款团队统一工作区email、chat、docs、tasks、agents、calls、CRM 全部 -linked 协同它的代码质量靠一条清晰的三层测试防线支撑前端单元测试用vitest浏览器端到端用Playwright后端 Rust 集成测试跑在本地 E2E 栈上。本文带你读懂这套组合拳是怎么搭起来的。一、三层防线总览各管一段互不越位层级工具测什么速度第一层vitest前端组件、缓存、GraphQL、业务逻辑秒级第二层Playwright真实浏览器里的完整用户旅程分钟级第三层Rust 集成测试local E2E 栈服务、数据库、WebSocket 的真实行为需 Docker二、第一层防线vitest 多项目单元测试 前端仓库 apps/web/vitest.config.ts 用 vitest 的projects 机制把上千个测试文件切分成十几个独立“项目”core / queries核心库与查询层graphql-cache / urql-solidGraphQL 缓存相关测试单独启用jsdom环境见 vitest.config.ts 第 52-66 行feature 级项目email、channel、notifications、block-call 等各模块独立配置互不干扰跨包项目packages/email-renderer、packages/collaboration、packages/lexical-core也接入同一入口好处是每个项目只加载自己需要的插件与环境比如 SolidJS 响应式构建失败定位快、并行效率高。本地运行方式在apps/web目录下执行just test-watch定义于 apps/web/justfile即可进入 watch 模式改动即测。三、第二层防线Playwright 浏览器端到端测试 Playwright 配置在 apps/web/playwright.config.ts有两个值得学习的设计1. 三种运行模式自动切换本地开发webServer直接bun run dev起开发服务器且reuseExistingServer复用已开实例CI 环境跑vite preview预览生产构建forbidOnly防止误留test.onlyretries: 1兜底偶发失败见 playwright.config.ts 第 146-152 行本地 E2E 模式LOCAL_E2Etrue时只跑单 worker 的 chromium 项目保证与种子数据共享的确定性2. 登录态复用CI 模式下的 chromium/firefox/webkit 三个浏览器项目都依赖setup项目先生成登录态playwright/.auth/user.json再并行执行用例见 playwright.config.ts 第 86-126 行。3. 本地 E2E 种子数据驱动真正的重头戏在tests/e2e/local-*.spec.ts系列文件。以冒烟测试 apps/web/tests/e2e/local-smoke.spec.ts 为例它读取localE2ESeed固定种子数据断言文档列表和频道页面正确渲染出预期的实体如 第 31-42 行。这套文件与 Rust 集成测试共享同一份 seed fixture保证前后端测的是同一个世界。一键启动整套本地 E2E起隔离栈 → 种子数据 → 跑 Playwrightjust local-e2e # 仅 web 套件 just local-e2e-rust # 仅 Rust 集成测试 just local-e2e-all # 两者都跑配方定义见 tooling/just/xtask.just底层由 xtask 本地编排器统一拉起 Docker 服务栈。四、第三层防线Rust 集成测试 本地 E2E 栈 Rust 侧测试位于 crates/integration_tests/local_e2e/包含三个测试入口channel_mutations.rs频道增删改查channel_websocket.rsWebSocket 实时推送bot_entity_access.rs机器人实体权限边界关键设计见 crates/integration_tests/local_e2e/README.md#[ignore]隔离这些测试默认被忽略日常cargo test不依赖 Docker 服务只有显式-- --ignored或just local-e2e-rust才运行确定性栈通过 xtask 编排器启动独立命名实例种子数据与 Playwright 共用跑完即弃不留脏状态测试后自清理如 bot 权限测试用随机 UUID 建数据、验证后自行删行此外各数据库 crate如 crates/macro_db_client/还内置大量fixtures/*.sql离线 fixture 与单测配合SQLX_OFFLINEtrue的 clippy/check 门禁tooling/just/rust.just在提交前就把问题拦下。五、给新手的可复制清单 ✅单元优先像 Macro 一样用 vitest projects 拆分测试域让每个测试目录独立配置环境E2E 要“种子化”固定种子数据 确定性栈比每次手点一遍 UI 稳得多Rust 集成测试默认 ignore保持日常cargo test秒级反馈重活交给专用编排命令一键入口把“起栈 → 种子 → 跑测试”封装成just local-e2e-all这类单一命令参考 根 justfile新人五分钟就能跑通CI 加保险forbidOnly、失败重试、trace 保留trace: retain-on-failure一个都不能少这套三层防线让 Macro 在覆盖邮件、聊天、文档、CRM 等十几个功能域的同时依然保持了从秒级单测到分钟级 E2E 的完整反馈梯度——值得任何中大型前端 Rust 全栈项目借鉴。【免费下载链接】macroMacro is a unified workspace for teams: email, chat, docs, tasks, agents, calls, and CRM — -linked together with shared AI memory.项目地址: https://gitcode.com/GitHub_Trending/macro3/macro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表