Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tooploox/SnappyTestCase
iOS Simulator type agnostic snapshot testing, built on top of the FBSnapshotTestCase.
https://github.com/tooploox/SnappyTestCase
Last synced: 3 months ago
JSON representation
iOS Simulator type agnostic snapshot testing, built on top of the FBSnapshotTestCase.
- Host: GitHub
- URL: https://github.com/tooploox/SnappyTestCase
- Owner: tooploox
- License: apache-2.0
- Created: 2017-05-23T13:34:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-03-16T14:16:18.000Z (over 6 years ago)
- Last Synced: 2024-08-07T19:58:25.110Z (3 months ago)
- Language: Swift
- Size: 17.5 MB
- Stars: 15
- Watchers: 6
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - SnappyTestCase - iOS Simulator type agnostic snapshot testing, built on top of the FBSnapshotTestCase. (Testing / Other Testing)
- awesome-ios-star - SnappyTestCase - iOS Simulator type agnostic snapshot testing, built on top of the FBSnapshotTestCase. (Testing / Other Testing)
README
![Tooploox](https://github.com/tooploox/SnappyTestCase/raw/master/tooploox-logo.png)
SnappyTestCase
======iOS Simulator type agnostic snapshot testing, built on top of the [FBSnapshotTestCase](https://github.com/facebook/ios-snapshot-test-case).
Why?
----Snapshot testing helps to deliver views that scale correctly with a wide range of screen sizes. When it comes to view controllers, we usually want to ensure they keep visual quality on a various set of existing devices, in each supported orientation. Test suite could be run on numerous variants of iOS Simulators. However, this could be a really time-consuming task, for sure not acceptable during a development process. SnappyTestCase tackles this issue by combining test with a set of device definitions (each one including screen size, scale, and orientation) to validate with, ignoring real device simulator context information.
## Features
- Simulator type insensitive snapshot testing => restart free, quick various device testing
- Handy definitions of iOS devices to test with - both iPhone and iPad, with chainable filtering API
- Forcing simulator to adopt `scale` and `orientation` according to test device definition
- Adding device type and orientation to reference file names
- You can resize one and validate snapshot of another view (for example, you can resize whole window with `UITabBarController` and validate snapshot of its tab bar only)
- Optional closure executed just before verifying viewGetting Started
-----------Validating view controller on all existing iPhones, with portrait orientation (default):
```swift
func testAllDevices() {
let window = UIWindow()
window.makeKeyAndVisible()
window.rootViewController = ExampleViewController(nibName: nil, bundle: nil)
verifyViewSnaps(DeviceRack.iPhone.all, view: window)
}
```For more examples of usage check out `SnappyDemo` project.
Defining device set cheat sheet
-------------------------------| Expression | Device set description | Snapshot count |
| ---------------------------------------- | ---------------------------------------- | :------------: |
| `DeviceRack.iPhone.all.landscape` | All iPhones, in landscape orientation | 4 |
| `DeviceRack.iPhone.all.portrait.uniqueWidths` | Set of iPhones covering all possible screen widths in portrait orientation | 3 |
| ` DeviceRack.iPad.retina.landscape` | Retina 9.7" / 7.9" iPad, landscape | 1 |Installation using CocoaPods
----------------------------Add following line to your test target pods list in `Podfile`:
`pod 'SnappyTestCase'`
License
-------`SnappyTestCase` is distributed under the Apache 2.0 license.
## Feedback
We love receiving feedback and we encourage you to contact us and share your thoughts either via e-mail [[email protected]](mailto:[email protected]) or Twitter by mentioning [@tooploox](https://twitter.com/tooploox).