Posted on

Jumps with Sub-Return function

For actions which needs to be recurrently run several times throughout the test (e.g. switching users) you can use Jump with Sub-Return function.

With JUMP #sub:tagName you set the base of the following jump session.
The command makes you jump to the TAG #sub:tagName.
With the JUMP #return:tagName you jump back to the place where you started (set the baseline).

Example:

JUMPsub:switch_user

… some more actions …

TAG#sub:switch_user

…some recurrent actions…

JUMPreturn:switch_user
Posted on Leave a comment

How to use Find with multiple anchor areas

In case there are multiple possible anchor areas in the system under test and you need to check if at least one of them can be found on the device screen, you can use .

This function searches for every possible anchor area and saves the result in a runtime variable with . In the end, you can either throw or not throw an error, depending on the value of the runtime variable.

Insert multi-check into a test.

Make sure you are in mode.

  1. Use to search for the first anchor area.
  2. Click .
  3. Enter the following PHP command to save the result of the find to a runtime variable:
  4. EVAL set("some_var_name")
  5. Use to search for the second anchor area.
  6. Enter the following PHP command to save the combined result of this and all previous finds to the runtime variable:
  7. EVAL set("some_var_name", $CLIPBOARD=="True" || get("some_var_name")=="True")
  8. Repeat step 4 and 5 for every possible anchor area.
  9. Enter the following PHP command to throw an error if none of the previous finds was successful:
  10. EVAL get("some_var_name") || error("a custom error message") 

Posted on

Cheat Sheet

[Test Setting Page] [Keys] [Branch] [EVAL] [Jumps] [Loops] [max.Runtime] [Sub-Return] [Various Images]

Advanced Commands Test Setting Page

Quality2Threshold number (try between 30 and 40)
ExperimentalContinuationLimitnumber
isPersistenttrue
ScreenshottingModedevice-screen”  (high resolution screenshot (‘experimental’ style))
browser-window” (old ‘non experimental’ style)

Keys

CTRL + →rotate clockwise
CTRL + ←rotate counter clockwise
CTRL + Rrefresh

Branch

a,b,c!d,e,f(a | b | c) & !d & !e & !f
(a | b | c) & !(d | e| f)
en,de,esen,es
Natalie: Action wird ausgeführt in Branches en und es.
Jenny: Action wird ausgeführt wenn der Branch en ist, oder es ist.
Frage: Soll diese Action im aktuellen Branch ausgeführt werden?
Antwort: Wenn branch en oder es ist
Code: ($BRANCH==”en”) || ($BRANCH == “es”)

EVAL Statements

Annotation

&
&&
and (stops after the first argument is true)
and (checks both arguments)
||or

Sendkeys

EVALsendkeys("any text",100)

Parse German Number Format

EVALstr_replace(",", ".", str_replace(".","", $CLIPBOARD))

Checks with Custom Error Messages

FINDimage
EVAL$FLAG || error('specific failure description')

Jumps

Normal Jump

JUMP(T/F)any name

… some more actions …

TAG#any name

Jump based on clipboard value

JUMPscr($CLIPBOARD)

Loops

Simple Loop

TAG#any name

… some more actions …

JUMP (T/F)any name

Maximum Loop Passes
(Option 1 – longer but better readable)

TAG#start
EVALset("counter", get("counter")+1) < 10
JUMP (F)#out
FINDsomething
JUMP (T)#start
TAG#out

Maximum Loop Passes
(Option 2 - shorter with && operation)

TAG#start

... clicking or something ...

FINDsomething
EVALset("counter", get("counter")+1) < 3 && $FLAG
JUMP (T)#start

Limit the Time that a Loop Runs

EVALtime() - set("time", get("time") || time()) < 10 && ....

Maximum Runtime for Blocks

EVALset("time", time())
TAG#start

... some actions ...

EVALtime() - get("time") > 100 && error("More than 100 seconds passed. Stopping")
JUMP#start

Sub - Return

With JUMP sub:test you set the base of the following jump session
The command makes you jump to the TAG #sub:test
With the Jump #return:test you jump back to the place where you started (set the baseline)

JUMPsub:any name

... some more actions ...

TAG#sub:any name

... some more actions ...

JUMPreturn:any name

Combined Image Search

You have different images that show up randomly. That's how you can check if one of them is appearing.

FINDimage1
EVALset("result", $FLAG)
FINDimage2
EVALset("result, $FLAG || $result)
FINDimage3
EVALset("result, $FLAG && $result) 
Posted on Leave a comment

How to use OCR

In case it’s not possible to select or copy a text, use button in mode. Optical Character Recognition will extract all characters that are selected and copy them into a Clipboard content.

Make sure the Editor is in mode.

  1. Select a stable anchor area.
  2. Draw a swipe over coded or changing content. Editor automatically switches to mode.
  3. Click on to change swipe action into OCR action. The recognized area, marked in green rectangular, is copied to Clipboard content. 
  4. Click Play it to confirm and record the action.
Posted on

PHP: Make test fail

In order to make a test fail due to changes in data, click Editor->Control->EVAL to insert a PHP code evaluation.

See How to evaluate a PHP commands to manipulate variables and clipboard (Experimental feature) for details on EVAL action.

EVAL error("Text 'Step 1' not found.")

Makes the test fail with “Text ‘Step 1’ not found.” as error message:

Befor playing EVAL step.
After playing EVAL error(“Text ‘Step 1’ not found.”)

Example 1: Clipboard value

If you would like to assert that the clipboard contains value “Testing” use

EVAL $CLIPBOARD=="Testing"||error("Wrong value")

Example 2: Maximum loop passes

If you want to make sure that a loop does not run endlessly, you can limit the number of loop passes and make test fail after reaching the maximum number.

TAG#start

…some actions…

EVAL set("counter", get("counter") + 1) < 10 || error("Too many loops")
JUMP#start
Posted on Leave a comment

PHP: Working with Dates

If you need to calculate days, you can perform that using the EVAL action.

See How to evaluate a PHP commands to manipulate variables and clipboard (Experimental feature) for details on EVAL action.

PHP syntax

Reference: https://php-legacy-docs.zend.com/manual/php5/en/function.date

date(format, date);

Code samples:

date('d.m.Y',strtotime("- 10 Days"))
date('d.m.Y',strtotime("yesterday"))
date('d.m.Y',strtotime("tomorrow"))
date('d.m.Y',strtotime("+ 3 weeks"))
date('d.m.Y',strtotime("- 2 Months"))
date('d.m.Y',strtotime("now"))
date('d.m.Y',strtotime("next Saturday"))
date('d.m.Y',strtotime("last Year"))

Example

1) Set a value to variable “days_before” in Editor->Data :
“days_before” = 10

2) Use EVAL in a test step with this constant:

EVAL "".date('d.m.Y', strtotime("-".${"days_before"}." Days") )

Running this EVAL action on today’s date 23.04.2022 results in a clipboard value 13.04.2022

Posted on

PHP: How to manipulate with data (Experimental feature)

In Editor-> Control->EVAL create an EVAL action. This action can compute PHP functions using data from Control->Data and from CLIPBOARD.

EVAL argument is a PHP 5 expression. See https://php-legacy-docs.zend.com/manual/php5/en/index on how to write php
The result of the expression is returned to the CLIPBOARD

Working with Data

Data from Data Tab in Editor can be read from the test to the clipboard.

E.g. setting

FirstName: Barbara
LastName: Mustermann
Age: 26

Read Data

EVAL $FirstName

Reads the value of the FirstName (“Barbara”) into the CLIPBOARD. Note that there is a “$” in front of the variable name using the EVAL command.

Manipulate Data

EVAL $FirstName." ".$LastName

Concatenates $FirstName, ” “, $LastName using the “.” as usual in PHP and returns the result to the CLIPBOARD.

Compute with Data

EVAL $Age + 10

Adds 10 to the variable Age. In the example with Age = 26, this command returns 36 to the CLIPBOARD.

PHP Examples

Measure time between steps

EVAL microtime(true)
:
EVAL microtime(true) -  $CLIPBOARD

Returns the time passes in seconds to CLIPBOARD.

Call PHP for TimeStamp

EVAL date_format(new DateTime(), "d.m.Y H:i:s");

Returns a timestamp to CLIPBOARD

Call Java for TimeStamp

EVAL new Java("java.util.Date")->toString();

Returns a timestamp to CLIPBOARD

Manipulate strings

EVAL substr($CLIPBOARD, 0,strlen($CLIPBOARD)-5)

Removes the last 4 characters from CLIPBOARD

Set and Get values from data store

EVAL set("result")

Sets the Clipboard value to a temporary result variable

EVAL set("result", "some value")

Sets a specific value

EVAL get("result")

Gets the current value.

EVAL set("result", get("result") ."\r\n". $CLIPBOARD)

Updates the result by concatenating the current value with a new one.

Posted on Leave a comment

Create random Emails

To create a random Email use button. The values are stored in buffer – clipboard content – and then can be pasted into your test.

Insert random Email into a test.

Make sure you are in mode.

  1. Activate a field where the random e-mail is to be inserted.
  2. Switch to mode.
  3. Click .
  4. Enter the following PHP Timestamp:
EVAL "example+".microtime(true)."@testup.io"
5. Click on to add created e-mail with random number.