Season of KDE 2023 With KDE Eco: Setting Up Selenium For Energy Consumption Measurements
I am very thankful to the KDE community for inviting me to be a part of this amazing Open Source project through their annual program Season of KDE.
My name is Nitin Tejuja. I am a Software Engineer working on a platform engineering team where I develop, research, and optimize various technology projects. I have contributed to projects like Slack, GitHub Actions, and Strapi CMS, and I have created my own
nodejs library which helps in migrating content between different Strapi CMS environments. This is my first time contributing to a project with such a large community. I'm very passinoate about solving problems and then optimizing the solutions. I enjoy learning new technologies and building excellent Open Source projects. I also believe that contributing to the KDE community is the best way to learn more about KDE projects and how we can produce environmentally-friendly Free & Open Source software.
What I Am Working On
In this project, we are setting up
Selenium using Selenium AT-SPI and replicating an existing unit test written with
KdeEcoTest to test the educational software suite GCompris, which provides a number of activities for children aged 2 to 10.
Selenium are both useful tools for emulating user behavior in Standard Usage Scenarios, represented in "Emulate Actions with Tool" in the workflow below.
By measuring and then comparing the energy needed by
Selenium themselves, we can decide whether and how we should use
Selenium for measuring the energy consumption of other software. Selenium AT-SPI for QT is still in an early stage but it is relevant to KDE as a unit testing tool, and given its flexibility it could become a great tool for energy consumption measurements.
I am writing a guide for installing
selenium-webdriver-at-spi and the GCompris application scripts using selenium-webdriver-at-spi. The aim is to provide assistance to developers to create their own KDE application tests, either as a system testing tool or a energy measurement tool.
Motivation Behind Working On The KDE Eco Project
I have a strong interest in ecology and want to develop techniques that will reduce the impact of new technology on the planet. At the moment, KDE Eco is using
KdeEcoTest for the energy consumption measurements of GCompris, among other applications. In this project, we will write unit tests of GCompris using
Selenium. By using
Selenium we can access application elements using names and many other different features, which provides more flexibility than what
KdeEcoTest is currently able to do. Moreover,
Selenium works with Wayland, which is not the case with
What I Have Done & Will Be Doing In The Coming Weeks
For the first two weeks of the project, I was working on understanding
KdeEcoTest and exploring
selenium-webdriver-at before writing the unit test scripts.
In the first week I set up GCompris and explored the application's activities. I then turned to the
KdeTestEcoCreator script to understood how the code present in FOSS Energy Efficiency Project (FEEP) repository is working.
In the second week I started writing unit test scripts using
selenium-webdriver-at-spi, for which I have written an installation guide. It is already possible to use this guide to install a Selenium accessibility server to test your own KDE application!
With everything all set up, I am now learning how to write unit scripts and have written my first Selenium
Python script which simply opens GCompris.
In the coming weeks, I will write unit scripts in
Python to perform full testing for several activities in GCompris, which will replicate the behavior already scripted using
KdeEcoTest. To enable event handling on activity elements, I need to dive into GCompris's
QML code and add
QML accessibility code in order to locate and use the GCompris elements.
Once this is completed, both
KdeEcoTest can be used to measure the energy consumption of GCompris and it will be possible to compare the two emulation tools directly.
Community Bonding (SoK’23)
I am thankful to my mentors Emmanuel Charruau and Harald Sitter for taking time to help me by providing resources and solving my doubts.
I am also thankful to you for taking the time to read this update. If you would like to access the scripts, they can be found here.
Contact me on Matrix at @nitin.tejuja12:matrix.org.