Testmo can be used with any test automation tool, including Selenium. This article provides an overview of using Selenium with Testmo to submit and report test results to implement Selenium test management.

Build the test suite

Selenium itself is not a test automation framework, but a set of services and libraries that make it easy to automate web browsers. It is most often used to automate browsers to implement automatic testing of web applications and websites. To use Selenium for testing, you would use it with a test automation framework.
You can choose any test automation framework and programming language you are familiar with. Selenium is often used with JavaScript/Node.js, Java, C#, Python, Ruby or PHP, among other languages. You can find the official bindings (client libraries) for Selenium on the website.
Writing a complete test automation suite is outside of the scope of this article, but we have multiple complete articles on writing tests with Selenium and integrating the test suite with various services. So if you are not yet familiar with Selenium and don't have a test suite yet, please review our articles on getting started with your first Selenium tests:
You can also find fully working example projects for the above articles on GitHub. Please review the relevant code repositories here:

Generate XML test result files

To submit and report test results to Testmo, you execute your automated tests and generate a JUnit-style XML report file. This file format has become a standard format to exchange test results between tools and is supported by practically any testing tool. Testmo also directly supports this format so it's very easy to report your test automation results. Here are just some examples for popular testing frameworks and how to use them with Testmo:
In our above articles we are using a simple Node.js (JavaScript) based testing framework called Mocha/Chai. But any other testing framework can be used as well and you just need to configure it to generate report files. Here's an example on running a Selenium test automation suite that uses a web browser to search the web for various search terms (also see our full article for this example):
$ npm run test-junit
> test
> npx mocha test.mjs
✔ should search for "Selenium"
✔ should search for "Appium"
✔ should search for "Mozilla"
✔ should search for "GitHub"
✔ should search for "GitLab"
5 passing (7ms)
The above command runs the test-junit script alias we defined for the project, which instructs Mocha/CHai to run our tests and write all test results to an XML file. You would use the same approach with any other testing framework and platform. We have links to documentation for many test automation frameworks on generating the correct file format.

Submit results to Testmo

We have now successfully executed our test automation suite and generated the report XML file with our test results. To submit the test results to Testmo, you simply use our cross-platform testmo CLI tool. The CLI tool is distributed as an NPM package and is easy to install on any system. Simply install our official @testmo/testmo-cli NPM package:
$ npm install -g @testmo/testmo-cli
$ testmo -h
Usage: testmo [options] [command]
The CLI tool supports various commands and the easiest way to submit a complete test automation run is to use the automation:run:submit command. This command creates a new automation run, submits all results and then marks the run as completed.
Full example
Single line
$ export TESTMO_TOKEN=********
$ testmo automation:run:submit \
--instance https://<your-name> \
--project-id 1 \
--name "Selenium test run" \
--source "frontend" \
--results results/*.xml
If you run this example on a single command line, make sure to remove the backspaces:
$ export TESTMO_TOKEN=********
$ testmo automation:run:submit --instance https://<your-name> --project-id 1 --name "Selenium test run" --source "frontend" --results results/*.xml
On Windows, the command line uses a slightly different syntax to set a variable:
> set TESTMO_TOKEN=********
> testmo automation:run:submit --instance https://<your-name> --project-id 1 --name "Selenium test run" --source "frontend" --results results/*.xml
See command output
Collecting log files ..
Found 1 result file with a total of 855 tests
Created new automation run (ID: 254)
Created new thread (ID: 608)
Sending tests to Testmo ..
Uploading: [|||||||||||||||||||||||||] 100% | ETA: 0s | 855/855 tests
Successfully sent tests and completed run
Marked the run as completed
You need an API key for your Testmo user (or for a separate API user) to authenticate and submit your test results. Learn more about generating API keys.
This is just a basic example of using Testmo with Selenium. The testmo tool also supports various other features, such as launching your test automation tool directly to capture the console output, record exit codes and measure test times. You can also submit additional fields, artifacts and links with your test runs. See the full documentation for more details.

Bonus: CI integration, parallel execution & more

Testmo also supports advanced test automation workflows such as submitting test runs for multiple test suites and reporting parallel test execution. You can also report your test automation runs from your CI pipeline and build systems. See the following guides and examples on further topics:
We have additional guides on how to integrate and submit your automated test results to Testmo from various popular CI/CD services and build tools: