Об этом проекте

# 📸 SnapshotTesting Приятное тестирование снимков на Swift. Эта библиотека позволяет писать тесты снимков для любого значения, в любом формате, на любой платформе Swift. Она поддерживает представления, контроллеры представлений, URL-запросы, значения Encodable и многое другое. ## Использование После установки дополнительная настройка не требуется. Импортируйте модуль `SnapshotTesting` и вызовите функцию `assertSnapshot`. ```swift import SnapshotTesting import Testing @MainActor struct MyViewControllerTests { @Test func myViewController() { let vc = MyViewController() assertSnapshot(of: vc, as: .image) } } ``` При первом запуске утверждения снимок автоматически записывается на диск, и тест завершается неудачей, выводя путь к файлу только что записанного эталона. При повторных запусках теста этот эталон загружается и сравнивается со значением во время выполнения. Сбои можно inspect из Report Navigator в Xcode или путём проверки URL-адресов файлов. Вы можете записывать новые эталоны, настраивая снимки inline или используя инструмент `withSnapshotTesting`. ## Снимок чего угодно В отличие от большинства библиотек тестирования снимков, ограниченных `UIImage` для `UIView`, SnapshotTesting работает с любым форматом любого значения на любой платформе Swift. Функция `assertSnapshot` принимает значение и любую стратегию снимков, которую это значение поддерживает. Тестирование представлений обладает широкими возможностями настройки. Вы можете переопределять коллекции трейтов и генерировать независимые от устройства снимки из одного симулятора. Доступные стратегии снимков включают: - `.image` для представлений и контроллеров представлений - `.recursiveDescription` для текстового представления иерархий представлений - `.raw` для URL-запросов - `.json` и `.plist` для значений `Encodable` - `.dump` для любого значения с использованием его зеркала ## Возможности - Десятки стратегий снимков - Написание собственных стратегий снимков - Настройка не требуется - Более автоматизированный подход: новые снимки записываются автоматически - Без подклассов: утверждения из любого тест-кейса XCTest или спецификации Quick - Независимые от устройства снимки - Полноценная поддержка Xcode с различиями изображений в виде вложений XCTest - Поддержка любой платформы, поддерживающей Swift (iOS, Linux, macOS, tvOS) - Поддержка SceneKit, SpriteKit и WebKit - Поддержка `Codable` - Интеграция с пользовательскими инструментами сравнения ## Установка ### Xcode Добавьте пакет через Swift Packages, убедившись, что он добавлен в тестовую цель. ### Swift Package Manager Добавьте пакет как зависимость в `Package.swift` и добавьте `SnapshotTesting` в вашу тестовую цель. ## Плагины Несколько плагинов сообщества расширяют функциональность, включая тестирование доступности, симуляцию дальтонизма, тестирование миграции баз данных SQLite, матчеры Nimble, снимки превью SwiftUI, тестирование снимков HTML и многое другое. ## Связанные инструменты Вдохновлённая `iOSSnapshotTestCase` и Jest, эта библиотека привносит обобщённое тестирование снимков в Swift с отточенным пользовательским опытом. ## Лицензия Выпущена под лицензией MIT.