OSS探訪GitHubでログイン

UI・request・JSONなど任意の値をreference snapshotと比較してregressionを検出する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
4,362
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/09/21
ページ内ナビ

概要

SnapshotTestingはSwift向けsnapshot testing libraryです。UIView/UIViewControllerの画像だけでなく、recursive description、URLRequest、JSON、plist、dumpなど多様なrepresentationをreferenceとして保存し、後続testで差分を検出できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

assertSnapshotで画像・text・data representationをreferenceと比較する

最初の実行でreference snapshotをdiskへ記録し、以降の実行ではruntime valueと比較します。imageだけでなくrecursiveDescription、raw request、JSON、plist、dumpなど複数strategyを選べます。

出典:[2]

record modeとdevice/trait指定でsnapshot更新とUI条件を制御する

assert単位やscope単位でrecord policyを設定でき、iPhone/iPadのsize classやtrait collectionを指定したsnapshotも生成できます。Swift TestingとXCTestの双方に統合できます。

出典:[2]

向いている用途

UI・API request・serialization結果の意図しない差分をreviewしたい場合に向く

pixel単位のUI regressionだけでなく、URLRequestやEncodable outputなどの構造変化をreference diffとして確認したいiOS test suiteに適します。

出典:[2]

導入前の確認

image snapshotは同一simulator条件で比較し、1.19.6はmacOS 27の比較crashを修正

READMEはimage snapshotをreference作成時と同じsimulatorで比較するよう注意しています。Package.swiftはSwift tools 6.0、iOS 13以上を宣言し、1.19.6ではmacOS 27でのperceptual image comparison crashが修正されています。

出典:[2][3][4]

参考にした公式資料

  1. [1]pointfreeco/swift-snapshot-testing — GitHub repository(2026-10-06)
  2. [2]SnapshotTesting 1.19.6 — README(2026-10-06)
  3. [3]SnapshotTesting 1.19.6 — Package.swift(2026-10-06)
  4. [4]SnapshotTesting 1.19.6 release(2026-10-06)
  5. [5]SnapshotTesting MIT license(2026-10-06)
編集部からの補足

UIだけでなくrequestやserialization結果もreference diffとしてreviewしたいiOS test suiteに向きます。image snapshotは同一simulator条件を揃えて運用してください。

3ステップで試す

  1. 1

    SnapshotTesting 1.19.6をtest dependencyへ追加する

    SnapshotTesting productはtest targetだけへ追加します。iOS 13以上が必要です。

    .package(url: "https://github.com/pointfreeco/swift-snapshot-testing", exact: "1.19.6")
  2. 2

    値をdump snapshotとして記録する

    最初の実行でreferenceを記録し、再実行で同じrepresentationと比較します。

    import SnapshotTesting assertSnapshot(of: ["red", "green", "blue"], as: .dump)
  3. 3

    差分がある場合はreferenceを明示的に更新する

    意図した変更時だけrecord modeを有効化し、更新されたsnapshotをcode reviewします。

    assertSnapshot(of: ["red", "green", "blue"], as: .dump, record: .all)
公式READMEで確認

成長

成長の推移 · 直近30日

4,362 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
2
Open PR
83

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • swift
  • testing
  • snapshot-testing
  • screenshot-testing
Stars
4,362
Forks
685
Watchers
34
Open Issues
140
Contributors
100
所有者種別
Organization
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2026/09/21

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?