---
title: Viewing, Sharing and Embedding Selenium Test results
description: View, share and embed Selenium and Appium test recordings on TestingBot.
  Generate public share links, embed iframes in bug reports or wikis, and control
  access to your test artifacts.
source_url:
  html: https://testingbot.com/support/other/sharing
  md: https://testingbot.com/support/other/sharing/index.md
---
### Available Topics:

- [Link to a Test](https://testingbot.com#linktest)
- [Link to a Build](https://testingbot.com#linkbuild)
- [Embed Test Info](https://testingbot.com#embedinfo)
- [Embed Test Video](https://testingbot.com#embedvideo)

# Sharing Tests

Below are various ways to share, embed or link to a test or build on TestingBot.

To share, view or link to a test, it is important to know its `sessionId`.

Selenium and Appium will return a `sessionId` when a client starts a new session.

This sesssionId is a unique identifier and changes per test. It is stored as a member variable of the instantiated Driver object. Most of the time it is named `sessionId` or `session_id`, depending on the client you are using.

## Link to a Test

You can easily share a single test result with someone in a safe way, without the other person needing an account.

To share a test result, you'll need to create the following url:   
 https://testingbot.com/tests/ **sessionId**?auth= **authentication-hash**

The authentication hash is created with md5 in the following format:

[Ruby](https://testingbot.com#)[Python](https://testingbot.com#)[PHP](https://testingbot.com#)[Java](https://testingbot.com#)[NodeJS](https://testingbot.com#)[C#](https://testingbot.com#)

    Digest::MD5.hexdigest("#{client_key}:#{client_secret}:#{session_id}")

    MessageDigest m=MessageDigest.getInstance("MD5");
    String s = "TESTINGBOT_KEY:TESTINGBOT_SECRET:session_id";
    m.update(s.getBytes(),0,s.length());
    System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));

    echo md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:$session_id");

    import hashlib
    print(hashlib.md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:#{session_id}".encode('utf-8')).hexdigest())

    var crypto = require('crypto');
    crypto.createHash('md5').update("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId").digest("hex");

    Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.Encoding.UTF8.GetBytes("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId")));

An example link would then be:   
 https://testingbot.com/tests/9jf392fj3j2f3ojid8?auth=230i439uf3fojf

## Link to a Video

You can easily share a video of a specific test, please see the example below:

To build the URL with the correct authentication hash, the URL should be structured like this:   
 https://testingbot.com/tests/ **sessionId.mp4**?auth= **authentication-hash**

The authentication hash is created with MD5 in the following format:

[Ruby](https://testingbot.com#)[Python](https://testingbot.com#)[PHP](https://testingbot.com#)[Java](https://testingbot.com#)[NodeJS](https://testingbot.com#)[C#](https://testingbot.com#)

    Digest::MD5.hexdigest("#{client_key}:#{client_secret}:#{session_id}")

    MessageDigest m=MessageDigest.getInstance("MD5");
    String s = "TESTINGBOT_KEY:TESTINGBOT_SECRET:session_id";
    m.update(s.getBytes(),0,s.length());
    System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));

    echo md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:$session_id");

    import hashlib
    print(hashlib.md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:#{session_id}".encode('utf-8')).hexdigest())

    var crypto = require('crypto');
    crypto.createHash('md5').update("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId").digest("hex");

    Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.Encoding.UTF8.GetBytes("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId")));

An example link would then be:   
 https://testingbot.com/tests/9jf392fj3j2f3ojid8.mp4?auth=230i439uf3fojf

## Link to a Build

With TestingBot, it is possible to group several tests under one build identifier.   
 In our member area, you can then see all the tests grouped by builds.

To link to a build overview, please see this example:   
`https://testingbot.com/builds/YOUR_TESTINGBOT_KEY?auth=authentication-hash`

To generate the authentication-hash, you must concatenate user key and user secret, then generate the MD5 hash:

[Ruby](https://testingbot.com#)[Python](https://testingbot.com#)[PHP](https://testingbot.com#)[Java](https://testingbot.com#)[NodeJS](https://testingbot.com#)[C#](https://testingbot.com#)

    Digest::MD5.hexdigest("#{client_key}:#{client_secret}")

    MessageDigest m=MessageDigest.getInstance("MD5");
    String s = "TESTINGBOT_KEY:TESTINGBOT_SECRET";
    m.update(s.getBytes(),0,s.length());
    System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));

    echo md5("TESTINGBOT_KEY:TESTINGBOT_SECRET");

    import hashlib
    print(hashlib.md5("TESTINGBOT_KEY:TESTINGBOT_SECRET".encode('utf-8')).hexdigest())

    var crypto = require('crypto');
    crypto.createHash('md5').update("TESTINGBOT_KEY:TESTINGBOT_SECRET").digest("hex");

    Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.Encoding.UTF8.GetBytes("TESTINGBOT_KEY:TESTINGBOT_SECRET")));

To link directly to a build, please see this example:   
`https://testingbot.com/builds/YOUR_TESTINGBOT_KEY/build-identifier?auth=authentication-hash`

To generate the authentication-hash, you must concatenate user key, user secret and build-identifier, then generate the MD5 hash:

[Ruby](https://testingbot.com#)[Python](https://testingbot.com#)[PHP](https://testingbot.com#)[Java](https://testingbot.com#)[NodeJS](https://testingbot.com#)[C#](https://testingbot.com#)

    Digest::MD5.hexdigest("#{client_key}:#{client_secret}:#{build_identifier}")

    MessageDigest m=MessageDigest.getInstance("MD5");
    String s = "TESTINGBOT_KEY:TESTINGBOT_SECRET:build_identifier";
    m.update(s.getBytes(),0,s.length());
    System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));

    echo md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:$build_identifier");

    import hashlib
    print(hashlib.md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:#{build_identifier}".encode('utf-8')).hexdigest())

    var crypto = require('crypto');
    crypto.createHash('md5').update("TESTINGBOT_KEY:TESTINGBOT_SECRET:build_identifier").digest("hex");

    Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.Encoding.UTF8.GetBytes("TESTINGBOT_KEY:TESTINGBOT_SECRET:build_identifier")));

The build-identifier is the custom string you can [send as an option to group several tests.](https://testingbot.com/support/web-automate/selenium/test-options#build)

## Embed Test Info

You can embed a test page in any CI detail page, test report or custom website. Please see the example below.   
 You add a SCRIPT tag in your page which links to the test. Replace sessionId with the correct sessionId of the test.

    <script src="https://testingbot.com/job-embed/sessionId.js?auth=AUTH-TOKEN"></script>

To generate the authentication-token, you must concatenate user key, user secret and sessionId, then generate the MD5 hash:

[Ruby](https://testingbot.com#)[Python](https://testingbot.com#)[PHP](https://testingbot.com#)[Java](https://testingbot.com#)[NodeJS](https://testingbot.com#)[C#](https://testingbot.com#)

    Digest::MD5.hexdigest("#{client_key}:#{client_secret}:#{sessionId}")

    MessageDigest m=MessageDigest.getInstance("MD5");
    String s = "TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId";
    m.update(s.getBytes(),0,s.length());
    System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));

    echo md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:$sessionId");

    import hashlib
    print(hashlib.md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:#{sessionId}".encode('utf-8')).hexdigest())

    var crypto = require('crypto');
    crypto.createHash('md5').update("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId").digest("hex");

    Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.Encoding.UTF8.GetBytes("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId")));

## Embed Video Info

Next to embedding test info pages, you can also embed the video of the test.   
 This might be useful to include in test reports or on CI result pages.

    <script src="https://testingbot.com/video-embed/sessionId.js?auth=AUTH-TOKEN"></script>

To generate the authentication-token, you must concatenate user key, user secret and sessionId, then generate the MD5 hash:

[Ruby](https://testingbot.com#)[Python](https://testingbot.com#)[PHP](https://testingbot.com#)[Java](https://testingbot.com#)[NodeJS](https://testingbot.com#)[C#](https://testingbot.com#)

    Digest::MD5.hexdigest("#{client_key}:#{client_secret}:#{sessionId}")

    MessageDigest m=MessageDigest.getInstance("MD5");
    String s = "TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId";
    m.update(s.getBytes(),0,s.length());
    System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));

    echo md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:$sessionId");

    import hashlib
    print(hashlib.md5("TESTINGBOT_KEY:TESTINGBOT_SECRET:#{sessionId}".encode('utf-8')).hexdigest())

    var crypto = require('crypto');
    crypto.createHash('md5').update("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId").digest("hex");

    Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.Encoding.UTF8.GetBytes("TESTINGBOT_KEY:TESTINGBOT_SECRET:sessionId")));

### Looking for more help?

Have questions or need more information? Reach out via email or Slack.

[Email us](https://testingbot.com/contact/new)[Slack Join our Slack](https://join.slack.com/t/testingb0t/shared_invite/zt-3bcw9xch-jk19~6XPs_xBrsAgAedkCw)
