Parameter configuration files (Vision/Classic)
Overview
You can change running parameters by parameter configuration files.
- testrun file (properties file)
- testConfig file (json file)
testrun.properties
testrun.properties file is testrun file that can be placed anywhere in the project and can have an arbitrary name. This file should be designated in test setup procedure by @Testrun annotation.
@Testrun("testConfig/android/androidSettings/testrun.properties")
class Test1 : UITest() {
}
“testConfig/testrun.properties” is default and applied when @Testrun
is omitted.
class Test1 : UITest() {
}
The above is equivalent to below.
@Testrun("testConfig/testrun.properties")
class Test1 : UITest() {
}
testrun.global.properties
testrun.global.properties file is the testrun file that is placed under the project directory. This file is fixed name file and should not be designated by @Testrun
annotation. The parameters in this file is effective to all tests in this project, but they can be overridden by other configuration files(testrun.properties
or testConfig.json
).
Example of testrun file
# testrun
## OS --------------------
#os=ios
## Test mode --------------------
#noLoadRun=true
## Config --------------------
## [Android]
#android.configFile=
# auto
#android.profile=Android *
#by AVD Name
#android.profile=Pixel 9(Android 15)
#android.profile=Pixel 8(Android 15)
android.profile=Pixel 8(Android 14)
#android.profile=Pixel 8(Android 14)-01
#android.profile=Pixel 7(Android 14)
#android.profile=Pixel 6(Android 13)
#android.profile=Pixel 3a(Android 13)
#android.profile=Pixel 3a(Android 12)
#android.profile=Pixel 3(Android 11)
#android.profile=Pixel 3a(Android 10)
#android.profile=Pixel 3a(Android 9)
#by platformVersion
#android.profile=14
#android.profile=13
#android.profile=Android 14
#android.profile=Android 13
#by model and platformVersion
#android.profile=sdk_gphone64_arm64(Android 14)
#android.profile=sdk_gphone64_arm64(Android 13)
#android.profile=sdk_gphone64_arm64(13)
#android.profile=Pixel 8(14)
#android.profile=Pixel_6(13)
#android.profile=SO-02K(Android 9)
#android.profile=Hoge-01(12)
#android.profile=Fuga-01(6)
# by model
#android.profile=sdk_gphone64_arm64
#android.profile=Pixel 3a
#android.profile=pixel_3a
#android.profile=SO-02K
#android.profile=Hoge-01
# by udid
#android.profile=emulator-5554
#android.profile=emulator-5556
#android.profile=93MAY0CY1M
#android.profile=14141JEC204922
## [iOS]
#ios.configFile=
#by deviceName
#ios.profile=My iPhone
#by platformVersion
#ios.profile=17.4
#ios.profile=17.2
#by model and platformVersion
ios.profile=iPhone 16(iOS 18.2)
#ios.profile=iPhone 15(iOS 17.2)
# by model
#ios.profile=iPhone 15
#ios.profile=iPhone 15 Pro Max
#ios.profile=Hoge-01
# by udid
#ios.profile=EDF2DD70-439D-40F3-8835-54EF8B7297EA
#ios.profile=80da80b8002e31e5ec8b1a0085a7e3c64d8b2d51
## Stub --------------------
#stubServerUrl=http://stub1
## Priority filter --------------------
#must=false
#should=false
#want=false
#none=false
## Log --------------------
#logLanguage=ja
#enableSyncLog=false
#enableTestList=false
#enableTestClassList=false
#enableSpecReport=false
#enableRelativeCommandTranslation=false
#enableInnerMacroLog=true
#enableInnerCommandLog=true
#enableSilentLog=true
#enableTapElementImageLog=true
#enableXmlSourceDump=false
#enableRetryLog=false
#enableWarnOnRetryError=true
#enableWarnOnSelectTimeout=true
#enableGetSourceLog=true
#enableTrace=true
#enableTimeMeasureLog=true
#enableShellExecLog=true
#enableImageMatchDebugLog=true
#enableIsInViewLog=true
#enableIsSafeLog=false
#enableIsScreenLog=true
#testResults=
#testListDir={TEST_RESULTS}
#reportIndexDir={DIRECTORY_FOR_TEST_CONFIG}
## String Comparing --------------------
#strictCompareMode=true
#keepZenkakuSpace=false
#keepLF=true
#keepTAB=true
#waveDashToFullWidthTilde=false
#compressWhitespaceCharacters=false
#trimString=false
## Screenshot --------------------
#screenshotScale=0.333333
#screenshotIntervalSeconds=0.5
#autoScreenshot=false
#onChangedOnly=false
#onCondition=false
#onAction=false
#onExpectation=false
#onExecOperateCommand=false
#onCheckCommand=false
#onScrolling=false
#manualScreenshot=false
## Image Matching --------------------
#enableImageAssertion=false
#imageMatchingScale=
#imageMatchingThreshold=
#imageMatchingCandidateCount=
## Emulator/Simulator
emulatorOptions=-no-snapshot
#deviceStartupTimeoutSeconds=
#deviceWaitSecondsAfterStartup=
#enableWdaInstallOptimization=false
#emulatorPort=5554
## Appium --------------------
appiumServerUrl=http://127.0.0.1:4720/
appiumPath=appium
appiumArgs=--session-override --relaxed-security
#appiumArgsSeparator=
#appiumServerStartupTimeoutSeconds=
#appiumSessionStartupTimeoutSeconds=
#implicitlyWaitSeconds=
#appPackageFile=
#appPackageDir=
#packageOrBundleId=
#startupPackageOrBundleId=
#startupActivity=
## UIAutomator 2 --------------------
#enforceXPath1=false
## Appium Proxy --------------------
#appiumProxyReadTimeoutSeconds=
#appiumProxyGetSourceTimeoutSeconds=
## TestDriver --------------------
#reuseDriver=
#retryMaxCount=
#retryTimeoutSeconds=
#retryIntervalSeconds=
#enableHealthCheck=false
#tapTestSelector=
#enableAutoSyncAndroid=true
#enableAutoSyncIos=true
#enableLaunchOnScenario=false
#launchAppMethod=shell
#launchAppMethod=tapAppIcon
#launchAppMethod=[My Launch Macro]
#enableRerunScenario=false
#enableAlwaysRerunOnErrorAndroid=true
#enableAlwaysRerunOnErrorIos=true
#scenarioTimeoutSeconds=
#scenarioMaxCount=
#enableRerunOnScreenshotBlackout=false
#screenshotBlackoutThreshold=0.99999
#enableRestartDeviceOnResettingAppiumSession=true
#safeCpuLoad=80
#enableWaitCpuLoad=false
#enableWaitCpuLoadPrintDebug=true
## App operation --------------------
#appIconName=
#tapAppIconMethod=
#tapAppIconMacro=
#shortWaitSeconds=
#waitSecondsForLaunchAppComplete=
#waitSecondsForAnimationComplete=
#waitSecondsOnIsScreen=
#waitSecondsForConnectionEnabled=
#swipeDurationSeconds=
#flickDurationSeconds=
#swipeMarginRatio=
#scrollVerticalStartMarginRatio=
#scrollVerticalEndMarginRatio=
#scrollHorizontalStartMarginRatio=
#scrollHorizontalEndMarginRatio=
#scrollToEdgeBoost=
#scrollIntervalSeconds=
#scrollMaxCount=
#tapHoldSeconds=
#enableCache=false
#findWebElementTimeoutSeconds=
#syncWaitSeconds=
#syncMaxLoopCount=
## Vision --------------------
#visionOCRLanguage=
#visionDirectory=
#visionBuildDirectory=
#visionEnableLearningOnStartup=false
#visionServerUrl=http://127.0.0.1:8081
#segmentMarginHorizontal=
#segmentMarginVertical=
#visionFindImageThreshold=
## Custom --------------------
#CustomObject.scan.dir=src/test/kotlin
## Macro --------------------
#MacroObject.scan.dir=src/test/kotlin
## Spec-Report --------------------
#specReport.exclude.detail=true
#specReport.SKIP.reason=
#specReport.EXCLUDED.reason=
## misc
#android.statBarHeight=
#ios.statBarHeight=
#android.swipeOffsetY=-20
#ios.swipeOffsetY=-5
#xmlSourceRemovePattern=
#boundsToRectRatio=
#ios.selectIgnoreTypes=XCUIElementTypeCell,XCUIElementTypeApplication
#android.titleSelector=<#action_bar||#toolbar||#app_bar>:descendant(${title}||@${title})
#ios.titleSelector=<.XCUIElementTypeNavigationBar>:descendant(.XCUIElementTypeStaticText&&${title})
#android.webTitleSelector=.android.webkit.WebView&&${webTitle}
#ios.webTitleSelector=<.XCUIElementTypeWebView>:descendant(${webTitle}&&visible=*)
#jquerySource=
testConfig file
testConfig file is json file that can be placed anywhere in the project and can have an arbitrary name. This file should be designated in test setup procedure by the testrun file.
testrun file
## OS --------------------
os=android
## Config --------------------
## [Android]
android.configFile=testConfig/android/androidSettings/androidSettingsConfig.json
android.profile=Android 14
In testConfig file, you can set test profiles for test devices and desired capabilities
of appium.
{
"testConfigName": "androidSettingsConfig",
"appIconName": "Settings",
"packageOrBundleId": "com.android.settings",
"startupPackageOrBundleId": "com.android.settings",
"startupActivity": "com.android.settings.Settings",
"settings": {
"always_finish_activities": "0"
},
"dataset": {
"accounts": "testConfig/android/androidSettings/dataset/accounts.json",
"apps": "testConfig/android/androidSettings/dataset/apps.json",
"data": "testConfig/android/androidSettings/dataset/data.json"
},
"screens": {
"import": [
"testConfig/android/calculator/screens",
"testConfig/android/misc/screens",
"testConfig/android/playStore/screen"
]
},
"capabilities": {
"language": "en",
"locale": "US"
},
"profiles": [
{
"profileName": "Android 14",
"capabilities": {
"platformVersion": "14"
}
},
{
"profileName": "Android 13",
"capabilities": {
"platformVersion": "13"
}
},
{
"profileName": "Android 14 with Tag1",
"specialTags": "Tag1",
"capabilities": {
"platformVersion": "14"
}
},
{
"profileName": "Android 14 with Tat2 & Tag3",
"specialTags": "Tag2, Tag3",
"capabilities": {
"platformVersion": "14"
}
},
{
"profileName": "emulator-5556",
"capabilities": {
"udid": "emulator-5556"
}
}
]
}
Priority
testConfig file > testrun.properties > testrun.global.properties