Complete Properties Reference
You can use these tab groups to navigate and get information about how to manage your desired properties in all the different ways possible.
- Code-based
- CLI-based
- File-based
- Default Values
You can read/write any property programmatically to provide more flexibility and control during runtime.
You can set some properties via the CLI command that you use to execute your tests.
The traditional way of configuring SHAFT properties, using this approach you can simply create your own
custom.properties file.The default/preset values built into SHAFT, with a description of what each one does and the possible values.
Platform
- These properties control the basic target execution platform settings, like execution location and target operating system.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
import org.openqa.selenium.Platform;
/** get **/
String crossBrowserMode = SHAFT.Properties.platform.crossBrowserMode();
String executionAddress = SHAFT.Properties.platform.executionAddress();
String targetPlatform = SHAFT.Properties.platform.targetPlatform();
String proxy = SHAFT.Properties.platform.proxy();
Boolean driverProxy = SHAFT.Properties.platform.driverProxySettings();
Boolean jvmProxy = SHAFT.Properties.platform.jvmProxySettings();
Boolean enableBiDi = SHAFT.Properties.platform.enableBiDi();
/** set **/
SHAFT.Properties.platform.set().crossBrowserMode("off");
SHAFT.Properties.platform.set().executionAddress("local");
SHAFT.Properties.platform.set().targetPlatform(Platform.LINUX.name());
SHAFT.Properties.platform.set().proxySettings("");
SHAFT.Properties.platform.set().driverProxySettings(true);
SHAFT.Properties.platform.set().jvmProxySettings(true);
SHAFT.Properties.platform.set().enableBiDi(true);
mvn -e test "-DexecutionAddress=localhost:4444" "-DtargetOperatingSystem=LINUX"
src/main/resources/properties/custom.properties
SHAFT.CrossBrowserMode=off
executionAddress=local
targetOperatingSystem=LINUX
com.SHAFT.proxySettings=
driverProxySettings=true
jvmProxySettings=true
enableBiDi=true
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| SHAFT.CrossBrowserMode | off | off, sequential, parallelized | • Cross Browser Mode allows SHAFT to run your test class against Chrome, Firefox, and Safari! • You need to have 'Docker Desktop' installed on your machine, and configured to use Linux images. • Off → Your tests will run normally and respect your configuration. • Sequential → Your tests will run on Chrome, Firefox, and Safari in sequence. • Parallelized → Your tests will run on Chrome, Firefox and Safari in parallel. And for each browser they will run in sequence. |
| executionAddress | local | local, dockerized, browserstack, host:port, http://host:port/wd/hub | • For Appium, set the below settings and move to the Mobile tab to continue. • For BrowserStack, set the "Target Operating System" below, and the "Automation Name" in the Mobile tab, then configure the "browserStack.properties" file in your project directory. |
| targetOperatingSystem | Linux | Linux, Windows, Mac, Android, iOS | • The target operating system for test execution. |
| com.SHAFT.proxySettings | | host:port | • Used to configure testing behind a proxy. e.g. corporate proxy. |
| driverProxySettings | true | true, false | • To enable or disable the driver proxy. |
| jvmProxySettings | true | true, false | • To enable or disable the JVM proxy. |
| enableBiDi | true | true, false | • To enable or disable the WebDriver BiDi protocol. |
Web
- These properties control web GUI test automation settings, like target browser, headless execution, and mobile emulation.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
import org.openqa.selenium.remote.Browser;
/** get **/
String targetBrowserName = SHAFT.Properties.web.targetBrowserName();
boolean headlessExecution = SHAFT.Properties.web.headlessExecution();
boolean forceBrowserDownload = SHAFT.Properties.web.forceBrowserDownload();
boolean incognitoMode = SHAFT.Properties.web.incognitoMode();
boolean isMobileEmulation = SHAFT.Properties.web.isMobileEmulation();
boolean mobileEmulationIsCustomDevice = SHAFT.Properties.web.mobileEmulationIsCustomDevice();
String mobileEmulationDeviceName = SHAFT.Properties.web.mobileEmulationDeviceName();
int mobileEmulationWidth = SHAFT.Properties.web.mobileEmulationWidth();
int mobileEmulationHeight = SHAFT.Properties.web.mobileEmulationHeight();
double mobileEmulationPixelRatio = SHAFT.Properties.web.mobileEmulationPixelRatio();
String mobileEmulationUserAgent = SHAFT.Properties.web.mobileEmulationUserAgent();
String baseURL = SHAFT.Properties.web.baseURL();
int browserWindowWidth = SHAFT.Properties.web.browserWindowWidth();
int browserWindowHeight = SHAFT.Properties.web.browserWindowHeight();
/** set **/
SHAFT.Properties.web.set().targetBrowserName(Browser.CHROME.browserName())
.headlessExecution(false)
.forceBrowserDownload(false)
.incognitoMode(false)
.isMobileEmulation(false)
.mobileEmulationIsCustomDevice(false)
.mobileEmulationDeviceName("")
.mobileEmulationWidth(360)
.mobileEmulationHeight(640)
.mobileEmulationPixelRatio(1.0)
.mobileEmulationUserAgent("")
.baseURL("")
.browserWindowWidth(1920)
.browserWindowHeight(1080);
mvn -e test "-DtargetBrowserName=FIREFOX" "-DheadlessExecution=true" "-DforceBrowserDownload=true"
src/main/resources/properties/custom.properties
targetBrowserName=chrome
forceBrowserDownload=false
headlessExecution=false
incognitoMode=false
isMobileEmulation=false
mobileEmulation.isCustomDevice=false
mobileEmulation.deviceName=
mobileEmulation.width=
mobileEmulation.height=
mobileEmulation.pixelRatio=1.0
mobileEmulation.userAgent=
baseURL=
browserWindowWidth=1920
browserWindowHeight=1080
pageLoadStrategy=none
readinessState=none
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| targetBrowserName | chrome | chrome, firefox, safari, edge | • The target web browser for test execution. |
| forceBrowserDownload | false | true, false | • This only works for Chrome and Firefox. • Allows you to use Selenium Manager to download the latest version from CfT which promises better performance and reliability. |
| headlessExecution | false | true, false | • This only works for Chrome, Firefox and Edge. |
| incognitoMode | false | true, false | • Enable browser incognito/private mode. |
| isMobileEmulation | false | true, false | • This only works for Chrome and Edge. |
| mobileEmulation.isCustomDevice | false | true, false | • This only works for Chrome and Edge. |
| mobileEmulation.deviceName | | blackberryZ30, BlackberryPlayBook, galaxyNote3, galaxyNoteII, galaxySIII, galaxyS5, galaxyS8, samsungGalaxyS8+, galaxyS9+, galaxyTabS4, galaxyFold, samsungGalaxyS20Ultra, samsungGalaxyA51/71, kindleFireHDX, lgOptimusL70, microsoftLumia550, microsoftLumia950, motoG4, nexus10, nexus4, nexus5, nexus5X, nexus6, nexus6P, nexus7, nokiaLumia520, nokiaN9, nestHub, nestHubMax, pixel2, pixel2XL, pixel3, pixel3XL, pixel4, pixel5, jioPhone2, iPhone4, iPhone5/SE, iPhone6/7/8, iPhone6/7/8Plus, iPhoneSE, iPhoneX, iPhoneXR, iPhone12Pro, iPad, iPadPro, iPadAir, iPadMini, surfacePro7, surfaceDuo | • This only works for Chrome and Edge. |
| mobileEmulation.width | | example: 360 | • This only works for Chrome and Edge. |
| mobileEmulation.height | | example: 600 | • This only works for Chrome and Edge. |
| mobileEmulation.pixelRatio | 1.0 | example: 2.0 | • This only works for Chrome and Edge. |
| mobileEmulation.userAgent | | example: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0 | • This only works for Chrome and Edge. |
| baseURL | | example: https://github.com/ShaftHQ/SHAFT_ENGINE | • Base URL for the application under test. |
| browserWindowWidth | 1920 | • Won't work if autoMaximizeBrowserWindow is enabled. | |
| browserWindowHeight | 1080 | • Won't work if autoMaximizeBrowserWindow is enabled. | |
| pageLoadStrategy | none | none, eager, normal | • Controls when Selenium considers the page loaded. |
| readinessState | none | interactive, none, complete | • Controls the document readiness state to wait for. |
Playwright
- These properties control the
SHAFT.GUI.Playwrightbackend. Browser name, headless mode, base URL, and viewport still come from the Web properties unless a Playwright-specific override is listed below.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
String browserName = SHAFT.Properties.playwright.browserName();
String deviceName = SHAFT.Properties.playwright.deviceName();
String connectionMode = SHAFT.Properties.playwright.connectionMode();
String endpoint = SHAFT.Properties.playwright.endpoint();
String channel = SHAFT.Properties.playwright.channel();
int slowMo = SHAFT.Properties.playwright.slowMo();
int launchTimeout = SHAFT.Properties.playwright.launchTimeoutMilliseconds();
int defaultTimeout = SHAFT.Properties.playwright.defaultTimeoutMilliseconds();
int navigationTimeout = SHAFT.Properties.playwright.navigationTimeoutMilliseconds();
String artifactsDirectory = SHAFT.Properties.playwright.artifactsDirectory();
String downloadsDirectory = SHAFT.Properties.playwright.downloadsDirectory();
boolean acceptDownloads = SHAFT.Properties.playwright.acceptDownloads();
boolean tracingEnabled = SHAFT.Properties.playwright.tracingEnabled();
/** set **/
SHAFT.Properties.playwright.set()
.browserName("chromium")
.deviceName("")
.connectionMode("local")
.endpoint("")
.channel("")
.slowMo(0)
.launchTimeoutMilliseconds(30000)
.defaultTimeoutMilliseconds(30000)
.navigationTimeoutMilliseconds(30000)
.artifactsDirectory("target/playwright-artifacts")
.downloadsDirectory("")
.acceptDownloads(true)
.tracingEnabled(false)
.tracingOnRetryOnly(true)
.tracingScreenshots(true)
.tracingSnapshots(true)
.tracingSources(true);
mvn -e test "-Dplaywright.browserName=chromium" "-Dplaywright.connectionMode=local"
src/main/resources/properties/custom.properties
playwright.browserName=chromium
playwright.deviceName=
playwright.connectionMode=local
playwright.endpoint=
playwright.channel=
playwright.slowMo=0
playwright.launchTimeoutMilliseconds=30000
playwright.defaultTimeoutMilliseconds=30000
playwright.navigationTimeoutMilliseconds=30000
playwright.artifactsDirectory=target/playwright-artifacts
playwright.downloadsDirectory=
playwright.acceptDownloads=true
playwright.tracing.enabled=false
playwright.tracing.onRetryOnly=true
playwright.tracing.screenshots=true
playwright.tracing.snapshots=true
playwright.tracing.sources=true
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| playwright.browserName | | chromium, chrome, firefox, webkit, safari, edge | Optional Playwright browser engine override. When empty, SHAFT uses the device descriptor browser type or falls back to targetBrowserName. |
| playwright.deviceName | | Any Microsoft Playwright device descriptor name, Galaxy S26 Ultra, iPhone 17 Pro Max | Device descriptor applied to new browser contexts. |
| playwright.connectionMode | local | local, connect, connectOverCDP | Launch a local browser, connect over Playwright protocol, or connect over CDP. |
| playwright.endpoint | | WebSocket or CDP endpoint | Remote endpoint used when connectionMode is connect or connectOverCDP. |
| playwright.channel | | Chromium channel such as chrome or msedge | Optional Chromium channel passed to Playwright launch options. |
| playwright.slowMo | 0 | milliseconds | Slow motion delay for Playwright actions. |
| playwright.launchTimeoutMilliseconds | 30000 | milliseconds | Timeout for launching or connecting to a browser. |
| playwright.defaultTimeoutMilliseconds | 30000 | milliseconds | Default timeout applied to Playwright page actions. |
| playwright.navigationTimeoutMilliseconds | 30000 | milliseconds | Default timeout applied to Playwright page navigation. |
| playwright.artifactsDirectory | target/playwright-artifacts | relative or absolute path | Directory for Playwright traces and artifacts. |
| playwright.downloadsDirectory | | relative or absolute path | Optional downloads directory. Empty uses Playwright defaults. |
| playwright.acceptDownloads | true | true, false | Allow Playwright browser contexts to accept downloads. |
| playwright.tracing.enabled | false | true, false | Start Playwright tracing for the session. |
| playwright.tracing.onRetryOnly | true | true, false | Enable tracing automatically only during SHAFT retry evidence capture. |
| playwright.tracing.screenshots | true | true, false | Include screenshots in trace artifacts. |
| playwright.tracing.snapshots | true | true, false | Include DOM snapshots in trace artifacts. |
| playwright.tracing.sources | true | true, false | Include source files in trace artifacts. |
Mobile
- These properties control web and/or native mobile GUI test automation settings, like target platform version, path to the app under test, and the activity name that you want to start testing.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
import org.openqa.selenium.Platform;
import io.appium.java_client.remote.AutomationName;
/** get **/
String platformName = SHAFT.Properties.mobile.platformName();
String platformVersion = SHAFT.Properties.mobile.platformVersion();
String deviceName = SHAFT.Properties.mobile.deviceName();
String automationName = SHAFT.Properties.mobile.automationName();
String udid = SHAFT.Properties.mobile.udid();
String browserName = SHAFT.Properties.mobile.browserName();
String browserVersion = SHAFT.Properties.mobile.browserVersion();
String app = SHAFT.Properties.mobile.app();
String appPackage = SHAFT.Properties.mobile.appPackage();
String appActivity = SHAFT.Properties.mobile.appActivity();
String bundleId = SHAFT.Properties.mobile.bundleId();
/** set **/
SHAFT.Properties.platform.set().targetPlatform(Platform.ANDROID.name());
SHAFT.Properties.mobile.set().platformVersion("13.0")
.deviceName("Google Pixel 7")
.automationName(AutomationName.ANDROID_UIAUTOMATOR2)
.udid("")
.browserName("")
.browserVersion("")
.app("src/test/resources/testDataFiles/apps/ApiDemos-debug.apk")
.appPackage("")
.appActivity("")
.bundleId("");
mvn -e test "-Dmobile_platformVersion=13.0" "-Dmobile_deviceName=Google Pixel 7"
src/main/resources/properties/custom.properties
targetOperatingSystem=ANDROID
mobile_platformVersion=13.0
mobile_deviceName=Google Pixel 7
mobile_automationName=UiAutomator2
mobile_udid=
browserName=
MobileBrowserVersion=
mobile_app=src/test/resources/testDataFiles/apps/ApiDemos-debug.apk
mobile_appPackage=
mobile_appActivity=
mobile_bundleId=
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| mobile_platformVersion | | example: 11.0, 13.0 | • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| mobile_deviceName | | example: ANDROID_EMULATOR | • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| mobile_automationName | UiAutomator2 | UiAutomator2, Espresso, XCUITest | • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| mobile_udid | | example: RQ3005TAQP | • Unique device identifier of the connected physical device (leave empty if not applicable). • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| browserName | | chrome, Chromium, Browser, Safari, samsung | • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| MobileBrowserVersion | | example: 83.0.4103.39 | • The latest version of the WebDriver executable that is compatible with the target browser. You can get it from here. • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| mobile_app | | relativePath/to/myApp.apk, absolutePath/to/myApp.apk, http://myapp.com/app.ipa | • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| mobile_appPackage | | example: com.example.android.myApp | • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| mobile_appActivity | | example: .MainActivity | • You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
| mobile_bundleId | | example: com.example.ios.myApp | • iOS bundle identifier for launching an already installed app without providing mobile_app.• You can add any property from the List of Appium Capabilities directly to your .property files or via CLI arguments, just make sure to add mobile_ as a prefix. |
API
This section lists all configurable properties related to Swagger/OpenAPI contract validation for SHAFT API testing.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
boolean swaggerValidationEnabled = SHAFT.Properties.api.swaggerValidationEnabled();
String swaggerValidationUrl = SHAFT.Properties.api.swaggerValidationUrl();
/** set **/
SHAFT.Properties.api.set()
.swaggerValidationEnabled(true)
.swaggerValidationUrl("https://petstore.swagger.io/v2/swagger.json");
(Work In Progress)
src/main/resources/properties/custom.properties
swagger.validation.enabled=true
swagger.validation.url=https://petstore.swagger.io/v2/swagger.json
| Property Name | Default Value | Description |
|---|---|---|
swagger.validation.enabled | false | Enables or disables Swagger/OpenAPI contract validation for API testing. |
swagger.validation.url | (empty) | URL or file path to the OpenAPI schema for validation. |
Flags
- These properties control generic platform flags, like the number of test retry attempts, auto-maximization of web browser window, and any other built-in checks or workarounds that aim to stabilize your test execution.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
var clickUsingJavascriptWhenWebDriverClickFails = SHAFT.Properties.flags.clickUsingJavascriptWhenWebDriverClickFails();
/** set **/
SHAFT.Properties.flags.set().clickUsingJavascriptWhenWebDriverClickFails(true);
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| automaticallyAddRecommendedChromeOptions | false | true, false | • Automatically add recommended Chrome options for better stability. |
| retryMaximumNumberOfAttempts | 0 | example: 0, 1, 2, 3, 4, ...etc | • Maximum number of retry attempts for failed tests. |
| forceCaptureSupportingEvidenceOnRetry | true | true, false | • When retrying a failed test, enable GIF/video/log evidence for the retry attempt. |
| autoMaximizeBrowserWindow | true | true, false | • Automatically maximize browser window on launch. |
| forceCheckForElementVisibility | true | true, false | • Force check for element visibility before interactions. |
| forceCheckElementLocatorIsUnique | true | true, false | • Force check that element locator returns only one element. |
| forceCheckTextWasTypedCorrectly | false | true, false | • Force check that text was typed correctly after typing action. |
| clearBeforeTypingMode | native | native, backspace, off | • Replaces both deprecated attemptClearBeforeTyping and attemptClearBeforeTypingUsingBackspace flags. native = clear using native Selenium method, backspace = clear by deleting letter by letter, off = no clearing before typing. |
| scrollingMode | javascript | javascript, native | • Mode for scrolling to elements. |
| attemptToClickBeforeTyping | false | true, false | • Attempt to click on element before typing. |
| forceCheckNavigationWasSuccessful | false | true, false | • Force check that navigation to URL was successful. |
| respectBuiltInWaitsInNativeMode | true | true, false | • Respect built-in waits when using native mode. |
| forceCheckStatusOfRemoteServer | false | true, false | • Force check status of remote server before execution. |
| clickUsingJavascriptWhenWebDriverClickFails | false | true, false | • Fallback to JavaScript click when WebDriver click fails. |
| autoCloseDriverInstance | true | true, false | • Automatically close driver instance after test execution. |
| automaticallyAssertResponseStatusCode | true | true, false | • Automatically assert API response status code. |
| maximumPerformanceMode | 0 | 0, 1, 2 | • 0 → Disabled, 1 → Without Headless Execution, 2 → With Headless Execution • Enabling maximumPerformanceMode will disable all complementary features to ensure the fastest execution possible with a 400% calculated performance boost. |
| skipTestsWithLinkedIssues | false | true, false | • It is recommended to leave this feature disabled unless you explicitly want to skip any tests that have the @Issue or @Issues annotation. |
| disableCache | false | true, false | • To disable the cache in a browser session. |
| enableTrueNativeMode | false | true, false | • Enable true native mode for mobile testing. |
| handleNonSelectDropDown | true | true, false | • Handle non-select dropdown elements. |
| validateSwipeToElement | false | true, false | • Validate swipe to element action on mobile. |
| disableSslCertificateCheck | false | true, false | • Disable SSL certificate validation. |
| telemetry.enabled | true | true, false | • Enable telemetry data collection for SHAFT usage analytics. |
Reporting
- These properties control the engine's built-in reporting capabilities, such as whether or not to capture the element name in the report to make it more readable, capturing WebDriver logs for debugging, and the behavior of reports before and after test execution.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
var captureElementName = SHAFT.Properties.reporting.captureElementName();
/** set **/
SHAFT.Properties.reporting.set().captureElementName(false);
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| captureElementName | true | true, false | • Capture element name in reports for better readability. |
| captureWebDriverLogs | false | true, false | • Capture WebDriver logs for debugging purposes. |
| alwaysLogDiscreetly | false | true, false | • Always log discreetly without detailed output. |
| debugMode | false | true, false | • Enable debug mode for verbose logging. |
| openLighthouseReportWhileExecution | false | true, false | • Open Lighthouse performance report during execution. |
| cleanSummaryReportsDirectoryBeforeExecution | true | true, false | • Clean summary reports directory before execution. |
| openExecutionSummaryReportAfterExecution | false | true, false | • Open execution summary report after test execution. |
| disableLogging | false | true, false | • Disable all logging output. |
| attachFullLog | false | true, false | • Attach a streamed, deduplicated snapshot of the full engine log to the Allure report after test execution without deleting the live log file. |
Allure
- These properties control the engine's built-in Allure reporting capabilities, such as when to open the report, whether to accumulate history and reports, and how to customize the report appearance.
- Since version 8.3.20240827, the Allure properties have been renamed and extended. The old property names are listed in the table below for reference.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
boolean automaticallyOpen = SHAFT.Properties.allure.automaticallyOpen();
boolean accumulateHistory = SHAFT.Properties.allure.accumulateHistory();
boolean accumulateReports = SHAFT.Properties.allure.accumulateReports();
boolean cleanResultsDirectory = SHAFT.Properties.allure.cleanResultsDirectory();
boolean generateArchive = SHAFT.Properties.allure.generateArchive();
String customLogo = SHAFT.Properties.allure.customLogo();
String customTitle = SHAFT.Properties.allure.customTitle();
boolean realtimeMonitoring = SHAFT.Properties.allure.realtimeMonitoring();
boolean singleFile = SHAFT.Properties.allure.singleFile();
String reportLanguage = SHAFT.Properties.allure.reportLanguage();
boolean open = SHAFT.Properties.allure.open();
String groupBy = SHAFT.Properties.allure.groupBy();
/** set **/
SHAFT.Properties.allure.set()
.automaticallyOpen(true)
.accumulateHistory(true)
.accumulateReports(true)
.cleanResultsDirectory(true)
.generateArchive(false)
.customLogo("https://example.com/logo.png")
.customTitle("My Test Suite Report")
.realtimeMonitoring(false)
.singleFile(true)
.reportLanguage("en")
.open(false)
.groupBy("parentSuite,suite,subSuite");
(Work In Progress)
src/main/resources/properties/custom.properties
allure.automaticallyOpen=true
allure.accumulateHistory=true
allure.accumulateReports=true
allure.cleanResultsDirectory=true
allure.generateArchive=false
allure.customLogo=https://example.com/logo.png
allure.customTitle=My Test Suite Report
allure.realtimeMonitoring=false
allure.singleFile=true
allure.reportLanguage=en
allure.open=false
allure.groupBy=parentSuite,suite,subSuite
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| allure.automaticallyOpen | true | true, false | • Open the Allure report in the default browser automatically after test execution. (previously: openAllureReportAfterExecution) |
| allure.accumulateHistory | true | true, false | • When true, accumulates Allure history across runs to enable trend graphs and historical comparison. When false, old results are deleted before the new run. (previously: cleanAllureResultsDirectoryBeforeExecution) |
| allure.accumulateReports | true | true, false | • When true, keeps previous Allure HTML report files in the report directory. When false, only the latest run report is retained. |
| allure.cleanResultsDirectory | true | true, false | • Clean the Allure results directory before each test run. Disable when merging results from multiple partial runs. |
| allure.generateArchive | false | true, false | • Generate a self-contained ZIP archive of the Allure report after test execution. Useful for sharing or archiving in CI pipelines. (previously: generateAllureReportArchive) |
| allure.customLogo | (SHAFT default logo URL) | URL or local file path | • URL or local path to a custom logo image to replace the default SHAFT logo in the Allure report. |
| allure.customTitle | Test run report | Any string | • Custom title displayed in the header of the generated Allure report. |
| allure.realtimeMonitoring | false | true, false | • Enables SHAFT-managed Allure 3 native real-time monitoring via allure watch while tests run. Ignored for Allure 2 or when the Allure CLI cannot be resolved. |
| allure.singleFile | true | true, false | • Controls the Allure 3 Awesome plugin singleFile option. When true, the report is generated as a self-contained HTML file. |
| allure.reportLanguage | en | Language code, such as en, fr, or ru | • Controls the Allure 3 Awesome plugin reportLanguage option used by the generated report UI. |
| allure.open | false | true, false | • Controls the Allure 3 Awesome plugin open option passed to Allure CLI report generation. |
| allure.groupBy | parentSuite,suite,subSuite | Comma-separated Allure label names | • Controls the Allure 3 Awesome plugin groupBy hierarchy. Common values include epic,feature,story and package,class,method. |
Timeouts
- These properties control the engine's built-in synchronization capabilities, such as waiting for lazy loading, element identification timeout, API connection timeout, database query timeout, and shell session timeout.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
var elementIdentificationTimeout = SHAFT.Properties.timeouts.defaultElementIdentificationTimeout();
var uiStateTimeout = SHAFT.Properties.timeouts.waitForUiStateTimeout();
/** set **/
SHAFT.Properties.timeouts.set()
.defaultElementIdentificationTimeout(5)
.waitForUiStateTimeout(600);
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| waitForLazyLoading | true | true, false | Especially useful for modern/responsive web apps using React, Vue, Angular, ...etc |
| browserNavigationTimeout | 30 | (seconds) | Timeout in seconds for browser navigation. |
| pageLoadTimeout | 30 | (seconds) | Timeout in seconds for page load. |
| scriptExecutionTimeout | 30 | (seconds) | Timeout in seconds for script execution. |
| defaultElementIdentificationTimeout | 10 | (seconds) | Default timeout in seconds for element identification. |
| waitForUiStateTimeout | 600 | (seconds) | Default timeout in seconds for UI state waits such as waitUntil(). |
| apiSocketTimeout | 30 | (seconds) | Timeout in seconds for API socket connections. |
| apiConnectionTimeout | 30 | (seconds) | Timeout in seconds for API connections. |
| apiConnectionManagerTimeout | 30 | (seconds) | Timeout in seconds for API connection manager. |
| shellSessionTimeout | 30 | (seconds) | Timeout in seconds for shell session. |
| sshServerAliveInterval | 60 | seconds; <= 0 disables keep-alive packets | JSch ServerAliveInterval in seconds for remote SSH sessions. |
| dockerCommandTimeout | 30 | (seconds) | Deprecated. Legacy docker-wrapped terminal command timeout. |
| databaseLoginTimeout | 30 | (seconds) | Timeout in seconds for database login. |
| databaseNetworkTimeout | 30 | (seconds) | Timeout in seconds for database network operations. |
| databaseQueryTimeout | 30 | (seconds) | Timeout in seconds for database queries. |
| waitForRemoteServerToBeUp | false | true, false | Wait for remote server to be up before execution. |
| timeoutForRemoteServerToBeUp | 1 | (seconds) | Timeout in seconds for remote server to be up. |
| remoteServerInstanceCreationTimeout | 5 | (seconds) | Timeout in seconds for remote server instance creation. |
Visuals
- These properties control the engine's built-in visual validation and AI capabilities, such as the visual matching threshold for AI powered element identification, when to take screenshots, screenshot types, videos, animated GIFs, and complete page snapshots.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
var visualMatchingThreshold = SHAFT.Properties.visuals.visualMatchingThreshold();
/** set **/
SHAFT.Properties.visuals.set().visualMatchingThreshold(0.7);
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| visualMatchingThreshold | 0.90 | any decimal value between 0.00 and 1.00 | Visual matching threshold for AI powered element identification. |
| screenshotParams_scalingFactor | 1.0 | example: 1.0, 0.5, 2.0 | Scaling factor for screenshots. |
| screenshotParams_whenToTakeAScreenshot | ValidationPointsOnly | Always, ValidationPointsOnly, FailuresOnly, Never | When to attach screenshots during test execution; the default attaches validation checkpoints only. |
| screenshotParams_screenshotType | fullPage | fullPage, regular, element | Type of screenshot to capture. |
| screenshotParams_highlightElements | true | true, false | Highlight elements in screenshots. |
| screenshotParams_highlightMethod | AI | AI, NATIVE | Method for highlighting elements in screenshots. |
| screenshotParams_skippedElementsFromScreenshot | | CSS selectors separated by commas | Elements to skip/hide when taking screenshots. |
| screenshotParams_watermark | true | true, false | Add watermark to screenshots. |
| screenshotParams_watermarkOpacity | 0.2 | 0.0 to 1.0 | Opacity level for screenshot watermark. |
| createAnimatedGif | false | true, false | Create animated GIFs; retry attempts can enable this automatically. |
| animatedGif_frameDelay | 500 | milliseconds | Delay between frames in animated GIF. |
| videoParams_recordVideo | false | true, false | Record video during test execution. |
| videoParams_scope | DriverSession | DriverSession, TestMethod | Scope for video recording. |
| whenToTakePageSourceSnapshot | failuresOnly | Never, Always, FailuresOnly | When to capture page source snapshots. |
Jira
- These properties control the engine's built-in Jira and Xray integrations for test management and defect reporting.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
/** get **/
var reportBugs = SHAFT.Properties.jira.reportBugs();
/** set **/
SHAFT.Properties.jira.set().reportBugs(true);
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| jiraInteraction | false | true, false | Enable Jira integration for test management. |
| jiraUrl | https:// | URL | Jira instance URL. |
| projectKey | | String | Jira project key. |
| authorization | : | username:token | Jira authorization credentials (username:token or username:password). |
| authType | basic | basic, bearer | Authorization type for Jira API. |
| reportTestCasesExecution | false | true, false | Report test case execution results to Jira/Xray. |
| reportPath | target/surefire-reports/testng-results.xml | File path | Path to test results file for Jira/Xray reporting. |
| ExecutionName | | String | Name for test execution in Jira/Xray. |
| ExecutionDescription | | String | Description for test execution in Jira/Xray. |
| ReportBugs | false | true, false | Automatically report bugs to Jira on test failures. |
| assignee | | String | Default assignee for reported bugs. |
| allure.link.tms.pattern | https:///{} | URL pattern | Pattern for TMS (Test Management System) links in Allure. |
| allure.link.custom.pattern | {} | URL pattern | Pattern for custom links in Allure reports. |
Cucumber
- These properties control your cucumber settings, such as the path to your feature files, the package names for your step definition classes, and any plugins you want to enable.
- You can only configure these properties by editing your
src/main/resources/properties/cucumber.propertiesfile.
- Code-based
- CLI-based
- File-based
- Default Values
(N/A)
(Work In Progress)
src/main/resources/properties/cucumber.properties
#############
# https://cucumber.io/docs/cucumber/api/#list-configuration-options
##############
cucumber.ansi-colors.disabled=false
#true or false. default: false
cucumber.execution.dry-run=false
#true or false. default: false
cucumber.execution.limit=
#number of scenarios to execute (CLI only).
cucumber.execution.order=lexical
#lexical, reverse, random or random:[seed] (CLI only). default: lexical
cucumber.execution.strict=true
#true or false. default: true.
cucumber.execution.wip=false
#true or false. default: false.
cucumber.features=src/test/resources
#comma separated paths to feature files. example: path/to/example.feature, path/to/other.feature
cucumber.filter.name=
#regex. example: .*Hello.*
cucumber.filter.tags=
#tag expression. example: @smoke and not @slow
cucumber.glue=customCucumberSteps, com.shaft.cucumber
# comma separated package names. example: com.example.glue
cucumber.plugin=pretty, json:allure-results/cucumber.json, html:allure-results/cucumberReport.html, com.shaft.listeners.CucumberTestRunnerListener
# comma separated plugin strings. example: pretty, json:path/to/report.json
cucumber.object-factory=
#object factory class name. example: com.example.MyObjectFactory
cucumber.snippet-type=underscore
#underscore or camelcase. default: underscore
cucumber.publish.quiet=true
CUCUMBER_PUBLISH_ENABLED=false
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| cucumber.features | src/test/resources | ||
| cucumber.filter.name | `` | ||
| cucumber.filter.tags | `` | ||
| cucumber.glue | customCucumberSteps, com.shaft.cucumber | ||
| cucumber.plugin | pretty, json:allure-results/cucumber.json, html:allure-results/cucumberReport.html, com.shaft.listeners.CucumberTestRunnerListener |
Healenium
- Code-based
- CLI-based
- File-based
- Default Values
(Work In Progress)
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| recovery-tries | 1 | ||
| score-cap | 0.5 | ||
| heal-enabled | false | ||
| serverHost | localhost | ||
| serverPort | 7878 | ||
| imitatePort | 8000 |
Healing
- These properties control optional SHAFT Heal locator recovery through the
shaft-healmodule.
- Code-based
- CLI-based
- File-based
- Default Values
SHAFT.Properties.healing.set()
.strategy("shaft-heal")
.minimumTrustPercentage(85)
.minimumConfidence(0.75)
.ambiguityMargin(0.10)
.historyEnabled(true)
.historyPath("target/shaft-heal/history.json")
.visualEnabled(false)
.aiEnabled(false);
mvn test "-Dhealing.strategy=shaft-heal" "-Dhealing.minimumTrustPercentage=85"
src/main/resources/properties/custom.properties
healing.strategy=shaft-heal
healing.minimumTrustPercentage=85
healing.minimumConfidence=0.75
healing.ambiguityMargin=0.10
healing.evidenceCategories=accessibility,label,test-id,stable-id-name,semantic,dom-fingerprint,native-state,ancestor-context,history
healing.testIdAttributes=data-testid,data-test,data-qa
healing.history.enabled=true
healing.history.path=target/shaft-heal/history.json
healing.history.maxEntries=500
healing.history.retentionDays=30
healing.visual.enabled=false
healing.ai.enabled=false
healing.ai.trigger=ambiguous
healing.sourcePatch.enabled=false
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| healing.strategy | disabled | disabled, healenium, shaft-heal, composite | Selects the locator recovery strategy. |
| healing.minimumTrustPercentage | -1 | -1, 0-100 | Preferred human-readable trust gate. -1 keeps using healing.minimumConfidence. |
| healing.minimumConfidence | 0.75 | 0.0-1.0 | Minimum deterministic confidence when no trust percentage override is set. |
| healing.ambiguityMargin | 0.10 | 0.0-1.0 | Required lead over the next eligible candidate. |
| healing.evidenceCategories | accessibility,label,test-id,stable-id-name,semantic,dom-fingerprint,native-state,ancestor-context,history | comma-separated categories | Deterministic evidence categories allowed for recovery. |
| healing.testIdAttributes | data-testid,data-test,data-qa | comma-separated attributes | Attributes treated as stable test IDs. |
| healing.history.enabled | true | true, false | Enables bounded local recovery history. |
| healing.history.path | target/shaft-heal/history.json | path | Local recovery history file. |
| healing.history.maxEntries | 500 | integer | Maximum retained history entries. |
| healing.history.retentionDays | 30 | integer | Maximum history age in days. |
| healing.visual.enabled | false | true, false | Enables optional local visual evidence. |
| healing.ai.enabled | false | true, false | Enables optional provider reranking after deterministic eligibility. |
| healing.ai.trigger | ambiguous | never, ambiguous, below-threshold, always | Controls when enabled AI reranking runs after deterministic scoring. |
| healing.sourcePatch.enabled | false | true, false | Reserved consent gate for reviewed source-patch proposals. |
Natural Actions
- These properties control trust-gated natural-language browser, element, and
touch actions through
SHAFT.GUI.WebDriver.act(...).
- Code-based
- CLI-based
- File-based
- Default Values
SHAFT.Properties.naturalActions.set()
.enabled(true)
.minimumTrustPercentage(85)
.planner("deterministic")
.aiFallbackEnabled(false)
.allowedActions("browser,element,touch");
mvn test "-DnaturalActions.enabled=true" "-DnaturalActions.minimumTrustPercentage=85"
src/main/resources/properties/custom.properties
naturalActions.enabled=false
naturalActions.minimumTrustPercentage=85
naturalActions.planner=deterministic
naturalActions.aiFallback.enabled=false
naturalActions.allowedActions=browser,element,touch
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| naturalActions.enabled | false | true, false | Enables driver.act(...). Disabled plans fail before execution. |
| naturalActions.minimumTrustPercentage | 85 | 0-100 | Minimum plan trust required before execution. |
| naturalActions.planner | deterministic | deterministic, auto, or a ServiceLoader planner ID | Selects the natural-action planner. |
| naturalActions.aiFallback.enabled | false | true, false | Allows optional provider-assisted planners after deterministic planning is unavailable. |
| naturalActions.allowedActions | browser,element,touch | comma-separated browser, element, touch | Restricts which action categories natural actions may execute. |
Paths
- Code-based
- CLI-based
- File-based
- Default Values
(Work In Progress)
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| propertiesFolderPath | src/main/resources/properties/ | Path to the custom properties files folder. | |
| defaultPropertiesFolderPath | src/main/resources/properties/default | Path to the default properties files folder. | |
| dynamicObjectRepositoryPath | src/main/resources/dynamicObjectRepository/ | Path to the dynamic object repository folder. | |
| testDataFolderPath | src/test/resources/testDataFiles/ | Path to the test data files folder. | |
| downloadsFolderPath | target/downloadedFiles | Path to the folder for downloaded files. | |
| allureResultsFolderPath | allure-results/ | Path to the Allure results output folder. | |
| extentReportsFolderPath | extent-reports/ | Path to the Extent reports output folder. | |
| executionSummaryReportFolderPath | execution-summary/ | Path to the execution summary report folder. | |
| PerformanceReportFolderPath | performanceReport/ | Path to the performance (Lighthouse) report output folder. | |
| video.folder | allure-results/videos | Path to the folder where recorded videos and generated animated GIF files are saved. | |
| servicesFolderPath | src/test/resources/META-INF/services/ | Path to the META-INF services folder for custom service implementations. | |
| aiAgentWorkspaceRoot | `` | Workspace root for SHAFT agent tooling. | |
| applitoolsApiKey | `` | Applitools API key for visual AI testing integration. |
Pattern
- Code-based
- CLI-based
- File-based
- Default Values
(Work In Progress)
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| testDataColumnNamePrefix | Data | ||
| allure.link.issue.pattern | `` |
Tinkey
- Code-based
- CLI-based
- File-based
- Default Values
(Work In Progress)
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| tinkey.keysetFilename | `` | ||
| tinkey.kms.serverType | `` | ||
| tinkey.kms.credentialPath | `` | ||
| tinkey.kms.masterKeyUri | `` |
Internal
- These read-only properties are primarily for engine metadata and SHAFT-managed tooling bootstrap. Override them only when you intentionally maintain a local engine/tooling policy.
- Code-based
- CLI-based
- File-based
- Default Values
import com.shaft.driver.SHAFT;
String shaftEngineVersion = SHAFT.Properties.internal.shaftEngineVersion();
String allure3Version = SHAFT.Properties.internal.allure3Version();
String nodeLtsVersion = SHAFT.Properties.internal.nodeLtsVersion();
int androidEmulatorApiLevel = SHAFT.Properties.internal.androidEmulatorApiLevel();
mvn -e test "-Dallure3Version=3.12.0" "-DnodeLtsVersion=24.17.0"
src/main/resources/properties/internal.properties
shaftEngineVersion=10.2.20260622
allure3Version=3.12.0
nodeLtsVersion=24.17.0
appiumServerVersion=3.5.2
appiumInspectorPluginVersion=2026.5.1
appiumUiAutomator2DriverVersion=7.6.2
appiumXcuitestDriverVersion=11.12.2
androidCommandLineToolsVersion=14742923
androidEmulatorApiLevel=36
androidEmulatorDeviceProfile=pixel_8
androidEmulatorImageTag=google_apis
androidEmulatorRamMb=4096
androidEmulatorCores=2
ga4MeasurementId=G-4L9L79WZBV
ga4ApiSecret=
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| shaftEngineVersion | 10.2.20260622 | version string | Engine version used by update checks, telemetry metadata, and internal tooling. |
| watermarkImagePath | SHAFT watermark URL | URL or file path | Default watermark image used by screenshot processing. |
| allure3Version | 3.12.0 | Allure 3 npm package version | Allure 3 CLI package version used when SHAFT resolves the CLI through npx. |
| nodeLtsVersion | 24.17.0 | Node.js version | Portable Node.js version downloaded when neither allure nor npx is available on PATH. |
| appiumServerVersion | 3.5.2 | Appium npm package version | Appium server version used by SHAFT MCP local mobile bootstrap. |
| appiumInspectorPluginVersion | 2026.5.1 | Appium Inspector plugin version | Appium Inspector plugin version used by SHAFT MCP wrapped mobile recording. |
| appiumUiAutomator2DriverVersion | 7.6.2 | Appium driver version | Appium UiAutomator2 driver version used by SHAFT MCP for Android. |
| appiumXcuitestDriverVersion | 11.12.2 | Appium driver version | Appium XCUITest driver version used by SHAFT MCP for iOS. |
| androidCommandLineToolsVersion | 14742923 | Android command-line tools build number | Android command-line tools version used when SHAFT MCP bootstraps Android SDK tools. |
| androidEmulatorApiLevel | 36 | Android API level | Default Android API level proposed for SHAFT-managed emulator creation. |
| androidEmulatorDeviceProfile | pixel_8 | Android virtual device profile | Default Android virtual device profile proposed for SHAFT-managed emulators. |
| androidEmulatorImageTag | google_apis | Android system image tag | Default Android system image tag proposed for SHAFT-managed emulators. |
| androidEmulatorRamMb | 4096 | megabytes | Default Android emulator RAM size in MB. |
| androidEmulatorCores | 2 | CPU core count | Default Android emulator CPU core count. |
| ga4MeasurementId | G-4L9L79WZBV | GA4 Measurement ID | Google Analytics 4 Measurement ID used for anonymous telemetry. |
| ga4ApiSecret | `` | GA4 API secret | Supply privately through internal.properties; do not commit real secrets. |
BrowserStack
- These properties control SHAFT's built-in integration with BrowserStack.
- Use the canonical authentication keys
browserStack.userNameandbrowserStack.accessKey; the legacy aliasesbrowserStack.userandbrowserStack.keyare normalized for compatibility. - For native mobile apps,
browserStack.appUrlis resolved before remotemobile_appvalues such asbs://...,http://..., orhttps://.... - You can find all supported Web-based (Desktop or Mobile) execution properties & values in BrowserStack's Web Capability Generator
- You can find all supported Native Mobile App execution properties & values in BrowserStack's Appium Capability Generator
- Code-based
- CLI-based
- File-based
- Default Values
(Work In Progress)
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| browserStack.userName | `` | BrowserStack username for authentication. | |
| browserStack.accessKey | `` | BrowserStack access key for authentication. | |
| browserStack.platformVersion | `` | Mobile platform version for BrowserStack execution. | |
| browserStack.deviceName | `` | Mobile device name for BrowserStack execution. | |
| browserStack.appUrl | `` | Use a BrowserStack app URL for a previously uploaded app; takes precedence over remote mobile_app. | |
| browserStack.customID | `` | Use customID to test the latest uploaded version as the above url expires regularly. | |
| browserStack.appName | `` | App name for uploading to BrowserStack. | |
| browserStack.appRelativeFilePath | `` | Relative file path to the app for SHAFT/BrowserStack upload workflows. | |
| browserStack.osVersion | `` | In case of Desktop web testing you must also set the targetOperatingSystem, and targetBrowserName. | |
| browserStack.browserVersion | `` | Browser version, optional, uses random by default. | |
| browserStack.local | false | true, false | Enable BrowserStack local testing. |
| browserStack.seleniumVersion | 4.40.0 | Selenium version to use on BrowserStack. | |
| browserStack.acceptInsecureCerts | true | true, false | Accept insecure SSL certificates. |
| browserStack.debug | false | true, false | Enable debug mode for BrowserStack. |
| browserStack.networkLogs | false | true, false | Enable network logs capture on BrowserStack. |
| browserStack.geoLocation | `` | Set geolocation for BrowserStack tests. | |
| browserStack.appiumVersion | 3.1.0 | Appium version to use on BrowserStack for mobile testing. | |
| browserStack.buildName | `` | Build name to group test runs in the BrowserStack dashboard. | |
| browserStack.projectName | `` | Project name to group builds in the BrowserStack dashboard. | |
| browserStack.parallelsPerPlatform | 1 | Number of parallel sessions to run per platform when using the BrowserStack SDK. | |
| browserStack.browserstackAutomation | true | true, false | Enable BrowserStack Automation (SDK mode). Set to false to use legacy WebDriver URL mode. |
| browserStack.platformsList | `` | Comma-separated list of platforms for cross-browser/cross-device parallel runs (SDK mode). | |
| browserStack.customBrowserStackYmlPath | `` | Path to a custom browserstack.yml configuration file. Overrides individual BrowserStack properties. |
LambdaTest
- Code-based
- CLI-based
- File-based
- Default Values
(Work In Progress)
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| LambdaTest.username | `` | LambdaTest username for authentication. | |
| LambdaTest.accessKey | `` | LambdaTest access key for authentication. | |
| LambdaTest.platformVersion | `` | Mobile platform version for LambdaTest execution. | |
| LambdaTest.deviceName | `` | Mobile device name for LambdaTest execution. | |
| LambdaTest.appUrl | `` | Use appUrl to test a previously uploaded app file. | |
| LambdaTest.appProfiling | false | true, false | Enable app profiling during mobile testing. |
| LambdaTest.osVersion | `` | OS version for desktop browser testing on LambdaTest. | |
| LambdaTest.visual | false | true, false | Enable visual logs (screenshots) on LambdaTest. |
| LambdaTest.video | false | true, false | Enable video recording on LambdaTest. |
| LambdaTest.appName | `` | Use appName and appRelativeFilePath to upload a new app file and test it | |
| LambdaTest.appRelativeFilePath | `` | Use appName and appRelativeFilePath to upload a new app file and test it | |
| LambdaTest.resolution | `` | Screen resolution for desktop browser testing (e.g. 1920x1080). | |
| LambdaTest.headless | false | true, false | Enable headless browser execution on LambdaTest. |
| LambdaTest.timezone | `` | Timezone for test execution on LambdaTest (e.g. UTC+5:30). | |
| LambdaTest.project | shaft-engine | Project name to group builds in the LambdaTest dashboard. | |
| LambdaTest.build | Build Name | Build name to group test runs in the LambdaTest dashboard. | |
| LambdaTest.tunnel | false | true, false | Enable LambdaTest tunnel for testing locally hosted applications. |
| LambdaTest.tunnelName | `` | Name of the LambdaTest tunnel to use when LambdaTest.tunnel is enabled. | |
| LambdaTest.buildName | `` | Build name used in the LambdaTest SDK configuration. Use this instead of LambdaTest.build when using the LambdaTest SDK (automate-config.yml). | |
| LambdaTest.selenium_version | `` | Selenium version to use on LambdaTest. | |
| LambdaTest.driver_version | `` | Browser driver version to use on LambdaTest. | |
| LambdaTest.w3c | true | true, false | Enable W3C WebDriver protocol on LambdaTest. |
| LambdaTest.browserVersion | `` | Browser version, optional, uses random by default. | |
| LambdaTest.geoLocation | `` | Geolocation for test execution (e.g. US, IN). | |
| LambdaTest.debug | false | true, false | Enable debug mode (command logs) on LambdaTest. |
| LambdaTest.acceptInsecureCerts | true | true, false | Accept insecure SSL certificates on LambdaTest. |
| LambdaTest.networkLogs | false | true, false | Enable network logs capture on LambdaTest. |
| LambdaTest.appiumVersion | 3.0.2 | Appium version to use on LambdaTest for mobile testing. | |
| LambdaTest.autoGrantPermissions | true | true, false | Automatically grant app permissions on mobile devices. |
| LambdaTest.autoAcceptAlerts | true | true, false | Automatically accept alerts on mobile devices. |
| LambdaTest.isRealMobile | true | true, false | Run tests on real mobile devices (as opposed to emulators/simulators). |
| LambdaTest.console | false | true, false | Enable console log capture on LambdaTest. |
| LambdaTest.customID | `` | Custom app ID for testing a previously uploaded app by its custom identifier. |
Performance
- Code-based
- CLI-based
- File-based
- Default Values
(Work In Progress)
(Work In Progress)
(Work In Progress)
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| lightHouseExecution | false | true, false | Enable Lighthouse performance testing execution. |
| lightHouseExecution.port | 8888 | Port to use for Lighthouse performance testing. | |
| generatePerformanceReport | true | true, false | Generate a performance report after Lighthouse execution. |
TestNG
- These properties control your TestNG parallelization settings.
- You can only configure these properties by editing your
src/main/resources/properties/TestNG.propertiesfile.
- Code-based
- CLI-based
- File-based
- Default Values
(N/A)
(Work In Progress)
src/main/resources/properties/TestNG.properties
setParallel=NONE
setThreadCount=1
setVerbose=1
setPreserveOrder=true
setGroupByInstances=true
setDataProviderThreadCount=1
#Test Suite Timeout in minutes
testSuiteTimeout=1440
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| setParallel | NONE | METHODS, CLASSES, TESTS, INSTANCES | |
| setParallelMode | STATIC | STATIC, DYNAMIC | |
| setThreadCount | 1.0d | ThreadCount is used as-is in case of STATIC mode. Total ThreadCount is automatically calculated for DYNAMIC mode; (Total ThreadCount = Number of available processor cores * setThreadCount) | |
| setVerbose | 1 | ||
| setPreserveOrder | false | true, false | |
| setGroupByInstances | false | true, false | |
| setDataProviderThreadCount | 1 | ||
| testSuiteTimeout | 1440 | minutes | Test suite timeout. Default is 1440 minutes, or 24 hours. |
Log4j
- These properties control your Log4j2 logging settings.
- You can only configure these properties by editing your
src/main/resources/properties/log4j2.propertiesfile.
- Code-based
- CLI-based
- File-based
- Default Values
(N/A)
(Work In Progress)
src/main/resources/properties/log4j2.properties
name=PropertiesConfig
appender.console.type=Console
appender.console.name=STDOUT
appender.console.layout.type=PatternLayout
appender.console.layout.disableAnsi=false
appender.console.layout.pattern=%highlight{[%p]}{FATAL=red blink, ERROR=red bold, WARN=yellow bold, INFO=fg_#0060a8 bold, DEBUG=fg_#43b02a bold, TRACE=black} %style{%m }%style{| %-logger}{bright_black} %style{- %-thread}{bright_black} %style{- %d{hh:mm:ss a}}{bright_black} %n
appender.console.filter.threshold.type=ThresholdFilter
appender.console.filter.threshold.level=info
property.logFilePath=${sys:shaft.log.file:-target/logs/log4j.log}
appender.file.type=RollingFile
appender.file.name=LOGFILE
appender.file.fileName=${logFilePath}
appender.file.filePattern=${logFilePath}.%i
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.filter.threshold.type=ThresholdFilter
appender.file.filter.threshold.level=debug
appender.asyncFile.type=Async
appender.asyncFile.name=ASYNC_LOGFILE
appender.asyncFile.appenderRef.file.ref=LOGFILE
rootLogger=info, STDOUT, ASYNC_LOGFILE
logger.app.name=org.apache.http.impl.client
logger.app.level=WARN
| Property Name | Default Value | Possible Values | Description |
|---|---|---|---|
| appender.console.layout.pattern | %highlight{[%p]}{FATAL=red blink, ERROR=red bold, WARN=yellow bold, INFO=fg_#0060a8 bold, DEBUG=fg_#43b02a bold, TRACE=black} %style{%m} %style{| @%d{hh:mm:ss a}}{bright_black} %n | Click here to learn more about log4j2 pattern layouts | |
| appender.console.filter.threshold.level | info | fatal, error, warn, info, debug, trace | |
| appender.file.fileName | target/logs/log4j.log | ||
| appender.file.layout.pattern | [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n | ||
| appender.file.filter.threshold.level | debug | fatal, error, warn, info, debug, trace | |
| rootLogger | info, ASYNC_STDOUT, ASYNC_LOGFILE, ASYNC_REPORT_PORTAL | Uses asynchronous appenders for console, file, and ReportPortal logging. |