loadGenerator: apiClientId
Load generator tightly integrates with the
Perforator platform communicating via API requests.
We treat security as a first-class citizen,
so all API requests require proper authentication
and authorization.
You have your own API Client ID,
which uniquely identifies your account in our platform.
Such key stays unchanged the whole time
while you are still active with us.
Please navigate to the API Settings page to get your own API Client ID
and update its value in your config.yml.
Scope:
loadGenerator
Property Name:
apiClientId
Required:
Yes
Default Value:
N/A
Command line arg:
-DloadGenerator.apiClientId=...
Environment variable:
LOADGENERATOR_APICLIENTID=...
---
loadGenerator:
...
apiClientId: YOUR_API_CLIENT_ID
...
loadGenerator: apiClientSecret
Perforator API authentication scheme requires a valid pair
of API Client ID / API Client Secret.
While client id acts as your account identifier,
client secret is like a password for API-level calls.
You can get a new API Client Secret
via navigating to the API Settings page and clicking the "Regenerate" button.
Please don't forget to update your config.yml once you get your secret key.
Note:
You should generate API Secret Key only once,
and then you can reuse it across all subsequent load tests.
You can always regenerate such a key if you lose it.
Please keep in mind that generating a new secret key invalidates the previously generated one.
Scope:
loadGenerator
Property Name:
apiClientSecret
Required:
Yes
Default Value:
N/A
Command line arg:
-DloadGenerator.apiClientSecret=...
Environment variable:
LOADGENERATOR_APICLIENTSECRET=...
---
loadGenerator:
...
apiClientSecret: YOUR_API_CLIENT_SECRET
...
loadGenerator: apiToken
OAuth 2.0 access token for Perforator API calls.
You can generate an access token outside the load generator and bypass such
token without specifying apiClientId and apiClientSecret.
Note:
Please keep in mind that the access token has a limited validity
period and usually expires 8 hours after authentication.
Scope:
loadGenerator
Property Name:
apiToken
Required:
No
Default Value:
N/A
Command line arg:
-DloadGenerator.apiToken=...
Environment variable:
LOADGENERATOR_APITOKEN=...
---
loadGenerator:
...
apiToken: YOUR_PREAUTHENTICATED_TOKEN_VALUE
...
loadGenerator: apiBaseUrl
This property is for informational purpose only and you don't need it in majority of the cases.
Scope:
loadGenerator
Property Name:
apiBaseUrl
Required:
No
Default Value:
https://api.perforator.io
Command line arg:
-DloadGenerator.apiBaseUrl=...
Environment variable:
LOADGENERATOR_APIBASEURL=...
---
loadGenerator:
...
apiBaseUrl: https://api.perforator.io
...
loadGenerator: projectKey
Every project has a unique identifier - project key,
and it is available in immutable UUID format once the project is created.
Project key is a mandatory field for every load test configuration,
and it tells the load generator where to store new executions data.
Please copy the project key from the project details page and update it in your config.yml
Scope:
loadGenerator
Property Name:
projectKey
Required:
Yes
Default Value:
N/A
Command line arg:
-DloadGenerator.projectKey=...
Environment variable:
LOADGENERATOR_PROJECTKEY=...
---
loadGenerator:
...
projectKey: YOUR_PROJECT_KEY
...
loadGenerator: executionKey
Key of the execution where to create a new browser cloud.
A new execution is automatically created within the parent project if
an executionKey is not provided.
This property is not required in majority of the cases.
The only case where it might be needed, when you would like to run multiple
independent load generators in parallel and combine statistics together
to get 360 view.
Scope:
loadGenerator
Property Name:
executionKey
Required:
No
Default Value:
N/A
Command line arg:
-DloadGenerator.executionKey=...
Environment variable:
LOADGENERATOR_EXECUTIONKEY=...
---
loadGenerator:
...
executionKey: YOUR_EXECUTION_KEY
...
loadGenerator: browserCloudAwaitQueued
How much time to wait till the browser cloud changes state from QUEUED to PROVISIONING?
Scope:
loadGenerator
Property Name:
browserCloudAwaitQueued
Required:
No
Default Value:
1h
Command line arg:
-DloadGenerator.browserCloudAwaitQueued=...
Environment variable:
LOADGENERATOR_BROWSERCLOUDAWAITQUEUED=...
---
loadGenerator:
...
browserCloudAwaitQueued: 1h
...
loadGenerator: browserCloudAwaitProvisioning
How much time to wait till the browser cloud changes state from PROVISIONING to OPERATIONAL?
Scope:
loadGenerator
Property Name:
browserCloudAwaitProvisioning
Required:
No
Default Value:
15m
Command line arg:
-DloadGenerator.browserCloudAwaitProvisioning=...
Environment variable:
LOADGENERATOR_BROWSERCLOUDAWAITPROVISIONING=...
---
loadGenerator:
...
browserCloudAwaitProvisioning: 15m
...
loadGenerator: browserCloudStatusPollInterval
Time interval on how often to check browser cloud status.
This property affects the behavior of the load generator during QUEUED, PROVISIONING, and OPERATIONAL stages.
For example, if you terminate the browser cloud manually from the UI,
the load generator should stop its execution after the next polling attempt.
Scope:
loadGenerator
Property Name:
browserCloudStatusPollInterval
Required:
No
Default Value:
1s
Command line arg:
-DloadGenerator.browserCloudStatusPollInterval=...
Environment variable:
LOADGENERATOR_BROWSERCLOUDSTATUSPOLLINTERVAL=...
---
loadGenerator:
...
browserCloudStatusPollInterval: 1s
...
loadGenerator: browserCloudHttpHeaders
You can supply a field 'browserCloudHttpHeaders', and as a result, all
browsers from the cloud will include such headers in every HTTP request.
For example, to set the Authorization bearer token.
Scope:
loadGenerator
Property Name:
browserCloudHttpHeaders
Required:
No
Default Value:
N/A
Command line arg:
-DloadGenerator.browserCloudHttpHeaders=...
Environment variable:
LOADGENERATOR_BROWSERCLOUDHTTPHEADERS=...
---
loadGenerator:
...
browserCloudHttpHeaders:
Authorization: Basic YOUR_AUTHORIZATION_TOKEN
Custom-Http-Header: HEADER_VALUE
...
loadGenerator: browserCloudHosts
You can set the ‘browserCloudHosts’ parameter if you would like
to propagate additional /etc/hosts to remote browsers.
It might be a case where a target website domain name is not resolvable via
public DNS servers. So, to reach such domains from the browsers started in the cloud,
you can supply a map of additional DNS records via 'browserCloudHosts' parameter,
for example: example.com => 1.2.3.4
Scope:
loadGenerator
Property Name:
browserCloudHosts
Required:
No
Default Value:
N/A
Command line arg:
-DloadGenerator.browserCloudHosts=...
Environment variable:
LOADGENERATOR_BROWSERCLOUDHOSTS=...
---
loadGenerator:
...
browserCloudHosts:
localhost: 127.0.0.1
example.com: 1.2.3.4
...
loadGenerator: browserCloudTerminateAutomatically
Should a browser cloud be turned off at the end of the test?
Scope:
loadGenerator
Property Name:
browserCloudTerminateAutomatically
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.browserCloudTerminateAutomatically=...
Environment variable:
LOADGENERATOR_BROWSERCLOUDTERMINATEAUTOMATICALLY=...
---
loadGenerator:
...
browserCloudTerminateAutomatically: true
...
loadGenerator: httpConnectTimeout
This property controls how long to wait while establishing a new HTTP connection with the remote browser(s).
Note: Load generator uses HTTP connections pooling to improve performance while communicating with the remote browsers.
So, we are trying to reuse as much as possible existing HTTP connections to avoid additional delays on TCP and SSL handshakes.
Scope:
loadGenerator
Property Name:
httpConnectTimeout
Required:
No
Default Value:
30s
Command line arg:
-DloadGenerator.httpConnectTimeout=...
Environment variable:
LOADGENERATOR_HTTPCONNECTTIMEOUT=...
---
loadGenerator:
...
httpConnectTimeout: 30s
...
loadGenerator: httpReadTimeout
This property controls how long to wait while awaiting a response from remote browser via an already established HTTP connection.
Note: Load generator treats remote browser as dead if HTTP response for submitted selenium command has not arrived within such timeout.
As a result, the currently processed suite instance and its step are automatically marked as failed.
Scope:
loadGenerator
Property Name:
httpReadTimeout
Required:
No
Default Value:
60s
Command line arg:
-DloadGenerator.httpReadTimeout=...
Environment variable:
LOADGENERATOR_HTTPREADTIMEOUT=...
---
loadGenerator:
...
httpReadTimeout: 60s
...
loadGenerator: eventsFlushInterval
Interval on how often to send transaction events data to API.
Scope:
loadGenerator
Property Name:
eventsFlushInterval
Required:
No
Default Value:
0.25s
Command line arg:
-DloadGenerator.eventsFlushInterval=...
Environment variable:
LOADGENERATOR_EVENTSFLUSHINTERVAL=...
---
loadGenerator:
...
eventsFlushInterval: 0.25s
...
loadGenerator: eventsFlushThreshold
How many transaction events should be sent to API per one request?
Note: This value might be as high as 2000,
everything else on top will be rejected on API end.
Scope:
loadGenerator
Property Name:
eventsFlushThreshold
Required:
No
Default Value:
500
Command line arg:
-DloadGenerator.eventsFlushThreshold=...
Environment variable:
LOADGENERATOR_EVENTSFLUSHTHRESHOLD=...
---
loadGenerator:
...
eventsFlushThreshold: 500
...
loadGenerator: reportingInterval
How often progress statistics should be reported in the log?
You can turn off progress reporting by specifying this value as 0s.
Note: This property only affects reporting to the load generator log and
doesn't affect transactions and browser events reporting to the primary analytical system.
Scope:
loadGenerator
Property Name:
reportingInterval
Required:
No
Default Value:
5s
Command line arg:
-DloadGenerator.reportingInterval=...
Environment variable:
LOADGENERATOR_REPORTINGINTERVAL=...
---
loadGenerator:
...
reportingInterval: 5s
...
loadGenerator: concurrencyAutoAdjustment
It might be a case when tests start failing too often, either due to the
problem with the test(s) logic or due to overloading of the target
system.
Perforator automatically determines when to introduce a slowdown in case
of any abnormalities with tests execution.
This flag controls whether automatic slowdown is enabled or not.
Scope:
loadGenerator
Property Name:
concurrencyAutoAdjustment
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.concurrencyAutoAdjustment=...
Environment variable:
LOADGENERATOR_CONCURRENCYAUTOADJUSTMENT=...
---
loadGenerator:
...
concurrencyAutoAdjustment: true
...
loadGenerator: concurrencyRecalcPeriod
How often desired concurrency should be recalculated?
Scope:
loadGenerator
Property Name:
concurrencyRecalcPeriod
Required:
No
Default Value:
30s
Command line arg:
-DloadGenerator.concurrencyRecalcPeriod=...
Environment variable:
LOADGENERATOR_CONCURRENCYRECALCPERIOD=...
---
loadGenerator:
...
concurrencyRecalcPeriod: 30s
...
loadGenerator: concurrencyScaleDownMultiplier
Perforator automatically decreases concurrency if there are too many
failing transactions.
This property determines concurrency multiplier to use while calculating
scale-down adjustment.
For example, suppose the target concurrency is 1000, and the multiplier is
0.05. In that case, the scale-down adjustment for concurrency is
1000 x 0.05 = 50, so the system should decrease concurrency by 50 threads
in case of too many failing transactions.
Scope:
loadGenerator
Property Name:
concurrencyScaleDownMultiplier
Required:
No
Default Value:
0.05
Command line arg:
-DloadGenerator.concurrencyScaleDownMultiplier=...
Environment variable:
LOADGENERATOR_CONCURRENCYSCALEDOWNMULTIPLIER=...
---
loadGenerator:
...
concurrencyScaleDownMultiplier: 0.05
...
loadGenerator: concurrencyScaleUpMultiplier
Perforator automatically increases concurrency if previously it was
slowing down due to failing transactions, and the amount of such failing
transactions decreases.
This property determines concurrency multiplier to use while calculating
scale-up adjustment.
For example, suppose the target concurrency is 1000, and the multiplier is
0.025. In that case, the scale-up adjustment for concurrency is
1000 x 0.025 = 25, so the system should increase concurrency by 25 threads
in case failing transactions percent goes down.
Scope:
loadGenerator
Property Name:
concurrencyScaleUpMultiplier
Required:
No
Default Value:
0.025
Command line arg:
-DloadGenerator.concurrencyScaleUpMultiplier=...
Environment variable:
LOADGENERATOR_CONCURRENCYSCALEUPMULTIPLIER=...
---
loadGenerator:
...
concurrencyScaleUpMultiplier: 0.025
...
loadGenerator: failOnSuiteErrors
Should a performance test fail at the end of the execution in case of any suite errors?
Scope:
loadGenerator
Property Name:
failOnSuiteErrors
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.failOnSuiteErrors=...
Environment variable:
LOADGENERATOR_FAILONSUITEERRORS=...
---
loadGenerator:
...
failOnSuiteErrors: true
...
loadGenerator: failOnTransactionErrors
Should a performance test fail at the end of the execution in case of any transaction errors?
Scope:
loadGenerator
Property Name:
failOnTransactionErrors
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.failOnTransactionErrors=...
Environment variable:
LOADGENERATOR_FAILONTRANSACTIONERRORS=...
---
loadGenerator:
...
failOnTransactionErrors: true
...
loadGenerator: usePreAllocatedIPs
The platform automatically assigns random public IP addresses when
creating a browser cloud, and such IPs are not known in advance.
Please set usePreAllocatedIPs parameter to true if you would like all
browsers to have preallocated IPs, for example, to establish network trust
on your firewall side.
Here is the list of public IPs for the browser cloud if you enable this flag:
34.235.233.12, 3.23.160.131, 13.57.125.221, 34.217.161.9, 52.60.65.181, TODO, 18.169.80.168, 18.162.233.176
34.235.233.12, 3.23.160.131, 13.57.125.221, 34.217.161.9, 52.60.65.181, TODO, 18.169.80.168, 18.162.233.176
Note:
Pre-allocated IPs functionality is disabled by default.
Please let us know at support@perforator.io if you would like it to be enabled for your account.
Please let us know at support@perforator.io if you would like it to be enabled for your account.
Scope:
loadGenerator
Property Name:
usePreAllocatedIPs
Required:
No
Default Value:
false
Command line arg:
-DloadGenerator.usePreAllocatedIPs=...
Environment variable:
LOADGENERATOR_USEPREALLOCATEDIPS=...
---
loadGenerator:
...
usePreAllocatedIPs: false
...
loadGenerator: dataCapturingExcludes
It might be a case when you would like to exclude specific HTTP requests
from capturing by browsers running in the cloud and avoid storing such
requests in the analytical system.
For example, your security team doesn't want to expose test user
credentials to external systems, or you know in advance that specific
requests are failing all the time, and it is desired to exclude such
requests from any analysis.
'dataCapturingExcludes' property allows you to specify a list of URLs to be
excluded from capturing by cloud-based browsers.
You can specify either absolute URLs to exclude or JS-based patterns
to match against the tested HTTP request URL.
Scope:
loadGenerator
Property Name:
dataCapturingExcludes
Required:
No
Default Value:
N/A
Command line arg:
-DloadGenerator.dataCapturingExcludes=...
Environment variable:
LOADGENERATOR_DATACAPTURINGEXCLUDES=...
---
loadGenerator:
...
dataCapturingExcludes:
- 'https://example.com/path/to/exclude'
- 'https://*.example.com/path/tracking.*'
...
loadGenerator: dataCapturingIncludeRequestHeaders
It may be a case when you need precise control over
capturing HTTP request headers by browsers running in the cloud
and persisting it for analytics purposes.
For example, your security team doesn't want sensitive information
from any HTTP request headers to be preserved by external platforms.
The 'dataCapturingIncludeRequestHeaders' property allows you
to control capturing of any HTTP request headers.
Scope:
loadGenerator
Property Name:
dataCapturingIncludeRequestHeaders
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.dataCapturingIncludeRequestHeaders=...
Environment variable:
LOADGENERATOR_DATACAPTURINGINCLUDEREQUESTHEADERS=...
---
loadGenerator:
...
dataCapturingIncludeRequestHeaders: true
...
loadGenerator: dataCapturingIncludeRequestBody
It may be a case when you need precise control over
capturing HTTP requests body by browsers running in the cloud
and persisting it for analytics purposes.
For example, your security team doesn't want sensitive information
from any HTTP request body to be preserved by external platforms.
The 'dataCapturingIncludeRequestBody' property allows you
to control capturing of any HTTP request body.
Scope:
loadGenerator
Property Name:
dataCapturingIncludeRequestBody
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.dataCapturingIncludeRequestBody=...
Environment variable:
LOADGENERATOR_DATACAPTURINGINCLUDEREQUESTBODY=...
---
loadGenerator:
...
dataCapturingIncludeRequestBody: true
...
loadGenerator: dataCapturingIncludeResponseHeaders
It may be a case when you need precise control over
capturing HTTP response headers by browsers running in the cloud
and persisting it for analytics purposes.
For example, your security team doesn't want sensitive information
from any HTTP response headers to be preserved by external platforms.
The 'dataCapturingIncludeResponseHeaders' property allows you
to control capturing of any HTTP response headers.
Scope:
loadGenerator
Property Name:
dataCapturingIncludeResponseHeaders
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.dataCapturingIncludeResponseHeaders=...
Environment variable:
LOADGENERATOR_DATACAPTURINGINCLUDERESPONSEHEADERS=...
---
loadGenerator:
...
dataCapturingIncludeResponseHeaders: true
...
loadGenerator: dataCapturingIncludeResponseBody
It may be a case when you need precise control over
capturing HTTP responses body by browsers running in the cloud
and persisting it for analytics purposes.
For example, your security team doesn't want sensitive information
from any HTTP response body to be preserved by external platforms.
The 'dataCapturingIncludeResponseBody' property allows you
to control capturing of any HTTP response body.
Scope:
loadGenerator
Property Name:
dataCapturingIncludeResponseBody
Required:
No
Default Value:
true
Command line arg:
-DloadGenerator.dataCapturingIncludeResponseBody=...
Environment variable:
LOADGENERATOR_DATACAPTURINGINCLUDERESPONSEBODY=...
---
loadGenerator:
...
dataCapturingIncludeResponseBody: true
...
variables
You can set the variables key-value map to allow common values reuse
across different suites and actions.
Suite actions can refer to a value from a variables map using the following
syntax: ${key_name}
This is an optional property.
---
loadGenerator:
...
variables:
...
main.domain: 'example.com'
main.url: 'https://${main.domain}/'
...
suites:
Your Suite Name:
steps:
Open Home Page:
- open: '${main.url}'
...
suite: concurrency
Concurrency level of the suite processing, i.e., how many concurrent
threads will process suite instances.
Also, this parameter controls how many browsers are allowed
to be launched concurrently in the cloud for cloud-based executions.
Scope:
suite
Property Name:
concurrency
Required:
Yes
Default Value:
30
Command line arg:
-Dsuite.concurrency=...
Environment variable:
SUITE_CONCURRENCY=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
concurrency: 30
...
suite: duration
Duration of the performance test for the given suite.
Also, this parameter controls how much time the browser cloud
will be accessible once the performance test starts in cloud mode.
Duration of the browser cloud is rounded up to the closest hour value.
For example, if duration = 45m, then browser cloud is created for 1 hour.
Scope:
suite
Property Name:
duration
Required:
No
Default Value:
15m
Command line arg:
-Dsuite.duration=...
Environment variable:
SUITE_DURATION=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
duration: 15m
...
suite: delay
How much time to wait before executing suite logic once performance test starts?
Scope:
suite
Property Name:
delay
Required:
No
Default Value:
0s
Command line arg:
-Dsuite.delay=...
Environment variable:
SUITE_DELAY=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
delay: 0s
...
suite: rampUp
The time interval for ramping up concurrent processing of suite instances
from 1 up to defined concurrency level. Concurrency is increased evenly
during rampUp period.
For example, if you have concurrency = 10 and
rampUp = 10s, then every second additional worker thread will be
launched, starting from 1 thread up to 10 threads.
Scope:
suite
Property Name:
rampUp
Required:
No
Default Value:
0s
Command line arg:
-Dsuite.rampUp=...
Environment variable:
SUITE_RAMPUP=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
rampUp: 0s
...
suite: rampDown
The time interval before the end of the test to stop launching new suite
instances.
For example, if you have duration = 10m and rampDown = 2m,
then after the 8th minute of execution no new suite instances will be
launched.
At the same time, if a suite instance started execution before the 8th
minute - such instance will proceed execution till its natural completion
Scope:
suite
Property Name:
rampDown
Required:
No
Default Value:
2m
Command line arg:
-Dsuite.rampDown=...
Environment variable:
SUITE_RAMPDOWN=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
rampDown: 2m
...
suite: iterations
Iterations count to execute the suite.
This is an upper bound of maximum attempts to run the suite.
The suite should be stopped when the pre-configured duration is elapsed,
or iterations count is reached, whatever comes first.
Scope:
suite
Property Name:
iterations
Required:
No
Default Value:
9999999
Command line arg:
-Dsuite.iterations=...
Environment variable:
SUITE_ITERATIONS=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
iterations: 10
...
suite: webDriverMode
The mode of launching browsers for the test suite.
Available modes:
- cloud
- local
- cloud
- local
Note: Neither transactions nor browser events are reported
to the analytics system when browsers are launched locally.
Scope:
suite
Property Name:
webDriverMode
Required:
No
Default Value:
cloud
Command line arg:
-Dsuite.webDriverMode=...
Environment variable:
SUITE_WEBDRIVERMODE=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverMode: cloud
...
suite: chromeMode
The mode of launching chrome instances.
Available modes:
- headful
- headless
Available modes:
- headful
- headless
Scope:
suite
Property Name:
chromeMode
Required:
No
Default Value:
headful
Command line arg:
-Dsuite.chromeMode=...
Environment variable:
SUITE_CHROMEMODE=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
chromeMode: headful
...
suite: chromeDriverSilent
Should a chrome driver be started in silent mode?
Chrome driver service sends all output by default to System::out stream,
and its output is not necessary in a majority of the cases.
Please turn off this flag if you would like to see output from Chrome
driver service.
Note: This property is only considered when you launch suite in local mode.
Scope:
suite
Property Name:
chromeDriverSilent
Required:
No
Default Value:
true
Command line arg:
-Dsuite.chromeDriverSilent=...
Environment variable:
SUITE_CHROMEDRIVERSILENT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
chromeDriverSilent: true
...
suite: defaultSelectorType
The mode controlling selector type to use while searching elements on the page.
Available modes:
- css
- xpath
- css
- xpath
Scope:
suite
Property Name:
defaultSelectorType
Required:
No
Default Value:
css
Command line arg:
-Dsuite.defaultSelectorType=...
Environment variable:
SUITE_DEFAULTSELECTORTYPE=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
defaultSelectorType: css
...
suite: webDriverCreateSessionRetryTimeout
The system automatically retries to create a new selenium session,
in case of an error(s), starting from the timestamp of the initial
attempt up until webDriverCreateSessionRetryTimeout is reached.
Note: This parameter is only applicable when webDriverMode = cloud.
Scope:
suite
Property Name:
webDriverCreateSessionRetryTimeout
Required:
No
Default Value:
1m
Command line arg:
-Dsuite.webDriverCreateSessionRetryTimeout=...
Environment variable:
SUITE_WEBDRIVERCREATESESSIONRETRYTIMEOUT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverCreateSessionRetryTimeout: 1m
...
suite: webDriverDeleteSessionRetryTimeout
The system automatically retries to delete existing selenium session,
in case of an error(s), starting from the timestamp of the initial
attempt up until webDriverDeleteSessionRetryTimeout is reached.
Note: This parameter is only applicable when webDriverMode = cloud.
Scope:
suite
Property Name:
webDriverDeleteSessionRetryTimeout
Required:
No
Default Value:
1m
Command line arg:
-Dsuite.webDriverDeleteSessionRetryTimeout=...
Environment variable:
SUITE_WEBDRIVERDELETESESSIONRETRYTIMEOUT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverDeleteSessionRetryTimeout: 1m
...
suite: webDriverSessionImplicitlyWait
Implicit wait timeout for selenium session.
This parameter controls the amount of time the driver should wait
when searching for an element if it is not immediately present.
Scope:
suite
Property Name:
webDriverSessionImplicitlyWait
Required:
No
Default Value:
0s
Command line arg:
-Dsuite.webDriverSessionImplicitlyWait=...
Environment variable:
SUITE_WEBDRIVERSESSIONIMPLICITLYWAIT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverSessionImplicitlyWait: 0s
...
suite: webDriverSessionScriptTimeout
This parameter controls the amount of time to wait
for an asynchronous JavaScript to finish execution
before throwing an error.
Scope:
suite
Property Name:
webDriverSessionScriptTimeout
Required:
No
Default Value:
30s
Command line arg:
-Dsuite.webDriverSessionScriptTimeout=...
Environment variable:
SUITE_WEBDRIVERSESSIONSCRIPTTIMEOUT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverSessionScriptTimeout: 30s
...
suite: webDriverSessionPageLoadTimeout
This parameter controls how much time to wait for a page load to complete
before throwing an error.
Scope:
suite
Property Name:
webDriverSessionPageLoadTimeout
Required:
No
Default Value:
30s
Command line arg:
-Dsuite.webDriverSessionPageLoadTimeout=...
Environment variable:
SUITE_WEBDRIVERSESSIONPAGELOADTIMEOUT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverSessionPageLoadTimeout: 30s
...
suite: webDriverUseLocalFileDetector
The flag allowing file uploads functionality while working with browsers in the cloud.
Note: This parameter is only applicable when webDriverMode = cloud.
Scope:
suite
Property Name:
webDriverUseLocalFileDetector
Required:
No
Default Value:
true
Command line arg:
-Dsuite.webDriverUseLocalFileDetector=...
Environment variable:
SUITE_WEBDRIVERUSELOCALFILEDETECTOR=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverUseLocalFileDetector: true
...
suite: webDriverWindowWidth
Default window width of the browser.
Scope:
suite
Property Name:
webDriverWindowWidth
Required:
No
Default Value:
1920
Command line arg:
-Dsuite.webDriverWindowWidth=...
Environment variable:
SUITE_WEBDRIVERWINDOWWIDTH=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverWindowWidth: 1920
...
suite: webDriverWindowHeight
Default window height of the browser.
Scope:
suite
Property Name:
webDriverWindowHeight
Required:
No
Default Value:
1080
Command line arg:
-Dsuite.webDriverWindowHeight=...
Environment variable:
SUITE_WEBDRIVERWINDOWHEIGHT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverWindowHeight: 1080
...
suite: webDriverAcceptInsecureCerts
Allow browsers connecting to web-sites with insecure HTTPS
certificates.
Scope:
suite
Property Name:
webDriverAcceptInsecureCerts
Required:
No
Default Value:
false
Command line arg:
-Dsuite.webDriverAcceptInsecureCerts=...
Environment variable:
SUITE_WEBDRIVERACCEPTINSECURECERTS=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverAcceptInsecureCerts: false
...
suite: webDriverHttpsUpgrades
Automatically and optimistically upgrade all main-frame navigations
to HTTPS, with fast fallback to HTTP.
See more details.
See more details.
Scope:
suite
Property Name:
webDriverHttpsUpgrades
Required:
No
Default Value:
true
Command line arg:
-Dsuite.webDriverHttpsUpgrades=...
Environment variable:
SUITE_WEBDRIVERHTTPSUPGRADES=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverHttpsUpgrades: true
...
suite: webDriverUserAgent
Customized user-agent string for the launched browser.
Scope:
suite
Property Name:
webDriverUserAgent
Required:
No
Default Value:
utilize default chrome user agent
Command line arg:
-Dsuite.webDriverUserAgent=...
Environment variable:
SUITE_WEBDRIVERUSERAGENT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverUserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.88 Safari/537.36
...
suite: webDriverContentScript
JS content script to be injected on every page.
Scope:
suite
Property Name:
webDriverContentScript
Required:
No
Default Value:
no additional JS is injected by default
Command line arg:
-Dsuite.webDriverContentScript=...
Environment variable:
SUITE_WEBDRIVERCONTENTSCRIPT=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
webDriverContentScript: |
window.addEventListener('load', (event) => {
const host = document.location.host;
if(!host.startsWith("verifications")) {
document.body.innerHTML += '<iframe src="https://verifications.perforator.io/public-ip" id="public-ip"/>';
}
});
...
suite: logWorkerID
All the suites are processed concurrently via multiple thread workers.
Every thread worker has a dedicated ID.
This flag determines should the worker ID be logged as a part of every log
item.
Scope:
suite
Property Name:
logWorkerID
Required:
No
Default Value:
false
Command line arg:
-Dsuite.logWorkerID=...
Environment variable:
SUITE_LOGWORKERID=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
logWorkerID: false
...
suite: logSuiteInstanceID
A new suite instance ID is generated whenever a thread worker starts
processing a test suite.
This flag determines should the suite instance ID be logged for all log
items related to the processing of the suite instance.
Scope:
suite
Property Name:
logSuiteInstanceID
Required:
No
Default Value:
false
Command line arg:
-Dsuite.logSuiteInstanceID=...
Environment variable:
SUITE_LOGSUITEINSTANCEID=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
logSuiteInstanceID: false
...
suite: logRemoteWebDriverSessionID
Should a selenium session-id be logged while processing a test suite?
Scope:
suite
Property Name:
logRemoteWebDriverSessionID
Required:
No
Default Value:
true
Command line arg:
-Dsuite.logRemoteWebDriverSessionID=...
Environment variable:
SUITE_LOGREMOTEWEBDRIVERSESSIONID=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
logRemoteWebDriverSessionID: true
...
suite: logTransactionID
Should a transaction id be logged for every transaction in an active state?
Scope:
suite
Property Name:
logTransactionID
Required:
No
Default Value:
false
Command line arg:
-Dsuite.logTransactionID=...
Environment variable:
SUITE_LOGTRANSACTIONID=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
logTransactionID: false
...
suite: logSteps
Should we log every step when it is executed by the load generator?
Scope:
suite
Property Name:
logSteps
Required:
No
Default Value:
false
Command line arg:
-Dsuite.logSteps=...
Environment variable:
SUITE_LOGSTEPS=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
logSteps: false
...
suite: logActions
Should we log every action when it is executed by the load generator?
Scope:
suite
Property Name:
logActions
Required:
No
Default Value:
false
Command line arg:
-Dsuite.logActions=...
Environment variable:
SUITE_LOGACTIONS=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
logActions: false
...
suite: props
Props is an array of key-value pairs which can be referenced in the
actions. Load generator automatically picks the next item from the array
when it starts executing a new suite instance and preserves key-value
pairs till the end of the suite instance.
Action can refer to a value from a key-values map using
the following syntax: ${key_name}
Scope:
suite
Property Name:
props
Required:
No
Default Value:
N/A
---
loadGenerator:
...
suites:
Your Suite Name:
...
props:
- user_name: user1@example.com
password: secure_password1
- user_name: user2@example.com
password: secure_password2
...
steps:
login:
- open: https://example.com
- input:
cssSelector: 'input[name=username]'
value: '${user_name}'
- input:
cssSelector: 'input[name=password]'
value: '${password}'
...
suite: propsFile
Props is an array of key-value pairs which can be referenced in the
actions.
Contradictory to props, where you specify values directly in the config, propsFile allows you to supply values stored in an external CSV file.
Load generator automatically picks the next row from CSV file when it starts executing a new suite instance and preserves key-value pairs till the end of the suite instance.
Contradictory to props, where you specify values directly in the config, propsFile allows you to supply values stored in an external CSV file.
Load generator automatically picks the next row from CSV file when it starts executing a new suite instance and preserves key-value pairs till the end of the suite instance.
Action can refer to a value from a key-values map using
the following syntax: ${key_name}
Example CSV file's data:
user_name | password |
---|---|
user1@example.com | user1Password |
user2@example.com | user2Password |
user3@example.com | user3Password |
user4@example.com | user4Password |
Scope:
suite
Property Name:
propsFile
Required:
No
Default Value:
N/A
Command line arg:
-Dsuite.propsFile=...
Environment variable:
SUITE_PROPSFILE=...
---
loadGenerator:
...
suites:
Your Suite Name:
...
propsFile: path_to_file.csv
...
steps:
login:
- open: https://example.com
- input:
cssSelector: 'input[name=username]'
value: '${user_name}'
- input:
cssSelector: 'input[name=password]'
value: '${password}'
...