SoK/2023/StatusReport/Mohamed Ibrahim

From KDE Community Wiki

Improve "KDE Eco Test" emulation tool

Project type: Coding

Introduction and Abstract: Sustainability is one of KDE's goals for the next two years. One aspect of this goal is to measure the energy consumption of KDE software. To do this, it is necessary to use an emulation tool to create usage scenario scripts. "KDE Eco Test" is one such tool, but it needs some fixes. A list of to-dos can be found at the repository's README.

Mentor: Karanjot Singh @drquark:kde.org, Emmanuel Charruau @allon:kde.org, and Joseph P. De Veaugh-Geiss @joseph:kde.org on Matrix

Blog Posts:

Weekly Progress

WEEKS 1 - 2: I familiarized myself with using the KDE Eco Tester tool by testing some applications and creating small scripts, reading and understanding the code base in more detail before starting to refactor it. I also started working on maintainability issues by adding the support of a modern dependency manager for python (Pipenv). I also added a code formatter to make the code consistent by using (Black).

WEEKS 3 - 4: I worked on redesign the current code base to make it more organized and maintainable. By fixing all the the warnings to follow PEP8, adding more encapsulation for the core parts (parser, runner, cli, creator, actions) by using classes, making the code fully typed with python type hints which makes developing experience better and reduces error, created a new rich CLI interface for the tool using typer and finally created a support for running testing multiple times with “repeatFunction” action.

WEEKS 5 - 6: I started exploring and learning the python-prompt-toolkit and InquirerPy packages to add support for an interactive script creator. The InquirerPy package was limited and should be used as a standalone cli app instead of being added to a bigger full-screen app. I also worked in formatting the log files that are produced while running test scripts to follow the OSCAR format .

WEEKS 7 - 8: I worked on supporting actions on modal windows that happen during recording scripts, for example, the file explorer that appears when saving a file. I also made the logs in a format that is compatible with the OSCAR tool. I also added formatted run-time logs using Loguru.


WEEKS 9 - 10: These past few weeks, I have worked on debugging the problem of sharing scripts between systems to see what makes scripts run on one machine but not on another. I took Gcompris as an example and worked with Rudrakshkarpe to test a script recorded on my machine. We found that screen resolution, font size, configuration files, side effects from previous tests, and different versions of the software can affect the sharing scripts. I also worked on fixing some bugs in the OSCAR format and the previous modal window solution.


WEEKS 11 - 12: During these weeks, I worked on simulating mouse dragging during running tests by enabling users to add a start and end point while building the scenario script, then a linear drag is performed while running. I also added support for listening for keyboard activity during recording and playing the recorded key press during a run using pynput.

Merge Requests



CONTACT ME: I am available on Matrix: @hemasonus01:matrix.org