The test runner is an essential bit of tooling that allows:
To get started building a Test Runner, check the Creating a Test Runner from scratch document.
Track tooling is usually (mostly) written in the track's language.
While you're free to use other languages, each additional language will make it harder to maintain or contribute to the track. Therefore, we recommend using the track's language where possible, because it makes maintaining or contributing easier.
The test runner is packaged and run as a Docker container. Test runner Docker images are deployed automatically using a GitHub Actions workflow.
Once a test runner has been built, you could use its Docker image in your track's CI setup to verify the track's exercises. The main benefit of this approach is that it better mimics the production setup; in other words, you can be more confident that things also work in production. A possible downside is that it might slow down the CI workflow. It is up to you, the maintainer, to decide which approach works best for your track.