Repeato
  • Features
  • Pricing
  • Blog
  • Resources
  • Get for free
  • Getting started
  • Running test batches
  • Reporting
  • Test devices
  • Screenshot testing
  • Test exception handling
  • Tags
  • Automate switching devices
  • Advanced Configuration
  • Test workspaces
  • Advanced testing techniques
  • JavaScript API
  • Share tests within the team
  • Continuous Integration Support

Getting started

Table of contents
  1. How to record tests with Repeato
  2. Checking (asserting) UI elements
  3. Editing tests in “Record and play”
  4. How to install your app on a device?
    1. Android: How to find your .apk file
    2. iOS: How to find your .app file
    3. How to install the app on your testing device
  5. Exporting and importing test steps, to and from the library
  6. Launch arguments (AKA “Launch params”)
  7. Good to know
  8. Advanced step settings

How to record tests with Repeato

Our primary focus is to keep things simple, so also non-technical people can work with Repeato.

Repeato Studio is a regression testing tool that allows you to:

  • test Android or iOS apps
  • edit and save those tests
  • organize tests within a library and workspaces
  • assign tests to test batches and run those
  • export shareable batch run reports

Checking (asserting) UI elements

Before Repeato can automatically check our app, we need to tell it what it should look for.
In this video we take a look at the 3 ways to assert UI elements:

  1. Fingerprint
  2. Text / Numbers
  3. Dynamic content (AI Vision)

Editing tests in “Record and play”

Repeato allows you to quickly edit tests by copying and pasting steps or dragging them around.

Also, here is a list of shortcuts you can use to get even more efficient:

  • Mark multiple steps: Hold Shift or Ctrl (Cmd on Mac) and select multiple steps by clicking
  • Copy step(s): Ctrl + C (or Cmd + C on Mac)
  • Cut step(s): Ctrl + X (or Cmd + X on Mac)
  • Paste step(s): Ctrl + V (or Cmd + V on Mac)
  • Run test from current cursor position: Space

How to install your app on a device?

Before you start testing with Repeato, you might want to install your app on your testing device.

Android: How to find your .apk file

In Android Studio, select Build -> Build APK(s) -> Build APK(s) or Build -> Build APK(s)
Once the build is complete you can locate the .apk file by selecting “locate” in the dialog that appears, or by navigating to
{project name}/{app module name}/build/outputs/apk/

iOS: How to find your .app file

In Xcode, just build and run your application while targeting an iOS Simulator.
Once the build is complete and the app is running in the simulator, you can locate the .app file by navigating to Product -> Show Build Folder in Finder -> Products/Debug-iphonesimulator
For cloud iOS devices: Since an .app file is basically a folder, you need to zip before it can be installed on your cloud device.

How to install the app on your testing device

Repeato v1.5 and above makes this really easy for you: Just drag the .apk or the .zip file into the Repeato window where your device screen is showing:

Exporting and importing test steps, to and from the library

It’s possible to import whole tests from the library, but also just single steps.

Further, you can select steps and choose to export them as a separate test to the library. This can be quite helpful when you are trying to keep your tests small by breaking them apart into building blocks.

Launch arguments (AKA “Launch params”)

The start app step allows you to pass additional data to your app. You could for example send a “testing” param, so the app can show only testing data.

The start app step allows you to configure how the app is started during the test run

 You need to set one argument per line.

If you don’t have access to the source code of your app, or the app is built by someone else, you can send them those instructions, so they know how to receive the data on the app side:

On Android you can access an argument inside of your app like this:

val myValue = intent.getStringExtra("my-launch-argument")

On iOS you can add a launch argument like this:

-my-launch-argument 1

Inside of the app the param can be read like this:

UserDefaults.standard.string(forKey: "my-launch-argument")
Swift

Please note: inside of Repeato you need to include the “-“, but inside the app you need to access the argument via my-launch-argument (Don’t include -).

Good to know

How element search works:

Repeato always tries to be as quick as possible, by interacting with elements as soon as they show up. But it’s slightly more complicated.
This is how the element search works in more detail:

  1. Repeato test is started
  2. Repeato is starting the app. Next comes a “click element” step.
  3. Repeato is observing the screen…
  4. Repeato keeps searching up to a maximum amount of time. This is called “timeout” and it’s 8 seconds by default. However, Repeato waits longer in certain situations.
    For example: The step AFTER the “start app” step get’s a longer timeout because the app start might take more than 8 seconds of time.
    The timeout can be adjusted for each step individually.
  5. as soon as it finds the right element, it waits till the element stops moving (e.g. screen transition animation). This increases the test stability and therefore reduces test-flakiness.

Advanced step settings

Allows you to tweak the search algorithm.

1: Search accuracy
Allows you to fine-tune the accuracy of the search algorithm. Decreasing the value will result in a more fuzzy search. Increasing it will make Repeato look more closely.

2: Wait for animation to finish before click:
This setting is enabled by default and will improve the stability of your tests. Repeato will wait for elements to stop moving before interacting with them. However, if you ever tried to automate interactions in a game, you might have noticed that Repeato was not able to click moving elements. Well, we got that fixed now.

3: Force scale invariant search
By default, Repeato will look for the fingerprint in the same size. But what if the element you are looking for changes it’s size? This can happen in a video game, think of a 3D scene, where objects that are further away will be rendered smaller. This setting will allow you to still find and interact with them.

Repeato

  • Home
  • Pricing
  • Blog
  • FAQ
  • About us

Documentation

  • Getting started
  • Test exception handling
  • Advanced testing techniques
  • JavaScript API
  • Release notes

Support

  • Support & Resources
  • Documentation
  • Book a demo
  • Contact

Legal

  • Imprint
  • Terms & Conditions
  • Privacy policy
Repeato Reviews
Manage Cookie Consent
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
View preferences
{title} {title} {title}