├── SnapshotTestingSwiftUI
├── SupportingFiles
│ ├── ru.lproj
│ │ └── LaunchScreen.strings
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── turtlerock.imageset
│ │ │ ├── turtlerock.jpg
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ └── Info.plist
├── Preview Content
│ └── Preview Assets.xcassets
│ │ └── Contents.json
├── en.lproj
│ └── Localizable.strings
├── ru.lproj
│ └── Localizable.strings
├── ContentView.swift
├── App
│ ├── SceneDelegate.swift
│ └── AppDelegate.swift
├── SendButton.swift
├── Landmark.swift
└── LandmarkRow.swift
├── send.png
├── landmark.png
├── send-ru.png
├── landmark-fav.png
├── SnapshotTestingSwiftUITests
├── __Snapshots__
│ ├── SendButtonTests
│ │ ├── testRuLocale.1.png
│ │ ├── testRightToLeft.1.png
│ │ └── testDefaultAppearance.1.png
│ └── LandmarkRowTests
│ │ ├── testRenderFavorite.1.png
│ │ └── testRenderLandmark.1.png
├── Info.plist
├── SnapshotTesting+SwiftUI.swift
├── LandmarkRowTests.swift
└── SendButtonTests.swift
├── SnapshotTestingSwiftUI.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── swiftpm
│ │ └── Package.resolved
├── xcshareddata
│ └── xcschemes
│ │ └── SnapshotTestingSwiftUI.xcscheme
└── project.pbxproj
├── README.md
└── .gitignore
/SnapshotTestingSwiftUI/SupportingFiles/ru.lproj/LaunchScreen.strings:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/send.png
--------------------------------------------------------------------------------
/landmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/landmark.png
--------------------------------------------------------------------------------
/send-ru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/send-ru.png
--------------------------------------------------------------------------------
/landmark-fav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/landmark-fav.png
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/SupportingFiles/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/__Snapshots__/SendButtonTests/testRuLocale.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/SnapshotTestingSwiftUITests/__Snapshots__/SendButtonTests/testRuLocale.1.png
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/__Snapshots__/SendButtonTests/testRightToLeft.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/SnapshotTestingSwiftUITests/__Snapshots__/SendButtonTests/testRightToLeft.1.png
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/__Snapshots__/LandmarkRowTests/testRenderFavorite.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/SnapshotTestingSwiftUITests/__Snapshots__/LandmarkRowTests/testRenderFavorite.1.png
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/__Snapshots__/LandmarkRowTests/testRenderLandmark.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/SnapshotTestingSwiftUITests/__Snapshots__/LandmarkRowTests/testRenderLandmark.1.png
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/__Snapshots__/SendButtonTests/testDefaultAppearance.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/SnapshotTestingSwiftUITests/__Snapshots__/SendButtonTests/testDefaultAppearance.1.png
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/SupportingFiles/Assets.xcassets/turtlerock.imageset/turtlerock.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/V8tr/SnapshotTestingSwiftUI/HEAD/SnapshotTestingSwiftUI/SupportingFiles/Assets.xcassets/turtlerock.imageset/turtlerock.jpg
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | SnapshotTestingSwiftUI
4 |
5 | Created by Vadim Bulavin on 4/27/20.
6 | Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | */
8 |
9 | "common.button.send" = "Send";
10 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | SnapshotTestingSwiftUI
4 |
5 | Created by Vadim Bulavin on 4/27/20.
6 | Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | */
8 |
9 | "common.button.send" = "Отправить";
10 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/SupportingFiles/Assets.xcassets/turtlerock.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "turtlerock.jpg",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "object": {
3 | "pins": [
4 | {
5 | "package": "SnapshotTesting",
6 | "repositoryURL": "https://github.com/pointfreeco/swift-snapshot-testing",
7 | "state": {
8 | "branch": null,
9 | "revision": "114882386a815f4a2e6d8f2f7ee4857acd372438",
10 | "version": "1.7.2"
11 | }
12 | }
13 | ]
14 | },
15 | "version": 1
16 | }
17 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // SnapshotTestingSwiftUI
4 | //
5 | // Created by Vadim Bulavin on 4/21/20.
6 | // Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | struct ContentView: View {
12 | var body: some View {
13 | Text("Hello, World!")
14 | }
15 | }
16 |
17 | struct ContentView_Previews: PreviewProvider {
18 | static var previews: some View {
19 | ContentView()
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/App/SceneDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.swift
3 | // SnapshotTestingSwiftUI
4 | //
5 | // Created by Vadim Bulavin on 4/21/20.
6 | // Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import SwiftUI
11 |
12 | class SceneDelegate: UIResponder, UIWindowSceneDelegate {
13 |
14 | var window: UIWindow?
15 |
16 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
17 | if let windowScene = scene as? UIWindowScene {
18 | let window = UIWindow(windowScene: windowScene)
19 | window.rootViewController = UIHostingController(rootView: ContentView())
20 | self.window = window
21 | window.makeKeyAndVisible()
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/App/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // SnapshotTestingSwiftUI
4 | //
5 | // Created by Vadim Bulavin on 4/21/20.
6 | // Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
15 | return true
16 | }
17 |
18 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
19 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
20 | }
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/SendButton.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SendButton.swift
3 | // SnapshotTestingSwiftUI
4 | //
5 | // Created by Vadim Bulavin on 4/27/20.
6 | // Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | struct SendButton: View {
12 | let onAction: () -> Void = {}
13 |
14 | var body: some View {
15 | Button(
16 | action: onAction,
17 | label: {
18 | HStack {
19 | Image(systemName: "square.and.arrow.up")
20 | Text("common.button.send")
21 | }
22 | })
23 | }
24 | }
25 |
26 | struct SendButton_Preview: PreviewProvider {
27 | static var previews: some View {
28 | SendButton()
29 | .previewLayout(PreviewLayout.sizeThatFits)
30 | .padding()
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/SnapshotTesting+SwiftUI.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapshotTesting+SwiftUI.swift
3 | // SnapshotTestingSwiftUITests
4 | //
5 | // Created by Vadim Bulavin on 4/28/20.
6 | // Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | //
8 |
9 | import SnapshotTesting
10 | import SwiftUI
11 |
12 | extension Snapshotting where Value: SwiftUI.View, Format == UIImage {
13 |
14 | static func image(
15 | drawHierarchyInKeyWindow: Bool = false,
16 | precision: Float = 1,
17 | size: CGSize? = nil,
18 | traits: UITraitCollection = .init()
19 | ) -> Snapshotting {
20 | Snapshotting.image(
21 | drawHierarchyInKeyWindow: drawHierarchyInKeyWindow,
22 | precision: precision,
23 | size: size,
24 | traits: traits
25 | )
26 | .pullback(UIHostingController.init(rootView:))
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Article related to this project
2 |
3 | - [Testing SwiftUI Views using Snapshots](https://www.vadimbulavin.com/snapshot-testing-swiftui-views/).
4 |
5 | ---
6 |
7 | # SnapshotTestingSwiftUI
8 |
9 | A sample project showing how to snapshot test SwiftUI views using [SnapshotTesting](https://github.com/pointfreeco/swift-snapshot-testing). It covers the following cases:
10 |
11 | 1. Testing appearance under different environment configurations:
12 |
13 | | | |
14 | :-------------------------:|:-------------------------:
15 | |  |  |
16 |
17 | 2. Testing presentation logic:
18 |
19 | | | |
20 | :-------------------------:|:-------------------------:
21 | |  |  |
22 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/Landmark.swift:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright © 2020 Apple Inc.
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9 | */
10 |
11 | import Foundation
12 |
13 | struct Landmark {
14 | var name: String
15 | var imageName: String
16 | var isFavorite: Bool
17 | }
18 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/LandmarkRowTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LandmarkRowTests.swift
3 | // SnapshotTestingSwiftUITests
4 | //
5 | // Created by Vadim Bulavin on 4/28/20.
6 | // Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | import SnapshotTesting
11 | import SwiftUI
12 | @testable import SnapshotTestingSwiftUI
13 |
14 | private let referenceSize = CGSize(width: 300, height: 70)
15 |
16 | class LandmarkRowTests: XCTestCase {
17 |
18 | let landmark = Landmark(name: "Turtle Rock", imageName: "turtlerock", isFavorite: false)
19 | let favoriteLandmark = Landmark(name: "Turtle Rock", imageName: "turtlerock", isFavorite: true)
20 |
21 | func testRenderLandmark() {
22 | assertSnapshot(
23 | matching: LandmarkRow(landmark: landmark).referenceFrame(),
24 | as: .image(size: referenceSize)
25 | )
26 | }
27 |
28 | func testRenderFavorite() {
29 | assertSnapshot(
30 | matching: LandmarkRow(landmark: favoriteLandmark).referenceFrame(),
31 | as: .image(size: referenceSize)
32 | )
33 | }
34 | }
35 |
36 | private extension SwiftUI.View {
37 | func referenceFrame() -> some View {
38 | self.frame(width: referenceSize.width, height: referenceSize.height)
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUITests/SendButtonTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SendButtonTests.swift
3 | // SnapshotTestingSwiftUITests
4 | //
5 | // Created by Vadim Bulavin on 4/29/20.
6 | // Copyright © 2020 Vadim Bulavin. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | import SnapshotTesting
11 | import SwiftUI
12 | @testable import SnapshotTestingSwiftUI
13 |
14 | private let referenceSize = CGSize(width: 150, height: 50)
15 |
16 | class SendButtonTests: XCTestCase {
17 |
18 | func testDefaultAppearance() {
19 | assertSnapshot(
20 | matching: SendButton().referenceFrame(),
21 | as: .image(size: referenceSize)
22 | )
23 | }
24 |
25 | func testRightToLeft() {
26 | let sut = SendButton()
27 | .referenceFrame()
28 | .environment(\.layoutDirection, .rightToLeft)
29 |
30 | assertSnapshot(matching: sut, as: .image(size: referenceSize))
31 | }
32 |
33 | func testRuLocale() {
34 | let sut = SendButton()
35 | .referenceFrame()
36 | .environment(\.locale, Locale(identifier: "RU"))
37 |
38 | assertSnapshot(matching: sut, as: .image(size: referenceSize))
39 | }
40 | }
41 |
42 | private extension SwiftUI.View {
43 | func referenceFrame() -> some View {
44 | self.frame(width: referenceSize.width, height: referenceSize.height)
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/LandmarkRow.swift:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright © 2020 Apple Inc.
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9 | */
10 |
11 | import SwiftUI
12 |
13 | struct LandmarkRow: View {
14 | var landmark: Landmark
15 |
16 | var body: some View {
17 | HStack {
18 | Image(landmark.imageName)
19 | .resizable()
20 | .frame(width: 50, height: 50)
21 | Text(landmark.name)
22 | Spacer()
23 |
24 | if landmark.isFavorite {
25 | Image(systemName: "star.fill")
26 | .imageScale(.medium)
27 | .foregroundColor(.yellow)
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/SupportingFiles/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/SupportingFiles/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI/SupportingFiles/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 | UISceneConfigurations
28 |
29 | UIWindowSceneSessionRoleApplication
30 |
31 |
32 | UISceneConfigurationName
33 | Default Configuration
34 | UISceneDelegateClassName
35 | $(PRODUCT_MODULE_NAME).SceneDelegate
36 |
37 |
38 |
39 |
40 | UILaunchStoryboardName
41 | LaunchScreen
42 | UIRequiredDeviceCapabilities
43 |
44 | armv7
45 |
46 | UISupportedInterfaceOrientations
47 |
48 | UIInterfaceOrientationPortrait
49 | UIInterfaceOrientationLandscapeLeft
50 | UIInterfaceOrientationLandscapeRight
51 |
52 | UISupportedInterfaceOrientations~ipad
53 |
54 | UIInterfaceOrientationPortrait
55 | UIInterfaceOrientationPortraitUpsideDown
56 | UIInterfaceOrientationLandscapeLeft
57 | UIInterfaceOrientationLandscapeRight
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## User settings
6 | xcuserdata/
7 |
8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
9 | *.xcscmblueprint
10 | *.xccheckout
11 |
12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
13 | build/
14 | DerivedData/
15 | *.moved-aside
16 | *.pbxuser
17 | !default.pbxuser
18 | *.mode1v3
19 | !default.mode1v3
20 | *.mode2v3
21 | !default.mode2v3
22 | *.perspectivev3
23 | !default.perspectivev3
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 |
28 | ## App packaging
29 | *.ipa
30 | *.dSYM.zip
31 | *.dSYM
32 |
33 | ## Playgrounds
34 | timeline.xctimeline
35 | playground.xcworkspace
36 |
37 | # Swift Package Manager
38 | #
39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
40 | # Packages/
41 | # Package.pins
42 | # Package.resolved
43 | # *.xcodeproj
44 | #
45 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
46 | # hence it is not needed unless you have added a package configuration file to your project
47 | # .swiftpm
48 |
49 | .build/
50 |
51 | # CocoaPods
52 | #
53 | # We recommend against adding the Pods directory to your .gitignore. However
54 | # you should judge for yourself, the pros and cons are mentioned at:
55 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
56 | #
57 | # Pods/
58 | #
59 | # Add this line if you want to avoid checking in source code from the Xcode workspace
60 | # *.xcworkspace
61 |
62 | # Carthage
63 | #
64 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
65 | # Carthage/Checkouts
66 |
67 | Carthage/Build/
68 |
69 | # Accio dependency management
70 | Dependencies/
71 | .accio/
72 |
73 | # fastlane
74 | #
75 | # It is recommended to not store the screenshots in the git repo.
76 | # Instead, use fastlane to re-generate the screenshots whenever they are needed.
77 | # For more information about the recommended setup visit:
78 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
79 |
80 | fastlane/report.xml
81 | fastlane/Preview.html
82 | fastlane/screenshots/**/*.png
83 | fastlane/test_output
84 |
85 | # Code Injection
86 | #
87 | # After new code Injection tools there's a generated folder /iOSInjectionProject
88 | # https://github.com/johnno1962/injectionforxcode
89 |
90 | iOSInjectionProject/
91 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI.xcodeproj/xcshareddata/xcschemes/SnapshotTestingSwiftUI.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
53 |
55 |
61 |
62 |
63 |
64 |
70 |
72 |
78 |
79 |
80 |
81 |
83 |
84 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/SnapshotTestingSwiftUI.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 52;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 88560B19245337E000186B8B /* SnapshotTesting in Frameworks */ = {isa = PBXBuildFile; productRef = 88560B18245337E000186B8B /* SnapshotTesting */; };
11 | 8873D8DA244F6C810012C7B1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8873D8D9244F6C810012C7B1 /* AppDelegate.swift */; };
12 | 8873D8DC244F6C810012C7B1 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8873D8DB244F6C810012C7B1 /* SceneDelegate.swift */; };
13 | 8873D8DE244F6C810012C7B1 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8873D8DD244F6C810012C7B1 /* ContentView.swift */; };
14 | 8873D8E0244F6C820012C7B1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8873D8DF244F6C820012C7B1 /* Assets.xcassets */; };
15 | 8873D8E3244F6C820012C7B1 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8873D8E2244F6C820012C7B1 /* Preview Assets.xcassets */; };
16 | 8873D8E6244F6C820012C7B1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8873D8E4244F6C820012C7B1 /* LaunchScreen.storyboard */; };
17 | 887844E8245711A800F99677 /* SendButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887844E7245711A800F99677 /* SendButton.swift */; };
18 | 887844EC24571A7700F99677 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 887844EE24571A7700F99677 /* Localizable.strings */; };
19 | 887844F52458049700F99677 /* LandmarkRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887844F42458049700F99677 /* LandmarkRow.swift */; };
20 | 887844F9245805E300F99677 /* Landmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887844F8245805E300F99677 /* Landmark.swift */; };
21 | 887844FB24580E7C00F99677 /* LandmarkRowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887844FA24580E7C00F99677 /* LandmarkRowTests.swift */; };
22 | 887844FD2458125000F99677 /* SnapshotTesting+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887844FC2458125000F99677 /* SnapshotTesting+SwiftUI.swift */; };
23 | 88784531245961D900F99677 /* SendButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88784530245961D900F99677 /* SendButtonTests.swift */; };
24 | /* End PBXBuildFile section */
25 |
26 | /* Begin PBXContainerItemProxy section */
27 | 8873D8ED244F6C820012C7B1 /* PBXContainerItemProxy */ = {
28 | isa = PBXContainerItemProxy;
29 | containerPortal = 8873D8CE244F6C810012C7B1 /* Project object */;
30 | proxyType = 1;
31 | remoteGlobalIDString = 8873D8D5244F6C810012C7B1;
32 | remoteInfo = SnapshotTestingDemo;
33 | };
34 | /* End PBXContainerItemProxy section */
35 |
36 | /* Begin PBXFileReference section */
37 | 8873D8D6244F6C810012C7B1 /* SnapshotTestingSwiftUI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SnapshotTestingSwiftUI.app; sourceTree = BUILT_PRODUCTS_DIR; };
38 | 8873D8D9244F6C810012C7B1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
39 | 8873D8DB244F6C810012C7B1 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
40 | 8873D8DD244F6C810012C7B1 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
41 | 8873D8DF244F6C820012C7B1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
42 | 8873D8E2244F6C820012C7B1 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
43 | 8873D8E5244F6C820012C7B1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
44 | 8873D8E7244F6C820012C7B1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
45 | 8873D8EC244F6C820012C7B1 /* SnapshotTestingSwiftUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SnapshotTestingSwiftUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
46 | 8873D8F2244F6C820012C7B1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
47 | 887844E7245711A800F99677 /* SendButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendButton.swift; sourceTree = ""; };
48 | 887844ED24571A7700F99677 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
49 | 887844EF24571AB000F99677 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; };
50 | 887844F42458049700F99677 /* LandmarkRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LandmarkRow.swift; sourceTree = ""; };
51 | 887844F8245805E300F99677 /* Landmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Landmark.swift; sourceTree = ""; };
52 | 887844FA24580E7C00F99677 /* LandmarkRowTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LandmarkRowTests.swift; sourceTree = ""; };
53 | 887844FC2458125000F99677 /* SnapshotTesting+SwiftUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SnapshotTesting+SwiftUI.swift"; sourceTree = ""; };
54 | 88784530245961D900F99677 /* SendButtonTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendButtonTests.swift; sourceTree = ""; };
55 | /* End PBXFileReference section */
56 |
57 | /* Begin PBXFrameworksBuildPhase section */
58 | 8873D8D3244F6C810012C7B1 /* Frameworks */ = {
59 | isa = PBXFrameworksBuildPhase;
60 | buildActionMask = 2147483647;
61 | files = (
62 | );
63 | runOnlyForDeploymentPostprocessing = 0;
64 | };
65 | 8873D8E9244F6C820012C7B1 /* Frameworks */ = {
66 | isa = PBXFrameworksBuildPhase;
67 | buildActionMask = 2147483647;
68 | files = (
69 | 88560B19245337E000186B8B /* SnapshotTesting in Frameworks */,
70 | );
71 | runOnlyForDeploymentPostprocessing = 0;
72 | };
73 | /* End PBXFrameworksBuildPhase section */
74 |
75 | /* Begin PBXGroup section */
76 | 8873D8CD244F6C810012C7B1 = {
77 | isa = PBXGroup;
78 | children = (
79 | 8873D8D8244F6C810012C7B1 /* SnapshotTestingSwiftUI */,
80 | 8873D8EF244F6C820012C7B1 /* SnapshotTestingSwiftUITests */,
81 | 8873D8D7244F6C810012C7B1 /* Products */,
82 | );
83 | sourceTree = "";
84 | };
85 | 8873D8D7244F6C810012C7B1 /* Products */ = {
86 | isa = PBXGroup;
87 | children = (
88 | 8873D8D6244F6C810012C7B1 /* SnapshotTestingSwiftUI.app */,
89 | 8873D8EC244F6C820012C7B1 /* SnapshotTestingSwiftUITests.xctest */,
90 | );
91 | name = Products;
92 | sourceTree = "";
93 | };
94 | 8873D8D8244F6C810012C7B1 /* SnapshotTestingSwiftUI */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 88F9E00C24533BFF0062C717 /* App */,
98 | 8873D8DD244F6C810012C7B1 /* ContentView.swift */,
99 | 887844E7245711A800F99677 /* SendButton.swift */,
100 | 887844F42458049700F99677 /* LandmarkRow.swift */,
101 | 887844F8245805E300F99677 /* Landmark.swift */,
102 | 887844EE24571A7700F99677 /* Localizable.strings */,
103 | 88F9E00B24533BF20062C717 /* SupportingFiles */,
104 | 8873D8E1244F6C820012C7B1 /* Preview Content */,
105 | );
106 | path = SnapshotTestingSwiftUI;
107 | sourceTree = "";
108 | };
109 | 8873D8E1244F6C820012C7B1 /* Preview Content */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 8873D8E2244F6C820012C7B1 /* Preview Assets.xcassets */,
113 | );
114 | path = "Preview Content";
115 | sourceTree = "";
116 | };
117 | 8873D8EF244F6C820012C7B1 /* SnapshotTestingSwiftUITests */ = {
118 | isa = PBXGroup;
119 | children = (
120 | 887844FA24580E7C00F99677 /* LandmarkRowTests.swift */,
121 | 88784530245961D900F99677 /* SendButtonTests.swift */,
122 | 887844FC2458125000F99677 /* SnapshotTesting+SwiftUI.swift */,
123 | 8873D8F2244F6C820012C7B1 /* Info.plist */,
124 | );
125 | path = SnapshotTestingSwiftUITests;
126 | sourceTree = "";
127 | };
128 | 88F9E00B24533BF20062C717 /* SupportingFiles */ = {
129 | isa = PBXGroup;
130 | children = (
131 | 8873D8DF244F6C820012C7B1 /* Assets.xcassets */,
132 | 8873D8E4244F6C820012C7B1 /* LaunchScreen.storyboard */,
133 | 8873D8E7244F6C820012C7B1 /* Info.plist */,
134 | );
135 | path = SupportingFiles;
136 | sourceTree = "";
137 | };
138 | 88F9E00C24533BFF0062C717 /* App */ = {
139 | isa = PBXGroup;
140 | children = (
141 | 8873D8D9244F6C810012C7B1 /* AppDelegate.swift */,
142 | 8873D8DB244F6C810012C7B1 /* SceneDelegate.swift */,
143 | );
144 | path = App;
145 | sourceTree = "";
146 | };
147 | /* End PBXGroup section */
148 |
149 | /* Begin PBXNativeTarget section */
150 | 8873D8D5244F6C810012C7B1 /* SnapshotTestingSwiftUI */ = {
151 | isa = PBXNativeTarget;
152 | buildConfigurationList = 8873D8F5244F6C820012C7B1 /* Build configuration list for PBXNativeTarget "SnapshotTestingSwiftUI" */;
153 | buildPhases = (
154 | 8873D8D2244F6C810012C7B1 /* Sources */,
155 | 8873D8D3244F6C810012C7B1 /* Frameworks */,
156 | 8873D8D4244F6C810012C7B1 /* Resources */,
157 | );
158 | buildRules = (
159 | );
160 | dependencies = (
161 | );
162 | name = SnapshotTestingSwiftUI;
163 | productName = SnapshotTestingDemo;
164 | productReference = 8873D8D6244F6C810012C7B1 /* SnapshotTestingSwiftUI.app */;
165 | productType = "com.apple.product-type.application";
166 | };
167 | 8873D8EB244F6C820012C7B1 /* SnapshotTestingSwiftUITests */ = {
168 | isa = PBXNativeTarget;
169 | buildConfigurationList = 8873D8F8244F6C820012C7B1 /* Build configuration list for PBXNativeTarget "SnapshotTestingSwiftUITests" */;
170 | buildPhases = (
171 | 8873D8E8244F6C820012C7B1 /* Sources */,
172 | 8873D8E9244F6C820012C7B1 /* Frameworks */,
173 | 8873D8EA244F6C820012C7B1 /* Resources */,
174 | );
175 | buildRules = (
176 | );
177 | dependencies = (
178 | 8873D8EE244F6C820012C7B1 /* PBXTargetDependency */,
179 | );
180 | name = SnapshotTestingSwiftUITests;
181 | packageProductDependencies = (
182 | 88560B18245337E000186B8B /* SnapshotTesting */,
183 | );
184 | productName = SnapshotTestingDemoTests;
185 | productReference = 8873D8EC244F6C820012C7B1 /* SnapshotTestingSwiftUITests.xctest */;
186 | productType = "com.apple.product-type.bundle.unit-test";
187 | };
188 | /* End PBXNativeTarget section */
189 |
190 | /* Begin PBXProject section */
191 | 8873D8CE244F6C810012C7B1 /* Project object */ = {
192 | isa = PBXProject;
193 | attributes = {
194 | LastSwiftUpdateCheck = 1140;
195 | LastUpgradeCheck = 1140;
196 | ORGANIZATIONNAME = "Vadim Bulavin";
197 | TargetAttributes = {
198 | 8873D8D5244F6C810012C7B1 = {
199 | CreatedOnToolsVersion = 11.4;
200 | };
201 | 8873D8EB244F6C820012C7B1 = {
202 | CreatedOnToolsVersion = 11.4;
203 | TestTargetID = 8873D8D5244F6C810012C7B1;
204 | };
205 | };
206 | };
207 | buildConfigurationList = 8873D8D1244F6C810012C7B1 /* Build configuration list for PBXProject "SnapshotTestingSwiftUI" */;
208 | compatibilityVersion = "Xcode 9.3";
209 | developmentRegion = en;
210 | hasScannedForEncodings = 0;
211 | knownRegions = (
212 | en,
213 | Base,
214 | ru,
215 | );
216 | mainGroup = 8873D8CD244F6C810012C7B1;
217 | packageReferences = (
218 | 88560B17245337E000186B8B /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */,
219 | );
220 | productRefGroup = 8873D8D7244F6C810012C7B1 /* Products */;
221 | projectDirPath = "";
222 | projectRoot = "";
223 | targets = (
224 | 8873D8D5244F6C810012C7B1 /* SnapshotTestingSwiftUI */,
225 | 8873D8EB244F6C820012C7B1 /* SnapshotTestingSwiftUITests */,
226 | );
227 | };
228 | /* End PBXProject section */
229 |
230 | /* Begin PBXResourcesBuildPhase section */
231 | 8873D8D4244F6C810012C7B1 /* Resources */ = {
232 | isa = PBXResourcesBuildPhase;
233 | buildActionMask = 2147483647;
234 | files = (
235 | 8873D8E6244F6C820012C7B1 /* LaunchScreen.storyboard in Resources */,
236 | 887844EC24571A7700F99677 /* Localizable.strings in Resources */,
237 | 8873D8E3244F6C820012C7B1 /* Preview Assets.xcassets in Resources */,
238 | 8873D8E0244F6C820012C7B1 /* Assets.xcassets in Resources */,
239 | );
240 | runOnlyForDeploymentPostprocessing = 0;
241 | };
242 | 8873D8EA244F6C820012C7B1 /* Resources */ = {
243 | isa = PBXResourcesBuildPhase;
244 | buildActionMask = 2147483647;
245 | files = (
246 | );
247 | runOnlyForDeploymentPostprocessing = 0;
248 | };
249 | /* End PBXResourcesBuildPhase section */
250 |
251 | /* Begin PBXSourcesBuildPhase section */
252 | 8873D8D2244F6C810012C7B1 /* Sources */ = {
253 | isa = PBXSourcesBuildPhase;
254 | buildActionMask = 2147483647;
255 | files = (
256 | 887844F9245805E300F99677 /* Landmark.swift in Sources */,
257 | 8873D8DA244F6C810012C7B1 /* AppDelegate.swift in Sources */,
258 | 887844E8245711A800F99677 /* SendButton.swift in Sources */,
259 | 887844F52458049700F99677 /* LandmarkRow.swift in Sources */,
260 | 8873D8DC244F6C810012C7B1 /* SceneDelegate.swift in Sources */,
261 | 8873D8DE244F6C810012C7B1 /* ContentView.swift in Sources */,
262 | );
263 | runOnlyForDeploymentPostprocessing = 0;
264 | };
265 | 8873D8E8244F6C820012C7B1 /* Sources */ = {
266 | isa = PBXSourcesBuildPhase;
267 | buildActionMask = 2147483647;
268 | files = (
269 | 887844FD2458125000F99677 /* SnapshotTesting+SwiftUI.swift in Sources */,
270 | 88784531245961D900F99677 /* SendButtonTests.swift in Sources */,
271 | 887844FB24580E7C00F99677 /* LandmarkRowTests.swift in Sources */,
272 | );
273 | runOnlyForDeploymentPostprocessing = 0;
274 | };
275 | /* End PBXSourcesBuildPhase section */
276 |
277 | /* Begin PBXTargetDependency section */
278 | 8873D8EE244F6C820012C7B1 /* PBXTargetDependency */ = {
279 | isa = PBXTargetDependency;
280 | target = 8873D8D5244F6C810012C7B1 /* SnapshotTestingSwiftUI */;
281 | targetProxy = 8873D8ED244F6C820012C7B1 /* PBXContainerItemProxy */;
282 | };
283 | /* End PBXTargetDependency section */
284 |
285 | /* Begin PBXVariantGroup section */
286 | 8873D8E4244F6C820012C7B1 /* LaunchScreen.storyboard */ = {
287 | isa = PBXVariantGroup;
288 | children = (
289 | 8873D8E5244F6C820012C7B1 /* Base */,
290 | );
291 | name = LaunchScreen.storyboard;
292 | sourceTree = "";
293 | };
294 | 887844EE24571A7700F99677 /* Localizable.strings */ = {
295 | isa = PBXVariantGroup;
296 | children = (
297 | 887844ED24571A7700F99677 /* en */,
298 | 887844EF24571AB000F99677 /* ru */,
299 | );
300 | name = Localizable.strings;
301 | sourceTree = "";
302 | };
303 | /* End PBXVariantGroup section */
304 |
305 | /* Begin XCBuildConfiguration section */
306 | 8873D8F3244F6C820012C7B1 /* Debug */ = {
307 | isa = XCBuildConfiguration;
308 | buildSettings = {
309 | ALWAYS_SEARCH_USER_PATHS = NO;
310 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
311 | CLANG_ANALYZER_NONNULL = YES;
312 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
313 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
314 | CLANG_CXX_LIBRARY = "libc++";
315 | CLANG_ENABLE_MODULES = YES;
316 | CLANG_ENABLE_OBJC_ARC = YES;
317 | CLANG_ENABLE_OBJC_WEAK = YES;
318 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
319 | CLANG_WARN_BOOL_CONVERSION = YES;
320 | CLANG_WARN_COMMA = YES;
321 | CLANG_WARN_CONSTANT_CONVERSION = YES;
322 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
323 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
324 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
325 | CLANG_WARN_EMPTY_BODY = YES;
326 | CLANG_WARN_ENUM_CONVERSION = YES;
327 | CLANG_WARN_INFINITE_RECURSION = YES;
328 | CLANG_WARN_INT_CONVERSION = YES;
329 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
330 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
331 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
332 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
333 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
334 | CLANG_WARN_STRICT_PROTOTYPES = YES;
335 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
336 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
337 | CLANG_WARN_UNREACHABLE_CODE = YES;
338 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
339 | COPY_PHASE_STRIP = NO;
340 | DEBUG_INFORMATION_FORMAT = dwarf;
341 | ENABLE_STRICT_OBJC_MSGSEND = YES;
342 | ENABLE_TESTABILITY = YES;
343 | GCC_C_LANGUAGE_STANDARD = gnu11;
344 | GCC_DYNAMIC_NO_PIC = NO;
345 | GCC_NO_COMMON_BLOCKS = YES;
346 | GCC_OPTIMIZATION_LEVEL = 0;
347 | GCC_PREPROCESSOR_DEFINITIONS = (
348 | "DEBUG=1",
349 | "$(inherited)",
350 | );
351 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
352 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
353 | GCC_WARN_UNDECLARED_SELECTOR = YES;
354 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
355 | GCC_WARN_UNUSED_FUNCTION = YES;
356 | GCC_WARN_UNUSED_VARIABLE = YES;
357 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
358 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
359 | MTL_FAST_MATH = YES;
360 | ONLY_ACTIVE_ARCH = YES;
361 | SDKROOT = iphoneos;
362 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
363 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
364 | };
365 | name = Debug;
366 | };
367 | 8873D8F4244F6C820012C7B1 /* Release */ = {
368 | isa = XCBuildConfiguration;
369 | buildSettings = {
370 | ALWAYS_SEARCH_USER_PATHS = NO;
371 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
372 | CLANG_ANALYZER_NONNULL = YES;
373 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
374 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
375 | CLANG_CXX_LIBRARY = "libc++";
376 | CLANG_ENABLE_MODULES = YES;
377 | CLANG_ENABLE_OBJC_ARC = YES;
378 | CLANG_ENABLE_OBJC_WEAK = YES;
379 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
380 | CLANG_WARN_BOOL_CONVERSION = YES;
381 | CLANG_WARN_COMMA = YES;
382 | CLANG_WARN_CONSTANT_CONVERSION = YES;
383 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
384 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
385 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
386 | CLANG_WARN_EMPTY_BODY = YES;
387 | CLANG_WARN_ENUM_CONVERSION = YES;
388 | CLANG_WARN_INFINITE_RECURSION = YES;
389 | CLANG_WARN_INT_CONVERSION = YES;
390 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
391 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
392 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
393 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
394 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
395 | CLANG_WARN_STRICT_PROTOTYPES = YES;
396 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
397 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
398 | CLANG_WARN_UNREACHABLE_CODE = YES;
399 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
400 | COPY_PHASE_STRIP = NO;
401 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
402 | ENABLE_NS_ASSERTIONS = NO;
403 | ENABLE_STRICT_OBJC_MSGSEND = YES;
404 | GCC_C_LANGUAGE_STANDARD = gnu11;
405 | GCC_NO_COMMON_BLOCKS = YES;
406 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
407 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
408 | GCC_WARN_UNDECLARED_SELECTOR = YES;
409 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
410 | GCC_WARN_UNUSED_FUNCTION = YES;
411 | GCC_WARN_UNUSED_VARIABLE = YES;
412 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
413 | MTL_ENABLE_DEBUG_INFO = NO;
414 | MTL_FAST_MATH = YES;
415 | SDKROOT = iphoneos;
416 | SWIFT_COMPILATION_MODE = wholemodule;
417 | SWIFT_OPTIMIZATION_LEVEL = "-O";
418 | VALIDATE_PRODUCT = YES;
419 | };
420 | name = Release;
421 | };
422 | 8873D8F6244F6C820012C7B1 /* Debug */ = {
423 | isa = XCBuildConfiguration;
424 | buildSettings = {
425 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
426 | CODE_SIGN_STYLE = Automatic;
427 | DEVELOPMENT_ASSET_PATHS = "\"SnapshotTestingSwiftUI/Preview Content\"";
428 | ENABLE_PREVIEWS = YES;
429 | INFOPLIST_FILE = SnapshotTestingSwiftUI/SupportingFiles/Info.plist;
430 | LD_RUNPATH_SEARCH_PATHS = (
431 | "$(inherited)",
432 | "@executable_path/Frameworks",
433 | );
434 | PRODUCT_BUNDLE_IDENTIFIER = vadimbulavin.SnapshotTestingSwiftUI;
435 | PRODUCT_NAME = "$(TARGET_NAME)";
436 | SWIFT_VERSION = 5.0;
437 | TARGETED_DEVICE_FAMILY = "1,2";
438 | };
439 | name = Debug;
440 | };
441 | 8873D8F7244F6C820012C7B1 /* Release */ = {
442 | isa = XCBuildConfiguration;
443 | buildSettings = {
444 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
445 | CODE_SIGN_STYLE = Automatic;
446 | DEVELOPMENT_ASSET_PATHS = "\"SnapshotTestingSwiftUI/Preview Content\"";
447 | ENABLE_PREVIEWS = YES;
448 | INFOPLIST_FILE = SnapshotTestingSwiftUI/SupportingFiles/Info.plist;
449 | LD_RUNPATH_SEARCH_PATHS = (
450 | "$(inherited)",
451 | "@executable_path/Frameworks",
452 | );
453 | PRODUCT_BUNDLE_IDENTIFIER = vadimbulavin.SnapshotTestingSwiftUI;
454 | PRODUCT_NAME = "$(TARGET_NAME)";
455 | SWIFT_VERSION = 5.0;
456 | TARGETED_DEVICE_FAMILY = "1,2";
457 | };
458 | name = Release;
459 | };
460 | 8873D8F9244F6C820012C7B1 /* Debug */ = {
461 | isa = XCBuildConfiguration;
462 | buildSettings = {
463 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
464 | BUNDLE_LOADER = "$(TEST_HOST)";
465 | CODE_SIGN_STYLE = Automatic;
466 | INFOPLIST_FILE = SnapshotTestingSwiftUITests/Info.plist;
467 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
468 | LD_RUNPATH_SEARCH_PATHS = (
469 | "$(inherited)",
470 | "@executable_path/Frameworks",
471 | "@loader_path/Frameworks",
472 | );
473 | PRODUCT_BUNDLE_IDENTIFIER = vadimbulavin.SnapshotTestingSwiftUITests;
474 | PRODUCT_NAME = "$(TARGET_NAME)";
475 | SWIFT_VERSION = 5.0;
476 | TARGETED_DEVICE_FAMILY = "1,2";
477 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SnapshotTestingSwiftUI.app/SnapshotTestingSwiftUI";
478 | };
479 | name = Debug;
480 | };
481 | 8873D8FA244F6C820012C7B1 /* Release */ = {
482 | isa = XCBuildConfiguration;
483 | buildSettings = {
484 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
485 | BUNDLE_LOADER = "$(TEST_HOST)";
486 | CODE_SIGN_STYLE = Automatic;
487 | INFOPLIST_FILE = SnapshotTestingSwiftUITests/Info.plist;
488 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
489 | LD_RUNPATH_SEARCH_PATHS = (
490 | "$(inherited)",
491 | "@executable_path/Frameworks",
492 | "@loader_path/Frameworks",
493 | );
494 | PRODUCT_BUNDLE_IDENTIFIER = vadimbulavin.SnapshotTestingSwiftUITests;
495 | PRODUCT_NAME = "$(TARGET_NAME)";
496 | SWIFT_VERSION = 5.0;
497 | TARGETED_DEVICE_FAMILY = "1,2";
498 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SnapshotTestingSwiftUI.app/SnapshotTestingSwiftUI";
499 | };
500 | name = Release;
501 | };
502 | /* End XCBuildConfiguration section */
503 |
504 | /* Begin XCConfigurationList section */
505 | 8873D8D1244F6C810012C7B1 /* Build configuration list for PBXProject "SnapshotTestingSwiftUI" */ = {
506 | isa = XCConfigurationList;
507 | buildConfigurations = (
508 | 8873D8F3244F6C820012C7B1 /* Debug */,
509 | 8873D8F4244F6C820012C7B1 /* Release */,
510 | );
511 | defaultConfigurationIsVisible = 0;
512 | defaultConfigurationName = Release;
513 | };
514 | 8873D8F5244F6C820012C7B1 /* Build configuration list for PBXNativeTarget "SnapshotTestingSwiftUI" */ = {
515 | isa = XCConfigurationList;
516 | buildConfigurations = (
517 | 8873D8F6244F6C820012C7B1 /* Debug */,
518 | 8873D8F7244F6C820012C7B1 /* Release */,
519 | );
520 | defaultConfigurationIsVisible = 0;
521 | defaultConfigurationName = Release;
522 | };
523 | 8873D8F8244F6C820012C7B1 /* Build configuration list for PBXNativeTarget "SnapshotTestingSwiftUITests" */ = {
524 | isa = XCConfigurationList;
525 | buildConfigurations = (
526 | 8873D8F9244F6C820012C7B1 /* Debug */,
527 | 8873D8FA244F6C820012C7B1 /* Release */,
528 | );
529 | defaultConfigurationIsVisible = 0;
530 | defaultConfigurationName = Release;
531 | };
532 | /* End XCConfigurationList section */
533 |
534 | /* Begin XCRemoteSwiftPackageReference section */
535 | 88560B17245337E000186B8B /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */ = {
536 | isa = XCRemoteSwiftPackageReference;
537 | repositoryURL = "https://github.com/pointfreeco/swift-snapshot-testing";
538 | requirement = {
539 | kind = upToNextMajorVersion;
540 | minimumVersion = 1.7.2;
541 | };
542 | };
543 | /* End XCRemoteSwiftPackageReference section */
544 |
545 | /* Begin XCSwiftPackageProductDependency section */
546 | 88560B18245337E000186B8B /* SnapshotTesting */ = {
547 | isa = XCSwiftPackageProductDependency;
548 | package = 88560B17245337E000186B8B /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */;
549 | productName = SnapshotTesting;
550 | };
551 | /* End XCSwiftPackageProductDependency section */
552 | };
553 | rootObject = 8873D8CE244F6C810012C7B1 /* Project object */;
554 | }
555 |
--------------------------------------------------------------------------------