SwiftSnapshotTesting 0.1.4

SwiftSnapshotTesting 0.1.4

Eugene Bokhan维护。



  • Eugene Bokhan

SwiftSnapshotTesting

本项目的目的是简化iOS上的UI测试。

SwiftSnapshotTesting 帮助您通过几行代码就检查应用的UI。再也不需要手动管理参考图像了。

此框架能够执行以下操作:

  • 捕获全屏截图、仅状态栏或其他 XCUIElement 的屏幕截图
  • 在您的Mac上记录截图
  • 使用 Metal 比较和突出显示新截图与之前记录的截图之间的差异

在内部,SwiftSnapshotTesting 在进行快照比较时使用 MTLTextures。它还使用 Resources Bridge Monitor 应用来读取和写入Mac上的文件。

⚠️目前,此项目处于早期alpha阶段,并有待改进。

需求

  • Swift 5.2
  • iOS 11.0

通过Cocoapods安装

pod 'SwiftSnapshotTesting'

如何使用

  • 创建SnapshotTestCase的子类

    class MyCoolUITest: SnapshotTestCase { ...
  • 在选择您的Mac上的文件夹以存储引用快照时,通过覆盖 snapshotsReferencesFolder 变量来实现

    override var snapshotsReferencesFolder: String {
        "/Path-To-Snapshots-Folder/"
    }
  • 断言UI元素

    assert(element: XCUIElement,
           testName: String,
           ignore rects: Set<CGRect>,
           configuration: Configuration,
           recording: Bool) throws
    • element - 要比较的元素。
    • testName - 测试名称。它将被用于引用图像文件的名称
    • rects - 忽略的rects(可能的子视图框架)。
    • configuration 目前的测试配置。
    • recording - 通过设置此参数为 true,您将记录引用快照。通过设置为 false,您将比较元素与之前记录的快照。
  • 断言截图

    assert(screenshot: XCUIScreenshot,
           testName: String,
           ignore ignorables: Set<Ignorable>,
           configuration: Configuration,
           recording: Bool) throws
    • screenshot - 要测试的截图。
    • ignorables - 要忽略的UI元素。 Ignorable 可以是 XCUIElement、自定义 CGRect 或预定义的 .statusBar

XCTAttachment

在每次断言测试之后,SnapshotTestCase 都提供了一个包含快照及其对应参考之间每像素L2距离的附件和带有高亮差异的 MTLTexture。您可以使用 MTLTextureViewer 查看差异。

示例

您可以在 这里 找到 SwiftSnapshotTestingImageFlip 仓库中使用的示例。

许可协议

MIT