使用 detox 以不同方向查看 UI (Android)

Posted

技术标签:

【中文标题】使用 detox 以不同方向查看 UI (Android)【英文标题】:Using detox to look at UI in different orientations (Android) 【发布时间】:2020-11-29 21:16:32 【问题描述】:

所以我使用detox 来截取我的应用程序的屏幕截图。我正在使用已连接的 android 设备。 device.takeScreenshot 功能有效。现在,查看我的应用在不同方向上的外观的最佳方式是什么?是改变平板电脑方向并再次运行测试的唯一方法吗?还是有更聪明的方法?

【问题讨论】:

【参考方案1】:

我不完全确定你在这里问什么,但为了改变方向,你可以使用device.setOrientation()

是否只有更改平板电脑方向并再次运行测试的唯一方法?

对我来说,这听起来像是两个独立的用例(纵向与纵向)。会更容易维护。

最后,就屏幕截图测试而言,您可能会发现 Detox 的screenshots guide 中描述的做法很有用:

...

该概念主要用于验证设备屏幕上出现的元素的正确视觉结构和布局,以快照测试的形式。即,通过遵循这些概念步骤:

    截取一次屏幕截图,然后手动进行视觉验证。 将其存储为 e2e 测试资产(即快照)。 从那时起,将其用作与后续测试中截取的屏幕截图进行比较的参考点。
const fs = require('fs');

describe('Members area', () => 
 const snapshottedImagePath = './e2e/assets/snapshotted-image.png';

 it('should greet the member with an announcement', async () => 
   const imagePath = (take screenshot from the device); // Discussed >below
   expectBitmapsToBeEqual(imagePath, snapshottedImagePath);  
 );  
);

function expectBitmapsToBeEqual(imagePath, expectedImagePath) 
 const bitmapBuffer = fs.readFileSync(imagePath);
 const expectedBitmapBuffer = fs.readFileSync(expectedImagePath);
 if (!bitmapBuffer.equals(expectedBitmapBuffer)) 
   throw new Error(`Expected image at $imagePath to be equal to image >at $expectedImagePath, but it was different!`);
 

重要提示:推荐的更实用的方法是使用更高级的 3rd 方图像快照和比较工具,例如 applitools。

【讨论】:

因此 device.setOrientation(orientation) 的指南说“目前仅在 ios 模拟器中可用。”。 github.com/wix/Detox/blob/master/docs/… 文档是否已经过时?我希望它可以在 Android 设备(物理)上运行。 很抱歉。它应该也可以在 Android 上运行!

以上是关于使用 detox 以不同方向查看 UI (Android)的主要内容,如果未能解决你的问题,请参考以下文章

移动模拟器/模拟器 Detox 屏幕截图工件在不同主机上运行时会有所不同

如何仅在 IOS 上运行 Detox 测试并禁用 Android 运行

Detox - 测试模式在 React Native 中的可见性

Detox - 如何在新规范运行之前运行以前的规范以避免重复的测试步骤?

无法在 detox 中的 android 日期选择器中选择 month_view 中的日期

为 PDFView 设置 RTL 滚动方向 - Android