Frequently asked questions

What is Repeato? Why another UI testing tool?

Repeato is a test automation tool which works based on computer vision and machine learning. This way the tester does not need to care about the underlying architecture of the app (IDs, layout structure) which simplifies the creation of tests.
Instead of writing code, tests can be recorded via a test recorder. For each click interaction a visual fingerprint is generated which allows the test runner to find the UI element later on.
For each test run a report can be generated, which shows a visual step by step representation of the automated UI interactions.


Can I integrate Repeato into my continuous integration flow?

Yes you can. Repeato will run headless as a node.js application on pretty much every system.


Do you offer any device pools or does all the testing happen on customers local devices?

Only customers local devices. Emulators work too.


Can I use emulators or simulators instead of real devices?



Can tests be replayed on other OSs (android test on iOS for example)?

Unfortunately not yet. We are working on it though.


If I record a test on a device with 2:1 screen ratio can I run it on 16:9?



Can I modify test inputs without rerecording the test? (e.g. replace the recorded username with another one)

Yes you can edit test steps easily.


Can you randomly generate input data for a test?

Yes, e.g. for registering new accounts you can generate random usernames or email addresses.


Can I record a test on one view of the app and replay it on another?

Yes, you can.


How can I sync my tests with my team?

Repeato allows you to create workspaces. Each workspace can live in its own directory which can be easily checked into a repository (either git or some other versioning software).  You can find more on that subject here.


How does Repeato work compared to other testing tools?

Repeato has a new approach to UI testing and works fundamentally different then other UI testing frameworks:
It operates fully on pixel data and does not care about the underlying structure of the UI. It basically sees what a tester would see by utilising computer vision (openCV, tesseract) and machine learning (tensorflow).
Asserts are created by defining pixel regions, which can later be found again by the computer vision algorithm. Even when your design or device aspect rations change slightly.


Is Repeato an alternative to espresso?

Yes it is.

What is wrong with using espresso for testing? Not much. There is one big issue though: It's very time consuming to create tests: finding the right view ID, mocking classes, creating idling resources or finding the right delays for you next step.

Espresso need to have a sophisticated understanding of how the UI is structured. In order to create asserts and click views, espresso as well as most other testing frameworks needs a unique reference to the respective view in the view hierarchy (layout). Usually a manually set ID or the "layout path" is used as a unique reference and the developers needs to reference that ID when they  write test automation code.
This approach comes with a lot of complexity which needs to be handled by the developer:

  1. Looking up view IDs
  2. Making sure that those are unique (IDs can reoccur in different places in the hierarchy)
  3. When layouts are refactored IDs often change, this breaks the tests, which need to be fixed
  4. Creating idling resources for asynchronous code
  5. Making sure view lookups and clicks are not executed before view is fully visible (problematic with view animations and fragment transitions)
  6. Installing additional framework components for handling automation outside of the app context (notifications, switching to other app)