用途
Sentry Snapshots for Apple/Cocoa 的目标是:为 Apple/Cocoa 项目生成快照图像,并将其上传到 Sentry Snapshots。它属于 Sentry for AI 技能集,用于在本地或 CI 中完成快照生成与上传的配置。
主要能力
- 检测项目中已有的快照生成方案,包括 Point-Free 的 swift-snapshot-testing;当已有方案已经或能够输出 PNG/JPEG 时予以保留。
- 在首次配置 Sentry 一方 SnapshotPreviews 方案时,使用 Sentry Wizard 的 appleSnapshots 流程。
- 仅在向导不可用、无法在消歧后非交互解析目标、或在显式消歧后仍失败时,才使用手动配置。
- 支持将生成的快照图像与元数据上传到 Sentry,并输出 Sentry URL 或 snapshot id。
- 提供 GitHub Actions/CI 相关参考:单目标工作流、多目标/fan-out 工作流,以及 Point-Free swift-snapshot-testing 工作流。
使用方式
技能按“检测 → 路由 → 完成检查”的顺序执行。
检测阶段只做足以路由的判断,包括:查找 SnapshotPreviews、swift-snapshot-testing 等标识;查找 .xcodeproj;检查 fastlane/Fastfile、Gemfile;检查 SENTRY_AUTH_TOKEN、SENTRY_ORG、SENTRY_PROJECT 是否设置(只输出 set/unset,不打印密钥值)。记录已有 SnapshotPreviews 配置、已有快照生成器/库、输出目录、Xcode 项目目录、CI 提供方、Fastlane 与 Sentry 认证状态。对每个 .xcodeproj 匹配,记录其所在目录用于 --xcode-project-dir;例如 find 输出 ./MyApp/MyApp.xcodeproj 时,应传 ./MyApp,而不是 bundle 路径。
路由阶段按以下顺序解析:
- 选择或创建图像生成器:命名生成器优先;存在多个生成器且用户未选择时询问;已有非 SnapshotPreviews 生成器则保留;已有 SnapshotPreviews 则使用;无生成器时默认配置 SnapshotPreviews。
- 对于 SnapshotPreviews,如果没有 .xcodeproj 宿主应用或没有托管的 XCTest 目标,则在配置/验证/CI 前停止。保留其他生成器时不适用此停止条件。
- 配置或验证时按情况阅读对应参考文档:已有非 SnapshotPreviews 生成器读 references/snapshots.md;已有 SnapshotPreviews 读 references/snapshot-previews.md 与 references/snapshots.md;新建 SnapshotPreviews 读 references/wizard-setup.md;向导报告无 Swift previews 时,先询问再添加 previews 或选择其他生成器。
- 仅在图像生成器存在后处理 GitHub Actions/CI:Point-Free swift-snapshot-testing 读 references/github-actions-swift-snapshot-testing.md 与 references/snapshots.md;其他非 SnapshotPreviews 生成器读 references/snapshots.md 并适配现有 CI/上传;SnapshotPreviews 且仅一个模拟器、无 matrix/fanout/选择性 CI 读 references/github-actions-simple.md;SnapshotPreviews 且多模拟器、设备族、matrix 或任何选择性 CI 读 references/github-actions-fanout.md 与 references/snapshot-previews.md。
适用场景
- 被要求“setup SnapshotPreviews”“setup Apple snapshot testing”“upload Apple snapshots to Sentry”等任务时。
- 需要在 Apple/Cocoa 项目中配置快照生成并上传到 Sentry Snapshots。
- 需要在 GitHub Actions 中为快照生成与上传配置 CI 工作流。
限制与注意事项
- 纯 SwiftPM 包:停止并询问宿主应用/测试目标;不支持独立的 swift test 渲染。
- 快照上传会将生成的图像与元数据发送到 Sentry。上传前需确认目标组织/项目与导出目录,并检查图像是否含客户数据或其他敏感内容。
- 仅上传用户请求范围内选定的快照输出。
- 完成检查要求:所选快照图像生成器已记录并按路由保留或配置;快照生成出现在相关本地或 CI 测试日志中;导出目录包含 .png 文件及生成的 .json sidecar;上传成功并打印 Sentry URL 或 snapshot id;基础分支上传为全量,选择性 PR 上传包含完整图像名清单。
- 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。