This can be useful if the application is not in an official repository
This feature allows compiling the source code and using it to run the
The command (e.g gcc...) must be stored in the unit as well. $SRC and
$DEST can be used to specify the source and destination files in the
One of the biggest issue in Exactness is related to the system
configuration differences. Among them, the fonts can for example
impact on the height of the widgets.
The solution to not be dependent on the fonts consist in using embedded
fonts and to force their usage when playing the applications.
The -f option has been added to the player and the recorder so the user
can provide the path to a fonts directory. This option must be set in
order to force the fonts replacement. Since tests shots can use different
fonts, the exu file stores the version of fonts that have been used.
This is why it is needed to have in the provided directory different
directories, each pointing to a different version of the fonts. For
example, some old tests can use fonts of 2017 (e.g directory 20170101)
while new tests will use new fonts (20180601). Check the
exactness-elm-data repository (fonts branch) for a better understanding.
During recording, the -f option will apply the indicated fonts on the
launched application and will record the mouse events accordingly. The
fonts datestamp is stored in the exu output.
During playing, the fonts will be loaded by reading the exu fonts path,
and then the application is launched. If no information is provided in
the exu but -f is used, the tool will load the most recent fonts (by
comparing the datestamp directories).
The exu doesn't contain the old scenario entries (Variant_st) but the new
The recorder doesn't create old rec file but only exu.
The player/inspector support rec files by converting them to the new
The structures have been tried to be simpler.
This feature is aimed to provide a new way to debug applications during
When a difference happens between two shots of an application, the
investigation can be tough as the cause may be hidden into a tiny
change, such as an update of the theme.
This feature tries to respond to this problem by storing objects of
the application every time a shot is taken. Then during shots comparison,
objects information are compared and differences are displayed on the
The feature can be used with the -S option.
For the moment, only hierarchy, order and geometry are checked.
During recording, hooking on Evas functions can't work anymore as they
are no more invoked internally.
The new way to catch the events is to listen to them on the canvas.
Additionally, regular mouse events are now multi events whose tool (device id)
is 0, as well as key events with and without keycode are now always
considered with a keycode that can be 0.
Previous events catching has been kept to support legacy applications.
An issue that currently happens in Exactness is that we don't have any
way to debug the recordings.
Only debug information can help us to figure out what data is stored
inside the rec files.
Three commands are available:
- Clean: remove bad timestamp events and duplicate events
- Add a delay: because of the first event is directly treated if no
first timestamp is present, we need a way to fix recordings by adding
them a delay before the first event.
- List information: display the list of events, as vieet doesn't work at
all. Really helpful to figure out bugs.
An issue due to timing happens when applying scenarios on applications.
The first event is directly treated, even if the recorder waited a few
seconds without any action.
The reason is that Exactness saves in the .rec file a timestamp that is
the uptime value, i.e an absolute value. A better choice would have been
to save the number of ms relative to the launch of the application.
Because of this, Exactness doesnt have any way to know when the first
event has to be treated and consumes it whenever possible, i.e at the
This patch adds to the recording file a timestamp reference, corresponding
to the uptime at ecore_init. When applying the scenario, this timestamp
is checked and gives an idea of a delay to wait before consuming the first
A lot of events caught by Exactness preload are repeated with the same
information, such as mouse move on the same coordinates and with the
same timestamp. This adds a lot of noise into the recording file.
This patch checks if the current caught event is the same as the last
stored and skips it if they are the same.
During ecore_shutdown, when the refcount reached 0, the scenario record
has to be done. The problem is that the ecore termination never happens
because of ecore modules loaded during init that references ecore
The solution, until this is fixed, is to trigger the scenario recording
from a key press.
Currently genlist_group is also running in play step even if it is
commented in tests.txt. Fixed this issue
Signed-off-by: kabeer khan <firstname.lastname@example.org>
Reviewers: cedric, stefan_schmidt, tasn
Differential Revision: https://phab.enlightenment.org/D2604