### Initializer: init(_:layout:file:line:content:) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-35x49 Creates a new scenario with a SwiftUI view. This initializer is used to define individual UI test cases or examples within the Playbook framework. ```APIDOC ## init(_:layout:file:line:content:) ### Description Creates a new scenario with a SwiftUI view. ### Method Initializer ### Endpoint N/A (SwiftUI Initializer) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, @ViewBuilder content: @escaping (ScenarioContext) -> Content ) where Content : View ``` ### Response #### Success Response (200) N/A (Initializer) #### Response Example N/A (Initializer) ``` -------------------------------- ### Initialize Snapshot Tool Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshot/init%28directory%3Aclean%3Aformat%3Atimeout%3Ascale%3Akeywindow%3Adevices%3Alogoutput%3Aviewpreprocessor%3A%29 Creates a new snapshot tool for exporting all image files into a specified directory. This initializer takes various parameters to configure the export process, including the output directory, cleaning behavior, image format, timeout, rendering scale, key window, target devices, and an optional view preprocessor. ```swift init( directory: URL, clean: Bool = false, format: SnapshotSupport.ImageFormat, timeout: TimeInterval = 600, scale: CGFloat = UIScreen.main.scale, keyWindow: UIWindow? = nil, devices: [SnapshotDevice], logOutput: TextOutputStream? = nil, viewPreprocessor: ((UIView) -> UIView)? = nil ) ``` -------------------------------- ### ScenarioStore Class Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariostore Provides documentation for the ScenarioStore class, including its initializers, properties, and methods. ```APIDOC ## Class ScenarioStore ### Description The class for managing a set of scenarios identified by the arbitrary category. ### Initializers #### `init(category: ScenarioCategory)` Initialize a new store with given category. ### Instance Properties - **category** (ScenarioCategory) - A unique identifier of the scenarios managed by this instance. - **scenarios** ([Scenario]) - The set of scenarios managed by this store. ### Instance Methods #### `func add(_ scenario: Scenario) -> Self` Adds a scenario to this store instance. ``` -------------------------------- ### Create Scenario Initializer (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-4e71l Initializes a new scenario for UI testing or display. It requires a unique title, a layout configuration, and a content closure that returns the UIView to be presented. Default values are provided for file and line number. ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, content: @escaping () -> UIView ) ``` -------------------------------- ### Create Scenario with SwiftUI View (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-5ncog Initializes a new scenario for Playbook UI using a SwiftUI view. It takes a title, layout, file path, line number, and a content closure that returns the view. Requires iOS 13.0+. ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, @ViewBuilder content: @escaping () -> Content ) where Content : View ``` -------------------------------- ### Scenario Initialization Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-8cxxn This section describes how to create a new scenario using the `init` method in Playbook iOS. It outlines the required parameters and their purpose. ```APIDOC ## init(_:layout:file:line:content:) ### Description Creates a new scenario with a title, layout, and content closure. ### Method `init` ### Endpoint N/A (Initializer) ### Parameters #### Path Parameters N/A #### Query Parameters N/A #### Request Body N/A ### Request Example ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, content: @escaping (ScenarioContext) -> UIView ) ``` ### Response #### Success Response (200) N/A (Initializer) #### Response Example N/A ``` -------------------------------- ### Scenario Initializer in Swift Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-8cxxn Creates a new scenario for the Playbook UI framework. It takes a unique title, layout information, file and line number for tracking, and a content closure that defines the scenario's view hierarchy. ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, content: @escaping (ScenarioContext) -> UIView ) ``` -------------------------------- ### Swift Scenario Initializer Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-58awa Creates a new scenario for UI testing or presentation. It requires a unique title, a layout specification, and a closure that provides the UIViewController content. Default values are provided for file and line number. ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, content: @escaping () -> UIViewController ) ``` -------------------------------- ### Scenario Initializers Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario Provides multiple initializers for creating Scenario instances. These cater to different content types like SwiftUI Views, UIView, and UIViewController, and allow for content generation with or without a ScenarioContext. ```swift init(ScenarioTitle, layout: ScenarioLayout, file: StaticString, line: UInt, content: (ScenarioContext) -> Content) ``` ```swift init(ScenarioTitle, layout: ScenarioLayout, file: StaticString, line: UInt, content: () -> UIView) ``` ```swift init(ScenarioTitle, layout: ScenarioLayout, file: StaticString, line: UInt, content: () -> UIViewController) ``` ```swift init(ScenarioTitle, layout: ScenarioLayout, file: StaticString, line: UInt, content: () -> Content) ``` ```swift init(ScenarioTitle, layout: ScenarioLayout, file: StaticString, line: UInt, content: (ScenarioContext) -> UIViewController) ``` ```swift init(ScenarioTitle, layout: ScenarioLayout, file: StaticString, line: UInt, content: (ScenarioContext) -> UIView) ``` -------------------------------- ### Snapshot Initializer Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshot Initializes the Snapshot tool with various configuration options. This initializer sets up the environment for generating snapshot images, including the output directory, image format, timeout, scale, devices, and optional preprocessors. ```swift init(directory: URL, clean: Bool, format: SnapshotSupport.ImageFormat, timeout: TimeInterval, scale: CGFloat, keyWindow: UIWindow?, devices: [SnapshotDevice], logOutput: TextOutputStream?, viewPreprocessor: ((UIView) -> UIView)?) ``` -------------------------------- ### Initialize Playbook UI Context (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariocontext/init%28snapshotwaiter%3Aissnapshot%3Ascreensize%3A%29 Creates a new context for Playbook UI. It requires a SnapshotWaiter to manage rendering completion, a boolean to indicate if it's a snapshot context, and a closure to provide the screen size. ```swift init( snapshotWaiter: SnapshotWaiter, isSnapshot: Bool, screenSize: @autoclosure @escaping () -> CGSize ) ``` -------------------------------- ### Create Custom Device Simulation (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotdevice/init%28name%3Asize%3Asafeareainsets%3Atraitcollection%3A%29 Initializes a new custom device simulation. Requires a name and size, with optional safe area insets and trait collection. The name is used for snapshot directory naming. ```swift init( name: String, size: CGSize, safeAreaInsets: UIEdgeInsets = .zero, traitCollection: UITraitCollection = UITraitCollection() ) ``` -------------------------------- ### SwiftUI Scenario Initializer for PlaybookUI Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-35x49 Creates a new scenario for PlaybookUI using SwiftUI. It requires a unique title, layout configuration, file and line information for referencing, and a content closure that receives a ScenarioContext to build the SwiftUI view. Supported on iOS 13.0 and later. ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, @ViewBuilder content: @escaping (ScenarioContext) -> Content ) where Content : View ``` -------------------------------- ### Create Scenario Initializer in Swift Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario/init%28_%3Alayout%3Afile%3Aline%3Acontent%3A%29-63oo2 Initializes a new scenario for the Playbook UI in iOS. It requires a unique title, layout information, and a closure to define the UIViewController content. The file and line parameters are used for debugging and tracking scenario definitions. ```swift init( _ title: ScenarioTitle, layout: ScenarioLayout, file: StaticString = #file, line: UInt = #line, content: @escaping (ScenarioContext) -> UIViewController ) ``` -------------------------------- ### Scenario Instance Properties Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario Details the properties of a Scenario instance, including the content closure, file path, layout configuration, line number, and a descriptive title. These properties define the characteristics and context of a specific component state. ```swift var content: (ScenarioContext) -> UIViewController ``` ```swift var file: StaticString ``` ```swift var layout: ScenarioLayout ``` ```swift var line: UInt ``` ```swift var title: ScenarioTitle ``` -------------------------------- ### Define a Playbook UI Scenario Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/playbook This Swift code demonstrates how to use the Playbook singleton to add scenarios. It defines a simple Content view and adds it as a scenario under the 'Components' category with a compressed layout. ```swift class Playbook struct Content: View { var body: some View { Text("Playbook") } } Playbook.default.addScenarios(of: "Components") { Scenario("Content", layout: .compressed) { Content() } } ``` -------------------------------- ### Snapshot Run Method Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshot Executes the snapshot generation process for a given Playbook instance. This method takes a Playbook instance as input and generates snapshot images based on the tool's configuration. ```swift func run(with: Playbook) throws ``` -------------------------------- ### ScenarioTitle Initializers (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariotitle Provides initializers for the ScenarioTitle struct. `init(rawValue: String)` allows initialization from a raw string value, while `init(stringLiteral: String)` allows initialization directly from a string literal. ```swift init(rawValue: String) init(stringLiteral: String) ``` -------------------------------- ### Generate UIImage Snapshot (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotsupport/image%28for%3Aon%3Ascale%3Amaxsize%3Akeywindow%3Aviewpreprocessor%3Ahandler%3A%29 Generates a `UIImage` snapshot of a given scenario for a specified device and scale. It accepts optional parameters for maximum size, key window, a view preprocessor closure, and a handler to process the generated image. ```swift static func image( for scenario: Scenario, on device: SnapshotDevice, scale: CGFloat = UIScreen.main.scale, maxSize: CGSize? = nil, keyWindow: UIWindow? = nil, viewPreprocessor: ((UIView) -> UIView)? = nil, handler: @escaping (UIImage) -> Void ) ``` -------------------------------- ### Generate Snapshot UIImage (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotsupport Generates a UIImage for a given scenario. Requires Scenario, SnapshotDevice, and other configuration parameters. Outputs UIImage. ```swift static func image(for: Scenario, on: SnapshotDevice, scale: CGFloat, maxSize: CGSize?, keyWindow: UIWindow?, viewPreprocessor: ((UIView) -> UIView)?, handler: (UIImage) -> Void) ``` -------------------------------- ### Generate Snapshot Image Data (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotsupport Generates image file data for a given scenario. Requires Scenario, SnapshotDevice, ImageFormat, and other configuration parameters. Outputs Data. ```swift static func data(for: Scenario, on: SnapshotDevice, format: SnapshotSupport.ImageFormat, maxSize: CGSize?, scale: CGFloat, keyWindow: UIWindow?, viewPreprocessor: ((UIView) -> UIView)?, handler: (Data) -> Void) ``` -------------------------------- ### Snapshot Struct Definition Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshot Defines the structure for the Snapshot testing tool. This includes properties for managing snapshot generation, such as output directory, image format, and device configurations. ```swift struct Snapshot ``` -------------------------------- ### Generate Snapshot Image Data (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotsupport/data%28for%3Aon%3Aformat%3Amaxsize%3Ascale%3Akeywindow%3Aviewpreprocessor%3Ahandler%3A%29 This Swift function generates image data for a snapshot of a given scenario. It requires a scenario, device configuration, image format, and an optional handler to process the resulting data. The function also supports optional parameters for maximum size, scale, key window, and a view preprocessor. ```swift static func data( for scenario: Scenario, on device: SnapshotDevice, format: SnapshotSupport.ImageFormat, maxSize: CGSize? = nil, scale: CGFloat = UIScreen.main.scale, keyWindow: UIWindow? = nil, viewPreprocessor: ((UIView) -> UIView)? = nil, handler: @escaping (Data) -> Void ) ``` -------------------------------- ### Scenario Struct Definition Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenario Defines the basic structure for a Scenario, representing a part of the component state. It serves as a blueprint for creating different testable states of a UI component. ```swift struct Scenario ``` -------------------------------- ### Instance Method: addingTraitCollection(_:) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotdevice/addingtraitcollection%28_%3A%29 Adds an arbitrary trait collection to change the appearance of the SnapshotDevice. Returns the device with the added trait collection. ```APIDOC ## Instance Method: addingTraitCollection(_:) ### Description Adds an arbitrary trait collection to change the appearance of the `SnapshotDevice`. ### Method Instance Method ### Endpoint N/A (This is a Swift instance method, not a REST API endpoint) ### Parameters #### Path Parameters N/A #### Query Parameters N/A #### Request Body N/A ### Request Example ```swift let device = SnapshotDevice() let newDevice = device.addingTraitCollection(UITraitCollection(userInterfaceStyle: .dark)) ``` ### Response #### Success Response (Instance Method Return) - **SnapshotDevice** - The device instance with the added trait collection. #### Response Example ```swift // Assuming 'device' is an instance of SnapshotDevice let traitCollection = UITraitCollection(displayScale: 2.0) let updatedDevice = device.addingTraitCollection(traitCollection) // 'updatedDevice' is the same instance as 'device' but with the new trait collection applied. ``` ### Discussion This method is useful for testing how your UI components adapt to different device configurations, such as light/dark mode, different display scales, or accessibility settings, without needing to instantiate a new device for each configuration. ``` -------------------------------- ### ScenarioTitle Instance Properties (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariotitle Details the instance properties of the ScenarioTitle struct. `description` provides a string representation, and `rawValue` stores the underlying string value of the title. ```swift var description: String var rawValue: String ``` -------------------------------- ### Define User Scenarios with ScenarioProvider in Swift Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenarioprovider Implements the ScenarioProvider protocol to define a group of user-related UI scenarios. It utilizes the `addScenarios` static method to register scenarios like 'signed in' and 'signed out' with specific UserView configurations. This code relies on the Playbook and Scenario types. ```swift protocol ScenarioProvider ``` struct UserScenarios: ScenarioProvider { static func addScenarios(into playbook: Playbook) { playbook.addScenarios(of: "User") { Scenario("signed in", layout: .compressed) { UserView(name: "John", isSignedIn: true) } Scenario("signed out", layout: .compressed) { UserView(name: "Jane", isSignedIn: false) } } } } ``` -------------------------------- ### ScenarioLayout Struct Definition (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariolayout Defines the ScenarioLayout struct which represents how a component should be laid out. It includes properties for horizontal and vertical sizing strategies and provides static methods for common layout configurations. ```swift struct ScenarioLayout { var h: ScenarioLayout.Sizing var v: ScenarioLayout.Sizing static let compressed: ScenarioLayout static let fill: ScenarioLayout static let fillH: ScenarioLayout static let fillV: ScenarioLayout static func fixed(length: CGFloat) -> ScenarioLayout static func fixed(width: CGFloat, height: CGFloat) -> ScenarioLayout static func fixedH(_: CGFloat) -> ScenarioLayout static func fixedV(_: CGFloat) -> ScenarioLayout static func sizing(h: ScenarioLayout.Sizing, v: ScenarioLayout.Sizing) -> ScenarioLayout enum Sizing } ``` -------------------------------- ### ScenariosBuilder Type Method: buildBlock Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariosbuilder The `buildBlock(any ScenariosBuildable...)` static type method is a fundamental part of the result builder pattern. It takes a variadic collection of `ScenariosBuildable` elements and combines them to form the `ScenariosBuilder` instance, allowing for the composition of multiple scenarios. ```swift static func buildBlock(any ScenariosBuildable...) -> ScenariosBuilder ``` -------------------------------- ### SnapshotSupport Enum Definition (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotsupport Defines the SnapshotSupport namespace, which acts as a container for methods related to generating snapshots of UI scenarios. ```swift enum SnapshotSupport ``` -------------------------------- ### ScenarioTitle Struct Definition (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariotitle Defines the ScenarioTitle struct, which holds a unique title for a scenario. It includes initializers for raw value and string literal creation, and properties for description and raw value. ```swift struct ScenarioTitle ``` -------------------------------- ### ScenarioCategory Struct Definition Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariocategory Defines the structure for ScenarioCategory, used as a unique identifier for scenario sets. It includes raw value and description properties. ```swift struct ScenarioCategory ``` -------------------------------- ### ImageFormat Enum Definition (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotsupport Enumeration defining the supported image formats for exported snapshot files. ```swift enum ImageFormat ``` -------------------------------- ### ScenariosBuilder Instance Method: buildScenarios Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariosbuilder The `buildScenarios()` instance method is responsible for compiling the constructed scenarios into a final array of `Scenario` objects. This method is typically called at the end of a scenario-building closure. ```swift func buildScenarios() -> [Scenario] ``` -------------------------------- ### Sizing Enumeration Definition - Swift Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariolayout/sizing Defines the Sizing enumeration used for layout strategies in ScenarioLayout. It includes cases for compressing to intrinsic size, filling the canvas, and applying a fixed size. Conforms to Equatable, ExpressibleByFloatLiteral, and ExpressibleByIntegerLiteral protocols. ```swift enum Sizing { case compressed case fill case fixed(CGFloat) } ``` -------------------------------- ### SnapshotDevice.Orientation Enumeration Definition (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotdevice/orientation Defines the Orientation enumeration for representing device orientation. It supports landscape and portrait modes and conforms to Equatable and Hashable protocols for value comparison and hashing. ```swift enum Orientation ``` -------------------------------- ### Add Scenarios Instance Method (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/playbook/addscenarios%28of%3A_%3A%29 Adds a set of scenarios to a category using a function builder. It takes a ScenarioCategory and a closure that builds scenarios. Returns the current instance for chaining. ```swift @discardableResult func addScenarios( of category: ScenarioCategory, @ScenariosBuilder _ scenarios: () -> S ) -> Self where S : ScenariosBuildable ``` -------------------------------- ### Add Trait Collection to SnapshotDevice (Swift) Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/snapshotdevice/addingtraitcollection%28_%3A%29 The `addingTraitCollection(_:)` method adds a given `UITraitCollection` to the current `SnapshotDevice`. It returns the modified `SnapshotDevice` instance, enabling chaining of modifications. This is useful for testing UI variations across different device configurations. ```swift func addingTraitCollection(_ traitCollection: UITraitCollection) -> SnapshotDevice ``` -------------------------------- ### ScenariosBuilder Struct Definition Source: https://playbook-ui.github.io/playbook-ios/documentation/playbooksnapshot/scenariosbuilder Defines the ScenariosBuilder struct, which acts as a result builder for constructing scenarios. It is marked with the @resultBuilder attribute, enabling its use in creating structured scenario definitions. ```swift @resultBuilder struct ScenariosBuilder ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.