AccessibilitySnapshot 0.7.0

AccessibilitySnapshot 0.7.0

Nick EntinJoao NevesAlex OdawaNick Entin 维护。



  • Square

AccessibilitySnapshot

CI Status Version License Platform

AccessibilitySnapshots 使您能够在 UIKit 中轻松添加回归测试,以检查可访问性。

入门

默认情况下,AccessibilitySnapshot 使用 SnapshotTesting 来录制快照和执行比较。该框架还包括支持使用 iOSSnapshotTestCase 作为快照引擎的功能。在设置可访问性快照测试之前,请确保您的项目已设置为标准快照测试。可访问性快照测试要求测试目标有一个宿主应用程序。有关其他可用快照选项的列表,请参阅下面的 扩展 部分。

CocoaPods

通过将以下内容添加到您的 Podfile 中使用 CocoaPods 进行安装

pod 'AccessibilitySnapshot'

要仅使用核心可访问性解析器,添加对 Core 子规范的唯一依赖

pod 'AccessibilitySnapshot/Core'

或者,如果您想使用 iOSSnapshotTestCase 来执行图像比较,您可以添加对 iOSSnapshotTestCase 子规范的依赖(或者两者都添加 - 您可以在同一个项目中同时使用它们)

pod 'AccessibilitySnapshot/iOSSnapshotTestCase'

Swift 包管理器

使用 Swift 包管理器 安装,在您的 Package.swift 文件中添加以下内容:

dependencies: [
    .package(name: "AccessibilitySnapshot", url: "https://github.com/cashapp/AccessibilitySnapshot.git", from: "0.4.1"),
]

接下来,将 AccessibilitySnapshot 添加为测试目标的依赖项。

targets: [
    .target(name: "MyApp"),
    .testTarget(name: "MyAppTests", dependencies: ["MyApp", "AccessibilitySnapshot"])
]

如果要使用核心可访问性解析器,仅依赖 Core 库即可。

targets: [
    .target(name: "MyApp"),
    .testTarget(name: "MyAppTests", dependencies: ["MyApp", "AccessibilitySnapshotCore"])
]

要使用 iOSSnapshotTestCase 执行图像比较,请添加 FBSnapshotTestCase+Accessibility 作为 Swift 测试的依赖项,或添加 FBSnapshotTestCase+Accessibility-ObjC 作为 Objective-C 的依赖项。

targets: [
    .target(name: "MyApp"),
    .testTarget(name: "MyAppTests", dependencies: ["MyApp", "FBSnapshotTestCase+Accessibility"])
]

使用方法

AccessibilitySnapshot 建立在现有的快照框架之上,以支持对应用程序可访问性的快照。默认情况下,它使用 SnapshotTesting 框架进行快照,但也可以切换到 iOSSnapshotTestCase

开始使用 SnapshotTesting

AccessibilitySnapshot 为 SnapshotTesting 的快照断言提供了一个 .accessibilityImage 快照策略。

func testAccessibility() {
    let view = MyView()
    // Configure the view...

    assertSnapshot(matching: view, as: .accessibilityImage)
}

快照也可以通过几种方式自定义,例如控制何时显示每个元素的可访问性激活点的指标。默认情况下,当激活点与该视图的默认激活点不同时,这些指标将显示出来。您可以针对每个快照重写此行为

func testAccessibility() {
    let view = MyView()
    // Configure the view...

    // Show indicators for every element.
    assertSnapshot(matching: view, as: .accessibilityImage(showActivationPoints: .always))

    // Don't show any indicators.
    assertSnapshot(matching: view, as: .accessibilityImage(showActivationPoints: .never))
}

开始使用 iOSSnapshotTestCase

要运行快照测试,只需调用 SnapshotVerifyAccessibility 方法。

func testAccessibility() {
    let view = MyView()
    // Configure the view...

    SnapshotVerifyAccessibility(view)
}

由于 AccessibilitySnapshot 是建立在 iOSSnapshotTestCase 之上的,它使用相同的机制来记录快照(设置 self.recordMode 属性)并支持许多相同的功能,例如设备无关的文件名和指定每个快照的标识符。

func testAccessibility() {
    let view = MyView()
    // Configure the view...

    SnapshotVerifyAccessibility(view, identifier: "identifier")
}

快照还可选择性地包含每个元素的可用性激活点的指示器。默认情况下,当激活点与该视图的默认激活点不同时,这些指示器会显示。您可以为每个快照覆盖此行为。

func testAccessibility() {
    let view = MyView()
    // Configure the view...

    // Show indicators for every element.
    SnapshotVerifyAccessibility(view, showActivationPoints: .always)

    // Don't show any indicators.
    SnapshotVerifyAccessibility(view, showActivationPoints: .never)
}

您还可以从 Objective-C 运行可用性快照测试。

- (void)testAccessibility;
{
    UIView *view = [UIView new];
    // Configure the view...

    SnapshotVerifyAccessibility(view, @"identifier");
}

需求

  • Xcode 12.0 或更高版本
  • iOS 13.0 或更高版本

贡献

我们热爱我们的贡献者!在提交拉取请求之前,请阅读我们的贡献指南

扩展

你编写了自己的扩展吗?在此处添加它并提交拉取请求!

许可证

Copyright 2020 Square Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.