Common questions, direct answers
The most common questions about installing, configuring and operating TestingBot Tunnel. If your question is not answered here, see the troubleshooting guide or contact support.
How do I use the tunnel with manual (live) testing?
When starting a manual test session, select which tunnel to use from the session configuration screen. This works across all platforms: desktop VMs, simulators, emulators and physical devices.
Team members can start shared tunnels (with the --shared flag) that everyone on the team can use during manual testing.
How do I handle SSL certificate pinning in my mobile app?
By default, TestingBot Tunnel performs SSL interception (also called SSL bumping) to handle common certificate issues like self-signed or expired certificates. All TestingBot VMs and devices are configured to trust our CA certificate.
If your app uses certificate pinning, download the TestingBot CA certificate and add it to your app's trusted certificates. Alternatively, disable SSL interception by starting the tunnel with the --nobump flag.
How many tunnels can I run simultaneously?
The number of simultaneous tunnels depends on your account plan. The default limit is 2 concurrent tunnels. Upgrade your plan if you need more.
Can I use localhost with the tunnel?
Desktop VMs: Yes, localhost works on all desktop VMs. The following ports are proxied by default: 80, 443, 3000, 3001, 3030, 3400, 8080.
For additional ports, use the localHttpPorts or localHttpsPorts capabilities with an array of port numbers.
Mobile devices: Simulators, emulators and physical devices cannot resolve localhost. Create a custom hostname in your hosts file on the machine running the tunnel:
# Add to /etc/hosts on your tunnel machine
127.0.0.1 mywebsite.local
Then use http://mywebsite.local in your tests. The tunnel will route requests to your local server.
Can I use WebSockets or SSE with the tunnel?
Yes, TestingBot Tunnel v4 and later supports WebSockets (ws:// and wss://) and Server-Sent Events (SSE).
WebSocket and SSE proxying requires the --nobump and --nocache flags. These are prerequisites, not optional fix-it switches: the local caching proxy and the SSL-bumping interceptor cannot forward streaming protocols.
java -jar testingbot-tunnel.jar --nocache --nobump
WebSocket connections cannot use localhost directly. Create a custom hostname in your /etc/hosts file:
127.0.0.1 testingbot.test
Then connect using ws://testingbot.test:3000.
How can I improve tunnel performance?
Use the --fast-fail-regexps (or -F) option to bypass the tunnel for domains that do not affect your tests, such as analytics, ads or third-party trackers:
java -jar testingbot-tunnel.jar -F ".*google-analytics\.com.*,.*facebook\.com.*"
This reduces the number of requests proxied through the tunnel, improving overall test speed. For high-traffic test runs, consider running multiple tunnels in parallel.
Can I use the same tunnel for both virtual and real devices?
Yes, a single tunnel instance works with desktop VMs, simulators, emulators and physical devices. There is no need to start separate tunnels for different device types.
Does TestingBot Tunnel work behind a corporate firewall or VPN?
Yes. The tunnel only needs outbound access to *.testingbot.com on port 443 (HTTPS) and port 22 (SSH). It does not require any inbound ports.
For corporate networks that force all traffic through an HTTP proxy, route tunnel traffic through the proxy with --proxy and --proxy-userpwd:
java -jar testingbot-tunnel.jar --proxy corp-proxy.example.com:8080 --proxy-userpwd user:password
See the upstream proxy guide for PAC and SOCKS variations.
What ports does TestingBot Tunnel use?
| Direction | Port | Purpose |
|---|---|---|
| Outbound | 443 | HTTPS to *.testingbot.com
|
| Outbound | 22 | SSH tunnel |
| Local bind | 4445 | Selenium hub (override --se-port) |
| Local bind | 8087 | Local proxy (override --localproxy) |
| Local bind | 8003 | Metrics endpoint (override --metrics-port) |
No inbound ports are required.
Is TestingBot Tunnel free?
Yes. TestingBot Tunnel is free for all TestingBot accounts including the free trial. It is open source under an MIT license, source on GitHub.
How do I update TestingBot Tunnel to the latest version?
Download the latest JAR from the tunnel home page, unzip and replace your existing testingbot-tunnel.jar. If you use Docker, run docker pull testingbot/tunnel. If you use Maven, bump the com.testingbot:TestingBotTunnel version in your pom.xml. See the changelog for the current release notes.
Why does my tunnel disconnect or time out?
The most common causes are: an idle network connection being killed by a corporate firewall or NAT timeout, JVM out of memory on the tunnel host, or a transient outbound connectivity issue.
Run the tunnel with --doctor to validate ports and credentials, watch the metrics endpoint on port 8003 for connection counters, and check the log file specified by --logfile for stack traces. The troubleshooting guide walks through the most frequent root causes.