Skip to main content

FAQ

Frequently Asked Questions (FAQ)

Q1. What’s the full list of supported capabilities on the QuantumGrid gateway? What are all the parameters including any defaults if not sent?

Ans: QuantumGrid supports:

  • All standard Appium capabilities
  • All standard Selenium (W3C) capabilities
  • Custom tg: (QuantumGrid-specific) capabilities

Custom QuantumGrid Capabilities

1. tg:userToken (Required)

User authentication token.

2. tg:queueTimeout (Optional)

Defines how long a session waits in the queue.

Default: 120 seconds

Example:

capabilities.setCapability("tg:queueTimeout", 180);

3. tg:queue (Optional)

Controls queue behavior.

Default: true

If set to false:

  • Session will NOT wait in queue
  • It will only start if a slot is immediately available
  • Otherwise, it will fail

Example:

capabilities.setCapability("tg:queue", false);

4. tg:tags (Optional)

Routes the session to specific tags.

When multiple tags are provided, an OR ( || ) condition is applied.

Example:

String[] tags = {"12", "iOS", "iPhone 12"};
capabilities.setCapability("tg:tags", tags);

QuantumGrid acts as a gateway, so it respects standard capability behavior.

Q2. For mobile, what Appium capabilities are needed alongside platformName: android/ios?

Required

  • platformName → “android” or “ios”

OR

  • browserName → “chrome”
  • tg:userToken → Required

Optional

  • appium:udid (for targeting a specific device)

Q3. For Real device(Android/Ios), is there a way to pass the app information so that the platform automatically installs it?

For re-signing the IPA

API: https://{domain}.testgrid.io/api/resign-build

Parameters:

  • user_token : UserToken
  • build_file: IPA File

Curl Example:

curl --location 'https://tmobilestage.testgrid.io/api/resign-build' \
--form 'user_token="<USER_TOKEN>"' \
--form 'build_file=@"/Users/yogesh/Downloads/20260505141238_3nVcl.ipa"'

API Response:

{ 
"success": true, 
"message": "Build uploaded and resigned successfully", 
"path": "https://domain.testgrid.io/app_build/resigned/6a034f39300da/Movie.ipa" 
}

For the Android case, use below api to get Build info and use the build path to install the Application
https://testgrid.io/docs/tg-api-documentation-help/#doc-app-build-upload
https://testgrid.io/docs/tg-api-documentation-help/#doc-get-build-info

  • Install Using APK/IPA Path
    • appium:app = “application_url”
      or
    • appium:app = “https://domain.testgrid.io/app_build/resigned/6a034f39300da/Movie.ipa”
  • Launch Using Package / Activity (Android)
    • appium:appPackage = “com.example”;
    • appium:appActivity = “com.example.MainActivity”;
  • Launch Using Bundle ID (iOS)
    • appium:bundleId

Q4. Is there a way to target specific OS versions (e.g., Android 14), device models, or browser versions?

Ans: We can pass:
platformVersion : 14

Example:

capabilities.setCapability("appium:platformVersion", "14");

Q5. Does the QuantumGrid gateway support the legacy JSON Wire Protocol or only W3C?

Ans: Currently, both protocols can be supported, but:

It is device-specific. All devices are supporting the W3C protocol right now. We can change to JSONWP if needed for any device. Dynamic selection is under development.

Additional Notes:
For browser sessions, pass browserName instead of platformName.

Routing Sessions to a Specific Device

For routing a session to a specific device:

appium:udid → Mobile device sessions
tg:udid → Browser sessions

Example:

capabilities.setCapability("appium:udid", "RZCW312KWNJ");
capabilities.setCapability("tg:userToken", "abc");

Example: Basic Mobile Session

capabilities.setCapability("appium:platformName", "Android");
capabilities.setCapability("tg:userToken", "abc");

Example: Start Session on a Specific Device

capabilities.setCapability("appium:platformName", "Android");
capabilities.setCapability("appium:udid", "RZCW312KWNJ");
capabilities.setCapability("tg:userToken", "abc");

Example: Start Session on a Specific OS Version

capabilities.setCapability("appium:platformName", "Android");
capabilities.setCapability("appium:platformVersion", "14");
capabilities.setCapability("tg:userToken", "abc");

Example: Start a Browser Session

capabilities.setCapability("tg:userToken", "abc");
capabilities.setCapability("browserName", "chrome");

Q6 .How can I control the tunnel during a mobile session?

The tunnel can be automatically started and stopped using the tg:tunnel and tg:tunnelreset capabilities. No separate API call is required to start the tunnel.

Start the Tunnel

Set tg:tunnel to true to start the tunnel before the session begins:

capabilities.setCapability(“tg:tunnel”, “true”);Stop or Reset the Tunnel

Set tg:tunnelreset to true to stop/reset the tunnel before the session ends:

capabilities.setCapability("tg:tunnelreset", "true");

The default value of tg:tunnelreset is false.

Use Both Capabilities

To start the tunnel before the session and stop/reset it when the session ends:

capabilities.setCapability("tg:tunnel", "true");
capabilities.setCapability("tg:tunnelreset", "true");

Behavior
tg:tunnel=true → Starts the tunnel before the session.
tg:tunnelreset=true → Stops/resets the tunnel before the session ends.
Only tg:tunnel=true → The tunnel remains active after the session ends.
Neither capability provided → The existing tunnel status remains unchanged.

Table of Contents