In this SauceCon 2019 talk, Wim discusses why he used ResembleJS as a core visual comparison solution, the things he learned about Appium in the process (pro tips!), the differences between iOS and Android and how he managed to solve this in one cross-platform solution.
5. Requirements
• Native App support
• Cross platform
• Integrate WebdriverIO
• Paid tools === trial first
• Support blockouts
• Support element screenshots/bounding box
For a visual regression/testing solution
7. Research
Visual regression / testing for Native Apps
iOSSnapshotTestCase
Nakal
sightr.io
screenshot-tests-for-android
8. Result
Visual regression / testing for Native Apps
Requirements
screenshot-tests-
for-android
iOSSnapshot
TestCase
Nakal sightr.io VisWiz Applitools
Native apps support Yes Yes Yes Yes Yes Yes
WebdriverIO support
- JS
- No extra environment
dependencies
No No No No Yes
Not for
native apps
Trial? Open source Open source Open source Beta Yes Yes
Image diff Yes, basic Yes, basic Yes Yes Yes, basic Yes, extensive
Blockouts No No Yes and no No no Yes
Element screenshots No No No No No No
Bounding box No No No No No Yes
9. Result
Visual regression / testing for Native Apps
Requirements
screenshot-tests-
for-android
iOSSnapshot
TestCase
Nakal sightr.io VisWiz Applitools
Native apps support Yes Yes Yes Yes Yes Yes
WebdriverIO support
- JS
- No extra environment
dependencies
No No No No Yes
Not for
native apps
Trial? Open source Open source Open source Beta Yes Yes
Image diff Yes, basic Yes, basic Yes Yes Yes, basic Yes, extensive
Blockouts No No Yes and no No no Yes
Element screenshots No No No No No No
Bounding box No No No No No Yes
10. Result
Visual regression / testing for Native Apps
Requirements
screenshot-tests-
for-android
iOSSnapshot
TestCase
Nakal sightr.io VisWiz Applitools
Native apps support Yes Yes Yes Yes Yes Yes
WebdriverIO support
- JS
- No extra environment
dependencies
No No No No Yes
Not for
native apps
Trial? Open source Open source Open source Beta Yes Yes
Image diff Yes, basic Yes, basic Yes Yes Yes, basic Yes, extensive
Blockouts No No Yes and no No no Yes
Element screenshots No No No No No No
Bounding box No No No No No Yes
11. Result
Visual regression / testing for Native Apps
Requirements
screenshot-tests-
for-android
iOSSnapshot
TestCase
Nakal sightr.io VisWiz Applitools
Native apps support Yes Yes Yes Yes Yes Yes
WebdriverIO support
- JS
- No extra environment
dependencies
No No No No Yes
Not for
native apps
Trial? Open source Open source Open source Beta Yes Yes
Image diff Yes, basic Yes, basic Yes Yes Yes, basic Yes, extensive
Blockouts No No Yes and no No no Yes
Element screenshots No No No No No No
Bounding box No No No No No Yes
12. Result
Visual regression / testing for Native Apps
Requirements
screenshot-tests-
for-android
iOSSnapshot
TestCase
Nakal sightr.io VisWiz Applitools
Native apps support Yes Yes Yes Yes Yes Yes
WebdriverIO support
- JS
- No extra environment
dependencies
No No No No Yes
Not for
native apps
Trial? Open source Open source Open source Beta Yes Yes
Image diff Yes, basic Yes, basic Yes Yes Yes, basic Yes, extensive
Blockouts No No Yes and no No no Yes
Element screenshots No No No No No No
Bounding box No No No No No Yes
?
14. Logic
Who should do what?
Requirements Module Comparison engine
Actively maintained - Yes
Environment dependencies No No
Blockout(s) Yes, determine and provide Yes
Element screenshot Yes -
Create baseline Yes -
Screenshots per device Yes -
Support compare options
(for example antialiasing)
Yes Yes
15. Logic
Who should do what?
Requirements Module Comparison engine
Actively maintained - Yes
Environment dependencies No No
Blockout(s) Yes, determine and provide Yes
Element screenshot Yes -
Create baseline Yes -
Screenshots per device Yes -
Support compare options
(for example antialiasing)
Yes Yes
28. compareScreen
Where could it go wrong, where could it cause flakiness?
Navigation bar Home bar indicatorStatus bar
29. Status bar
• Android and iOS differ in height
• iOS OS versions / devices differ
• Android OS versions / devices differ
• Cross platform / device solution
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40. Navigation bar
• Android OS versions / devices differ
• Not each device has a tool/navigation bar
• Cross device solution
For Android
41.
42. Home bar indicator
● Currently 2 sizes
● The behaviour can be adjusted
iPhone X series