mcpField
A
assessing-external-test-risk

assessing-external-test-risk

github.com/streamlit测试与质量46.2k56 次安装今天更新
代码仓库

关于 assessing-external-test-risk

用于评估分支或 PR 是否需要外部端到端测试的技能。它依据浏览器与部署边界风险清单给出有证据支持的建议,不会自动标记测试。

主要功能

  1. 01基于清单评估风险
  2. 02审查差异、文件和 PR 描述
  3. 03依据路径与差异提供证据
  4. 04建议具体外部测试重点

适用场景

  1. 01评估修改路由或认证的 PR
  2. 02审查 iframe、资源或浏览器策略变更
  3. 03判断是否需要部署边界测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/streamlit/streamlit --skill assessing-external-test-risk

安装后在 Claude Code 中输入/assessing-external-test-risk确认已加载。

详细介绍

评估外部测试风险

使用此技能判断某个分支或 PR 是否应使用 @pytest.mark.external_test 纳入外部 e2e 覆盖。

这有助于保护通常涉及代理、内嵌 iframe 上下文、CSP 约束以及其他浏览器安全边界的部署。

此技能用于风险评估与建议。除非明确要求,否则它不会自动标记测试。

决策规则

采用 any-hit 策略:

  • 如果命中任何检查清单类别,输出 Recommend external_test: Yes
  • 如果未命中任何类别,输出 Recommend external_test: No

需要审查的输入

  • 分支或 PR 相对于其基础分支的 diff
  • 变更的文件及相关测试
  • PR 描述(如果有)

评估工作流

  1. 收集变更的文件以及相对于基础分支的完整 diff。
  2. 评估以下每个检查清单类别是否命中。
  3. 从文件路径和 diff 片段中记录具体证据。
  4. 生成建议以及具体的外部测试重点领域。

检查清单类别

评估所有类别。只要命中一项就足以建议外部覆盖。

  1. 路由和 URL 行为

    • 当变更引入或修改 Starlette 路由、server.baseUrlPath、全捕获路由、请求方法、URL 解析、重定向或状态码时命中。
  2. 认证、Cookie、CSRF 和身份绑定

    • 当变更涉及登录/登出或 OAuth 流程、_streamlit_user、_streamlit_xsrf、CSRF/XSRF 处理、server.trustedUserHeaders 或会话到身份的绑定时命中。
  3. Websocket 握手和会话传输

    • 当变更影响 websocket 握手或子协议、会话亲和性、重连行为、ping 或超时行为、消息大小限制或分片时命中。
  4. 嵌入和 iframe 边界

    • 当变更修改宿主到访客通信(postMessage)、iframe 尺寸或调整大小行为、iframe sandbox 或 allow 属性,或嵌入上下文中的权限策略行为时命中。
  5. 静态资源和组件资源服务

    • 当变更改动资源处理器、缓存头、大小限制、基础路径(包括 server.customComponentBaseUrlPath)或静态/组件资源的代理规则时命中。
  6. Service Worker、上传和下载

    • 当变更修改 Service Worker 注册、作用域或缓存策略;上传/下载端点;JWT 或 CSRF 包装;或下载属性行为时命中。
  7. 跨源行为和外部网络

    • 当变更改动 CORS 允许列表、crossOrigin 用法、外部源 fetch 或外部网络行为,或通过 window.__streamlit.* 进行后端 URL 发现时命中。
  8. 跨源主题和资源发现

    • 当变更引入或修改跨源加载主题/资源(字体、图片、主题全局变量)、与宿主页面的 CSS 隔离,或当 HTML 并非由 Starlette 提供时的 manifest/资源发现时命中。
  9. SiS 和 Snowflake 运行时依赖

    • 当变更依赖或修改 SiS/Snowflake 运行时行为时命中,包括 running_in_sis()、get_active_session()、Snowflake 连接/会话语义或 SiS 特定环境标志。
  10. 客户端存储行为

    • 当变更引入或修改可能在嵌入或第三方上下文中有所不同的 cookie、localStorage 或 sessionStorage 用法时命中。
  11. 安全头和浏览器策略

    • 当变更调整可能影响嵌入或资源加载的 CSP、Referrer-Policy、Permissions-Policy 或相关头时命中。

输出格式

使用以下确切结构:

## External test recommendation

- Recommend external_test: [Yes/No]
- Triggered categories: [List category numbers and names, or "None"]
- Evidence:
  - `<path>`: [short reason from diff]
  - `<path>`: [short reason from diff]
- Suggested external_test focus areas:
  - [Concrete scenario to validate externally]
  - [Concrete scenario to validate externally]
- Confidence: [High/Medium/Low]
- Assumptions and gaps: [Unknowns, missing context, or why confidence is reduced]

解读指南

  • 优先依据证据而非直觉。将每次命中与具体 diff 细节关联起来。
  • 如有疑问,如果外部托管或嵌入行为可能与本地运行出现差异,倾向于 Yes。
  • 保持重点领域具体且可测试(路由、认证握手、iframe 边界、资源加载、SiS 运行时行为)。

示例

示例:建议进行外部测试

Diff 包含:

  • lib/streamlit/web/server/starlette/starlette_routes.py 路由变更
  • 请求认证中间件中的 Cookie/XSRF 处理更新
  • 前端嵌入代码更改 iframe allow 属性

预期输出:

  • Recommend external_test: Yes
  • 触发的类别包括路由、认证/cookies/CSRF 和嵌入边界
  • 关注领域包括外部主机 iframe 嵌入 + 认证/会话连续性检查
示例:不建议进行外部测试

Diff 包含:

  • 内部工具函数的纯重构,无网络、认证、嵌入、存储或运行时集成影响
  • 仅文档和测试名称清理

预期输出:

  • Recommend external_test: No
  • 触发的类别:None
  • 如果未触及间接集成点,置信度很高

评论

支持 Markdown