如何将 Calabash 添加到 React Native iOS for Xamarin.UITest

How to Add Calabash to React Native iOS for Xamarin.UITest

如何将 Calabash 框架添加到 iOS 内置 React Native 的应用程序中?

我们正在将 iOS 应用程序的代码库从 Swift 迁移到 React Native,并且我有一套现有的 UITests 使用 Xamarin.UITest 在 C# 中构建。

我想继续为 React Native iOS 应用程序使用我的 Xamarin.UITest 套件,但我知道 Xamarin.UITest 需要 Calabash 框架 link在应用程序的源代码中编辑。

Xamarin documentation 关于如何 link Calabash 用于 Xcode 内置的 iOS 应用程序,但我找不到任何关于如何 link 的文档] Calabash 用于 iOS 在 React Native 中构建的应用程序。

是否有任何类似的文档说明如何 link Calabash 到 React Native iOS 应用程序?

使用 Xamarin 测试记录器将 Calabash 注入 IPA

您可以使用的一个选项是使用 Xamarin 测试记录器将 Calabash 注入您的 IPA:https://developer.xamarin.com/guides/testcloud/testrecorder/

就用于构建原始 IPA 的内容而言,此方法与框架无关,因为它将它注入已编译的 IPA。 Xamarin 测试记录器在您设置应用程序以使用记录器后执行此操作:https://developer.xamarin.com/guides/testcloud/testrecorder/#Recording_a_Test

此时,您可以使用测试记录器本身创建 UITests 并导出它们:https://developer.xamarin.com/guides/testcloud/testrecorder/#Exporting_the_Recorded_Test。或者你可以只使用与原始 IPA 位于同一位置的已辞职的 IPA,名称前加 "xtr-" ,如下所示:

  • myAwesomeApp.ipa(原国际音标)
  • xtr-myAwesomeApp.ipa(葫芦 IPA)

注意事项

  • IPA 由测试记录器退出 - 为了让 Xamarin 测试记录器注入 Calabash,它还需要退出 IPA。为此,执行辞职的系统需要具有有效的签名身份和有效的配置文件,包括应用程序使用的权利。

  • 任何包含 Calabash 的 IPA 都会被 iOS 应用商店拒绝 - 无论使用什么方法添加 Calabash 都是如此IPA,但记住这一点很重要。在上面的示例中,您将使用 xtr-myAwesomeApp.ipa 进行测试并将 myAwesomeApp.ipa 本身提交到应用程序商店。

  • 必须将记录的测试导出为单独的 .cs 文件才能使用 - 即使您记录了一些测试,这些也不包含在 IPA 本身中直接,但 Test Recorder 可以将它们导出为 .cs 文件,其结构与您手写的方式相同 Xamarin.UITests。

iOS 在 React Native 中构建的应用程序自动创建一个 .xcodeproj 文件并依赖 Xcode 项目用于 build/deploy。这是新初始化的 React Native 项目的图像。

Xamarin.UITest 要求将 Calabash 框架链接到 iOS 应用程序。因为 React Native iOS 应用程序依赖于 .xcodeproj,我们可以按照相同的步骤注入 Calabash,就好像应用程序是用 Swift/ObjC 编写的一样。要完成,请遵循此 Tutorial: Link Calabash in Debug config.

在 JavaScript 源代码中,使用 accessibilityLabel 属性 为每个屏幕元素添加唯一标识符。 In this example 我们已将 TextInput 标识为 "TextInputAccessibilityId"。

在 Xamarin.UITest 中,我们现在可以创建一个字段 readonly Query TextInput,并使用相同的 属性 对其进行初始化:TextInput = x => x.Marked("TextInputAccessibilityId");. Now we can interact with this on-screen element in our Xamarin.UITest!

所有测试都在 Xamarin Test Cloud 中进行了验证,results are viewable here