Description
Use the Parallel.RunTests
method to run the specified list of tests in parallel.
Requirements
-
You can orchestrate parallel runs only for the following test types:
TestComplete does not support running other types of tests in parallel.
-
Tests that the method runs must include commands that connect to the target testing environment. For example:
-
In cross-platform web tests, you can use the
Browsers.RemoteItem.Run
method. See Creating and Running Cross-Platform Web Tests. -
In mobile tests, you can use the
Mobile.ConnectDevice
method. See Connecting to Mobile Devices and Opening Testing Sessions.
-
-
Depending on the test type, the appropriate requirements must be met:
Declaration
Parallel.RunTests(Tests, TestTimeOut, LicenseCount)
Tests | [in] | Required | Array of strings | |
TestTimeOut | [in] | Optional | Integer | Default value: 0 |
LicenseCount | [in] | Optional | Integer | Default value: 0 |
Result | None |
Applies To
The method is applied to the following object:
Parameters
The method has the following parameters:
Tests
The list of tests you want to run in parallel. It can be script routines, keyword tests, and BDD scenarios. The tests must belong to the same project from which you run the method.
You can specify tests either by their full name or by tags.
The full name includes the name of the collection to which the test belongs, and the test name separated by the pipe character. For script tests, the full name also includes the name of the unit.
To run tests that match a tag, specify the tag name in the @tag_name
format.
TestTimeOut
The number of minutes that TestComplete waits for the test run to finish. If the test run time exceeds the specified timeout, TestComplete will stop the test run and report an error to the test log.
If the value is 0 (default value), the wait time is not limited.
LicenseCount
The maximum number of tests that you want to execute simultaneously during the test run.
Result Value
None.
Example
The sample code below runs MyTest1
and MyTest2
cross-platform web tests in parallel. Each test connects to a device cloud, launches a web browser there, and simulates user actions in that web browser.
JavaScript, JScript
function Main()
{
// Set a list of tests to run in parallel
var tests = ['Script|Unit1|MyTest1', 'Script|Unit1|MyTest2'];
// Run tests in parallel
Parallel.RunTests(tests);
}
function MyTest1()
{
var url = "http://services.smartbear.com/samples/TestComplete15/smartstore/";
// Set the URL of the device cloud server
var server = "http://hub.crossbrowsertesting.com:80/wd/hub";
// Set an environment for the test to run
var capabilities = {
"platform": "Mac OSX 10.14",
"browserName": "Safari",
"version": "12",
"screenResolution": "1366x768"
};
// Launch a browser in the environment
Browsers.RemoteItem(server, JSON.stringify(capabilities)).Run(url);
var browser = Sys.Browser();
var page = browser.Page("*services.smartbear.com/samples/TestComplete*/smartstore/");
…
}
function MyTest2()
{
var url = "http://services.smartbear.com/samples/TestComplete15/smartstore/";
// Set the URL of the device cloud server
var server = "http://hub.crossbrowsertesting.com:80/wd/hub";
// Set an environment for the test to run
var capabilities = {
"deviceName": "Pixel 4",
"platformName": "Android",
"platformVersion": "10.0",
"browserName": "Chrome",
"deviceOrientation": "portrait"
};
// Launch a browser in the environment
Browsers.RemoteItem(server, JSON.stringify(capabilities)).Run(url);
var browser = Sys.Browser();
var page = browser.Page("*services.smartbear.com/samples/TestComplete*/smartstore/");
…
}
Python
def Main():
# Set a list of tests to run in parallel
tests = ['Script|Unit1|MyTest1', 'Script|Unit1|MyTest2']
# Run tests in parallel
Parallel.RunTests(tests)
def MyTest1():
url = "http://services.smartbear.com/samples/TestComplete15/smartstore/"
# Set the URL of the device cloud server
server = "http://hub.crossbrowsertesting.com:80/wd/hub"
# Set an environment for the test to run
capabilities = {
"platform": "Mac OSX 10.14",
"browserName": "Safari",
"version": "12",
"screenResolution": "1366x768"}
# Launch a browser in the environment
Browsers.RemoteItem[server, capabilities].Run(url)
browser = Sys.Browser()
page = browser.Page("*services.smartbear.com/samples/TestComplete*/smartstore/")
…
def MyTest2():
url = "http://services.smartbear.com/samples/TestComplete15/smartstore/"
# Set the URL of the device cloud server
server = "http://hub.crossbrowsertesting.com:80/wd/hub"
# Set an environment for the test to run
capabilities = {
"deviceName": "Pixel 4",
"platformName": "Android",
"platformVersion": "10.0",
"browserName": "Chrome",
"deviceOrientation": "portrait"
}
# Launch a browser in the environment
Browsers.RemoteItem(server, capabilities).Run(url)
browser = Sys.Browser()
page = browser.Page("*services.smartbear.com/samples/TestComplete*/smartstore/")
…
VBScript
Sub Main
' Set a list of tests to run in parallel
Dim tests : tests = Array("Script|Unit1|MyTest1", "Script|Unit1|MyTest2")
' Run tests in parallel
Parallel.RunTests(tests)
End Sub
Sub MyTest1()
url = "http://services.smartbear.com/samples/TestComplete15/smartstore/"
' Set the URL of the device cloud server
server = "http://hub.crossbrowsertesting.com:80/wd/hub"
' Set an environment for the test to run
capabilities = "{""platform"":""Mac OSX 10.14"",""browserName"":""Safari"",""version"":""12"",""screenResolution"":""1366x768""}"
' Launch a browser in the environment
Browsers.RemoteItem(server, capabilities).Run(url)
Set browser = Sys.Browser()
Set page = browser.Page("*services.smartbear.com/samples/TestComplete*/smartstore/")
…
End Sub
Sub MyTest2()
url = "http://services.smartbear.com/samples/TestComplete15/smartstore/"
' Set the URL of the device cloud server
server = "http://hub.crossbrowsertesting.com:80/wd/hub"
' Set an environment for the test to run
capabilities = "{""deviceName"":""Pixel 4"",""platformName"":""Android"",""platformVersion"":""10.0"",""browserName"":""Chrome"",""deviceOrientation"":""portrait""}"
' Launch a browser in the environment
Call Browsers.RemoteItem(server, capabilities).Run(url)
Set browser = Sys.Browser()
Set page = browser.Page("*services.smartbear.com/samples/TestComplete*/smartstore/")
…
End Sub
DelphiScript
procedure Main();
var tests : Array[0..1];
begin
// Set a list of tests to run in parallel
tests[0] := 'Script|Unit1|MyTest1';
tests[1] := 'Script|Unit1|MyTest2';
// Run tests in parallel
Parallel.RunTests(tests);
end;
procedure MyTest1();
var url, server, capabilities, browser, page;
begin
url := 'http://services.smartbear.com/samples/TestComplete15/smartstore/';
// Set the URL of the device cloud server
server := 'http://hub.crossbrowsertesting.com:80/wd/hub';
// Set an environment for the test to run
capabilities := '{"platform":"Mac OSX 10.14","browserName":"Safari","version":"12","screenResolution":"1366x768"}';
// Launch a browser in the environment
Browsers.RemoteItem(server, capabilities).Run(url);
browser := Sys.Browser();
page := browser.Page('*services.smartbear.com/samples/TestComplete*/smartstore/');
…
end;
procedure MyTest2();
var url, server, capabilities, browser, page;
begin
url := 'http://services.smartbear.com/samples/TestComplete15/smartstore/';
// Set the URL of the device cloud server
server := 'http://hub.crossbrowsertesting.com:80/wd/hub';
// Set an environment for the test to run
capabilities := '{"deviceName":"Pixel 4","platformName":"Android","platformVersion":"10.0","browserName":"Chrome","deviceOrientation":"portrait"}';
// Launch a browser in the environment
Browsers.RemoteItem(server, capabilities).Run(url);
browser := Sys.Browser();
page := browser.Page('*services.smartbear.com/samples/TestComplete*/smartstore/');
…
end;
C++Script, C#Script
function Main()
{
// Set a list of tests to run in parallel
var tests = ['Script|Unit1|MyTest1', 'Script|Unit1|MyTest2'];
// Run tests in parallel
Parallel["RunTests"](tests);
}
function MyTest1()
{
var url = "http://services.smartbear.com/samples/TestComplete15/smartstore/";
// Set the URL of the device cloud server
var server = "http://hub.crossbrowsertesting.com:80/wd/hub";
// Set an environment for the test to run
var capabilities = {
"platform": "Mac OSX 10.14",
"browserName": "Safari",
"version": "12",
"screenResolution": "1366x768"
};
// Launch a browser in the environment
Browsers.RemoteItem(server, JSON["stringify"](capabilities))["Run"](url);
var browser = Sys["Browser"]();
var page = browser["Page"]("*services.smartbear.com/samples/TestComplete*/smartstore/");
…
}
function MyTest2()
{
var url = "http://services.smartbear.com/samples/TestComplete15/smartstore/";
// Set the URL of the device cloud server
var server = "http://hub.crossbrowsertesting.com:80/wd/hub";
// Set an environment for the test to run
var capabilities = {
"deviceName": "Pixel 4",
"platformName": "Android",
"platformVersion": "10.0",
"browserName": "Chrome",
"deviceOrientation": "portrait"
};
// Launch a browser in the environment
Browsers["RemoteItem"](server, JSON["stringify"](capabilities))["Run"](url);
var browser = Sys["Browser"]();
var page = browser["Page"]("*services.smartbear.com/samples/TestComplete*/smartstore/");
…
}
The sample code below runs MyTest1
and MyTest2
mobile tests in parallel. Each test connects to a mobile device, opens a testing session there, and simulates user actions:
JavaScript, JScript
function Main()
{
var tests = ['Script|Unit1|MyTest1', 'Script|Unit1|MyTest2'];
Parallel.RunTests(tests);
}
function MyTest1()
{
var capabilities = {
"automationName": "UiAutomator2",
"bitbar_app": "123",
"bitbar_device": "Google Pixel 3a Android 10",
"bitbar_findDevice": "false",
"bitbar_target": "android",
"deviceName": "Android Phone",
"newCommandTimeout": "600",
"platformName": "ANDROID"
};
var server = "https://appium.bitbar.com/wd/hub/";
Mobile.ConnectDevice(server, capabilities);
var device = Mobile.Device();
device.FindElementByXPath("//*[@text=\"Samuel Clemens\"]").Touch();
device.FindElementById("smartbear.example.orders:id/editButton").Touch();
// …
}
function MyTest2()
{
var capabilities = {
"automationName": "UiAutomator2",
"bitbar_app": "123",
"bitbar_device": "LG Google Nexus 5 6.0.1",
"bitbar_findDevice": "false",
"bitbar_target": "android",
"deviceName": "Android Phone",
"newCommandTimeout": "600",
"platformName": "ANDROID"
};
var server = "https://appium.bitbar.com/wd/hub/";
Mobile.ConnectDevice(server, capabilities);
var device = Mobile.Device();
device.FindElementByXPath("//*[@text=\"Clare Jefferson\"]").Touch();
device.FindElementById("smartbear.example.orders:id/editButton").Touch();
// …
}
Python
def Main():
tests = ['Script|Unit1|MyTest1', 'Script|Unit1|MyTest2']
Parallel.RunTests(tests)
def MyTest1():
capabilities = {
"automationName": "UiAutomator2",
"bitbar_app": "123",
"bitbar_device": "Google Pixel 3a Android 10",
"bitbar_findDevice": "false",
"bitbar_target": "android",
"deviceName": "Android Phone",
"newCommandTimeout": "600",
"platformName": "ANDROID"
}
server = "https://appium.bitbar.com/wd/hub/"
Mobile.ConnectDevice(server, capabilities)
device = Mobile.Device()
device.FindElementByXPath("//*[@text=\"Samuel Clemens\"]").Touch()
device.FindElementById("smartbear.example.orders:id/editButton").Touch()
# …
def MyTest2():
capabilities = {
"automationName": "UiAutomator2",
"bitbar_app": "123",
"bitbar_device": "LG Google Nexus 5 6.0.1",
"bitbar_findDevice": "false",
"bitbar_target": "android",
"deviceName": "Android Phone",
"newCommandTimeout": "600",
"platformName": "ANDROID"
}
server = "https://appium.bitbar.com/wd/hub/"
Mobile.ConnectDevice(server, capabilities)
device = Mobile.Device()
device.FindElementByXPath("//*[@text=\"Clare Jefferson\"]").Touch()
device.FindElementById("smartbear.example.orders:id/editButton").Touch()
# …
VBScript
Sub Main
DIm tests : tests = Array("Script|Unit1|MyTest1", "Script|Unit1|MyTest2")
Call Parallel.RunTests(tests)
End Sub
Sub MyTest1()
capabilities = "{""automationName"": ""UiAutomator2"",""bitbar_app"": ""123"",""bitbar_device"": ""Google Pixel 3a Android 10"",""bitbar_findDevice"": ""false"",""bitbar_target"": ""android"",""deviceName"": ""Android Phone"",""newCommandTimeout"": ""600"",""platformName"": ""ANDROID""}"
server = "https://appium.bitbar.com/wd/hub/"
Call Mobile.ConnectDevice(server, capabilities)
Set device = Mobile.Device()
device.FindElementByXPath("//*[@text=\"Samuel Clemens\"]").Touch()
device.FindElementById("smartbear.example.orders:id/editButton").Touch()
' …
End Sub
Sub MyTest2()
capabilities = "{""automationName"": ""UiAutomator2"",""bitbar_app"": ""123"",""bitbar_device"": ""LG Google Nexus 5 6.0.1"",""bitbar_findDevice"": ""false"",""bitbar_target"": ""android"",""deviceName"": ""Android Phone"",""newCommandTimeout"": ""600"",""platformName"": ""ANDROID""}"
server = "https://appium.bitbar.com/wd/hub/"
Call Mobile.ConnectDevice(server, capabilities)
Set device = Mobile.Device()
device.FindElementByXPath("//*[@text=\"Clare Jefferson\"]").Touch()
device.FindElementById("smartbear.example.orders:id/editButton").Touch()
' …
End Sub
DelphiScript
procedure MyTest1();
var capabilities, server, device;
begin
capabilities := '{"automationName": "UiAutomator2", "bitbar_app": "123", "bitbar_device": "Google Pixel 3a Android 10", "bitbar_findDevice": "false", "bitbar_target": "android", "deviceName": "Android Phone", "newCommandTimeout": "600", "platformName": "ANDROID"}';
server := 'https://appium.bitbar.com/wd/hub/';
Mobile.ConnectDevice(server, capabilities);
device := Mobile.Device();
device.FindElementByXPath('//*[@text=\"Samuel Clemens\"]').Touch();
device.FindElementById('smartbear.example.orders:id/editButton').Touch();
// …
end;
procedure MyTest2();
var capabilities, server, device;
begin
capabilities := '{"automationName": "UiAutomator2", "bitbar_app": "123", "bitbar_device": "LG Google Nexus 5 6.0.1", "bitbar_findDevice": "false", "bitbar_target": "android", "deviceName": "Android Phone", "newCommandTimeout": "600", "platformName": "ANDROID"}';
server := 'https://appium.bitbar.com/wd/hub/';
Mobile.ConnectDevice(server, capabilities);
device := Mobile.Device();
device.FindElementByXPath('//*[@text=\"Clare Jefferson\"]').Touch();
device.FindElementById('smartbear.example.orders:id/editButton').Touch();
// …
end;
procedure Main();
var tests : Array[0..1];
begin
tests[0] := 'Script|Unit1|MyTest1';
tests[1] := 'Script|Unit1|MyTest2';
Parallel.RunTests(tests);
end;
C++Script, C#Script
function Main()
{
var tests = ['Script|Unit1|MyTest1', 'Script|Unit1|MyTest2'];
Parallel["RunTests"](tests);
}
function MyTest1()
{
var capabilities = {
"automationName": "UiAutomator2",
"bitbar_app": "123",
"bitbar_device": "Google Pixel 3a Android 10",
"bitbar_findDevice": "false",
"bitbar_target": "android",
"deviceName": "Android Phone",
"newCommandTimeout": "600",
"platformName": "ANDROID"
};
var server = "https://appium.bitbar.com/wd/hub/";
Mobile["ConnectDevice"](server, JSON["stringify"](capabilities));
var device = Mobile["Device"]();
device["FindElementByXPath"]("//*[@text=\"Samuel Clemens\"]")["Touch"]();
device["FindElementById"]("smartbear.example.orders:id/editButton")["Touch"]();
// …
}
function MyTest2()
{
var capabilities = {
"automationName": "UiAutomator2",
"bitbar_app": "123",
"bitbar_device": "LG Google Nexus 5 6.0.1",
"bitbar_findDevice": "false",
"bitbar_target": "android",
"deviceName": "Android Phone",
"newCommandTimeout": "600",
"platformName": "ANDROID"
};
var server = "https://appium.bitbar.com/wd/hub/";
Mobile["ConnectDevice"](server, JSON["stringify"](capabilities));
var device = Mobile["Device"]();
device["FindElementByXPath"]("//*[@text=\"Clare Jefferson\"]")["Touch"]();
device["FindElementById"]("smartbear.example.orders:id/editButton")["Touch"]();
// …
}
See Also
Parallel Object
RunWebTests Method
Running Cross-Platform Web Tests in Parallel