ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Instatic 用户 E2E 功能矩阵深度解析:从 Agent 浏览器审计到 Playwright 回归套件

Instatic 用户 E2E 功能矩阵深度解析:从 Agent 浏览器审计到 Playwright 回归套件 Instatic 用户 E2E 功能矩阵深度解析从 Agent 浏览器审计到 Playwright 回归套件【免费下载链接】InstaticThe open-source alternative to Webflow, Framer and WordPress. Agentic self-hosted visual CMS outputting clean static pages. Users, roles, plugins, content, database, its all there.项目地址: https://gitcode.com/GitHub_Trending/in/Instatic导读本文围绕 Instatic 开源仓库Webflow/Framer/WordPress 的自托管开源替代品可视化 CMS 输出纯净静态页面中的 docs/e2e/feature-matrix.md 展开系统梳理其用户级 E2E 功能矩阵的完整结构优先级分级、自动化覆盖标记、十五大产品域的场景行、每条场景行的验证要点以及矩阵与tests/e2e/Playwright 套件、src/__tests__/Bun 单元测试之间的映射关系。读完本文你将掌握如何使用这张矩阵选择 Agent 浏览器审计范围、如何理解矩阵中的场景行设计哲学以及如何把矩阵行沉淀为可重复运行的回归测试。一、矩阵定位用它来选择 Agent 浏览器审计范围功能矩阵开篇即明确其核心用途用它来选择 Agent 浏览器审计范围Use this matrix to choose agent-browser audit scope。矩阵中的每一行都是一条用户目标User Goal要求步骤具体到可以执行但刻意避免实现细节——这正是它与传统测试用例清单的本质区别行描述的是用户在做什么而不是代码在做什么。矩阵与配套文档构成一个完整的质量闭环体系docs/e2e/README.md文档作用protocol.md定义 Agent 如何执行用户级 E2E 审计的完整流程feature-matrix.md按产品域列出场景行本文主体capabilities.md展开能力/访问控制类 E2E 场景CAP-001 至 CAP-005feature-validation.tsv规范的功能/测试/缺陷电子表格用于质量循环运行run-log-template.md每次审计后写入runs/的运行日志模板spotlight.md⌘K 命令面板Spotlight的专项测试计划README 提供了可直接复用的 Agent 提示词模板例如Run the Core Owner Lifecycle E2E protocolRun rows MEDIA-001 through MEDIA-003Promote PUB-001 into automated smoke coverage说明这张矩阵既是审计范围选择器也是测试能力晋升promotion的候选清单。二、两把钥匙优先级键与自动化键矩阵使用两套行内标记系统让任何人在几十个场景行中快速定位关键路径优先级键Priority KeyPriority含义P0任何可用发布前必须可用Must work before any usable releaseP1核心 CMS/编辑器工作流P2重要的产品工作流P3打磨、边界情况或后续加固从矩阵实例可见优先级分布规律P0 集中在首次设置与所有者生命周期SETUP-001 至 PUB-003与能力与访问控制CAP-001 至 CAP-003两大域P1 遍布编辑器、页面管理、可视化构建、内容 CMS 等核心域P2/P3 多为账户安全细节、性能可靠性、可访问性打磨。自动化键Automation KeyAuto含义✅tests/e2e/中有完整的 Playwright 回归覆盖partialPlaywright 覆盖该行的一部分其余由 Agent 运行处理—仅由 Agent 运行agent-run only值得强调的是矩阵中约一半行是partial或—这并非测试缺失而是刻意设计。README 的Intentionally left agent-run only章节给出了保留 Agent 运行的理由主观判断、拖拽/缩放物理依赖、环境依赖或需要产品/角色工具链而使持久断言变得脆弱如 Does this label feel clear? 这类问题无法用断言表达。这正是用户级 E2E理念的体现——浏览器证据优先Browser evidence comes firstAgent 用 UI 作为事实来源代码、数据库、API 检查仅用于重置、解阻塞或事后分诊。三、Core Owner Lifecycle旗舰所有者旅程矩阵将Core Owner Lifecycle列在首位因为它覆盖了产品的最小闭环从首次设置到匿名访客验证发布内容。场景行速览ID优先级Auto用户目标核心验证点SETUP-001P0✅创建第一个站点和所有者账号打开/admin完成设置进入 admin/editorAUTH-001P0✅登出再登录会话结束、登录恢复访问AUTH-003P0✅登出并使陈旧标签页失效当前标签页回登录页陈旧标签页无法继续浏览EDIT-001P0✅向首页添加可见文本文本出现在画布且刷新后保留EDIT-002P1✅添加按钮并修改标签/链接按钮按预期标签和链接渲染SAVE-001P0✅编辑后刷新草稿内容保持可编辑PUB-001P0✅发布首页出现成功反馈PUB-002P0✅以访客身份访问已发布首页公共页面无 admin chromePUB-003P1✅未发布草稿变更保持私有公共页面仍显示最后发布版本PUBLISH-002P1✅调度未来发布仪表盘显示调度计数与 Publish lineup调度器按时发布旗舰回归测试的源码证据矩阵后的注记详细描述了core-owner-lifecycle.e2e.ts的完整执行序列。查看 tests/e2e/core-owner-lifecycle.e2e.ts 可以印证其实现测试以ANONYMOUS_STATE运行不用共享的 ownerstorageState因为它包含登出步骤——登出会使服务端会话 token 失效如果污染共享状态会破坏后续所有 spec。这是 README 中Session rule的典型体现通过login/logout/openSiteEditor辅助函数完成 AUTH-001通过insertNotchModule(page, text)与setPropValue(page, text, ...)插入文本EDIT-001使用page.reload()expectEditorReadycanvasFrame断言验证草稿持久化SAVE-001通过publishDraft包含 step-up 流程发布PUB-001、CAP-003再用visitPublicPage(browser, { visibleText, hiddenText })以全新匿名上下文验证访客视图PUB-002、PUB-003——其中hiddenText参数专门用于断言草稿文本不得泄漏到公共页面。PUBLISH-002 的调度发布由两部分验证page-management.e2e.ts在 Site 工具栏调度页面并验证仪表盘 Pages widget 与 Publish lineupsrc/tests/server/publishScheduler.test.ts 则覆盖调度器 tick 将到期页面行以系统 actor 身份提升为已发布。手机端390px覆盖SAVE-001 的注记还展示了移动端策略page-management.e2e.ts保存隔离页面、切换 390x844 视口、刷新、重开页面、验证文本并断言窄工具栏不产生文档级水平溢出——移动端不是事后修补而是矩阵行的正式组成部分。四、Admin Shell 与账户安全step-up 与 MFA 的纵深验证这一域ADMIN-001 至 USERS-003、ACCOUNT-001 至 AUTH-006是矩阵中注记最密集的区域之一核心主题可归纳为三层1. 导航与外壳可靠性ADMIN-001/003admin-navigation.e2e.ts验证工作区导航、全局工具栏 trailer、账户菜单、Open Live root 回退、Content 选中项深链到/posts/slug、离开 Content 后清除 entry target以及 390px 工具栏 trailer 包含性。ADMIN-004从 Dashboard 非编辑器路由打开 Settings验证 General/Shortcuts/Publishing/Preferences 分区通过真实控件写入 Confirm before deleting layers、Theme、UI density、UI text size验证刷新持久化、损坏 localStorage 回退与 390px 包含性。矩阵还记录了实际缺陷DEF-20260623-ADMIN004-01Preferences 控件超出 390px 视口修复方式是SettingsModal.module.css在手机宽度切换为单列移动外壳。ADMIN-005聚焦 Bun 覆盖工作区布局存储回退、ToastProvider 行为、ConfirmDeleteProvider alertdialog 提交门控、no-native-dialog 架构强制、错误边界布局。记录了三个实际修复Toast barrel 导出dismissToastDEF-20260623-ADMIN005-01、内容左面板移动端溢出-02、内容右侧设置面板移动端溢出-03。2. 账户安全step-up 门控矩阵反复出现step-up概念敏感操作要求新鲜的密码/MFA 确认。ACCOUNT-003/004/005 与 CAP-003 的注记共同勾勒出完整策略ACCOUNT-003改密码验证过短密码与不匹配确认的字段级提示、step-up 门控的密码轮换、旧密码拒绝、新密码登录accountSecurity.test.ts覆盖多会话吊销等 API 边界。ACCOUNT-004MFA 生命周期启用/禁用 TOTP、恢复码生成/燃烧/复用拒绝、QR 渲染失败回退到手动设置密钥src/tests/admin/accountPage.test.tsx、移动端设置对话框包含性。ACCOUNT-005step-up 窗口策略窗口可选值 5/15/30/60 分钟disabled 模式绕过普通敏感门控但不绕过策略编辑器本身accountSecurity.test.ts过期窗口拒绝敏感操作authStepUp.test.ts。3. 会话与活动审计AUTH-003auth.e2e.ts通过将活动会话克隆到第二个浏览器上下文、在第一个上下文中登出、验证陈旧上下文被强制回到登录页自动化了陈旧标签页会话吊销authSessionEdgeCases.test.ts覆盖重复POST /logout的安全 cookie 清除。AUTH-006account.e2e.ts使用一次性账户验证 5 次错误密码触发锁定、额外一次触发元组限流、活动页展示可疑活动横幅与失败计数徽章。USERS-001/002/003非所有者用户全生命周期创建/编辑/挂起/重置/删除、自定义角色生命周期roleManagementEdges.test.ts覆盖重复 slug、零能力角色、内置角色保护、使用中角色删除保护、审计日志渲染auditLogEdges.test.ts覆盖audit.read权限强制、newest-100 排序、软删除用户标签。五、Dashboard 与 OnboardingDASH-001 至 DASH-003 全部在 tests/e2e/dashboard.e2e.ts 中自动化DASH-001验证默认所有者仪表盘路由、Overview 控件、Today/7d 范围 tab 状态、Customize/Add block 控件、全部九个默认第一方 widgetstorage、pages、posts、media、status、activity、publish lineup、plugins、domain、动态 widget 的加载态、SQLite 存储标签、390px 移动端包含性。记录缺陷 DEF-20260623-DASH001-01Overview 头部移动端溢出760px 以下堆叠包裹修复。DASH-002自定义模式、Block library、添加内置 AI usage widget、服务端dashboard-layout偏好持久化、刷新恢复、网格拖拽移动、右缘 resize、拖到 library 删除、最终刷新消失。记录缺陷 DEF-20260623-DASH002-01Block library 实时预览中的非法嵌套按钮。DASH-003在专用 post-setup、pre-persona 项目中运行验证 1/5 进度仅身份完成、五个任务标签/状态/动作、Settings modal 动作、工作区路由New page/Browse plugins/Add members、服务端 dismiss 持久化。值得注意的工程细节DASH-003 必须在dashboard-preflight项目中运行紧随 setup、先于任何 persona/插件/内容变更以保证干净安装的 onboarding 事实确定性——这对应 playwright.config.ts 中四个 projectsetup→dashboard-preflight→personas→e2e的依赖链设计。六、能力与访问控制CAP 域矩阵中 CAP-001 至 CAP-005 为 P0/P1 行完整场景描述在 docs/e2e/capabilities.md 中展开。核心设计是每个场景创建专用角色与用户登出或使用独立浏览器上下文以防缓存 admin 状态泄漏CAP-001工作区隔离users.e2e.ts创建 SiteMedia 角色验证工具栏只暴露 Media、隐藏 Content 与 Users、直接访问/admin/users被重定向走且不渲染受保护工作区同时覆盖 390px 有限用户工具栏。CAP-002编辑模式边界capabilities.e2e.ts创建 content-only / style-only / structure-only 三种站点编辑角色验证每个人只能完成其被允许的编辑类别且类别外的控件保持不可用而不是点击后才失败。相关修复DEF-20260622-001/002印证了服务端 page-row diff 校验与属性控件渲染的类别隔离。CAP-003敏感操作 step-up每个发布 spec 都会演练发布 step-upusers.e2e.ts覆盖用户创建取消/错误/正确密码、过期窗口重新提示、390px 移动对话框account.e2e.ts覆盖 MFA 启用用户的创建 step-upcapabilities.e2e.ts覆盖插件 JSON manifest 安装/卸载与破坏性 CMS-bundle 替换导入 step-upsrc/tests/server/stepUpSecondaryActions.test.ts 覆盖用户删除、角色删除、step-up 策略与单会话吊销门控。CAP-004数据/媒体操作拆分验证 data 读/管/导入/导出、内容行移动门控、媒体读/写/替换/删除各自的 affordance 保持独立——替换不隐含上传/写入删除不隐含上传/替换。CAP-005插件/AI 拆分插件读/安装/配置/生命周期/调度/包与 AI chat/供应商管理/审计标签页拆分AI 写工具过滤由单元门控 src/tests/agent/aiToolCapabilityGate.test.ts 覆盖而非浏览器 spec——因为凭据按用户隔离且 chat-only persona 在浏览器中无法构建可工作的本地供应商。七、页面管理与可视化构建PAGE/BUILDER/SITE 域页面管理PAGE-001 至 PAGE-004 在page-management.e2e.ts中自动化从 Site Explorer 创建一次性页面、验证新页面出现在画布、通过右键菜单重命名、通过确认对话框删除、以及关键的 PAGE-004——未保存编辑后切换页面再返回证明草稿状态保留。可视化构建器visual-builder.e2e.ts是矩阵中覆盖最广的 spec 之一从注记可见其能力全景BUILDER-001/002/003/005/007模块插入、节点选择与属性编辑、DOM 面板拖拽重排、撤销/重做含 redo 分支清除与刷新重置、断点作用域样式。SITE-005模块选择器桌面端 Grid 视图搜索button、Enter 插入、Recent 记录、List 视图偏好持久化拖拽回归验证 Text 拖入 Container 内部的放置预览390px 移动端对话框包含性。配套的 module-inserter 低层套件覆盖损坏 localStorage 回退、Recent 去重、服务端收藏、禁用/隐藏模块可用性。SITE-017可视化组件与插槽将 Text 组件化、添加 Slot Outlet、回到页面向锁定的生成插槽插入 Text、保存/发布、匿名访客看到组件主体与插槽填充且无编辑器标签。注记记录了实际缺陷 DEF-20260623-SITE017-001页面/组件增量保存顺序修复为先写组件行再写页面行。SITE-018模板与动态绑定先发布一次性 post、创建更高优先级 Posts 模板、通过 Preview source 显式选择真实行、用绑定选择器插入{currentEntry.title}与内容 outlet、验证画布预览、保存并发布模板、匿名/posts/slug路由渲染自定义模板且无未解析 token。SITE-019保存布局保存带样式的 Container 子树为布局、空白/重名验证、390px 布局分类可达性、插入到另一页面保留捕获的 class 样式、从管理菜单重命名/删除、保存/刷新/发布并验证匿名公共输出。记录三个实际缺陷addPage 陈旧节点选择、count-only 移动分类按钮、保存布局管理菜单 z-index。八、站点运行时与代码SITE-013/014/016SITE-013代码编辑器TypeScript 站点脚本的 DOM 感知补全、悬停签名、严格语义诊断有界可折叠 Problems 列表、相对文件类型、自动保存、画布执行、发布编译。聚焦 Bun 覆盖 worker 协议/客户端、懒加载编译器隔离、worker bundle 预算2026-08-11 的 agent-browser 运行覆盖实时类型错误渲染等。SITE-014运行时依赖缺失导入可见、安全依赖解析为 lock/importmap、缓存包文件在/_instatic/runtime/cache下服务。tests/e2e/runtime-dependencies.e2e.ts 覆盖浏览器端脚本 import 编写、Dependencies 面板缺失包 Add、实时canvas-confettiregistry/cache 解析、保存/发布、公共 importmap 发射、浏览器加载/_instatic/runtime/cache/...包 URL以及 390px 移动端路径。注记记录了三个修复Code Editor 悬浮拦截 Add、相对 RUNTIME_CACHE_DIR 泄漏导致 esbuild 解析失败、移动端 Code Editor 被固定桌面面板尺寸阻塞。SITE-016预览与实时对比tests/e2e/preview-live.e2e.ts 发布版本 A、保存未发布草稿 B、验证 Preview 页面 iframe 渲染 B、验证 Open live page 弹窗仍服务已发布 A 且无编辑器 chrome、390px 重复打开验证无溢出。Issue #234 额外将 Preview 页面门控到服务端 runtime-preview 路径使 loop 与媒体预取与公共渲染一致。九、公共服务与动态片段PUBLIC-003/004PUBLIC-003资产内容哈希 CSS/运行时资产与包缓存文件以正确内容类型服务、不可变缓存、独占命名空间、公共媒体重定向行为。聚焦 Bun 覆盖外部 CSS link 生成与陈旧/畸形 CSS 404、DB 与磁盘双后端运行时资产服务、module-JS bundle 注入与路由校验、签名媒体重定向架构。tests/e2e/forms.e2e.ts 记录浏览器加载的/_instatic/css/*.css与/_instatic/module-js/base.form.js的 200 状态与内容类型tests/e2e/media.e2e.ts 记录/uploads/PNG 解码。PUBLIC-004动态片段静态外壳包含instatic-hole占位与 hole runtime片段按当前发布版本与来源路由查询渲染。tests/e2e/public-dynamic-fragments.e2e.ts 编写路由查询文本 hole、发布、验证烘焙外壳、观察/_instatic/hole-runtime.js与/_instatic/hole/*响应、桌面与 390px 移动访客水合不同的route.query值。十、基础模块MODULE-001 至 005这五行大多为partial模块渲染契约由聚焦 Bun 测试覆盖浏览器插入/编辑/发布排列保持 agent-run。矩阵注记给出的测试映射具有高度参考价值行聚焦测试覆盖内容MODULE-001src/tests/base-modules.test.ts、src/modules/base/outlet/tests/outlet.render.test.tsbody 直通渲染、container 语义标签/属性/void 标签、outlet 内容区域回退MODULE-002base-modules.test.ts、sanitizeSvg、svgMappingtext/list/link/button/image/video 渲染契约、base.svg一致性、SVG 净化、可访问标签转义MODULE-003base-modules.test.ts、src/tests/publisher/loopRender.test.ts、src/tests/server/loopPrefetch.test.ts、src/tests/server/dynamicDetection.test.tsloop 默认值/标签回退、currentEntry/parentEntry 隔离、空/缺失数据、无限模式运行时注入、预取与请求依赖检测MODULE-004src/tests/forms/formModules.test.ts 及 forms/canvas/publisher/server/publicForms/panels 下多套件表单模块契约、语义渲染、发布边界转义、formId 规范化、canvas 原生提交抑制、运行时发射、公共端点安全MODULE-005base-modules.test.ts、moduleConsolidation、visualComponentRef、publishWithComponents 及 core/editor-store/persistence/integration/canvas/dom-panel/architecture 多套件component-ref/slot-outlet/slot-instance 契约、发布内联、prop 覆盖、缺失组件、嵌套引用、插槽同步、递归门控、锁定插槽实例十一、表单FORM-001/002CMS 原生表单的可视化编排与公共提交安全FORM-001表单模块语义渲染、字段快照、设置分析、兼容字段绑定、canvas 原生控件抑制含提交按钮、表单预览父级查找。tests/e2e/forms.e2e.ts 覆盖浏览器端创建目标数据表、表单编排、保存、发布、公共提交、admin 数据行验证。FORM-002全路由所有权、同源/页面 token challenge 签发、一次性 challenge 提交、超大 payload 处理、限流、目标表守卫、字段验证、运行时 challenge 预取/提交委托、page-token 盖章。浏览器 spec 覆盖成功反馈、持久化数据行创建、移动端过速错误反馈、真实时钟最小提交重试、移动端公共页面溢出检查。十二、媒体MEDIA-001 至 007media.e2e.ts的覆盖在矩阵中标注为全部 ✅ 或 partialMEDIA-001/002/003上传图片并放置、不支持文件上传的清晰校验反馈、复用已上传资产。MEDIA-004标题/文件名/alt/说明/标签的元数据编辑持久化外加 390px 移动 viewer 包含性。MEDIA-005替换/软删除/恢复/彻底清除的生命周期外加移动端替换对话框与 Trash 导航。MEDIA-006干净安装的内置存储面板——本地磁盘支撑每个角色、本地 sharp delegate 被选中、空适配器/委托状态清晰、无外部适配器或积压时不出现迁移/测试动作。MEDIA-007上传 SVG 的不安全向量净化存储与服务前剥离与公共/uploads服务光栅变体阶梯/srcset、缺失变体回退、外部签名 URL 过期保持低层或未来覆盖。十三、Content CMS 与 AI 工作区Content CMSCONTENT-001 至 010content.e2e.ts与专项 spec 覆盖了丰富的内容场景其中几个注记展示了矩阵发现缺陷→修复→回归的闭环CONTENT-003斜杠菜单 Heading 2 与 Data token 占位插入的保存/刷新持久化。CONTENT-005明确编排并发布低优先级 Posts title/outlet 模板在 Live 模式验证未保存草稿 title/body 渲染。CONTENT-008向系统 Posts 表添加自定义文本字段Data inspector、在 Content 设置侧栏编辑、保存/刷新、发布 post、从 Site builder 绑定选择器插入自定义字段、验证画布预览解析、发布模板、匿名/posts/slug渲染自定义值。CONTENT-009content-create-race.e2e.ts保持首个 entries-list GET 直到 create POST 落地强制触发之前将编辑器空白标题视图合并进侧栏的排序问题验证修复前失败、修复后通过contentAdmin.test.tsx在单元层锁定同一路径。CONTENT-010content-seo-meta.e2e.ts编写 SEO title/description 与条目标题不同发布后读取匿名公共路由的服务 HTML验证修复前title显示普通条目标题且无 description 标签。条目级与站点级设置优先级及{page.title}绑定守卫在publicRendering.test.ts渲染层锁定。AI 工作区AI-001 至 007、AI-010ai.e2e.ts使用 fixture-backed 本地 Ollama 兼容服务器完成浏览器覆盖AI-001Ollama base-URL 凭据创建/列表/删除、离线时跳过自动默认化。AI-002Data 作用域默认凭据/模型选择、保存反馈、刷新持久化、清除反馈、清除后可删除凭据用离线 Ollama 凭据与确定性回退模型列表。AI-004站点助手对 fixture-backed 本地供应商的流式回复以及文本用途审计持久化。AI-005浏览器执行的site_read_document工具结果桥——工具请求、浏览器结果 POST、供应商第二轮、完成工具徽章、最终助手文本。AI-006Audit 标签页按模型/表面/提示与完成 token/日支出验证流式聊天的用量汇总。AI-007直接供应商驱动映射Anthropic/OpenAI/Ollama/OpenRouter在 src/tests/ai/*Mapping.test.ts 与 pricing 测试中覆盖OpenRouter 路径验证 Responses 端点、bearer auth、原生usage.cost透传、模型列表定价与上下文窗口。AI-010工作区 MCP 桥在真实浏览器中保持流可读——/admin/api/ai/editor-bridge以text/event-stream响应 200、no-transform 缓存、客户端保持流打开无解析错误。十四、响应式、可访问性、性能与可靠性A11Y/RESP/PERF/RELA11Y-001accessibility.e2e.ts键盘纯登录——setup 后使用匿名存储、聚焦 Email、Tab 到 Password、Enter 提交、验证认证 admin shell 出现。A11Y-002 / RESP-001主 admin shell 键盘导航768x1024 平板宽度验证工具栏、canvas 根与账户菜单触发器可见可达。RESP-002390px 视口公共页面可读且有样式发布页面移动冒烟。PERF-001/002performance.e2e.ts冷启动打开/admin/site在宽松的 20s 预算内就绪编辑器 chrome、loader 消失、无 console 错误含文本/链接按钮/上传图片的页面在 30s 预算内完成发布并检查公共路由。REL-001reliability.e2e.ts已保存编辑刷新恢复。REL-002error-handling.e2e.ts页面 slug 必填/保留验证与恢复。十五、配置部署与安全边界CONFIG/SECURITYCONFIG-001数据库方言src/tests/db/createDbClient.test.ts 覆盖 DATABASE_URL 的 SQLite 形式、Postgres scheme、非法 scheme、SQLite 父目录创建、迁移幂等migration-parity、db-json-column-naming、db-postgres-isms等测试覆盖方言契约、JSON 列后缀漂移与 advisory-lock 差异。CONFIG-002运行时配置src/tests/server/serverConfig.test.ts 覆盖 PORT、DATABASE_URL、UPLOADS_DIR、STATIC_DIR、可信代理与公共来源的默认值与环境变量覆盖Docker 镜像/compose healthcheck、持久卷、生产环境变量接线由 dockerConfig 测试覆盖。CONFIG-003运行时选项强制manifest 权限、网络主机、密钥、媒体表面与运行时依赖被验证和强制——覆盖表单密钥优先级/回退、SSRF 门控 fetch、加密插件设置、媒体适配器边界验证、运行时依赖缓存/包服务。SECURITY-001API 安全边界这是矩阵中范围最大的 P0 行——CMS/AI API 变更由 origin、capability 与 TypeBox 请求边界检查保护。聚焦 Bun 覆盖跨 76 个 CMS 变更端点与 11 个 AI 变更端点的路由形状模糊测试带抛错 DB、伪造 origin 在 DB 访问前拒绝、配置的自定义与平台公共来源到达 CMS/AI 认证边界、来自可信代理的 forwarded-host/proto 欺骗拒绝、安全 CMS 读不经过 Origin 门控、CMS namespace 405、capability-before-body 排序、畸形 JSON/schema body 拒绝、路由表语义、AI 驱动隔离与 AI 工具能力过滤。十六、矩阵的工程方法论从审计到自动化的晋升路径综合全矩阵可以提炼出 Instatic 用户 E2E 体系的方法论闭环以用户目标为行每个场景行描述用户想完成什么而非组件名、store action 或内部 ID。这让矩阵对产品人员、QA 与 Agent 同样可读。优先级驱动P0 行必须在任何可用发布前通过P1 行保护核心 CMS/编辑器工作流。矩阵是发布门禁的事实来源。双层测试体系Playwright*.e2e.ts用户行为形状、可持久断言 聚焦 Bun 测试服务端边界、能力门控、校验语义 Agent 运行主观摩擦、视觉、可访问性。三者互补而非替代。晋升条件明确protocol.md 规定只有满足稳定且关键、预期结果无歧义、价值是回归检测而非产品判断、可使用持久用户可见选择器时才晋升到自动化这个标签是否清晰探索性布局审查则明确是不良候选。证据标准严格run-log 需要截图路径、当前 URL、视口大小、精确可见文案、干净状态复现步骤数据库行不足以通过用户级场景。移动端是正式维度390px 视口包含性、无文档级水平溢出、发布/账户操作可达性贯穿所有产品域而非单独的一次性检查。对于希望为自托管 CMS 建立用户级质量体系的团队这张矩阵本身就是一个可复制的模板它把用户旅程这一抽象概念分解为可执行的场景行把每个场景行映射到明确的验证责任Playwright/Bun/Agent并用优先级与自动化标记让任何人在任意时刻都能回答这条关键路径当前由谁在守护。如需从零运行这套 E2E 体系可参考 docs/e2e/README.md 的指引先执行bun run test:e2e:install安装 Chromium再执行bun run test:e2e运行 Playwright 回归套件playwright.config.ts 默认启动一次性本地栈Admin UI 在http://127.0.0.1:5174CMS/公共站点在http://127.0.0.1:3002数据库为.tmp/e2e-agent.db上传目录为.tmp/e2e-uploads。若需调试可设置E2E_REUSE_SERVER1复用自启服务器或E2E_TRACE1/E2E_VIDEO1按需开启本地 trace 与视频捕获完整套件因单 worker 中大量 SSE 连接可能累积数 GB 临时产物故本地默认关闭。【免费下载链接】InstaticThe open-source alternative to Webflow, Framer and WordPress. Agentic self-hosted visual CMS outputting clean static pages. Users, roles, plugins, content, database, its all there.项目地址: https://gitcode.com/GitHub_Trending/in/Instatic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表