pointfreeco / swift-snapshot-testing

📸 Delightful Swift snapshot testing.
https://www.pointfree.co/episodes/ep41-a-tour-of-snapshot-testing
MIT License
3.78k stars 580 forks source link

Xcode 16 - SnapshotTesting in a Swift Package #879

Open kelvinlauKL opened 3 months ago

kelvinlauKL commented 3 months ago

I'm building a UI library as a Swift Package. Attempting to use SnapshotTesting gives me this:

Screenshot 2024-07-28 at 8 38 23 PM

Here's my package file:

// swift-tools-version: 6.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
  name: "ChatDesignSystem",
  platforms: [.macOS(.v15), .iOS(.v18), .tvOS(.v18), .watchOS(.v11), .macCatalyst(.v18)],
  products: [
    .library(
      name: "ChatDesignSystem",
      targets: ["ChatDesignSystem"]),
  ],
  dependencies: [
    .package(url: "https://github.com/pointfreeco/swift-snapshot-testing", branch: "main")
  ],
  targets: [
    .target(
      name: "ChatDesignSystem"),
    .testTarget(
      name: "ChatDesignSystemTests",
      dependencies: [
        "ChatDesignSystem",
        .product(name: "SnapshotTesting", package: "swift-snapshot-testing")
      ]
    ),
  ]
)

Is this not supported in a Swift Package?

stephencelis commented 3 months ago

@kelvinlauKL The screenshot has the error message mostly truncated. It looks like a compile failure but it's not easy to troubleshoot as is. Can you share sample code reproducing the issue?

kelvinlauKL commented 3 months ago

My bad - the error message is Type of expression is ambiguous without a type annotation. I realized this compiler error is happening when my device is set to "My Mac". The compiler error goes away if I set it to an iOS device.

I've updated the screenshot.

Is that expected behaviour?

doozMen commented 2 months ago

I have the same issue and was looking into it. I found out to my surprise that the current library does not seam to have the image not compiled for MacOS as the current snapshot implementation seams to rely on making the view a UIImage and embedding it in a viewController. Both do not exist on macOS.

So SwiftUI view support is limited to iOS like platforms

Screenshot 2024-08-05 at 14 45 20