Xamarin REPL (read-eval-print-loop) is one of the most important tools for building Xamarin.UITest tests. It’s a console-like environment in which we can see the structure of the visible part of our application using queries and commands. It helps us find the particular elements in a Xamarin.Forms app layout so we can more easily write automated tests against those elements.
You can get started by calling the Repl() method of the IApp interface within a test method:
Once your test is running and hits this line of code, you will see the REPL tool in a new terminal window where we can interact directly with the UI elements of the app.
The REPL initializes an instance of IApp interface for us in the terminal window called app. We can simply type the variable name app, followed by a dot operator (“.”) to get the list of available methods from the app object. You can see an example listing below:
Next, we want to consider a few very useful methods of IApp interface: Query() and EnterText().
But first, we can execute the tree command to display all the visible elements of the current view.
To find the particular element, we can use the following lambda syntax in app’s Query() method:
app.Query(x => x.Marked("Sign In"))
There are many ways of finding an element which you can see suggested below by autocomplete. Type:
app.Query(x => x.
And the terminal will list properties of the element you can use to find it, such as the ones below:
For example, you can get find the first element that matches a query and get its enabled property using this syntax:
app.Query(x => x.Marked("Sign In")).FirstOrDefault().Enabled
Now let’s simulate the user entering some text into the ‘Username’ input field. For this we can use the EnterText() method to find an element, and enter the specified text into that element:
app.EnterText(x => x.Marked("Username"),"[email protected]")
As you can see, REPL gives you the advantage of being able to traverse your Xamarin app’s UI components in real-time to find the correct expressions you can use to select UI elements in your automation tests.