Good First Issues
Are you thinking about contributing to Touca but don't really know where to start? This page lists a few good first projects that are relatively small in scope, have clear requirements, and don't need a deep understanding of how Touca works. We hope that you find at least one of them interesting enough to start contributing to Touca. If that's not the case, come say hi on Discord and ask us for a few more suggestions.
1. Allow user to manually toggle dark mode
Touca Web App, written in Angular, supports two light and dark modes. Currently, the web app follows the system preference to determine whether to use the dark mode. We would like to let users manually override this behavior and set preference through their profile page. The Web App should query this user preference and adjust the display mode accordingly.
2. Split the SDK into separate packages
url node modules. This
prohibits using the SDK in environments where node is not available. In
addition, the SDK comes includes a test framework that is responsible for taking
command line arguments and reporting the outcome of the test through the
standard output. We rely on dependencies such as
chalk to perform
We'd like to split
@touca/node into packages
and move the test framework and other extra SDK functionalities into the
@touca/cli package, making
@touca/core suitable for a variety of
4. Create package recipe for ConanCenter
Most engineering teams using Touca for serious C++ projects simply clone a stable version of our C++ SDK and repackage it internally. This is, in part, because the C++ ecosystem does not have a universally adopted package manager, like npm or PyPI. Teams that have the luxury to be ahead of the curve use Conan or vcpkg. These are battle-tested package managers suitable for large complex codebases but also very relevant and convenient for smaller projects.
We like to make Touca available on Conan Center
public package registry to make it easier for Conan users to try Touca. To do
so, we'd need to add a recipe for Touca to the
The instructions to do so are well documented
But we may also have to make changes to our own
conanfile.py (which is
particular, we may need to improve how our CMake logic installs the libraries
and links to its third-party dependencies.
5. Improve CMake logic for packaging
We are not using the standard CMake logic for packaging, exporting, installing, and finding the C++ library. This makes it difficult to package the library for publication to conan-center, vcpkg and other dependency management repositories. The goal of this ticket is to improve this CMake logic.
- We should be able to export all CMake targets and install them in a
- We should write a CMake config file that allows us to find the library using
- We should be able to use CPack to package the C++ SDK.
6. Better way to run example
Our Java Examples in
sdk/java directories are defined as
standalone applications. Unlike JUnit tests that are in often placed in the
src/testdirectory of a given library/package, Touca tests live outside the
library in a separate
examples directory. This is unintuitive. But we are no
Java or Gradle experts and simply didn't know any better. If you have ideas on
how to fix this, please have at it.
Because of this directory layout, we reference these Java examples in
settings.gradle.kts and have separate
build.gradle.kts files for each
example. Each build file has a
JavaExec task like below:
main = "io.touca.examples.minimal.PrimeTest"
classpath = sourceSets["main"].runtimeClasspath
This way, we can run the example application using the following command:
gradle runExampleMinimal --args='--api-key <TOUCA_API_KEY> --api-url <TOUCA_API_URL> --revision 1.0 --testcase 13'
Note that we are using
gradle here instead of
gradlew so we can run the task
and pass the appropriate command line arguments. Very ugly. Yuck! There must be
a better way. We don't know it yet, but maybe you do. The first task for this
issue is to figure out how to improve this setup. The second task is to actually
implement it and convert the existing examples to the new pattern accordingly.
We should also update all getting started documents and markdown files in
examples directory as part of this work.
The following tasks were once listed on this page as Good First Issues and are now marked as done thanks to contributions from members of the Touca community.