关于 assessing-external-test-risk
用于评估分支或 PR 是否需要外部端到端测试的技能。它依据浏览器与部署边界风险清单给出有证据支持的建议,不会自动标记测试。
主要功能
- 01基于清单评估风险
- 02审查差异、文件和 PR 描述
- 03依据路径与差异提供证据
- 04建议具体外部测试重点
适用场景
- 01评估修改路由或认证的 PR
- 02审查 iframe、资源或浏览器策略变更
- 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 描述(如果有)
评估工作流
- 收集变更的文件以及相对于基础分支的完整 diff。
- 评估以下每个检查清单类别是否命中。
- 从文件路径和 diff 片段中记录具体证据。
- 生成建议以及具体的外部测试重点领域。
检查清单类别
评估所有类别。只要命中一项就足以建议外部覆盖。
-
路由和 URL 行为
- 当变更引入或修改 Starlette 路由、
server.baseUrlPath、全捕获路由、请求方法、URL 解析、重定向或状态码时命中。
- 当变更引入或修改 Starlette 路由、
-
认证、Cookie、CSRF 和身份绑定
- 当变更涉及登录/登出或 OAuth 流程、
_streamlit_user、_streamlit_xsrf、CSRF/XSRF 处理、server.trustedUserHeaders或会话到身份的绑定时命中。
- 当变更涉及登录/登出或 OAuth 流程、
-
Websocket 握手和会话传输
- 当变更影响 websocket 握手或子协议、会话亲和性、重连行为、ping 或超时行为、消息大小限制或分片时命中。
-
嵌入和 iframe 边界
- 当变更修改宿主到访客通信(
postMessage)、iframe 尺寸或调整大小行为、iframe sandbox 或 allow 属性,或嵌入上下文中的权限策略行为时命中。
- 当变更修改宿主到访客通信(
-
静态资源和组件资源服务
- 当变更改动资源处理器、缓存头、大小限制、基础路径(包括
server.customComponentBaseUrlPath)或静态/组件资源的代理规则时命中。
- 当变更改动资源处理器、缓存头、大小限制、基础路径(包括
-
Service Worker、上传和下载
- 当变更修改 Service Worker 注册、作用域或缓存策略;上传/下载端点;JWT 或 CSRF 包装;或下载属性行为时命中。
-
跨源行为和外部网络
- 当变更改动 CORS 允许列表、
crossOrigin用法、外部源 fetch 或外部网络行为,或通过window.__streamlit.*进行后端 URL 发现时命中。
- 当变更改动 CORS 允许列表、
-
跨源主题和资源发现
- 当变更引入或修改跨源加载主题/资源(字体、图片、主题全局变量)、与宿主页面的 CSS 隔离,或当 HTML 并非由 Starlette 提供时的 manifest/资源发现时命中。
-
SiS 和 Snowflake 运行时依赖
- 当变更依赖或修改 SiS/Snowflake 运行时行为时命中,包括
running_in_sis()、get_active_session()、Snowflake 连接/会话语义或 SiS 特定环境标志。
- 当变更依赖或修改 SiS/Snowflake 运行时行为时命中,包括
-
客户端存储行为
- 当变更引入或修改可能在嵌入或第三方上下文中有所不同的 cookie、
localStorage或sessionStorage用法时命中。
- 当变更引入或修改可能在嵌入或第三方上下文中有所不同的 cookie、
-
安全头和浏览器策略
- 当变更调整可能影响嵌入或资源加载的 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