Hardware testing automation: a minimum viable product

January 21, 20264 min. read

A photo collage of different propotypes of the Hardware CI, including PCBs
and devices-under-test

Since our last update in May we have continued working on hardware-testing automation. We are happy to announce that we have reached an important milestone: we are now testing the OnePlus 6T as part of our regular development workflow! If you are not sure why this is important, or want to read more about the design decisions and the different parts that compromise the system, you can find all the information in the previous blog post.

Work done and current status

Since May, the system that we designed has been put in place. To make it possible, the following work has been executed:

With all these things in place, it is now possible to run tests directly on hardware using our regular developer workflows. For example, whenever changes to the kernel used by the OnePlus 6T are done, CI will build the new kernel, and boot it on the device, to make sure that the device keeps booting!

As the description shows, moving from the previous architectural idea to something real has taken a considerable amount of effort and money. In addition to the countless volunteer hours that everybody has put into this project, the money from OpenCollective has allowed us to pay for hardware and development that has considerably sped up the process of getting here. Overall, the project costs can be summarize as:

In total, the cost for the paid work done on this project this year has been around 13 000€, which is close to what we expected in early May.

Looking ahead

With the conclusion of this initial part of the project, we have all the logic in place to do integration testing on any device, and run arbitrary tests for the low-layers of the operating system. Overall, we have a "Minimum Viable Product": something that shows that the approach is correct, and can already deliver some small results.

Moving forward, the goal is to scale-up this project. Our goal is to add more devices and to write tests to cover many other use-cases. Eventually, having devices in a hardware CI should be a requirement for the main category, but should also help make sure that devices stay in a good shape. During FOSDEM and the now-traditional subsequent hackathon we expect to test the whole setup on more devices, and to introduce more people in the team to CI-tron. We also expect to start writing more comprehensive documentation on how to add devices to our farm.

Overall, we expect that as this setup matures we can start to extract more benefits from automated testing. We hope that this can help us reduce the workload on maintainers, while at the same time reducing the number of bugs that make it into releases, overall improving the general reliability of the whole project.

We are extremely happy to have finally reached this stage. It has taken our community many years, multiple attempts, and quite some money to get to this stage. We are happy and thankful for everybody that helped along the way.

If like us, you would like to see postmarketOS become more reliable and appreciate the work we continue doing towards this, consider donating via our OpenCollective!

This blog post was written by Pablo. Header image by Federico, Martin R., Pablo.